硬件(十三)模拟转数字ADC转换
在嵌入式系统与信号处理领域,模拟信号与数字信号的转换是核心环节之一。温度、湿度、压力等物理量经传感器检测后,输出的往往是连续变化的模拟电压信号,而微控制器等数字电路仅能处理离散的数字码。ADC(模数转换器)正是连接这两个世界的 “桥梁”,其性能直接决定了信号采集与处理的精度。
一、ADC 核心定义:模拟与数字世界的 “翻译官”
ADC(Analog-to-Digital Converter,模数转换器)的本质功能,是将连续变化的模拟电压信号转换为离散的数字编码。这种转换能力使得自然界的物理量(如光照强度、声音波形)能够被数字电路识别、运算、存储和传输。
举个典型应用场景:温湿度传感器检测环境后输出 0-3.3V 的模拟电压,ADC 可将该电压转换为对应的 8 位、12 位等数字码(例如 0-255、0-4095),微控制器接收数字码后,再通过校准公式反推出实际的温湿度值 —— 这一过程的核心就是 ADC 的 “翻译” 作用。
二、ADC 核心参数 1:分辨率 —— 决定转换精度的 “标尺”
分辨率是衡量 ADC 转换精度的核心指标,直接决定了模拟信号被 “量化” 的精细程度,其单位为二进制位数(n 位)。
1. 分辨率的本质:量化电平的数量
ADC 会将参考电压范围内的模拟信号,划分为若干个离散的 “量化电平”,每个电平对应一个唯一的数字码。分辨率越高(n 值越大),量化电平数量越多,对模拟信号的描述就越细腻,转换误差也越小。
量化电平的数量与分辨率的关系为:量化电平数 = 2ⁿ
例如:8 位 ADC 有 2⁸=256 个量化电平,12 位 ADC 有 2¹²=4096 个量化电平。
2. 量化步长:最小可分辨电压
不同量化电平之间的电压间隔,被称为 “最小可分辨电压” 或 “量化步长”,是判断 ADC 能否识别微小电压变化的关键。其计算公式为:
ΔV = 参考电压(Vref) / 2ⁿ
举例说明:
若参考电压 Vref=5V,分别计算 8 位和 12 位 ADC 的量化步长:
- 8 位 ADC:ΔV = 5V / 2⁸ = 5V / 256 ≈ 19.53mV(即最小能识别约 19.5mV 的电压变化)
- 12 位 ADC:ΔV = 5V / 2¹² = 5V / 4096 ≈ 1.22mV(能识别更微小的 1.22mV 电压变化)
显然,相同参考电压下,分辨率越高,量化步长越小,转换精度越高。
3. 常见分辨率与应用场景
- 8 位:适用于精度要求较低的场景(如简单电平检测、LED 亮度调节);
- 10-12 位:主流嵌入式场景(如普通传感器数据采集、电池电压监测);
- 16 位:高精度场景(如工业仪表、医疗设备);
- 24 位:超高精度场景(如实验室测量、精密传感)。
三、ADC 核心参数 2:参考电压 —— 转换的 “基准标尺”
参考电压(Vref)是 ADC 量化模拟信号的 “基准”,直接决定了 ADC 的输入电压测量范围(通常为 0~Vref),同时与分辨率共同影响转换精度。
1. 参考电压与数字码的对应关系
ADC 输出的数字码与输入模拟电压(Vin)的换算公式为:
Vin = (数字输出码 / (2ⁿ - 1)) × Vref
举例说明:
若 Vref=5V,8 位 ADC 输出数字码为 128,计算输入电压:
Vin = (128 / (256 - 1)) × 5V ≈ (128 / 255) × 5V ≈ 2.51V
2. 参考电压的选择原则
参考电压的精度直接影响 ADC 的转换结果:若 Vref 本身不稳定(如随温度漂移),即使分辨率再高,转换精度也会下降。因此实际应用中需根据需求选择:
- 普通场景:可使用微控制器内置的参考电压(如 3.3V、5V);
- 高精度场景:需选用外置精密参考电压芯片(如 TL431),保证 Vref 的稳定性。
四、主流 ADC 架构:逐次逼近型 ADC(SAR-ADC)工作原理
ADC 的架构多样,其中逐次逼近型 ADC(SAR-ADC) 因兼顾速度、精度与成本,成为嵌入式系统中应用最广泛的类型(如 STM32、Arduino 的内置 ADC 多为此类)。其核心优势是 “高效比较”—— 仅需 n 次比较即可得到 n 位数字码,而非低效的 2ⁿ次遍历。
逐次逼近的工作流程
SAR-ADC 的核心由逐次逼近寄存器(SAR) 和DAC(数模转换器) 构成,工作过程类似 “天平称重”,从最高位到最低位逐步确定每一位的数值:
- 初始化寄存器:将 SAR 的最高位(MSB)置为 1,其余位清零(例如 8 位 ADC 初始为 1000 0000);
- DAC 转换与比较:SAR 中的数字码经 DAC 转换为对应的 “比较电压(Vcmp)”,将该电压与输入模拟电压(Vin)送入比较器:
- 若 Vin > Vcmp:说明当前位的 “1” 是合理的,保留该位为 1;
- 若 Vin <Vcmp:说明当前位的 “1” 过大,将该位清零;
- 逐位确认:移动到下一个次高位,重复步骤 2 的 “置位 - 转换 - 比较” 过程;
- 输出结果:经过 n 次比较后,SAR 中保存的数字码即为最终的转换结果。
举例:3 位 SAR-ADC 的转换过程(Vref=8V,Vin=5.2V)
- 初始 SAR=100 → DAC 输出 Vcmp=4V → 5.2V>4V → 保留最高位,SAR=100;
- 次高位置 1 → SAR=110 → DAC 输出 Vcmp=6V → 5.2V<6V → 次高位清零,SAR=100;
- 最低位置 1 → SAR=101 → DAC 输出 Vcmp=5V → 5.2V>5V → 保留最低位,SAR=101;
- 最终输出数字码 101(对应 5V),与实际 5.2V 的误差为 0.2V(由分辨率决定)。
五、关键辅助电路:采样保持电路(S/H)的作用
ADC 的转换需要一定时间(转换时间),而输入的模拟信号可能在转换过程中持续变化(如声音波形、快速变化的传感器信号)。若直接对变化的信号转换,会导致 “孔径误差”—— 转换结果与实际信号值偏差。
采样保持电路(Sample & Hold, S/H) 正是解决这一问题的关键:
- 采样阶段:电路快速跟踪输入信号,在 “采样瞬间” 锁定当前电压值;
- 保持阶段:电路将锁定的电压值稳定输出,直至 ADC 转换完成;
- 核心效果:为 ADC 提供一个稳定的输入电压,彻底消除转换期间信号变化带来的误差。
总结
ADC 作为模拟与数字世界的核心接口,其性能由分辨率、参考电压等参数决定,而架构与辅助电路则影响转换效率与稳定性。逐次逼近型 ADC 凭借 “n 次比较得 n 位结果” 的高效特性,成为嵌入式场景的首选;采样保持电路则为动态信号的精准转换提供保障。