我在使用ADS1242开发以产品时发现,硬件使用ADS1242,基准使用LT1019-2.5,MCU使用ATMEGA32,采集电压信号的范围为0~47mV,信号精度要求1uV,使用ADS1242的内部PGA,PGA=32,BUF关闭,软件中使用自校准(偏移和增益校准)在测试时我使用一直流电位差计输出电压,分别使用我这个产品和AG6.5的万用表来测量这个电压信号,发现我这一产品显示的电压还是很稳定的,基本是1uV位跳动3个数,但精度和AG6.5对比感觉很差,而且在整个要求的电压范围内是非线性的,请问造成这个问题的原因所在?我该怎么解决?是因为增益校准方式的问题?(先将PGA=1,进行增益校准,然后再恢复用户设置的PGA?)
另外还有一问题,在实验过程中发现,在产品附近如果有电机类/继电器的感性负载工作时会使ADS1242死机,复位指令无用,时钟复位也无用,只能重新上电才可以,这该怎么解决?
Jack Li:
你好!
1)根据你的描述,你需要的noise -free bit 是17.5 bit. ( 15.52+1+1), 而且现在基本1uV位跳动3个数,这说明系统分辨率没问题。但是根据ADS1242规格书,第3页(共31页),ADS1242的integral Nonlinearity 是+/- 15ppm of FS, 这是点到点的(end point fit), 根据这参数,那不用非线性校正的位数是16.02bit. ( 24- log2( 15ppm *2^24). 从理论上讲,非线性小于分辨率了,所以你要在软件中作非线性校正。
上述参数计算不包括offset and Gain error,最好在初始化或出厂前作system offset and gain calibration.
2)如果有感性负载工作时,ADS1242没反应,要分下列情况:
1) 电机等感性负载与你的产品使用共同的220Ac电源,你要在电源输入端加强措施,如用个BNX002-1等
2) 如从输入端串入,你须在模拟输入端加些L/C等filter,或共轭filter。
最后,建议你把/PDWN (pin 4) 连到你的MCU其中空闲的I/O上,如在发生此类情况,你可以通过 PDWN拉低,再拉高,这样让内部的状态机复位,你就不用断电了。在程序中增加了可靠性。
如有更新和反馈,也跟大家共享一下!
fantao meng:
回复 Jack Li:
1,请问这个noise -free bit是怎么求出来的?具体公式的的含义都是什么?
2,还有那个非线性校正的位数任何AD都是这样算的吗?
3,你所说的非线性校正是怎么校正,是像我所做的那样拿高精度的表来进行校正?但我在校正的过程中发现一个问题,校正方法的问题,由于使用内部PGA外部并没有加放大环节,输入阻抗为5M/32,如果我将我搞的这个电路和6位半的万用表同时并联接到直流电位差计上,这时直流电位差计的输出电压会因为AD的输入阻抗不够高而造成输出电压降,由于直流电位差计并非差分输出,所以AD内部BUF无法开启,我通常的校准方式是电位差计输出直接安捷伦6.5,记录此值,而后断开安捷伦6.5,接入电路,以安捷伦6.5的显示值作为准确值,请问我这种校准方式有问题吗?
4,另外我在校准这个片子中发现,我使用Y=KX+B的函数模型来进行校准好像不能满足我的要求。
5,需要进行系统校准?我使用的是自校准的
谢谢回复
fantao meng:
回复 Jack Li:
1,请问这个noise -free bit是怎么求出来的?具体公式的的含义都是什么?
2,还有那个非线性校正的位数任何AD都是这样算的吗?
3,你所说的非线性校正是怎么校正,是像我所做的那样拿高精度的表来进行校正?但我在校正的过程中发现一个问题,校正方法的问题,由于使用内部PGA外部并没有加放大环节,输入阻抗为5M/32,如果我将我搞的这个电路和6位半的万用表同时并联接到直流电位差计上,这时直流电位差计的输出电压会因为AD的输入阻抗不够高而造成输出电压降,由于直流电位差计并非差分输出,所以AD内部BUF无法开启,我通常的校准方式是电位差计输出直接安捷伦6.5,记录此值,而后断开安捷伦6.5,接入电路,以安捷伦6.5的显示值作为准确值,请问我这种校准方式有问题吗?
4,另外我在校准这个片子中发现,我使用Y=KX+B的函数模型来进行校准好像不能满足我的要求。
5,需要进行系统校准?我使用的是自校准的
谢谢回复
Jack Li:
回复 fantao meng:
你好!
1) noise-free bit ( also called Peak-to-Peak bit) = 20log2(FSR/Vnoise p-p), FSR为满量程输入范围,Vnoisep-p 为等效到ADC输入端的噪声的峰峰值。假设noise-free Bit=17bit, 说明在其测试的条件下,去采一个DC信号,输出码中的高17 bit 是不会跳变的,余下的地位是一直在跳动。这就决定你系统的分别率,如果此值小于INL 等效bit数, 它还决定你的系统的准确度。
2) 如果INL按照end-point 来定义的话,是的。
3) 你的电路和6位半的万用表同时并联接到直流电位差计上,这时直流电位差计的输出电压会因为AD的输入阻抗不够高而造成输出电压降,只要6.5的输入和ADC的输入接在一起,那我们应该认为两者电压相等的。那校正的值也应该是有效的。 至于测试值与实际差是另一回事。建议你还是加个AMP, 应为你要测试对象的输出阻抗比较高,但你产品在作高低温测试是,ADC输入pin的漏电电流和bias 电流是变化的,那时候你的温度测试就有可能没法通过。
4)是的,对高精度的表来说,简单的校正是满足不了的,而且Y=KX+B函数一般是用来校正offset 和gain 误差的。你去看看最小二乘法是否可行,如我没记错的话。
5) 要作系统校准,自校准只是再ADC内部给你输入短路作offset calibration, 接到基准作gain calibration, ADC前边电路的误差并没有校准到。
Have a nice day!
Jack Li:
回复 Jack Li:
你好!
补充第一个问题:noise free bit一般在产品的规格书中有,你只要找出跟你应用相同或接近的那个,即可。
fantao meng:
回复 Jack Li:
我做这个电路PCB已经设计好了,所以在这一版加AMP恐怕是不行了,但我的这个产品中要求AD的线性,所以我想通过软件来修正,当然希望测量值和实际值能尽量的接近才可以,但我该怎么做,用我之前的做法是否可以,毕竟安捷伦6位半的万用表还是可以相信的,另外我的DC输入信号是取自一电桥上,上桥臂是560欧电阻,下桥臂是100欧电阻,这时电桥的输出阻抗怎么算,是多少?
Jack Li:
回复 fantao meng:
你好!
1)用61/2的表校正应该可以。我们内部测量也是这样测试的,这不过我们是81/2表。
2) 根据戴维南, 电桥的输出阻抗是100//560, 从AIN+或AIN- 看过去。
fantao meng:
回复 Jack Li:
我的校准方式是电位差计输出直接安捷伦6.5,记录此值,而后断开安捷伦6.5,接入电路,以安捷伦6.5的显示值作为准确值,请问我这种校准方式有问题吗?
你们的校准方式也是这样的吗?
另外请你推荐几个我这个东西上可以使用的AMP,斩波稳零型?仪放?
Jack Li:
回复 fantao meng:
你好!
1) 用电位差计输出直接安捷伦6.5,记录此值,不要断开安捷伦6.5,直接取ADC的读数,这样才能保证两者的输入是相同的,否则没有比较的基础,从而没法去校正。
2) 找个Auto-zero的运发,如OPA333等,主要offset 温漂小。