请教关于交流电流检测算法如何优化
在调试一个ai8051u程序中,需要检测市电电流作为判断数据。大体的思路如下:交流电的周期是20ms,每隔2秒启动一次AD(12位)进行电流数据采集,每次采集时,每隔460μs(加上1次AD转换时间约40μs,时间间隔为500μs)采样一次,连续采样40次,刚好覆盖一个市电周期,然后将40个采样数据计算出有效值,最后用采样数据有效值/4096*VCC计算出电压值再换算成电流值。
从程序的实际验证来看,基本能达到设计的目的,但也有不足的地方。首先是由于程序运行需要,每隔2秒才进行一次采样,有时检测到的电流值会有跳变,不够平滑。其次是检测阻性负载时,电流值与实际比较接近,但在检测非阻性负载如开关电流时,电流值比实际值高30%左右,并且跳变现象更加明显。
这里向大家请教一下通过单片机AD采样来检测市电电流时,有什么好的算法或者方法来提高检测精度呢?
具体设计细节 你的采样点数不够会造成抖动和误差。
采样交流电电压、电流计算有效值,使用均匀采样,采样N个周期(即20ms*N),点数越多越好,我推荐20KHz,如果采样一个周期就是400点,采样2个周期就是800点,采样4个周期就是1600点,按项目需要来确定。然后计算均方值作为有效值。最好使用PWM自动触发ADC转换,ADC中断读取ADC值,这样采样会无抖动,计算最准确。
可以参考我下面的贴:
交流电压/直流电压ADC测量, 计算有效值 ,送【AiCube-ISP | 调试接口】显示
https://www.stcaimcu.com/thread-2199-1-1.html
(出处: 国芯人工智能技术交流网站)
梁工 发表于 2025-12-1 23:23
你的采样点数不够会造成抖动和误差。
采样交流电电压、电流计算有效值,使用均匀采样,采样N个周期(即20ms ...
谢谢梁工的解答,我借鉴你的例程调试一下。 抽样个数太少,间隔太大是检测不稳的根本原因,需要进一步平滑处理.
非正弦波测量要看用的表是不是真有效值电压表,
开关负载的电流可能不是正弦波,软件按照有效值算法计算出的值,
如果使用非真有效值电压表测量会有不小差异.
页:
[1]