当前位置: 首页 > 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.dtcms.com/a/284827.html

相关文章:

  • 疯狂星期四文案网第10天运营日报
  • Kotlin自定义排序
  • AUTOSAR进阶图解==>AUTOSAR_SWS_EFXLibrary
  • Lotus-基于大模型的查询引擎 -开源学习整理
  • 打印文件/打印机队列 - 华为OD机试真题(Java 题解)
  • QT 交叉编译环境下,嵌入式设备显示字体大小和QT Creator 桌面显示不一致问题解决
  • 中国力学大会倒计时2天●千眼狼科学仪器在实验力学研究中应用
  • 状态机(State Machine)是什么?
  • 【秋招ready】
  • 网络初级安全第二次作业
  • css样式中的选择器和盒子模型
  • JoditEditor编辑与预览模式
  • 电碳表:精准计量每一度电的碳排放
  • Python--plist文件的读取
  • 使用CosyVoice-300M实现零样本语音克隆:Xinference部署与实战
  • nginx代理websocket请求
  • Android设备标识符详解:IMEI、ANDROID_ID与OAID
  • 产品经理如何绘制服务蓝图(Service Blueprint)
  • 企业级AI智能体架构落地:工程化能力设计的全景指南
  • docker重新搭建redis集群
  • ubuntu系统+N卡 | docker compose+ollama+dify
  • ACOUSLIC-AI挑战报告:基于低收入国家盲扫超声数据的胎儿腹围测量|文献速递-医学影像算法文献分享
  • 【LeetCode刷题指南】--数组串联,合并两个有序数组,删除有序数组中的重复项
  • FreeBSD Conda Python3.12下安装GPT4Free(g4f)0.5.7.3版本
  • VR全景园区:开启智慧园区新时代
  • 2025年5大国产ETL工具横向评测
  • 【面板数据】上市公司股价同步性数据集-dta+xlsx(2000-2023年)
  • GX75C数字温度传感器可兼容TMP75C
  • 上标下标 | Unicode 符号
  • 微服务架构:从单体到分布式系统的演进与实践