当前位置: 首页 > news >正文

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

以下是关于 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 内部 ADC1~24内部12~16bit成本低,资源整合
ADS11154I2C16bit高精度、可编程增益
MCP30088SPI10bit成本低、树莓派常用
ADS86811SPI16bit±10V 输入,工业级

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

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

相关文章:

  • Spring Boot 中 META-INF 的作用与功能详解
  • AI编程实战:如何让AI生成带参数和返回值的Python函数——以PDF文本提取为例
  • 锂电池制造行业MES特色解决方案:差异化生产管控与智能工厂实践
  • c++ 模板元编程
  • CAD model dataset 下载
  • centos7开启ntp并同步时间到指定时区
  • 航班管家sid参数加密纯算分析
  • 使用 Nacos + Higress 连接 Agent 和 MCP 服务进行使用
  • 相位中心偏置天线的SAR动目标检测
  • C++进阶-AVL树(平衡二叉查找树)(难度较高)
  • 由几道数量关系考题引起的思考
  • 【CodeTop】每日练习 2025.7.17
  • Python类型转换,深浅拷贝
  • 【深度学习】神经网络过拟合与欠拟合-part5
  • DiffPy-CMI详细安装教程
  • ubuntu 22.04 pam 模块设置用户登录失败锁定
  • 网络基础11 上公网--Internet接入技术
  • python的旧时光咖啡厅数据分析管理系统
  • 深入理解CSS定位:绝对定位的包含块机制
  • JUnit5 实操
  • 征程 6 UCP 任务优先级 抢占简介与实操
  • 流程控制( break与continue)
  • Xss-labs 靶场lever1~lever8通关练习
  • windows利用wsl安装qemu
  • HD现代机器人与TESOLLO合作推出工业自动化双臂机器人解决方案
  • 为什么喜欢叫index文件
  • javax.servlet.http.HttpServletResponse;API导入报错解决方案
  • 找不到或无法加载主类 org.gradle.wrapper.GradleWrapperMain
  • 4G模块 A7680通过MQTT协议连接到腾讯云
  • 初试Spring AI实现聊天功能