[AVR单片机] 三相瞬时值采样问题

[复制链接]
1619|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 才比较合适.
 楼主| 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  会不会跟定时器中断
 楼主| bxtinglove0421 发表于 2015-8-11 08:31 | 显示全部楼层
airwill 发表于 2015-8-10 17:55
ATmega64单片机是干不了这个事情的.
"电压电流精度要求  0.1V   0.1A", 你还得提供量程哪
这个事情, 用 AR ...

谢谢  电压1V的精度也能接受  范围0~440V    电流0~15A
 楼主| 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路  这样应该不影响  然后数据缓存 主程序中计算  您觉得可行吗?
joyme 发表于 2015-8-12 11:17 | 显示全部楼层
可行,不要在主程序里计算,而是在不采样的周期计算,比如连续采样5个周期(约100ms),保存数据,接下来的5个周期不做采样,专门计算。否则计算过程会经常被中断导致计算时间不可控,同时可能影响缓冲里的数据
 楼主| bxtinglove0421 发表于 2015-8-12 16:20 | 显示全部楼层
在定时器中断中AD采样  程序跑死了 是不是AD转换等待ADSC置位 与中断冲突了  但是52us转换时间 6路采样  共300多us 应该不会影响 定时器中断才对啊    在主程序中 有没法保证采样率
 楼主| bxtinglove0421 发表于 2015-8-14 10:09 | 显示全部楼层
joyme 发表于 2015-8-12 11:17
可行,不要在主程序里计算,而是在不采样的周期计算,比如连续采样5个周期(约100ms),保存数据,接下来的 ...

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

不知怎样触发AD采样才能正确采集到 20ms内的数据
joyme 发表于 2015-8-14 11:27 | 显示全部楼层
定时器,AD用各自的中断相应函数,定时器只是负责定时启动AD,中断里不要有等待的语句(除非不得已而且等待的时间很明确)
理论上对周期波形,任意时刻开始采样一个周期都行,也可以通过检测过零点开始启动每隔500us采样一次
 楼主| bxtinglove0421 发表于 2015-8-18 16:50 | 显示全部楼层
joyme 发表于 2015-8-14 11:27
定时器,AD用各自的中断相应函数,定时器只是负责定时启动AD,中断里不要有等待的语句(除非不得已而且等待 ...

谢谢  问题解决了  还有一个问题  采样一个周期的三相电压数据   如何检测判断错相?
蓝魔大师 发表于 2015-9-8 21:41 | 显示全部楼层
学习学习.........
qazq123 发表于 2015-9-17 15:42 | 显示全部楼层
能问下,那你的校验是怎么样校验的吗?跟程序中哪些变量是挂钩的?我一直拎不清这种三相电压电流表的校验
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

14

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部