|
12 位 ADC 读同一路信号,理论分辨率 1mV 级,实测却跳十几个码。问题多半不在 ADC 本身,而在基准、滤波与走线这三处。本文按排查顺序给出具体做法与常见数值。
一、先看基准,别急着怀疑 ADC
很多人拿万用表量 3.3V 电源,看到 3.30V 就认为基准没问题。实际上 ADC 用的是基准脚电压,不是电源电压。如果基准直接接电源,电源纹波会一比一进入读数。
三个具体检查:
- 基准脚旁边有没有 0.1µF + 10µF 的组合;只有 0.1µF 时低频纹波抑制不够;
- 基准用的是内部基准还是外部基准。内部基准的初始精度常见 ±1%,温漂几十 ppm/℃,12 位 ADC 配 1% 基准,等于把 12 位浪费成 7 位;
- 基准脚上有没有其他负载。基准被拿去驱动别的东西,读数会跟着那个负载一起跳。
一个能立刻验证的办法:把 ADC 输入短接到地,连续采 1000 点看码值分布。如果地短路时码值还在跳 ±5,说明问题在基准或采样时序,与传感器、线缆无关。
二、滤波要放在正确的位置
RC 滤波是最常用的手段,但位置和参数经常放错。
- 位置:RC 要放在 ADC 输入脚旁边,不是放在传感器输出端。放在传感器端,中间那根线照样收噪声;放在 ADC 脚旁边,噪声在进入引脚之前就被削掉。
- 参数:截止频率按信号带宽的 5–10 倍取。测温度这种慢变量,信号带宽不到 1Hz,R=10kΩ、C=1µF 就够(截止约 16Hz);但同样的参数用在测电流的场合(要看 50Hz 纹波),会把有用信号一起滤掉。
- 代价:R 太大会和 ADC 的采样电容形成分压。多数单片机 ADC 要求源阻抗在几 kΩ 以内,R 取 10kΩ 时,采样时间要相应加长,否则读数偏低。这一条在数据手册的"外部输入阻抗"一节里写着,很少有人翻。
三、走线:模拟部分最容易被数字部分带坏
同一块板上,ADC 走线和数字信号走线的关系,直接决定读数稳不稳。
- 模拟走线不要从晶振、开关电源电感、继电器驱动管下方穿过;
- 模拟地与数字地单点连接,连接点选在 ADC 芯片下方的地焊盘,不要在两处各连一次;
- 多路采样时,每路的走线长度尽量一致,否则通道之间的偏差会变成"系统性误差",校准也校不平。
四、软硬结合的两个小技巧
1. 采样时刻避开开关动作。继电器吸合、MOS 开关瞬间,电源上会有几十毫伏的塌陷,此时采样必然异常。把采样放在开关动作之后 1–2ms,跳码会明显减少。
2. 用过采样换分辨率。连续采 16 次求平均,等效多 2 位;但前提是噪声是随机的,如果噪声来自 50Hz 工频,平均反而会把干扰固化成偏移,这时要先做 50Hz 陷波或用整周期采样。
五、一个真实的排查顺序
地短路看基准 → 单点采样看跳幅 → 加 RC 看变化 → 换通道看是否单路问题 → 断开负载看是否被负载带动。五步走完,八成问题能定位到具体那一处,而不是笼统地"ADC 不准"。
苏州永节电子科技有限公司 · 单片机开发与控制板定制 · 二十年电子行业设计经验 · www.yjeie.com
|