打印
[AVR单片机]

三相瞬时值采样问题

[复制链接]
1281|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bxtinglove0421|  楼主 | 2015-8-10 13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 bxtinglove0421 于 2015-8-10 13:58 编辑

小弟现在调试一个计算三相电压电流和电量的程序  请教各位一个问题  采用瞬时值采样 然后求均方根,ATmega64单片机 在一个工频周期能采样多少个点  ?  目前  采样通道为三路电压,三路电流  还有其他模拟量采样  共15个通道   AD转换时钟250K(8mhz 32分频)
电压电流精度要求 0.1V 0.1A

相关帖子

沙发
bxtinglove0421|  楼主 | 2015-8-10 13:57 | 只看该作者
电压电流精度要求  0.1V   0.1A

使用特权

评论回复
板凳
joyme| | 2015-8-10 17:44 | 只看该作者
电压0.1V的精度是做不到的,10bit AD做到1V相对简单一点
工频50hz,一个周期20ms,建议采样40个点,即500us采样一样
因为涉及到16位的乘除法(结果是32位),对单片机来说负荷是比较重的
一般的做法,把采样数据缓存,在不采样的时候做计算

使用特权

评论回复
地板
airwill| | 2015-8-10 17:55 | 只看该作者
ATmega64单片机是干不了这个事情的.
"电压电流精度要求  0.1V   0.1A", 你还得提供量程哪
这个事情, 用 ARM 或者 DSP 才比较合适.

使用特权

评论回复
5
bxtinglove0421|  楼主 | 2015-8-11 08:30 | 只看该作者
joyme 发表于 2015-8-10 17:44
电压0.1V的精度是做不到的,10bit AD做到1V相对简单一点
工频50hz,一个周期20ms,建议采样40个点,即500us ...

谢谢  我程序中共有15路AD采样  放在主程序中应该达不到 您说的采样要求吧?  放在定时器中断中采样6路信号(电压*3+电流*3) 可否达到? 定时器中断256us进一次  单次AD转换时间配置成52us  会不会跟定时器中断

使用特权

评论回复
6
bxtinglove0421|  楼主 | 2015-8-11 08:31 | 只看该作者
airwill 发表于 2015-8-10 17:55
ATmega64单片机是干不了这个事情的.
"电压电流精度要求  0.1V   0.1A", 你还得提供量程哪
这个事情, 用 AR ...

谢谢  电压1V的精度也能接受  范围0~440V    电流0~15A

使用特权

评论回复
7
bxtinglove0421|  楼主 | 2015-8-11 08:54 | 只看该作者
joyme 发表于 2015-8-10 17:44
电压0.1V的精度是做不到的,10bit AD做到1V相对简单一点
工频50hz,一个周期20ms,建议采样40个点,即500us ...

定时500US进一次中断 AD转换时间52us  采样6路  这样应该不影响  然后数据缓存 主程序中计算  您觉得可行吗?

使用特权

评论回复
8
joyme| | 2015-8-12 11:17 | 只看该作者
可行,不要在主程序里计算,而是在不采样的周期计算,比如连续采样5个周期(约100ms),保存数据,接下来的5个周期不做采样,专门计算。否则计算过程会经常被中断导致计算时间不可控,同时可能影响缓冲里的数据

使用特权

评论回复
9
bxtinglove0421|  楼主 | 2015-8-12 16:20 | 只看该作者
在定时器中断中AD采样  程序跑死了 是不是AD转换等待ADSC置位 与中断冲突了  但是52us转换时间 6路采样  共300多us 应该不会影响 定时器中断才对啊    在主程序中 有没法保证采样率

使用特权

评论回复
10
bxtinglove0421|  楼主 | 2015-8-14 10:09 | 只看该作者
joyme 发表于 2015-8-12 11:17
可行,不要在主程序里计算,而是在不采样的周期计算,比如连续采样5个周期(约100ms),保存数据,接下来的 ...

在定时器中断中AD采样  程序跑死了 是不是AD转换等待ADSC置位 与中断冲突了  但是52us转换时间 6路采样  共300多us 应该不会影响 定时器中断才对啊    在主程序中 有没法保证采样率  

不知怎样触发AD采样才能正确采集到 20ms内的数据

使用特权

评论回复
11
joyme| | 2015-8-14 11:27 | 只看该作者
定时器,AD用各自的中断相应函数,定时器只是负责定时启动AD,中断里不要有等待的语句(除非不得已而且等待的时间很明确)
理论上对周期波形,任意时刻开始采样一个周期都行,也可以通过检测过零点开始启动每隔500us采样一次

使用特权

评论回复
12
bxtinglove0421|  楼主 | 2015-8-18 16:50 | 只看该作者
joyme 发表于 2015-8-14 11:27
定时器,AD用各自的中断相应函数,定时器只是负责定时启动AD,中断里不要有等待的语句(除非不得已而且等待 ...

谢谢  问题解决了  还有一个问题  采样一个周期的三相电压数据   如何检测判断错相?

使用特权

评论回复
13
蓝魔大师| | 2015-9-8 21:41 | 只看该作者
学习学习.........

使用特权

评论回复
14
qazq123| | 2015-9-17 15:42 | 只看该作者
能问下,那你的校验是怎么样校验的吗?跟程序中哪些变量是挂钩的?我一直拎不清这种三相电压电流表的校验

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

14

帖子

0

粉丝