打印

AD采集交流信号有效值处理问题

[复制链接]
7741|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenyu988|  楼主 | 2012-6-11 20:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 chenyu988 于 2012-6-12 20:40 编辑

用STC12C5A32AD采集50HZ交流信号的有效值(最大500V),经过互感器,反向放大等送到IO口,由于AD采样为0-5V,把原IO口电压抬高了2.5V,算法是一个周期内采集16次,计算均方根值。
为什么加到100V与500V显示的值差不多,与示波器观察到的值不一样。
是不是算法哪里出了问题?

相关帖子

沙发
highgear| | 2012-6-11 22:25 | 只看该作者
你还是说说你的问题是什么

使用特权

评论回复
板凳
chenyu988|  楼主 | 2012-6-12 08:13 | 只看该作者
2# highgear
这种算法对不对?哪里出了问题

使用特权

评论回复
地板
coody| | 2012-6-12 10:21 | 只看该作者
1、计算避免溢出。
2、输入避免超量程。

使用特权

评论回复
5
chenyu988|  楼主 | 2012-6-12 14:53 | 只看该作者
4# coody
变量都是定义为lint的,不会溢出吧

使用特权

评论回复
6
李冬发| | 2012-6-13 06:55 | 只看该作者
不会是你把ADC输出的值直接求均方根值吧?

使用特权

评论回复
7
291355171| | 2012-6-13 08:20 | 只看该作者
本帖最后由 291355171 于 2012-6-13 08:22 编辑

何必不加个有源整流,在加个电容你不就有了平均值了么?如果感觉还是不行,在程序里在加个数字滤波就可以了,直接测直流电压是一样的,像这种方法根本就很难测准不说,而且你测出来的电压值也是一直在动。占用时间太多,效果不好。

使用特权

评论回复
8
李冬发| | 2012-6-13 15:21 | 只看该作者
to:291355171,你以为有源整流+个电容会有数采好啊?平均值方式问题更多。他这个就是直流分量没处理好的原因。

使用特权

评论回复
9
291355171| | 2012-6-14 08:48 | 只看该作者
8# 李冬发
电容是如果在加一个对地负载呢,这个负载不能太小否则就真的采不出来了,然后再在程序里面在加一个数字滤波呢,这怎么样呢?

使用特权

评论回复
10
DianGongN| | 2012-6-14 09:59 | 只看该作者
“100V与500V显示的值差不多”

说明算法有问题,用以下的算法看一下结果:
1、计算16个采样结果的平均值avg
2、计算每个采样结果与avg的差值delta,计算delta的平方square(注意delta为有符号数)
3、16个square求和再开方

lz采样16次,太少。如果测量对象为市电则精度不高

使用特权

评论回复
11
chenyu988|  楼主 | 2012-6-14 16:32 | 只看该作者
问题已找到,是get_ADC_result()函数类型定义为uchar型 导致溢出了

使用特权

评论回复
12
wyb668| | 2012-8-29 12:41 | 只看该作者
学习一下

使用特权

评论回复
13
coody| | 2012-8-29 14:25 | 只看该作者
计算要用32位的变量

使用特权

评论回复
14
768869084| | 2013-1-20 23:45 | 只看该作者
学习了,

使用特权

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

本版积分规则

47

主题

1108

帖子

14

粉丝