欢迎光临
我们一直在努力

别让你的 ADC “失真”——单片机模数转换从入门到精通

单片机 ADC 详解:从原理到工程实践

ADC(Analog-to-Digital Converter,模数转换器)是单片机中最重要的模拟外设之一。它把真实世界的连续模拟量——温度、压力、电压、电流、声音、光照等——转换成单片机能够处理的离散数字量。理解 ADC 的工作原理、参数指标、外设结构和使用方法,是嵌入式开发的基本功。

下面从概念、参数、原理、单片机内部结构、工作模式、硬件设计、软件处理、应用选型等几个方面,做一个比较系统的介绍。


一、ADC 的基本概念与作用

在嵌入式系统中,单片机核心是数字电路,只能识别 0 和 1。而现实世界的大部分物理量是连续变化的模拟量。例如:

  • 温度传感器输出 0.5 V ~ 2.5 V 的电压;

  • 电池电压在 3.0 V ~ 4.2 V 之间变化;

  • 电流采样电阻两端电压为几十 mV;

  • 麦克风输出微弱的交流音频信号。

ADC 的作用就是把这些模拟电压信号转换成数字编码,例如:

输入 1.65 V,参考电压 3.3 V,12 位 ADC 输出约为 2048。

转换结果可以用公式表示:

其中:

  • VnVin​:输入模拟电压;

  • Vref​:参考电压;

  • N:ADC 位数;

  • D:数字输出码值。

例如 12 位 ADC,Vref=3.3V,输入 1.65V:

实际输出可能是 2047 或 2048,存在量化误差。


二、ADC 的主要技术参数

1. 分辨率

分辨率表示 ADC 能够分辨的最小模拟变化量,通常用位数表示:

  • 8 位:256 个等级;

  • 10 位:1024 个等级;

  • 12 位:4096 个等级;

  • 16 位:65536 个等级;

  • 24 位:16777216 个等级。

最小分辨电压也叫 1 LSB:

例如 12 位、3.3 V 参考:

2. 参考电压

参考电压 Vref决定了 ADC 的满量程输入范围。常见单片机参考电压来源:

  • 芯片内部基准,例如 1.2 V、2.5 V、3.0 V;

  • 外部专用基准芯片,例如 TL431、REF3030、ADR4525;

  • 单片机供电电压 VDD​。

参考电压的稳定性直接影响转换精度。如果参考电压波动 1%,转换结果也会产生约 1% 的误差。

3. 转换时间与采样率

转换时间是指完成一次模数转换所需的时间。对于 SAR 型 ADC,通常由采样时间和逐次逼近时间组成。

采样率是每秒完成的转换次数,单位 SPS(Samples Per Second)或 Hz。例如:

  • 低速测量:几 SPS 到几 kSPS;

  • 普通单片机 ADC:几十 kSPS 到几 MSPS;

  • 音频采样:44.1 kSPS 以上;

  • 高速 ADC:几十 MSPS 到 GSPS。

根据奈奎斯特采样定理,要无失真恢复信号,采样率至少应为信号最高频率的 2 倍。实际工程中通常取 5~10 倍甚至更高。

4. 精度相关指标

分辨率高不代表精度高。精度还受非线性、噪声、温漂等影响。

DNL:微分非线性

实际 ADC 的相邻码宽与理想 1 LSB 之间的最大偏差。单位为 LSB。理想 ADC 的 DNL 为 0。如果 DNL 超过 ±1 LSB,可能会出现丢码。

INL:积分非线性

实际转换曲线与理想直线之间的最大偏差。INL 是 DNL 的累计效果,反映整体线性度。

失调误差与增益误差
  • 失调误差:输入为 0 时,输出不为 0 的偏差;

  • 增益误差:实际满量程与理想满量程之间的斜率偏差。

很多单片机 ADC 支持校准,可以修正失调和增益误差。

SNR 与 ENOB

理想 ADC 的信噪比:

实际有效位数:

ENOB 比标称位数更能反映真实精度。例如一个标称 12 位的 ADC,由于噪声大,实际 ENOB 可能只有 10.5 位。


三、常见 ADC 工作原理

单片机内部最常用的是逐次逼近型 ADC(SAR ADC),此外还有 Sigma-Delta ADC、Flash ADC 等。

1. 逐次逼近型 SAR ADC

SAR 是 Successive Approximation Register 的缩写。它在分辨率、速度、功耗和成本之间取得了很好的平衡,因此绝大多数单片机都集成 SAR ADC。

SAR ADC 的核心结构包括:

  • 采样保持电路;

  • 比较器;

  • DAC;

  • 逐次逼近寄存器;

  • 控制逻辑。

工作过程如下:

  • 采样阶段:开关闭合,输入电压对内部采样电容充电,电容电压跟随输入电压。此阶段结束后开关断开,保持电压。

  • 比较阶段:逐次逼近寄存器首先将最高位 MSB 设为 1,其余位为 0。DAC 将该数字码转换为参考电压的一半。

  • 比较器比较采样保持电压与 DAC 输出电压:

    • 如果输入电压大于 DAC 输出,则保留 MSB = 1;

    • 如果输入电压小于 DAC 输出,则清除 MSB = 0。

  • 依次对下一位重复上述过程,直到最低位 LSB 确定。

  • 转换结束,寄存器中的二进制码即为转换结果。

  • SAR ADC 每比较一次需要 1 个 ADC 时钟周期,因此 N 位 SAR ADC 通常需要 N 个左右的时钟周期完成转换,有时还需要额外几个周期用于采样和建立。

    特点:

    • 速度中等,适合从几十 kSPS 到几 MSPS;

    • 分辨率通常 8~16 位;

    • 功耗低,可集成到单片机;

    • 需要抗混叠滤波;

    • 对输入驱动阻抗敏感。

    2. Sigma-Delta ADC

    Sigma-Delta ADC 采用过采样和噪声整形技术,用很低的内部量化位数(通常是 1 位)实现很高的分辨率,常见于高精度低速测量,如称重传感器、温度测量、音频 ADC。

    特点:

    • 分辨率高,可达 16~24 位甚至更高;

    • 采样率较低,适合直流或低频信号;

    • 内部数字滤波,对模拟前端要求较低;

    • 常用于独立 ADC 芯片,部分单片机也集成。

    3. Flash ADC

    Flash ADC 使用大量比较器并行工作,一个时钟周期即可完成转换,速度极快,但电路规模随位数指数增长。一般用于高速应用,如示波器、视频处理。单片机中较少集成。


    四、单片机内部 ADC 外设结构

    以常见的 STM32、AVR、MSP430、ESP32 等单片机为例,内部 ADC 外设通常包含以下模块:

    1. 模拟多路开关

    单片机通常有多个 ADC 输入通道,但内部可能只有一个 ADC 内核。通过模拟多路选择器,分时切换不同通道。

    例如 STM32F103 的 ADC1 有 16 个外部通道,可以扫描转换多个引脚。

    2. 采样保持电路

    负责在转换期间保持输入电压恒定。采样时间需要根据输入信号源阻抗和内部采样电容确定。如果采样时间太短,电容充电不足,会导致较大误差。

    3. 逐次逼近转换器

    完成核心的量化过程。

    4. 转换结果寄存器

    保存转换结果,通常为 16 位寄存器,但有效数据位取决于分辨率。结果可以左对齐或右对齐。

    5. 触发控制

    ADC 转换可以由以下方式启动:

    • 软件触发:程序直接写启动位;

    • 定时器触发:由 PWM 或定时器事件触发,实现固定采样率;

    • 外部引脚触发。

    定时器触发在电机控制、数字电源等需要等间隔采样的场合非常重要。

    6. 中断和 DMA

    转换完成后可以产生中断,或者通过 DMA 自动把结果搬运到内存缓冲区,减少 CPU 负担。

    7. 模拟看门狗

    很多单片机 ADC 支持窗口比较功能。可以设置上限和下限,当转换结果超出范围时产生中断。常用于电源电压监测、过流保护等。

    8. 内部专用通道

    除了外部引脚,很多单片机 ADC 还连接了内部信号:

    • 内部温度传感器;

    • 内部参考电压;

    • 电池电压监测通道;

    • DAC 输出回读通道。

    例如 STM32 的 ADC 通道 16 常接内部温度传感器,通道 17 接内部参考电压。


    五、单片机 ADC 的常见工作模式

    1. 单次转换模式

    软件或外部触发一次,ADC 完成一次转换,然后停止,等待下一次触发。适合不需要连续采样的场合,如按键检测、温度巡检。

    2. 连续转换模式

    ADC 一次转换结束后自动开始下一次转换,持续输出转换结果。适合需要连续监测的场合,但 CPU 负担较重,通常配合 DMA 使用。

    3. 扫描模式

    多个通道依次转换。扫描模式可以配合单次或连续转换。

    例如:

    • 通道 0:温度;

    • 通道 1:电压;

    • 通道 2:电流。

    ADC 会自动按顺序转换所有使能的通道,结果可以存入不同的数据寄存器或通过 DMA 传输到数组。

    4. 注入模式(Injected Mode)

    部分单片机(如 STM32)支持注入通道。注入通道具有更高的优先级,可以由外部事件触发,打断常规转换。常用于电机控制中的电流采样,需要在特定时刻立即获取结果。

    5. 间断模式

    每次触发只转换一个或几个通道,然后停止,等待下一次触发。适合低功耗应用,可以降低平均功耗。

    6. 过采样与硬件平均

    部分单片机 ADC 支持硬件过采样,多次采样求和或平均,可以提高有效分辨率、降低噪声。

    例如 STM32L4 系列支持硬件过采样,可配置 2x~256x 过采样率,有效位数可增加。


    六、ADC 硬件设计要点

    1. 参考电压设计

    • 使用专用基准芯片,保证精度和温漂;

    • 在参考引脚附近加去耦电容(如 100nF + 10uF);

    • 避免参考电压走线经过大电流区域;

    • 如果使用内部基准,注意其精度和温漂指标。

    2. 输入信号调理

    • 分压:当被测电压超过 ADC 量程时,使用电阻分压;

    • 滤波:在 ADC 输入引脚加 RC 低通滤波器,滤除高频噪声和抗混叠;

    • 缓冲:如果信号源阻抗较高,使用运放缓冲,否则采样电容充电不足会导致误差;

    • 保护:加钳位二极管或串联电阻,防止过压损坏引脚。

    3. 阻抗匹配

    SAR ADC 采样时,内部采样电容需要从信号源抽取电荷。如果信号源阻抗太大,采样时间内电容电压无法稳定到输入电压,会产生误差。一般要求信号源阻抗小于几 kΩ,具体看手册。

    计算公式(近似):

    4. PCB 布局

    • 模拟地与数字地分开,单点连接;

    • ADC 输入走线尽量短,远离数字高速信号;

    • 参考电压走线加粗,避免干扰;

    • 在 ADC 引脚附近放置滤波电容。


    七、ADC 软件处理技术

    1. 软件滤波

    平均滤波

    对多次采样结果求平均,可以降低随机噪声,提高稳定性。

    中值滤波

    对一组采样值排序取中间值,可以有效去除脉冲干扰。

    一阶低通滤波

    α 为滤波系数,取值 0~1,越小滤波越强,但响应越慢。

    滑动平均滤波

    维护一个固定长度的队列,每次新数据入队,旧数据出队,计算平均值。

    2. 过采样与抽取

    如果 ADC 本身不支持硬件过采样,可以通过软件多次采样求和来提高有效位数。每增加 4 倍采样次数,有效位数理论上增加 1 位。

    例如:对同一信号采样 256 次并求和,相当于 16 位 ADC 的有效分辨率(假设噪声足够)。

    3. 校准

    • 零点校准:短接输入到地,记录失调值,后续减去;

    • 满量程校准:输入已知精确电压,计算增益修正系数;

    • 两点校准:同时修正失调和增益。

    4. 结果换算

    将 ADC 码值换算为实际物理量,例如:

    再根据传感器特性换算为温度、压力等。


    八、应用选型考虑

    在实际项目中选择单片机 ADC 时,需要关注:

  • 分辨率:根据精度要求选择 10 位、12 位或更高;

  • 采样率:根据信号频率确定;

  • 通道数:需要同时采集几路信号;

  • 参考电压:内部基准精度是否满足要求;

  • 功耗:低功耗应用注意 ADC 工作电流;

  • DMA 支持:大量数据采集时,DMA 可减轻 CPU 负担;

  • 模拟看门狗:需要电压监测时有用;

  • 差分输入:某些应用需要差分测量,抑制共模干扰。

  • 常见单片机 ADC 对比:

    单片机ADC 分辨率最大采样率特点
    STM32F103 12 位 1 MSPS 多通道、注入模式、DMA
    STM32L4 12 位 5 MSPS 硬件过采样、低功耗
    ESP32 12 位 2 MSPS 多通道、但线性度一般
    ATmega328P 10 位 15 kSPS 简单易用
    MSP430 12 位 200 kSPS 超低功耗
    独立 ADS1115 16 位 860 SPS I2C 接口,高精度

    九、总结

    单片机 ADC 是连接模拟世界与数字系统的桥梁。理解其工作原理(主要是 SAR)、关键参数(分辨率、参考电压、采样率、DNL/INL)、外设结构(多路开关、采样保持、触发、DMA)以及硬件和软件设计要点,是嵌入式工程师的必备技能。

    实际使用中,需要根据具体应用合理选择参考电压、配置采样时间、设计输入滤波电路,并结合软件滤波和校准来提高测量精度。只有软硬件协同优化,才能充分发挥 ADC 的性能。

    赞(0)
    未经允许不得转载:171主机测评 » 别让你的 ADC “失真”——单片机模数转换从入门到精通
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址