打印

求一单片机采集市电的算法!

[复制链接]
14064|46
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
new1988|  楼主 | 2011-1-7 16:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做一电表,要显示市电的电压!板子上直接就是220V交流电,由电阻分压后送单片机的AD。最开始我用均方根的方法。就是在一个周期20ms内采集32个点,然后平方,再开方。我用这个方法采集出来的数据波动非常大。
还有一个方法就是算出一个周期内的最大值,也就是峰值。可是用这个方法得出来的数据不线性。求一个实用的算法!板子已经做好了,无法大的改动。所以硬件整流滤波的方法就不行了。

相关帖子

来自 2楼
highgear| | 2011-1-10 00:09 | 只看该作者
不显示偏差大的值,绝对不是好办法,掩耳盗铃而已。

解决办法很多:
1) 可以使用 dft/fft 求幅值,同时还可以求出功率等,可以参考我以前的帖子。
2) 可以使用均方根,但楼主的方法在电压频率不等于采样频率时会有抖动。解决方法是判断过零,同时对电压和频率作线形插值处理,可以达到很高的精度,而且稳定。

使用特权

评论回复
板凳
charrijon| | 2011-1-7 22:13 | 只看该作者
实时采进去后,整流滤波求出平均值,然后换算成有效值

使用特权

评论回复
地板
原野之狼| | 2011-1-7 22:42 | 只看该作者
市电信号干扰严重 不滤波咋行啊

使用特权

评论回复
5
pa2792| | 2011-1-7 23:15 | 只看该作者
FFT。

使用特权

评论回复
6
shizaigaole| | 2011-1-8 08:34 | 只看该作者
均方根比较好。
使用三相交流标准源的情况下,FFT算总有效值误差比均方根大。

LZ的问题可能是程序问题。

就均方根的算法来说,可以算出以后做一个多次平均。
还可以捕获过零点,从过零点采样开始计算。

使用特权

评论回复
7
new1988|  楼主 | 2011-1-8 09:26 | 只看该作者
2# charrijon
你这样做,比算均方根没有简单。

使用特权

评论回复
8
new1988|  楼主 | 2011-1-8 09:27 | 只看该作者
3# 原野之狼
没办法,硬件已经确定啦!而且也不是正真的电表,只是个小产品上面的。没必要搞的那么精确,只要数据稳定就是啦!

使用特权

评论回复
9
new1988|  楼主 | 2011-1-8 09:34 | 只看该作者
本帖最后由 new1988 于 2011-1-8 09:36 编辑

5# shizaigaole
我是采了四个周期的数据,算出均方根后,再去掉最大和最小值,再得平均的数据。现在的问题还是有0.7V的跳变。可是要求是要做到千分之一的精度。再有,我显示电压的同时,又显示了功率,电压跳来跳去,可是功率没跳,虽然功率的采集和电压的采集没关系(功率是用计量芯片采集的,然后单片机数脉冲个数就是了)。但是用户看来就不这么认为了,在常识里,电压和功率是有关系的。所以要做到数据稳定。

使用特权

评论回复
10
shizaigaole| | 2011-1-8 09:39 | 只看该作者
本帖最后由 shizaigaole 于 2011-1-8 09:40 编辑

如果不是电表,不要计量,
程序里面加一个简单的基于偏差的滤波不就得了,何况本来千分之一精度也不那么好做。

使用特权

评论回复
11
shizaigaole| | 2011-1-8 09:43 | 只看该作者
启动以后,若干次平均,以后的平均值数据和这个平均值比较,大于0.1%偏差就不显示,连续三次大于0.1%偏差,
才显示,并用新值代替旧值

使用特权

评论回复
12
SLEET1986| | 2011-1-8 09:54 | 只看该作者
学习一下--

使用特权

评论回复
13
new1988|  楼主 | 2011-1-8 12:14 | 只看该作者
10# shizaigaole
谢谢!!!觉得这种方法可行,我试试看!   电能的计量也有,只是和电压的采集没关系!

使用特权

评论回复
14
coody| | 2011-1-8 12:38 | 只看该作者
如果是理想正弦波,采样相位90度的两点值就可以计算出有效值,不过,市电已经不是理想的正弦波了,大量的开关电源,使顶部被削了。

使用特权

评论回复
15
原野之狼| | 2011-1-8 13:42 | 只看该作者
3# 原野之狼  
没办法,硬件已经确定啦!而且也不是正真的电表,只是个小产品上面的。没必要搞的那么精确,只要数据稳定就是啦!
new1988 发表于 2011-1-8 09:27

没有硬件滤波可以有软件滤波啊 呵呵

使用特权

评论回复
16
c126| | 2011-1-8 13:59 | 只看该作者
正想做这方面的呢,正好学习。

使用特权

评论回复
17
new1988|  楼主 | 2011-1-8 16:47 | 只看该作者
13# coody
我之前也是这样想的,算出来的数据一看,跳得更厉害,而且到低电压的时候,数据根本就不对了。

使用特权

评论回复
18
new1988|  楼主 | 2011-1-8 16:50 | 只看该作者
14# 原野之狼
你是说对AD采集的数据滤波,那样忙不过来吧,AD采集的间隔只有625us。51单片机有点麻烦!

使用特权

评论回复
19
原野之狼| | 2011-1-9 02:14 | 只看该作者
硬件滤波没有 软件滤波又办不到 那就是系统设计的问题了
PS:已经有兄弟提到FFT了 看来并不是办不到哦~

使用特权

评论回复
20
lbff| | 2011-1-9 02:31 | 只看该作者
同意十楼啊,偏差大的值不显示,既然功率上没问题那就就行

使用特权

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

本版积分规则

27

主题

471

帖子

0

粉丝