在此我们简要总结一下adc的各种指标如何理解,以及从硬件到软件都有哪些可以采用的手段来提高adc的转换精度。
1.adc指标
除了分辨率,速度,输入范围这些基本指标外,衡量一个adc好坏通常会用到以下这些指标:失调误差,增益误差,微分非线性,积分非线性,信噪比,信纳比,有效位数,总谐波失真。让我们以下图为例来看一下这些指标的意义。
lsb
参数中经常用lsb作为单位,比如说差分非线性为2 lsb。这究竟是多大一个值呢?为了简单起见,我们以一个3bit分辨率,满量程为5v的adc为例。1个lsb对应的电压大小为5v/7=714mv。如果是8bit分辨率,那么1个lsb对应5/255=19mv。
图中横轴为输入电压vin增长方向,纵轴为数字输出。理想情况下输入电压每增长1lsb(714mv),那么输出会向上跳变一次,对应虚线l1所在转换曲线。但实际电路往往会引入偏差,转换曲线往往如 l2 所对应曲线。
失调误差(offset error)
电压从0开始增大时,引起输出第一次跳变的电压值,与理论上应该引起第一次跳变的电压值(0.5 lsb)的差值。衡量小电压时的转换精度。如图中,理论上应该在0.5 lsb处跳变,实际电压增大到1 lsb时才跳变,所以offset error是 1–0.5 = 0.5 lsb。
增益误差(offset error)
可以理解为实际转换曲线偏离理想曲线的程度。用最接近满量程时跳变点电压值和理论跳变点电压值的差表示。
差分非线性 dnl(differential non-linearity)
理论上每增加或减少1 lsb 的电压,都会引起输出对应的一次跳变。但实际情况可能如图中a,b处所示,电压的步距大于或小于1个lsb的理论步距。
a 处 dnl = 1.5 – 1 = 0.5 lsb;
b 处 dnl = 0.5 – 1 = -0.5 lsb;
积分非线性 inl(integral non linearity)
差分非线性累积起来造成的对实际转换曲线的最大偏离就是inl。如图中所示,需要注意的是inl不能表征对理想转换曲线的偏离程度。
总不可调整误差 tue(total unadjusted error)
实际转换曲线与理想转换曲线之间最大的偏离。在最糟糕的一点,我们通过adc得到的电压,与实际电压的差值。通俗讲就是最不准的一点差多少。
思考一下,如果 dnl 和 inl 都非常好,那么是不是说明 tue 就非常好?
对,还真不一定。即使线性度非常好,如果增益误差大,还是会导致最终结果大的偏差。
信噪比 snr(signal-to-noise ratio)
有用信号与噪声的能量比。我们总是期望信噪比越大越好。对于一个 n-bit 分辨率的adc来说,如果输入是一个满量程的正弦信号,在只考虑量化噪声的情况下,可以推导出一个有用的公式:
snr = 6.02n + 1.76db
推导过程见参考文档 adi: mt-001
此公式直观的表明了adc分辨率和信噪比之间的量化关系。
信纳比 sinad (signal-to-noise-and-distortion ratio)
实际adc是无法达到理想状态的,它的输出除了会引入噪声,还会引入输入信号的谐波。sinad是有用信号能量,与谐波(distortion)加噪声(noise)能量的比,它更能体现现实世界中的adc性能。
sinad = 20log(s/(n+d))
*而snr = 20log(s/n)
有效位数 enob(effective number of bits)
体现adc实际性能相当于多少位。可以从sinad推出:
enob = (sinad–1.76)/6.02
*和理想情况下的位数对应:nob =(snr - 1.76)/6.02。
总谐波失真 thd(total harmonic distortion)
有用信号能量与谐波能量的比。
thd = 20log(s/d)
2.如何提高转换精度
模拟电源(vdda)和电压参考(vref)
有的单片机adc模块会引出单独的电源引脚和电压参考引脚,最好用ldo给这些引脚供电,或者用磁珠和滤波电容把这部分电源从数字部分隔离出来。
输入信号的输出阻抗
下图是adc采样简化等效电路。adc采样和保持电路的等效输入电阻电容radc,和cadc,手册中都会给出。在采样期间,开关sw会接通外部的信号输入电路,给采样电容cadc充电至和输入信号相等(接近),之后sw断开,adc对采样电容上的电压进行转换。如果采样时间过短,或者输入信号的输出阻抗过大,将导致采样电压不准。在信号源输出阻抗过高时,可以考虑增加一级运放。
高频串扰
如果与模拟输入引脚靠近的io上有高频翻转的信号,或者pcb上有与输入信号长距离的平行走线,串扰将干扰输入信号。应避免adc引脚临近信号高频翻转。在adc输入布线和临近的走线之间用地线隔离开也可以避免adc精度下降。
wait,stop模式
如果adc在wait和stop模式下还可以工作,在此种模式下可以最大限度的降低mcu电源的波动,提高adc的转换精度。
过采样(oversampling)
如果采样频率为fs,那么对于fs/2以内的信号频率既可以获得完整信息。过采样是用远高于所需的采样频率去采样,这样噪声就会均摊在整个采样频带内。我们用数字滤波器可以滤除有用信号频带之外的噪声,从而使频带内的信噪比提高,获得更高的分辨率。对多次转换结果进行平均也可以提高结果的精度。
芯片内部校正
很多单片机内部都有校正机制(calibration),每次上电后执行一次calibration,可以以提高adc的精度。
温度的影响
adc受温度影响比较大,特别是失调误差和增益误差。如果芯片工作温度范围很宽,可以在不同的温度下预先测量,按温度做出查找表以在实际工作时做校正。
混入白噪声
这种方法对提高直流信号的分辨率很有用。如果输入信号接近直流而且很稳定,那么输出就不会产生跳变,比如输出一直是0x15a,我们无法确认输入电平是更接近0x159,还是更接近0x15b。那么我们可以人为地把白噪声混入信号,使信号产生小的波动从而输出产生跳变,然后再通过数学平均得出一个精度更高的数值。实际操作中可以用gpio产生一个方波然后通过阻容耦合进输入信号引脚。
带PID的数字输出控制示例解析
PCB热问题的解决方案分析
led小间距具备怎样的优势
IGBT对栅极驱动电路的要求
33张图详解TCP和UDP:打通网络和应用的中间人
ADC的各种指标如何理解,如何提高ADC转换精度
欧洲最节能LED灯具
瑞萨电子迎来“获奖季”,三项大奖尽收囊中
变频器的种类和控制方式
旅游产业会因为AI技术而颠覆吗
LoRa与NB-IoT在物联网应用的优缺点
继电保护是电力系统中的作用
乘员舱热舒适度和车辆能量管理云技术研讨会圆满结束!
洛微科技自主研发的芯片获“2020年度最具潜力IC设计企业”奖
魅族魅蓝5S发布在即 魅蓝5S升级前瞻
水下冰川机器人是如何在南极工作的?为你揭晓水下冰川机器人的神秘面纱
我国的工业机器人产业已达到发达国家水平
紧跟《行动计划》,助力产业强基 ——首届中国基础电子元器件产业峰会召开在即
安富利推出基于MCU的Amazon Alexa语音服务(AVS)解决方案
蔚来首款量产车官方图片发布,携11辆车亮相上海车展