打印

如何通过AD采样检测工频正弦信号的峰值啊?

[复制链接]
7239|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
longlyway|  楼主 | 2008-3-15 00:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
正在做一个项目,要求用单片机来采样并显示电机的电流值。电流信号经过互感器并作精密半波整流后(不做滤波),输入到单片机的AD端口进行采样。请问个位大虾有没有好的算法求出峰值电压。小弟作了一个算法,效果不是很理想,显示的电流波动较大。哪位大虾能否指点一下?
沙发
yewuyi| | 2008-3-15 08:27 | 只看该作者

ad要足够快,并加上信号趋势判断

使用特权

评论回复
板凳
zgl7903| | 2008-3-15 14:07 | 只看该作者

用均方根算有效值方法处理

使用特权

评论回复
地板
longlyway|  楼主 | 2008-3-15 15:42 | 只看该作者

yewuyi能否具体说说

知道峰值后,有效值好办,关键是如何判断峰值,而且不要占用太多时间来处理数据。二楼的方法我试过,只是单片机内的AD速度只有15kSPS,加上趋势判断后,一是反应慢,而是数值波动大

使用特权

评论回复
5
yewuyi| | 2008-3-15 16:12 | 只看该作者

波动大的原因在于你很难在峰值点恰好采样

所以,这个时候你还需要再加入一个连续多次峰值求平均等的算法,当然,如果你采用1阶滤波:Yn=a*Xn+(1-a)*Y(n-1)效果会更好,关于一阶滤波请自己查阅相关文献。

使用特权

评论回复
6
longlyway|  楼主 | 2008-3-16 18:24 | 只看该作者

谢谢yewuyi

使用特权

评论回复
7
01dxwlm| | 2008-3-16 19:56 | 只看该作者

首先用硬件产生一个ZERO_CROSS的信号

首先用硬件产生一个ZERO_CROSS的信号,计算出周期,然后根据上一个周期把本周期的信号均分为32分,即每周期采样16或者32次,再用均方根算有效值方法处理。这样做出来的要多准就有多准。

使用特权

评论回复
8
longlyway|  楼主 | 2008-3-17 22:02 | 只看该作者

7楼的方法可行

7楼的方法可行,但要增加硬件,还要增加IO口,在IO口资源已用尽的情况下无能为力

使用特权

评论回复
9
兰天白云| | 2008-3-20 18:24 | 只看该作者

不知道你用什么单片机?

如果1秒采样100万次,找个峰值应该没问题

使用特权

评论回复
10
longlyway|  楼主 | 2008-3-22 23:18 | 只看该作者

我用的是M64

采样速度才15K

使用特权

评论回复
11
ddb_21ic| | 2008-3-23 13:12 | 只看该作者

15k应该也够了

15000/50=300,最大相位误差才1.2度,sin(90-1.2) = 0.99978

使用特权

评论回复
12
wyb668| | 2012-8-22 22:57 | 只看该作者
正想做个显示电机电流的电流表,很有用

使用特权

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

本版积分规则

2

主题

17

帖子

0

粉丝