已回答假定已回答

[高精度数据采集][AD7799][电子称称重]

Yamei 在 2013-1-26 詢問的問題
最後回覆由Vincent CHEN於2018-1-21提供

AD7799称重系统
  

   AD7799的方案定型,到PCB样板的打样就只有几天的时间,可以说很顺利。简单的说一下模拟部分的电路:传感器信号经简单的一阶RC低通滤波直接接到AD7799AIN1+AIN1-AD7799DOUTSCLKDINCSADuM1401跟单片机相连,单片机本身带有SPI口,但本人觉得设置SPI积存器比较麻烦,就采用模拟SPIAD7799进行通讯;系统采用2个电源模块分别对模拟电路和数字电路进行供电,粗略的算了一下模拟电路部分的功耗,采用LM2931对模拟部分供电,经精密电阻分压得到理论值2.5VAD7799的参考电压,但是实际的参考电压只有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在使用中,我简单的翻译了一下,有十几页,有需要中文资料的,在这里留下邮箱地址,有空的时候发给大家。

 

  

板子还在更新中,遇到新问题,我会继续在这里更新。希望大家能在这里充分的讨论一下,来提高精度。

 

 

 

零点漂移比较严重。

 

传感器是采用电阻应变片式的,当放一个接近满量程的重量上去之后,它的重量会慢慢增加,在拿掉被测物体后,不会立刻恢复到零点,要经过很长的时间才能恢复到零点。

 

那么这个零点漂移是由什么来引起的呢,是应变片发生形变不能正常恢复?还是受温度带来的零漂,或是其他的?

結果