电子说
市面上ADC有很多,不同的ADC价格相去甚远,所以我们到底应该如何去选ADC?
先从知道参数是什么开始!
ADC的resolution一般用位数表示,比较常见的是 8bits~24bits,其中这个8bits代表的是2的8次方
式1: 2^8=256
不过他是从0开始算,要256要减去一个1,255换成16进制刚好是FF,插个题外话,不知道大家换算16进制是怎么换算的我换算的方法如下
这个resolution代表你可以把基准电压分成多少份,换成符合国情的说法,ADC就是一个称,Resolution越高就表示同样能称的范围内,称的最小刻度越细,最小刻度一两的称是称不了一钱的东西。称也能称只是很不准。
有的ADC内部自带Reference,有的ADC则没有内部Reference,reference顾名思义就是基准的意思,resolution是把电压分成多少份,reference就是被分成多少份的电压。Reference最为重要的是精度和其稳定性。
因为reference是电路的唯一标准,初始精度就显得尤为重要。若是和外部DMM匹配对ADC的采样值进行校准,那么这个初始精度就不那么重要了。
当前用的最多的估计是TL431,我们一起看看
图2: TL431初始精度
如果你是当2495mV用的话,ADC采集的最高偏差约2.2%,但这个偏差是个固定值,可以和ADC的Gain Error在一起被校准掉。因为其本质就是会导致ADC的斜率不对。详情见观电路-csa与系统。
Reference的输出电压会随着温度的变化而变化,典型的表述方式是ppm/degree C,我们一起看看TL431的温度漂移。
图3:TL431温漂
92/100万 ≈ 1/1万 也就是说温度每变化一度,TL431的输出电压就会变0.2495mV正常温度变化一般是不止1℃的变化,在用作电源基准的场合基本上都能有20℃左右的变化,若是使用TL431可能就会引起5mV左右的基准变化。而我们看看内部自带基准的ADC ADX122内部基准的水平如何。
图4: ADX122温漂
它并没有直接描述其内部基准的温漂是多少,而是告诉我们ADC的Gain drfit是多少,因为ADX122内部还有一些PGA什么,这些东西的温漂也会造成ADC输出结果的偏差,事实上我们关心的是ADC的输出结果到底是如何,给出Gain Drift我们也能直观的得出ADC的输出结果会怎么样的变化。
在FSR=±0.256V时候约8ppm/℃,约等于8uV/℃,公平的给他上个20℃约0.16mV带入±0.256V在比一下约3%%,表示当温度变化20℃采集到同个电压≈有3%%的偏差。
ADC采集的理想曲线应当是条45°的斜线,但是因为Gain error的存在这个斜线不是完美的45°,这个斜线的偏差会导致输出结果的偏差,下图为理想曲线↓根据下图的斜线也就明白Gain error对采样的影响。
图5:ADX122 CODE Transition diagram
Reference的输出不仅会随着温度的变化而变化,也会随着时间的变化而变化,在手册中一般以long term drift出现,或者叫做LTD,在工业系统中LTD非常重要,经常有听这机器一年要校准一次,这机器xx校准一次。很大的原因和LTD有关系。我们看看ref5025的LTD↓
图6:REF5025 Long Term stability
可以看到VSSOP-8的LTD是25ppm/1000Hr 就是说每1000小时ref5025会变化2.5u也就是41天变化2.5uV,对于这个变化主要还是看设备的精度要求是多少,多长时间校准一次。具体设备具体自己分析。
另外reference的PSRR有时候也是非常重要,尤其是开关电源供电的情况下,PSRR指的是当输入电压变化时候输出电压的变化。如果开关电源的输出纹波比较大将会直接影响Reference的输出电压。建议选择LDO为reference供电,避免因为电源太烂导致reference输出抖得不行,LD50x的输出有各种选择适合各种基准。
图7:LD50x选型手册
图8: LD50X PSRR
从图8可以看出来,ld50x的PSRR变化,典型的reference芯片加ADC的功耗大多在10ma左右,典型的开关电源一般都在100Khz左右,若是在板上的DC/DC他们的开关频率会更高一般是650Khz~2Mhz,我们看LD50X的PSRR在100Khz时候接近60db,约1000倍,也就是说输入变化1V输出变化1mV,正常来说开关电源输出纹波并不会那么高,并且reference芯片本身也有一些PSRR两级衰减可以保证输出的电压是干净的。另外值得一提的是,LD50X的噪声特性特别好,适合给各种精密传感器用作模拟供电。
图9:LD50X简介
满量程误差指的是当ADC读取的最大值和理想最大值的差距,比如说12bits(参考为4.095V)的ADC转换了一个4095 LSB的值时候,理想的话此时的输入电压应该就是4.095V,但是由于ADC的输入offset的存在,和Gain error的存在,就产生了full scale error,说到底还是理想直线和实际直线的偏差。Gain error和offset error参考观电路-csa与系统。
若是我们将ADC的每个LSB跳变电压点画出来在连上线我们会发现,这个线并不是绝对直的直线,就算我们校准其offset以及校准其Gain error,将其往理想直线上挪,我们也会发现其跳变电压点和理想跳变电压点的偏差,DNL定义了理想跳变点与实际跳变点的最大差值。
比如说,当输入电压往上加1LSB,但是ADC没有任何反应,当输入电压加到1.5LSB时候ADC的输出Code才发生变化,这时候我们可以说DNL为+0.5LSB,同理,当输入电压往上加到0.5LSB其输出Code就发生改变我们可以说他的DNL为-0.5LSB,一个好记的方法就是多出来电压才变的是+LSB,欠电压就变的是-LSB。
Integral non-linearity积分非线形就是DNL的合集,它所代表的是理想和实际的最大垂直差值,比如说当在001到100的这个output code range里时DNL都是负值,当我输入一电压使其达到011,这时我的ADC实际输出code是高于理想输出code的,在ADC的整个范围内去寻找理想曲线和实际曲线的区别,找到垂直误差最大的点就是ADC的INL最大值使用LSB来表示。若是实际输出Code高于理想输出Code此时INL为+的,若是实际输出Code低于理想输出Code则INL为-的。
图1:INL曲线
有点像你给酒缸里面灌水,理想状况下可能是一勺子水液位升1cm,但实际上酒缸的桶不太规则,在开始时候酒缸的DNL为负的,但到了酒缸最中间的位置他的DNL为正的。最终我们根据给酒缸灌水液位上升曲线和一勺1cm液位上升曲线找出他的INL,实际上和酒缸的外形有关系。
那么非线形如何影响我们的实际系统呢?
比如说你的采样精度要达到1/10000,你使用的是16bit的ADC他的INL为10LSB,也就是说在校准掉Gain error和offset error后理想采样LSB和实际采样LSB差10LSB,也就代表理想和实际可能最大会差10LSB,所以就算你选了16bit的ADC你的INL差,你的最终输出结果精度也是到不了1/10000的。主要和你的设计精度有关。
图3:ADX122 INL积分非线性
在这里看到ADX122的INL的最大值是12LSB,但是它的分辨率有20bit所以他的最大的Code是1048576,直接将这个Code除12得87381,还是远远高于1/10000的精度,注意:这里忽略了其他参数。
一般ADC的采样率用SPS表示,SPS 全拼是 sample per second 每秒采样。那我们如何去看ADC的SPS是多少?
在芯片手册的第一页我们一般能看到芯片的SPS是多少,以ADX122举例如图4所示
图4:ADX122的SPS
那我们又怎么去测量ADX122的SPS呢?通过读取ADX122的寄存器我们可以看到ADX122的SPS是多档位可以配置的。
图5:ADX122 SPS的档位
当我们配置不同的data rate 时候他的SPS是不同的,其他ADC也有类似的选项。当我们设置好ADX122的时候我们触发ADX122的DRDY信号就好,等数据准备好DRDY会变低,不同的芯片可能不同。这里仅参考ADX122的手册。
图6:ADX122 DRDY引脚描述
所以我们只需要触发DRDY的翻转间隔我们就知道当前的SPS为多少,因为DRDY在ADX122里是与DOUT共用,所以在读取间隔时候需要注意。
图7:蓝色的为DRDY的间隔
图7约间隔3mS一次,根据手册可以得出结论大概是316SPS。
全部0条评论
快来发表一下你的评论吧 !