提到ADC,都会问是10位12位16位是什么意思?
10位就是10位2进制的意思0-1023。
12位就是12位2进制的意思0-4095。
16位就是16位2进制的意思0-65534。
也就是ADC的分辨率。
比如说我们想采集一个3.3v的电压值,3.3v分成1024份表示和分成65536份表示,当然65536表示的精度更高。ADC里叫LSB,也就是1024 LSB。
如何选择ADC
我们在选择ADC的时候除了要知道他的分辨率,参考电压,还有速度之外还要知道一些ADC的性能指标。这些性能指标会影响你的采集精度,虽然你可以后期通过各种算法校准过来,但这些属于硬件基础。
1.总未调整误差(ET):实际转换曲线与理想转换曲线最大差别
2.偏移误差(EO):实际转换-理想转换
3.增益误差(EG):最后一次转换-理想转换
4.微分线性误差(ED):实际步长和理想步长的最大差别。
5.积分线性误差(EL):实际转换点与终点连线的最大差别。
上面是ADC的一些内部特性,里面的误差由厂家来把控,不用我们关心。
外部的ADC误差来源:
1.电源噪声
通常参考电压 = 电源电压 = 3.3VDC (PS:也有5v等等)
当电源噪声叠加到电源电压上,引起测量误差。
电源电压: 3.3VDC
输入信号: 1.0VDC
电源噪声: 0.04VDC
误差: 1 / (3.34-3.26)*4096 (12位AD)
2.输入噪声
当输入噪声叠加到电源电压上,引起测量误差。
电源电压:3.3VDC
输入信号:1.0VDC
输入信号噪声:0.04VDC
误差: (1.04-0.96) / (3.3)*4096 (12位AD)
3.信号源阻抗的影响
源阻抗RAIN和芯片内部电阻RADC,影响充电时间,
从而影响测量结果,Tc =(RAIN+RADC)*CADC。
4.信号外部电容和PCb分布电容影响
外部电容CAIN和分布电容CP,影响充电时间、频率,从而导致测量误差。
如何来减小误差
通过降低电源的噪声提高采样准确性
电源和地线之间增加0.1uF和1-10uF钽电容。
2.通过降低输入信号的噪声
增加外部滤波器,如RC低通滤波,带通、高通滤波等,保证需要频率信号有效,阻断或限制不需要的噪声。通过信号的多次采样,通过软件平均的方法,可有效消除不频繁变化模拟信号上的噪声。
3.调整ADC采集的动态范围
充分利用AD可测量的范围,提高参考电压和采用前置放大器。
4.选取合适的源阻抗
假设最大允许误差1/2LSB,也就是VAIN-VC=1/2LSB,VC为内部实际电压,VAIN为输入电压。
已VAIN=VREF输入时,ts为采样时间,计算最大源阻抗。
Rmax=(RAIN + RADC)max
N为ADC分辨率
Rmax=ts / (CADC * ln(2^(N+1)))
最终计算公式:
例:
fADC=14MHz,CADC=8pF,RADCmax=1kΩ,当采样Ts=7.5秒时,误差1/2LSB时的RAINmax是多少
5.合理布线减小数字信号(I/O引脚)对模拟信号的影响
信号线用地线隔离
6.减小EMI(电磁干扰)
采用屏蔽线将远距离信号连接到PCB,屏蔽层在信号接收端接地。如下图
7.合理PCB 布局,采用数字模拟分开布局方式
8.合理PCB布局,采用独立电源给模拟和数字供电,星型网络连接模拟,数字地
9.高输入阻抗源信号采样减小采样误差的方法
当S1开关闭合时,Csh上电压会施加到输入管脚上,当采样结束S2断开时,Csh上电压不能有效释放,导致测量电压不准,通过添加Cext减小,使得采用完成后,Csh上电压得到有效释放如1/2LSB。
后续代码加一些关于ADC的算法即可。