OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5619|回复: 8

求助:ADC转换值 和 实际测量值 之差 差异过大 ?

[复制链接]

72

主题

209

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1586
金钱
1586
注册时间
2014-9-11
在线时间
175 小时
发表于 2017-1-26 13:57:53 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 myopene 于 2017-1-29 00:31 编辑

见附图,有 20组 数据:
第二列为 使用ADC转换后的数字值 计算出来的传感器输出电压值;
第三列为 用台式万用表测量的 传感器实际输出值;
第四列为 前两列 之差。

两列之差的 最大值为0.21844mV,最小值 为0.00046mV (0.21844/0.00046 = 479.8,相差 480倍) !
也就是说,有时,ADC转换的精度 很高,有时 却很低。
使用的ADC芯片是:ADS1220;MCU用的是STM32F030 .

请教:
测量这20组数据时,使用的是同一个 硬件电路,软件配置 也一样,为什么 会出现 这么大差异 呢 ?

非常感谢 !

附图
无标题 1.png

最佳答案

查看完整内容[请看2#楼]

这个有可能是ADC的稳定性不好,也可能是ADC的精度线性不够。你测量的样本不是太够,不好说 这里有篇帖子,能帮你解决ADC稳定性不好的问题,不过线性精度这篇帖子就不能解决了。 帖子地址STM32F407的ADC真的不够精准吗?教你设置STM32F407的ADC参数使其精度高于千分之一 当然帖子标题是不准确的,应该是使其不稳定偏差小于千分之一,因为ADC稳定了线性却未必好。 当然,你在怀疑ADC之前,至少要确认你的万用表价格不是低 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7948
金钱
7948
注册时间
2014-8-13
在线时间
1590 小时
发表于 2017-1-26 13:57:54 | 显示全部楼层
本帖最后由 mack13013 于 2017-1-27 20:03 编辑

这个有可能是ADC的稳定性不好,也可能是ADC的精度线性不够。你测量的样本不是太够,不好说

这里有篇帖子,能帮你解决ADC稳定性不好的问题,不过线性精度这篇帖子就不能解决了。
帖子地址STM32F407的ADC真的不够精准吗?教你设置STM32F407的ADC参数使其精度高于千分之一

当然帖子标题是不准确的,应该是使其不稳定偏差小于千分之一,因为ADC稳定了线性却未必好。

当然,你在怀疑ADC之前,至少要确认你的万用表价格不是低于100块的那种。
回复

使用道具 举报

0

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2015-6-21
在线时间
52 小时
发表于 2017-1-28 10:52:16 | 显示全部楼层
见到好多人说STM32的ADC这样那样的事情,我也试了一下,确实是不如独立的adc好用,但是也不像好多人说的那样差劲。
由于搞了很久的模拟电路,让我直接把信号捅到io上的事情我是无论如何也做不出来的,你首先要有一个ADC前端的概念,怎么输入一个信号是很重要的,有时候必须要经过阻抗缓冲的。然后就是ADC的调制频率,到底是搞准了没有,再有就是一个值得信赖的基准,你不会用3.3V的电源电压作为基准吧。这些都搞了,也差不多了,就这样用吧。市面上独立的ADC大把的,便宜的有TM7705,真的不贵,需要有点质量的转换可以考虑一下。

另外,为什么做开发板的家伙都没有基准的概念,哪怕您就是加上一片一块多钱的MC1403也好太多了,我被迫自己做开发板只为了这个,至今没有见过谁哪怕放一片MC1403上去,几百块的开发板还在乎那一块多钱吗。
回复

使用道具 举报

72

主题

209

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1586
金钱
1586
注册时间
2014-9-11
在线时间
175 小时
 楼主| 发表于 2017-1-29 00:30:37 | 显示全部楼层
本帖最后由 myopene 于 2017-1-29 00:34 编辑
mack13013 发表于 2017-1-26 13:57
这个有可能是ADC的稳定性不好,也可能是ADC的精度线性不够。你测量的样本不是太够,不好说

这里有篇帖子 ...

谢谢大侠 !

1. ADC芯片 用的 是ADS1220( 24位的,集成PGA 和 2.048V的参考电压);MCU用的是STM32F030 ;
2. 万用表 用的是agilent台式万用表
回复

使用道具 举报

72

主题

209

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1586
金钱
1586
注册时间
2014-9-11
在线时间
175 小时
 楼主| 发表于 2017-1-29 00:47:52 | 显示全部楼层
本帖最后由 myopene 于 2017-1-29 00:49 编辑
北京蜈蚣 发表于 2017-1-28 10:52
见到好多人说STM32的ADC这样那样的事情,我也试了一下,确实是不如独立的adc好用,但是也不像好多人说的那 ...

谢谢前辈 !
前辈 专业 !

1.  ADC芯片用的是ADS1220( 24位ADC,集成PGA 和 2.048V的参考电压);MCU用的是STM32F030;
     ADC外围电路 如附图所示,不知道 有无问题,还请前辈指点 !
2. “ 调制频率 ”是什么意思 ?是 采样速率吗 ?这里的采样速率是:45SPS(45次/秒)。
附图
无标题1 1.png

回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7948
金钱
7948
注册时间
2014-8-13
在线时间
1590 小时
发表于 2017-1-29 04:00:57 | 显示全部楼层
本帖最后由 mack13013 于 2017-1-29 04:03 编辑
myopene 发表于 2017-1-29 00:30
谢谢大侠 !

1. ADC芯片 用的 是ADS1220( 24位的,集成PGA 和 2.048V的参考电压);MCU用的是STM32F030 ...

24位??  我擦,没注意到这个精度。看你下面的图应该是差分信号了。
内部集成参考电压的话,电源部分有个磁珠隔离应该是够了。看了ADS1220参考手册,AIN0和AIN1给出的参考布线没有严格按照成对,估计是芯片设计考虑到这里不会有太大影响了。

不管怎么说,这么高分辨率的ADC都得是伺候祖宗级别了。先分步骤确认吧,把测量系统一个一个的摘除(比如先去掉ADC电路,仅用万用表测量,确定没问题之后,再一个系统一个系统的加进去,慢慢确定问题范围再说)

说实话,这样分辨率的ADC没接触过,感觉应该是高精密的玩意,可是看ADC数据手册给出的参考电路,就是一对电阻3个电容(感觉像是12位ADC前端那么粗糙啊)。

还有,输入输出阻抗驱动会不会有问题,毕竟5.1K挺大的,如果可能,降低阻值试试(若是为了信号匹配的电阻的话,当我没说,其实这个的可能性蛮低,毕竟45sps不高)

这么高分辨率,我是没玩过,无责任胡诌一下吧,这么高分辨率,在信号进入ADC之前,感觉应该有复杂的补偿、屏蔽、跟随电路之类的,参考手册给出的电路还是觉得简单了些。
回复

使用道具 举报

0

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2015-6-21
在线时间
52 小时
发表于 2017-1-29 05:13:02 | 显示全部楼层
myopene 发表于 2017-1-29 00:47
谢谢前辈 !
前辈 专业 !

sorry,真没注意这个是精度24位的ADC,我还以为是用的STM32内置的ADC
操作高过16位的ADC都是一种痛苦的煎熬,你要是没有心思较劲就不适合干这个,你要是较劲太过就变成了迂腐的钻牛角尖的节奏了,所以心态很难把握。如何是个度,就需要非常理智的判断。
首先,要给自己定一个目标,你到底要获得什么样子的分辨率和精度
看你采样45次,这类廉价的24位adc也就是能获得比16位稍强的数据吧,得到24位的数据是不现实的,毕竟噪音已经好几十微伏了。说到噪音,adc干的就是信噪比,你想获得更准确的数据,除了降低速率没有任何的捷径。随之而来的就是各种的纠结,首先你的接口要隔离,去看看稍微精准些的芯片,比如LTC2440,ADS1256,都要求你隔离端口,不然单片机的分吹草动就会引起较大的出入。然后就是基准,这该死的基准是一切的核心,5ppm是绝对不好用的,起码要1ppm,事实上6位半万用表34401的刻度是1200000,你看看实际的有效位是多少呢,但是五位半六位半的表都坚决的使用了深埋恒温基准,这不是没有道理的。最最使人闹心的还有那些电阻电容,起码你图里C7,C9,C11如果是一般的贴片电容就会让你用的提心吊胆的,因为电容也是有温飘的,最好是上聚碳酸酯的电容,看看那些仪表的图就清楚了。要是前端稍微复杂一点,那些高精准低温飘的电阻个个比你的芯片贵10倍。所以去探索高精准的数据转换要慎重,没事别折腾这个。
高精准的数据采集是非常费钱的,看看市面上有大把的二手六位半万用表就知道了,真正干这个,万用表绝对用不到3年就要换掉的,因为里面器件的老化是不可逆的,到时候必须淘汰换新不然就对不起昂贵的工程师的工资开销。说的有点多了,原则就是没事最好不用钻研这个,因为不值得,我们也绝对不可能超过前人的。
回复

使用道具 举报

72

主题

209

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1586
金钱
1586
注册时间
2014-9-11
在线时间
175 小时
 楼主| 发表于 2017-1-30 01:59:15 | 显示全部楼层
mack13013 发表于 2017-1-29 04:00
24位??  我擦,没注意到这个精度。看你下面的图应该是差分信号了。
内部集成参考电压的话,电源部分有 ...

谢谢 前辈 !

学习了...
回复

使用道具 举报

72

主题

209

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1586
金钱
1586
注册时间
2014-9-11
在线时间
175 小时
 楼主| 发表于 2017-1-30 02:00:31 | 显示全部楼层
北京蜈蚣 发表于 2017-1-29 05:13
sorry,真没注意这个是精度24位的ADC,我还以为是用的STM32内置的ADC
操作高过16位的ADC都是一种痛苦的 ...

谢谢前辈!

学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-23 23:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表