2、数据转换器基础:ADC与DAC工作原理、分辨率与采样率、量化误差与信噪比

好,咱们进入正题。传感器接口里,数据转换器是绕不开的核心。说白了,传感器输出的多半是模拟信号——电压、电流、电阻变化这些。但微处理器只认0和1。怎么把这两个世界连起来?靠的就是ADC和DAC。

我个人习惯把ADC叫做「翻译官」,把DAC叫做「传令兵」。一个把模拟世界的连续量翻译成数字世界的离散码,另一个把数字指令还原成模拟信号去驱动执行器。今天咱们就把这两个家伙的底裤扒干净。

2.1 ADC工作原理:从模拟到数字的桥梁

ADC,全称模数转换器。它的任务很简单:在某个时刻,把输入的模拟电压值,映射成一个数字代码。

常见的ADC架构有好几种,我挑最常用的两种讲讲。

2.1.1 逐次逼近型ADC(SAR ADC)

这种ADC在工业界用得最多。为什么?因为它平衡了速度和精度,而且功耗低。

工作原理有点像「猜数字」游戏:

  • 先猜中间值,比较一下输入电压是高了还是低了。
  • 高了就往低半区猜,低了就往高半区猜。
  • 每猜一次,就确定一个二进制位。

举个例子,一个8位的SAR ADC,需要8个时钟周期就能完成一次转换。我在项目中用过一款12位的SAR ADC,采样率能跑到1MSPS(每秒百万次采样),用在温度传感器阵列上刚刚好。

我的经验:SAR ADC对输入信号的建立时间很敏感。如果你前级的运放驱动能力不够,采样电容还没充满就开始转换了,结果就是——转换值偏小。我曾经在这个坑里爬了三天,后来在输入端加了个缓冲器才搞定。

2.1.2 Σ-Δ型ADC

这种ADC走的是「以时间换精度」的路子。它用很高的采样率(过采样)对输入信号反复采样,然后通过数字滤波把噪声滤掉,提取出高精度的结果。

Σ-Δ ADC的精度可以做到非常高,16位、24位甚至32位都不稀奇。但代价是速度慢。我见过一个24位的Σ-Δ ADC,转换一次要几十毫秒。

什么时候用? 测体重秤、地震仪、精密天平这些对速度没要求、但对精度要求变态的场景。

2.2 DAC工作原理:数字世界的传令兵

DAC是ADC的逆过程。给它一串数字代码,它输出一个对应的模拟电压(或电流)。

最常见的DAC架构是R-2R梯形网络。它用一堆电阻搭成梯子形状,每个数字位控制一个开关,把对应的电流引到输出端。优点是速度快、精度不错,而且不需要复杂的解码逻辑。

我记得有一次做波形发生器,需要输出20MHz的正弦波。选DAC的时候,不光要看分辨率,还要看建立时间。那个项目最后选了个12位、建立时间10ns的电流输出型DAC,配合高速运放做I-V转换,效果还行。

注意:DAC的输出不是瞬间就能稳定的。它需要一段时间来「建立」。如果你在建立时间内就去读输出,读到的值是不准的。这个建立时间在数据手册里叫Settling Time,选型时一定要看。

2.3 分辨率:你能分辨多小的变化?

分辨率,说白了就是ADC或DAC能分辨的最小信号变化量。

公式很简单:

分辨率 = 满量程电压 / 2^N

其中N是位数。

举个例子:一个10位的ADC,参考电压是5V,那么它的分辨率就是:

5V / 1024 ≈ 4.88mV

也就是说,输入电压每变化4.88mV,输出数字码就跳一个字。

你想想看,如果传感器输出的是微伏级别的信号,用10位ADC去采,那基本就是在「盲人摸象」。这时候就得用更高分辨率的ADC,比如16位甚至24位。

位数 2^N 5V参考下的分辨率 典型应用
8位 256 19.53 mV 简单开关量检测
10位 1024 4.88 mV 普通传感器接口
12位 4096 1.22 mV 工业控制、音频
16位 65536 76.29 μV 精密测量、医疗
24位 16777216 0.298 μV 地震仪、天平
核心观点:分辨率不是越高越好。高分辨率意味着更慢的速度、更高的功耗、更贵的价格。选型时要根据实际需求来权衡。

2.4 采样率:多久测一次?

采样率,就是ADC每秒能完成多少次转换。单位是SPS(Samples Per Second)或Hz。

这里有个铁律——奈奎斯特采样定理:采样率必须大于信号最高频率的两倍,否则会发生混叠。

举个例子:你要采集一个1kHz的正弦波,采样率至少得2kHz以上。实际工程中,我一般留3~5倍的余量。比如采1kHz的信号,我会用5kHz甚至10kHz的采样率。

为什么会这样?因为实际信号不是完美的正弦波,它含有高次谐波。如果采样率刚好卡在2倍,那些谐波就会折叠回基带,造成失真。

避坑指南:我曾经在一个振动监测项目里,用10kHz采样率去采一个5kHz的振动信号。结果频谱分析出来一堆莫名其妙的低频分量。后来才发现,振动信号里混入了8kHz的噪声,被混叠到了2kHz的位置。从那以后,我每次做ADC采样前,都会在前端加一个抗混叠滤波器。

2.5 量化误差:数字世界的「舍入误差」

量化误差,是ADC天生就有的毛病。因为模拟信号是连续的,而数字代码是离散的。你不可能用有限个数字码去精确表示无限个模拟值。

量化误差的大小,就是±1/2 LSB(最低有效位)。

举个例子:一个10位ADC,分辨率是4.88mV。如果输入电压是2.502V,它对应的理想数字码应该是:

2.502V / 4.88mV ≈ 512.7

但ADC只能输出整数码,要么512,要么513。这就产生了0.7个LSB的误差,约3.4mV。

这个误差是随机的,无法消除。但可以通过提高分辨率来减小它的影响。

2.6 信噪比:信号有多「干净」?

信噪比(SNR),就是信号功率与噪声功率的比值,单位是dB。

对于理想ADC,它的理论最大信噪比由分辨率决定:

SNR_max = 6.02 × N + 1.76 dB

其中N是位数。

算一下:

  • 8位ADC:SNR ≈ 49.9 dB
  • 12位ADC:SNR ≈ 74.0 dB
  • 16位ADC:SNR ≈ 98.1 dB

但实际ADC的SNR会比理论值低,因为还有热噪声、电源噪声、时钟抖动等非理想因素。

我选ADC的时候,会特别关注一个指标叫ENOB(有效位数)。它把实际SNR折算回等效的位数。比如一个标称16位的ADC,实测SNR只有85dB,那它的ENOB就是:

(85 - 1.76) / 6.02 ≈ 13.8位

嗯,实际只有13.8位的性能。所以别光看标称位数,要看ENOB。

总结一下:分辨率决定了你能看到多小的信号,采样率决定了你能看到多快的信号,量化误差是数字化的代价,信噪比决定了信号的质量。这四个参数互相牵制,选型时得综合考虑。

好了,数据转换器的基础就讲到这里。下一章咱们聊聊传感器接口中常见的信号调理电路——运放、滤波器这些。到时候我会分享一些我在项目中踩过的坑,保证实用。