玳瑁的嵌入式日记---0929(ARM--ADC)

1、什么是 ADC?

ADC 是Analog-to-Digital Converter(模数转换器) 的缩写,是一种核心电子器件,作用是将自然界中连续变化的模拟信号 (如温度传感器输出的电压、麦克风采集的声音信号、光敏电阻的电流等)转换为计算机 / 数字电路可处理的离散数字信号(即由 0 和 1 组成的二进制代码)。

1.ADC概念

(1)ADC(Analog-to-Digital Converter):模拟到数字转换器

它是一种电子设备或模块,用于将连续变化的模拟信号转换为离散的数字信号,以便数字系统(如微处理器、微控制器等)能够对其进行处理和分析。

注意:这里的模拟信号是狭义的模拟信号,一般指的是模拟电压信号转换为数字信号。

(2)模拟信号:

模拟信号是物理世界中连续变换的物理量。

(3)数字信号:

数字信号是一种离散的、不连续的信号。

(4)传感器:

它是一种能够探测、感知外部环境信息(如温度、光线、压力、运动等),并将这些信息转换成电信号(通常是电压或电流)的装置或器件。

2、什么是 ADC 的基准电压?

ADC 的基准电压(Reference Voltage,通常用 V_REF 表示) 是 ADC 进行 "量化"(即模拟信号→数字信号转换)的核心参考标准,相当于 ADC 测量模拟电压的 "量程上限" 或 "标尺基准"。

  • 作用 :ADC 通过比较输入模拟电压(V_IN)与基准电压(V_REF)的比例,来确定对应的数字输出。基准电压的精度直接决定了 ADC 转换结果的准确性 ------ 若基准电压漂移(如受温度影响变化),即使输入电压不变,数字输出也会出现误差。
  • 常见形式:基准电压可由外部高精度电压源提供(如专用基准芯片 REF3033),也可由 ADC 内部集成的基准电路提供(如单片机内置的 2.5V/3.3V 基准),需根据精度需求选择。

3、ADC 的工作原理是什么?

ADC 的核心逻辑是 **"采样→保持→量化→编码"** 四步流程,不同类型的 ADC(如逐次逼近型、SAR 型、Δ-Σ 型)在 "量化" 环节的实现方式不同,但整体流程一致,具体如下:

  1. 采样(Sampling) 按固定时间间隔(即 "采样频率"),快速读取输入模拟信号(V_IN)的瞬时值,将连续信号 "离散化" 为一系列离散的电压点(如每隔 1ms 读取一次温度电压)。关键要求 :采样频率需满足奈奎斯特准则(采样频率≥2 倍模拟信号最高频率),否则会出现 "混叠失真",导致转换结果错误。

  2. **保持(Holding)**由于量化过程需要时间,需通过 "采样保持电路(S/H)" 将采样得到的瞬时电压暂时 "冻结" 并保持稳定,确保量化环节能准确处理该电压值。

  3. **量化(Quantization)**将 "保持" 的模拟电压与基准电压(V_REF)对比,按固定 "量化间隔" 将其归入某个离散的 "量化等级"。例如:12 位 ADC 的量化等级共 2¹²=4096 级,若 V_REF=3.3V,则每个量化等级对应的电压间隔约为 0.805mV(3.3V/4096)。

  4. **编码(Coding)**将 "量化等级" 转换为对应的二进制数字代码(即 ADC 的输出值)。例如:12 位 ADC 的量化等级 "0" 对应代码 "000000000000",等级 "4095" 对应代码 "111111111111"。

4、什么是 ADC 的分辨率?常见的分辨率有哪些?

(1)分辨率的定义

ADC 的分辨率(Resolution) 是衡量其 "区分微小模拟电压变化" 能力的核心参数,本质是 ADC 能输出的二进制数字的位数(n 位),或对应的 "量化等级数量"(2ⁿ级)。

分辨率越高,二进制位数越多,量化等级越细,能区分的模拟电压变化越小,转换精度越高。例如:12 位 ADC 比 8 位 ADC 能区分更小的电压差异。

(2)常见的分辨率

工业和消费电子中常见的 ADC 分辨率如下表所示,不同场景选择不同分辨率:

分辨率(位数) 量化等级(2ⁿ) 典型应用场景
8 位 256 级 低成本场景(如简单电压检测、LED 亮度控制)
10 位 1024 级 中等精度场景(如普通传感器、消费类家电)
12 位 4096 级 工业控制主流(如温度 / 压力传感器、电机控制)
14 位 16384 级 高精度场景(如医疗设备、精密仪器)
16 位及以上 65536 级及以上 超高精度场景(如实验室测量、航空航天)

5、12 位 ADC(V_REF=3.3V),量化结果为 n 时的实际电压计算

当 ADC 完成转换输出量化结果(二进制对应的十进制数值 n)时,实际输入电压(V_IN)的计算核心是 "量化结果 × 单个量化间隔",公式推导如下:

(1)核心公式

由于 12 位 ADC 的量化等级总数为 2¹² = 4096 级 (对应 n 的范围:0 ≤ n ≤ 4095),每个量化等级对应的 "电压间隔" 为 V_REF / 4096,因此实际电压为:

(2)代入参数计算

已知:分辨率 = 12 位(2¹²=4096),V_REF=3.3V,量化结果为 n,则

(3)示例

若量化结果 n=2048(12 位二进制 "100000000000"),则实际电压为:

注意:该计算忽略了 "量化误差"(即实际电压可能落在两个量化等级之间,ADC 会取近似值),若需更精确,需结合 ADC 的 "失调误差""增益误差" 等参数修正。

相关推荐
森G13 小时前
七、04ledc-sdk--------makefile有变化
linux·c语言·arm开发·c++·ubuntu
VekiSon16 小时前
Linux内核驱动——杂项设备驱动与内核模块编译
linux·c语言·arm开发·嵌入式硬件
AI+程序员在路上17 小时前
Nand Flash与EMMC区别及ARM开发板中的应用对比
arm开发
17(无规则自律)1 天前
深入浅出 Linux 内核模块,写一个内核版的 Hello World
linux·arm开发·嵌入式硬件
梁洪飞1 天前
内核的schedule和SMP多核处理器启动协议
linux·arm开发·嵌入式硬件·arm
代码游侠2 天前
学习笔记——Linux字符设备驱动
linux·运维·arm开发·嵌入式硬件·学习·架构
syseptember2 天前
Linux网络基础
linux·网络·arm开发
代码游侠3 天前
学习笔记——Linux字符设备驱动开发
linux·arm开发·驱动开发·单片机·嵌入式硬件·学习·算法
程序猿阿伟3 天前
《Apple Silicon与Windows on ARM:引擎原生构建与模拟层底层运作深度解析》
arm开发·windows
wkm9563 天前
在arm64 ubuntu系统安装Qt后编译时找不到Qt3DExtras头文件
开发语言·arm开发·qt