5.1 ADC 采样与模拟信号处理


5.1 ADC 采样与模拟信号处理

本节摘要:analogRead 返回一个整数,看似简单,背后却是量化、阻抗、基准与采样率四重物理现实的叠加。本节把这四重现实逐个拆开:最小可分辨电压怎么算、输入阻抗为什么让读数偏低、参考电压温漂如何伪装成传感器故障、采样率不足时高频干扰如何"化妆"成低频漂移——并用一次低温读数漂移的排查案例把四者串起来。

第 4 章的软件架构为数据处理搭好了容器,本章开始往容器里灌数据。5.1 放在链路最上游,因为 ADC 是模拟世界与数字世界的关卡:这一关的认知不到位,5.2 的滤波就是在洗来历不明的脏水。

四个数字背后的四重现实

analogRead 的输出是 0 到 1023(10 位)或 0 到 4095(12 位),第一重现实是量化误差:最小可分辨电压等于参考电压除以 2 的位数次方。3.3V 参考、12 位 ADC 的台阶约 0.8 毫伏——低于台阶一半的信号变化在数学上不可见。这不是缺陷,是数字化的定义;要做 0.1 毫伏级的测量,加前置放大或换外挂高分辨率 ADC,别指望软件奇迹。

第二重现实是输入阻抗:ADC 采样前要给内部采样保持电容充电,充电时间有限。信号源阻抗太高(比如经 1 兆欧分压电阻进来的电池采样),电容充不满,读数系统性偏低且随上一通道残留而抖动。判据是源阻抗与 ADC 要求的匹配:AVR 建议 10 千欧以内,ESP32 更挑剔。阻抗降不下来就加一级运放跟随器,或者加一颗小电容在引脚上做"蓄水池"。

第三重现实是参考电压:读数的本质是"输入电压占参考电压的比例"。参考电压漂 1%,所有读数一起漂 1%——而你若以为这是被测量的变化,就掉进了最常见的归因陷阱。用内部基准(如 1.1V 带隙)测一次供电轨,就能把比例还原成绝对值。

第四重现实是混叠:采样率不足时,高于采样率一半的干扰不会消失,而是折叠成低频假信号。50 赫兹工频干扰以 80 赫兹采样,会变成 30 赫兹的"真实存在"的波动——滤波器滤不掉它,因为它在数字世界里已经是合法低频。对策只有在上游解决:采样率至少取信号带宽的两倍,并在 ADC 前加简单的 RC 低通把高频挡在门外。

图:混叠的折叠机理

图:混叠的折叠机理

采样节拍与读数的工程姿势

采样节拍交给硬件定时器(第 2 章的工具),而不是在 loop 里 delay 凑数——定时节拍是 5.2 节一切频域处理的前提,采样间隔不均匀的序列,任何滤波公式都失真。

// 定时器节拍采样:间隔均匀,漂移归零(ESP32 示例) volatile bool sampleReady = false; void IRAM_ATTR onTick() { // 定时器中断:只举旗 sampleReady = true; } void setup() { Serial.begin(115200); analogReadResolution(12); // 用 1kHz 硬件节拍触发 onTick,采样率由此严格确定 } void loop() { if (sampleReady) { sampleReady = false; uint16_t raw = analogRead(34); pushToFilter(raw); // 交给 5.2 节的滤波器 } }

中断只举旗、主循环执行采样的结构沿用 2.1 节的纪律;真正的项目里把 analogRead 也放进中断缓冲更稳。这段代码的关键是:sampleReady 由 1kHz 硬件节拍置位,采样间隔的均匀性由硬件保证——软件再忙也不拖累节拍。

案例:低温读数漂移的完整归因

背景:户外光照记录仪用光敏电阻分压接 ADC,冬季现场数据系统性偏低,且清晨偏差最大,回实验室一切正常。

操作:第一步验量化——偏差幅度约 4%,远超半个量化台阶,排除分辨率问题。第二步查阻抗——分压网络用 10 千欧,规格之内,排除。第三步查参考电压——设备用 USB 供电的 5V 经板载 LDO 出 3.3V 做 ADC 参考;低温下分压电阻阻值漂移(光敏电阻本身的温度系数另算),而参考电压由 LDO 输出决定,LDO 在低温下输出上浮约 1.2%。读数公式里分母涨了,分子里的电阻也变了,两个温漂叠加——这才是 4% 的构成。第四步对症:改用芯片内部 1.1V 带隙做参考并把分压比调整到匹配量程,同时给分压网络换低温漂电阻。

结果:复测冬季现场,偏差从 4% 收敛到 0.6%,进入传感器自身温度系数决定的物理极限。

解读:这个案例是"第三重现实"的完整注脚:ADC 读的是比例,比例两端各有温漂,任何一端单独看都"在规格内"。模拟链路的归因方法是把读数公式写出来——分子分母逐项审,哪一项会随环境变,误差就从哪里来。

变式:若信号是振动、音频这类交变信号,本节的"混叠"就从配角升为主角:采样率、抗混叠滤波器的截止频率、以及 FFT 分析的频率分辨率,构成另一套工程清单——思路相同,参数表不同。

⚠️ 常见坑:ESP32 的 ADC2 与 WiFi 共存受限,WiFi 启用时 ADC2 引脚不可用——"WiFi 一开读数全零"不是硬件坏了,是被协议栈征用了。模拟输入规划时优先占用 ADC1 的引脚。

💡 关键直觉:analogRead 读出的永远是"输入与参考的比值"。把这句话刻进脑子,一半的模拟通道疑难杂症会自动现出原形。

分压测量的完整算例

把本节知识点串成一道完整的题:用 12 位 ADC、3.3V 参考测一节锂电池(3.0 到 4.2V)。第一步定分压比:4.2V 超出量程,用两只电阻分压到三分之二以内——选 100 千欧加 200 千欧,把满量程 4.2V 压到 2.8V,留 15% 余量。第二步算台阶:2.8V 除以 4096 约 0.68 毫伏,折回电池侧乘以 1.5 得约 1 毫伏,够判断 10 毫伏级的电量变化。第三步核阻抗:戴维南等效电阻约 67 千欧,远超 ADC 舒适区——在 ADC 脚加 100 纳法电容做蓄水池,采样前电容充满、采样瞬间由电容供电,读数立刻稳定。第四步校参考:软件定期用内部基准反测供电轨,把读数从"比值"修正为"绝对值"。

这道题的四步恰好对应本节四重现实:量程与量化、阻抗与采样保持、参考温漂、以及"读数是比值"的本质。以后任何模拟测量项目,照着这四步走一遍,最起码不会犯低级错误。

本节要点回顾

  • 量化误差是台阶一半:够不着就加放大或换 ADC,软件无从弥补;
  • 源阻抗与采样保持的矛盾:阻抗高读数偏低,运放跟随或蓄水电容解围;
  • 读数是比值:参考电压温漂伪装成信号变化,内部基准可还原绝对值;
  • 混叠让高频变低频:采样率两倍带宽加前置 RC,是数字世界唯一没有特效药的物理约束;
  • 采样节拍由硬件定时器保证:间隔不均匀,一切下游处理失去意义。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U