[高精度数据采集][AD7799][电子称称重] | 您所在的位置:网站首页 › ads7841中文资料 › [高精度数据采集][AD7799][电子称称重] |
AD7799称重系统 从AD7799的方案定型,到PCB样板的打样就只有几天的时间,可以说很顺利。简单的说一下模拟部分的电路:传感器信号经简单的一阶RC低通滤波直接接到AD7799的AIN1+、AIN1-;AD7799的DOUT、SCLK、DIN、CS经ADuM1401跟单片机相连,单片机本身带有SPI口,但本人觉得设置SPI积存器比较麻烦,就采用模拟SPI跟AD7799进行通讯;系统采用2个电源模块分别对模拟电路和数字电路进行供电,粗略的算了一下模拟电路部分的功耗,采用LM2931对模拟部分供电,经精密电阻分压得到理论值2.5V做AD7799的参考电压,但是实际的参考电压只有2.46V,不知道是否是电阻精度不够还是LM2931的功率不够造成的。没什么特别的,电路方面太简单了。只是布板,布线的的时候特别的注意了模拟电路数字电路的区分,屏蔽,地线都做了相应的处理,很没有工具,不能拍照给大家分享一下。 把我采集到数据晒出来给大家看一下: 电压:0099399电压:5436999电压:4218166电压:3037177电压:3406400电压:4342766电压:1431744 电压:1423166电压:1414433电压:1405799电压:1397144电压:1440344电压:1438177电压:1436099 电压:1451166电压:1451166电压:1451155电压:1451144电压:1451111电压:1451177电压:1451122 电压:1451177电压:1451111电压:1451155电压:1451111电压:1451088电压:1451088电压:1451088 电压:1451088电压:1451088电压:1451088电压:1451088电压:1451088电压:1451088电压:1451077 电压:1451077电压:1451077电压:1451077电压:1451066电压:1451055电压:1451044 数据是通过串口显示出来的,AD7799必须经过一段时间才能稳定下来,所以采集到的前几次数据不是真实的结果,必须过滤掉,当然,得到的这些数据也是经过算法处理的。稳定之后会发现,只有后两位是变化的,原因很多,噪声干扰是必然存在的,不可能没有,只可能把它抑制在一个很小的范围内。经转化为重量后发现,600g的量程可以显示到0.003g,最后的那位有点波动,但不会超过10。这个结果比我想象中的要好的多,但还是有很多问题需要解决。 发表此贴,是为了结识有经验的人,大家讨论一下,怎样才能把精度再提高一些,精益求精。
问题1:
模拟电源的不稳定。
现象:
5V的模拟电源我们经测得,实际只有4.90V,一方面给AD7799上电,另一方面做传感器的激励电源,激励电源的不稳定,那么AD的输入就会不稳定;模拟电源经精密电阻分压得到的AD7799参考电压是2.46V,参考电压的不稳定,直接影响到AD的采样输出结果。
问题来源:
模拟电源的不稳定,对这种数据采集的精度到底会影响多大呢,不得而知,我没有办法验证。
问题的解决构想:
在最初设计电路的时候,并没有在稳压块的精度、温漂、有效值噪声方面有太大的在意。在看了很多方面的资料之后才意识到其重要性。AD7799决定采用ADI的参考源:ADR03 2.5V 精度+/-0.1%,3ppm/℃,1.03美元;
或ADR381 2.5V 精度0.24%,3ppm/℃, 0.76美元;
5V稳压IC:ADP3330ARTZ-5,CNR = 10 nF时,输出噪声为47uV;
CNR = 0 nF时,输出噪声为95uV. 0.62美元。
或LT1763 输出噪声20uV. 就是有点贵。
请ADI的专家看一下,我选择这几款是否合适。大家也可以推荐几款比较经典的IC,但是噪声一定要低,RMB10元左右都可以。 问题2:
AD采样速率太低
现象:
AD7799的采样速率可以通过写模式寄存器进行设置,但是其精度是靠牺牲速度来完成的,就是说高精度必须在低转换速率下完成。这样在对数据结果的算法处理上就没有太多的选择了,不能选择那种很浪费时间的的算法。
寻找解决问题的方法:
调试中,确实证明了,当AD7799采样速率在4.17HZ时精度是最好的。而在这种速率下就要选择合适的算法,我只用了简单的几种算法,要保证有足够大的数据更新速率。在算法处理方面呢,我的经验很少,希望大家能多给点意见。 问题3:
干扰的屏蔽或处理
现象:
在称重过程中,轻轻的震动都会对系统造成干扰,很明显的,在无输入的情况下,敲动桌子,显示数据会在0.3g左右跳动;同样手机信号对称重系统的干扰是十分严重的;
问题的解决:
震动的影响,可以通过最简单的加权法来弥补,如下:
uint32 idata
oldresult00,oldresult01,oldresult02,oldresult03,oldresult04,oldresult05,newAdcResult;
oldresult00=oldresult01;
oldresult01=oldresult02;
oldresult02=oldresult03;
oldresult03=oldresult04;
oldresult04=oldresult05;
oldresult05=newAdcResult;
newAdcResult = adccon();//取ADC转换电压结果
return(7*oldresult00+6*oldresult01+5*oldresult02+4*oldresult03+3*oldresult04+2*oldresult05+1* newAdcResult)/28;
可以自己选择系数,但是最新数据的系数越小,其对于跳动的抑制能力越强,但这样也会影响到系统结果的稳定时间,具体的需要在调试中实践。
手机信号的干扰,主要可以通过加屏蔽罩进行屏蔽。但还是无法做到十分有效,还是需要大家集思广益。
写这篇文章,也是确实在开发中遇到的问题了,想在这里跟大家讨论一下,怎样来解决。关于AD7799,个人感觉在程序上很简单。
AD7799在使用中,我简单的翻译了一下,有十几页,有需要中文资料的,在这里留下邮箱地址,有空的时候发给大家。
板子还在更新中,遇到新问题,我会继续在这里更新。希望大家能在这里充分的讨论一下,来提高精度。
零点漂移比较严重。 传感器是采用电阻应变片式的,当放一个接近满量程的重量上去之后,它的重量会慢慢增加,在拿掉被测物体后,不会立刻恢复到零点,要经过很长的时间才能恢复到零点。 那么这个零点漂移是由什么来引起的呢,是应变片发生形变不能正常恢复?还是受温度带来的零漂,或是其他的? |
CopyRight 2018-2019 实验室设备网 版权所有 |