凡亿教育 · 电子工程师实战教育品牌
嵌入式硬件培训:长沙/广州校区
|
课程咨询:15989478308(同微信)
免费领取课程大纲

ADC电压明明稳定,采样值为什么总是偏低?

ADC电压明明稳定,采样值为什么总是偏低?

万用表量ADC引脚电压很稳定,软件读数却一直偏低,不一定是ADC精度差。SAR ADC内部有采样保持电容,采样瞬间需要从外部信号源充电。前级阻抗太高、采样时间太短或多通道切换太快,都可能让电容来不及充到真实电压。

做MCU ADC时,有一种问题非常常见。

万用表量引脚是2.000 V,示波器看也没什么明显噪声,可程序换算出来长期只有1.93 V、1.95 V。

于是开始校准ADC、改VREF、做平均滤波,折腾半天误差还在那里。

这种情况我一般先问一句:你的ADC前面到底接了多大的源阻抗?采样时间设了多少?

SAR ADC输入脚里面,不是一个“无限大电阻”

很多人理解ADC输入时,会把它想成万用表:输入阻抗很高,所以前面怎么分压都无所谓。

但MCU里常见的SAR ADC在真正采样时,会闭合一个内部开关,把外部输入接到一颗Sample-and-Hold电容上。

这颗电容要在有限的Acquisition Time里充到接近VIN,然后开关断开,ADC再对这个被“存住”的电压做转换。

问题就出在这里:如果外部信号源阻抗很大,给这颗小电容充电的RC时间常数就变大。采样窗口已经结束了,电容还没充到真实输入电压,结果自然偏低。

QQ_1791618519229.png图1:典型SAR ADC输入模型,外部源阻抗与内部开关、电阻和采样保持电容共同决定建立时间。

为什么万用表看不出来

万用表测的是相对慢的直流状态,而且输入阻抗通常很高。

ADC的动作却很短。每一次采样,都可能在几十ns、几百ns或者几µs的时间里对输入端抽取一小包电荷。

所以“ADC脚静态电压正常”和“采样瞬间已经稳定”是两回事。

尤其是前面用100kΩ、几百kΩ电阻做分压,为了低功耗又把电阻做得很大时,问题最容易出现。

ADC位数越高,对Settling Error越敏感。12 bit想真正达到12 bit精度,内部采样电容需要比8 bit、10 bit更加充分地稳定。

图2:ADC外部驱动与内部Sample-and-Hold并不是彼此独立,前端必须在采样窗口内把内部电容充到目标精度。

图2:ADC外部驱动与内部Sample-and-Hold并不是彼此独立,前端必须在采样窗口内把内部电容充到目标精度。

多通道轮询时,误差有时会跟“上一通道”有关

这个现象更有迷惑性。

例如ADC通道A上一拍采的是3.0 V,下一拍立刻切到通道B的0.5 V。如果B的源阻抗很高,内部采样电容上前一通道残留的电荷没来得及完全释放和重新建立,B的结果可能就被A“带偏”。

反过来也一样:从低电压通道切到高电压通道,第一次采样值可能偏低,第二次、第三次才逐渐接近。

这也是为什么有些项目里会看到一个很土但有效的办法:切通道以后先丢掉第一次转换结果,再读第二次。

它能缓解问题,但最好还是把根因搞清楚——源阻抗、采样时间和内部采样电容之间到底是否匹配。

最快的验证办法:先把Sampling Time拉长

如果芯片允许调ADC Sampling Cycles,先把采样时间明显拉长再测。

结果立刻接近真实值,方向基本就对了。

第二个验证动作,是临时把分压电阻减小一个数量级。例如原来470kΩ/100kΩ,实验时换成47kΩ/10kΩ,再看ADC结果是否改善。

第三个动作是在ADC脚附近加合适的小电容,形成一个Charge Reservoir,让采样瞬间需要的电荷先由这个电容提供,而不是全部通过高阻信号源现充。

但RC也不能随手乱加。电容太大、串联电阻太大,会限制信号带宽;快速变化的模拟量可能又跟不上。

图3:SAR ADC一个周期由Acquisition和Conversion组成,采样时序决定输入建立时间。

图3:SAR ADC一个周期由Acquisition和Conversion组成,采样时序决定输入建立时间。

设计阶段怎么少踩这个坑

第一,翻Datasheet里的ADC Analog Input Model和Maximum Source Impedance,不要只看“12-bit ADC”这几个字。

第二,按最差通道切换压差计算或估算Acquisition Time。前一通道和后一通道差得越大,Settling压力越明显。

第三,高阻传感器、精密分压和高速采样之间如果冲突明显,就加Buffer,不要硬让ADC直接吃。

第四,VREF也要查,但顺序别反了。采样时间不够时,换再准的Reference也救不了前端没有稳定下来的电压。

一句工程判断:ADC采样不准,别只盯“多少位”;先确认内部那颗采样电容有没有时间真正充到位。

声明:

本文由凡亿教育整理,转载请注明来源!

投稿/招聘/广告/课程合作/资源置换 请加微信:13237418207


上一篇Buck静态输出正常,一跳负载为什么就掉压振铃? 下一篇裸板S11很好,装进外壳后天线为什么跑频?