1. ADC基础概念:什么是ADC、ADC在嵌入式系统中的作用、ADC的主要性能指标概览
大家好,我是你们的硬件讲师。今天咱们聊聊ADC——模数转换器。这东西在嵌入式系统里太常见了,几乎每个做硬件的工程师都绕不开它。
ADC,全称是Analog-to-Digital Converter。说白了,就是把连续的模拟信号,变成离散的数字信号。你想想看,现实世界里的温度、压力、声音、光线,这些都是模拟量。但我们的单片机、DSP、FPGA,它们只认0和1。ADC就是连接这两个世界的桥梁。
1.1 什么是ADC?
ADC的核心工作,就是采样和量化。
采样,是按一定的时间间隔,把连续的模拟信号“拍个快照”。量化,是把这些快照的电压值,用二进制数字表示出来。
举个例子。一个10位的ADC,参考电压是3.3V。它能分辨的最小电压变化,就是3.3V除以2的10次方,也就是1024份。每份大约3.22mV。嗯,这里要注意,这个值就是ADC的“分辨率”。
我个人习惯把ADC想象成一把尺子。模拟信号是你要测量的长度,ADC的位数就是尺子的刻度数。位数越高,刻度越密,测量结果就越精确。
核心公式:
数字输出 = (模拟输入电压 / 参考电压) × (2^N - 1)
其中N是ADC的位数。
1.2 ADC在嵌入式系统中的作用
ADC在嵌入式系统里,扮演着“感官”的角色。没有它,单片机就是个瞎子、聋子。
我做过一个温度采集项目。用的是NTC热敏电阻,它的阻值随温度变化。但单片机读不了电阻值,只能读电压。怎么办?
先把电阻变化转换成电压变化,再用ADC把电压读进来。这样,单片机就能知道当前温度是多少了。
类似的场景太多了:
- 传感器数据采集:温度、湿度、压力、光照、加速度……几乎所有模拟传感器,都需要ADC来“翻译”。
- 音频处理:麦克风输出的模拟信号,必须经过ADC才能被数字处理器处理。
- 电源监测:检测电池电压、电流,判断电量剩余情况。
- 触摸屏控制:电阻式触摸屏,就是通过ADC读取触摸点的坐标。
你想想看,如果没有ADC,这些功能全都实现不了。所以我说,ADC是嵌入式系统的“眼睛”和“耳朵”,一点都不过分。
1.3 ADC的主要性能指标概览
选ADC芯片的时候,不能只看价格。有几个关键指标,你必须搞清楚。我曾经因为忽略了一个指标,导致整个项目返工,教训深刻啊。
1.3.1 分辨率(Resolution)
分辨率就是ADC能分辨的最小模拟信号变化。单位是bit。常见的有8位、10位、12位、16位、24位。
分辨率越高,能区分的电压等级就越多。比如12位ADC,有4096个等级。16位ADC,有65536个等级。
但要注意,分辨率高不代表精度高。这是两码事。我见过有人把12位ADC当16位用,结果噪声比信号还大。
1.3.2 采样率(Sampling Rate)
采样率是ADC每秒能完成多少次转换。单位是SPS(Samples Per Second),或者Hz。
根据奈奎斯特定理,采样率至少要是信号最高频率的两倍,才能无失真地重建信号。比如你要采集20kHz的音频,采样率至少得40kHz。
实际项目中,我一般留出3到5倍的余量。比如信号最高1kHz,我会选5kSPS以上的ADC。为什么?因为抗混叠滤波器不是理想的,留点余量心里踏实。
1.3.3 精度(Accuracy)
精度是ADC实际输出与理想输出之间的偏差。它受很多因素影响:
- 偏移误差:输入为0时,输出不为0。
- 增益误差:转换曲线的斜率偏离理想值。
- 积分非线性(INL):实际转换曲线与理想直线的最大偏差。
- 微分非线性(DNL):相邻两个数字码对应的模拟输入之差,与理想LSB的偏差。
这些参数在芯片数据手册里都能找到。选型时,一定要看“典型值”和“最大值”。有些厂家只给典型值,那就要小心了。
1.3.4 信噪比(SNR)与有效位数(ENOB)
SNR是信号功率与噪声功率的比值,单位是dB。ENOB是有效位数,它反映了ADC在实际工作条件下的真实性能。
公式很简单:ENOB = (SNR - 1.76) / 6.02
比如一个16位ADC,如果SNR只有80dB,那它的ENOB大约只有13位。也就是说,你花16位的钱,买到的实际性能只有13位。
我的经验:选型时别只看位数,一定要看ENOB。有些24位的Σ-Δ ADC,在低采样率下ENOB能做到20位以上,但采样率一高,ENOB就掉得厉害。要根据你的实际应用场景来选。
1.3.5 转换时间与建立时间
转换时间,是ADC完成一次转换所需的时间。建立时间,是ADC从开始转换到输出稳定数据的时间。
对于逐次逼近型ADC(SAR ADC),这两个时间基本相等。但对于积分型ADC,建立时间可能比转换时间长很多。
我曾经在一个多通道采集系统里,用了多路复用器加一个ADC的方案。结果发现,切换通道后,ADC的输出要等很久才能稳定。后来查手册才知道,这个ADC的建立时间比转换时间长了10倍。嗯,这就是没仔细看数据手册的后果。
1.3.6 输入范围与参考电压
输入范围,是ADC能接受的模拟信号电压范围。常见的有0~3.3V、0~5V、±10V等。
参考电压,是ADC进行量化的基准。它直接影响ADC的测量范围。参考电压越稳定,ADC的测量结果就越准确。
我建议,对精度要求高的项目,一定要用外部参考电压源。内部参考电压虽然方便,但温漂和噪声都比较大。
1.3.7 功耗
对于电池供电的设备,功耗是个关键指标。ADC的功耗通常和采样率成正比。采样率越高,功耗越大。
有些ADC有“休眠模式”或“低功耗模式”,在不使用时可以关掉。选型时,可以关注一下这些特性。
避坑指南:我曾经选了一款号称“超低功耗”的ADC,结果发现它的低功耗模式只能在特定条件下使用。一旦进入正常工作模式,功耗比标称值高了3倍。所以,一定要仔细看数据手册的“典型工作条件”和“最大额定值”。
1.4 小结
好了,这一章的内容就到这里。我们讲了ADC是什么,它在嵌入式系统里扮演什么角色,以及选型时要注意的几个关键指标。
记住,ADC选型不是简单地看位数和价格。分辨率、采样率、精度、SNR、ENOB、转换时间、输入范围、功耗,这些指标都要综合考虑。
下一章,我们会深入讲解ADC的几种常见架构,比如逐次逼近型、Σ-Δ型、流水线型。每种架构都有它的优缺点,选对了,事半功倍;选错了,事倍功半。
咱们下章见。