嵌入式基础 -- ADC(模数转换器,Analog to Digital Converter)

发布于:2025-07-18 ⋅ 阅读:(18) ⋅ 点赞:(0)

以下是关于 ADC(模数转换器,Analog to Digital Converter)系统级详细培训内容,结合嵌入式硬件系统设计与调试经验,按模块知识点系统展开。


一、ADC 基础原理

1. ADC 的作用:

连续的模拟电压信号(如传感器输出)转换为离散的数字信号供 MCU/NPU/SoC 使用。

2. 常见 ADC 参数定义:

参数 说明
分辨率(Resolution) 每次转换的位数,如 8-bit、12-bit、16-bit 等,决定了电压的最小分辨率(精度)
输入范围(Input Range) 支持的模拟电压范围,如 0~3.3V,或 -1V~1V(差分)
精度(Accuracy) 包括 INL(积分非线性)、DNL(微分非线性)、增益误差、偏置误差等
采样率(Sample Rate) 单位时间内的采样次数(如 1Msps 表示百万次/秒)
输入类型 单端输入 vs 差分输入
接口方式 并口、串口(SPI/I2C)、内置 MCU ADC

二、ADC 架构类型

1. 逐次逼近型(SAR ADC,Successive Approximation)

  • 优点:中高速、功耗低、结构简单、广泛应用于 MCU 内置 ADC;
  • 典型应用:电池电压采集、温湿度传感器、电机电流检测等;
  • 分辨率:8~16bit;
  • 采样率:几十 kHz 到数 Msps。

2. Σ-Δ ADC(Sigma-Delta ADC)

  • 优点:高分辨率、抗噪能力强;
  • 缺点:延迟高、响应慢;
  • 典型应用:音频、精密测量仪表;
  • 分辨率:16~24bit;
  • 采样率:低至几十 kHz,适合慢变信号。

3. Flash ADC

  • 优点:极高速(上 GHz),适合视频信号;
  • 缺点:功耗大、成本高;
  • 典型应用:高速通信、雷达系统;
  • 分辨率:6~8bit;
  • 采样率:>1Gsps。

三、嵌入式系统中 ADC 的应用

1. 常见应用场景

  • 电压、电流检测(电源状态监控、电池电量检测)
  • 温度传感器(NTC、PT100)
  • 光/距离/气体传感器输出
  • 按键输入电平电压判定(如电阻分压)
  • 电机驱动中的霍尔电压、电流闭环控制

2. 常见接入方式

内部 ADC(MCU/SoC 集成)
  • 使用 GPIO 配置为模拟输入;
  • 配置 ADC 通道、分辨率、触发方式;
  • 优点:成本低、资源集成;
  • 注意事项:引脚旁路电容滤波、隔离噪声源。
外部 ADC(SPI/I2C 接口)
  • 适合高精度、多通道、隔离应用;
  • 需配合电平转换、电源隔离;
  • 可选型号如:ADS1115(I2C 16bit)、ADS8681(SPI、16bit 500ksps)

四、硬件设计注意事项

1. 模拟信号链完整设计

推荐做法
输入保护 TVS + RC 滤波电路,抑制瞬态浪涌与高频干扰
滤波电容 在 ADC 输入前加低通滤波,如 RC 结构(R=1k, C=0.1uF)
参考电压 优选外部基准源(如 ADR431),确保稳定性
电源隔离 模拟部分推荐使用 LDO 供电,避免开关电源噪声耦合
接地策略 AGND 与 DGND 分开,最后单点接地(Star Ground)

2. 多路 ADC 通道设计

  • 使用模拟多路复用器(如 CD4051)扩展;
  • 或外置多通道 ADC 芯片,如 MCP3008(SPI 接口);
  • 避免输入切换过快,确保电压稳定后再采样。

五、软件配置与调试关键点(以 STM32 为例)

1. 初始化配置

// 以 STM32 HAL 为例
ADC_ChannelConfTypeDef sConfig = {0};
HAL_ADC_Start(&hadc1); // 启动 ADC
HAL_ADC_PollForConversion(&hadc1, 10);
uint16_t value = HAL_ADC_GetValue(&hadc1);  // 获取 ADC 数值

2. 定时采样 + DMA 模式

适合高速 ADC 通道连续采样,降低 CPU 负担:

HAL_ADC_Start_DMA(&hadc1, (uint32_t *)adc_buffer, BUFFER_SIZE);

3. 软件滤波算法建议

  • 中值滤波:适合有脉冲干扰的信号;
  • 滑动平均滤波:平滑慢变信号;
  • IIR 滤波器:实现一阶低通;
  • 多点采样取最大值:适合检测电压峰值。

六、常见问题与调试技巧

问题 可能原因 建议
ADC 值抖动严重 模拟输入有干扰、电源不稳 加滤波电容、电源隔离、走线远离数字部分
采样结果不准 输入阻抗太高/采样时间太短 增大采样周期或前级加缓冲器(如运放)
转换错误 VREF 不稳或配置错误 确保参考电压一致,芯片参数匹配
通道错误 多路复用器切换不当 检查通道配置,切换延时足够

七、典型 ADC 芯片推荐

型号 通道数 接口 分辨率 特点
STM32 内部 ADC 1~24 内部 12~16bit 成本低,资源整合
ADS1115 4 I2C 16bit 高精度、可编程增益
MCP3008 8 SPI 10bit 成本低、树莓派常用
ADS8681 1 SPI 16bit ±10V 输入,工业级

八、扩展:工业系统中 ADC 的增强方案

  • 隔离 ADC 设计:通过隔离放大器(如 ISO124)或隔离 ADC(如 ADuM7701);
  • 多通道同步采样:用于电机控制、三相电流同步采样;
  • 过采样 + 滤波算法提升精度:配合低速 MCU 实现高精度方案;
  • 差分 ADC 配合 instrumentation amplifier(如 INA333)做微弱信号放大后采样;
  • 电源监控芯片集成 ADC 功能,如 PMIC 自带监控接口。

网站公告

今日签到

点亮在社区的每一天
去签到