高精度ADC硬件电路设计选型怎么做?关键要看这几个参数
有几年嵌入式硬件经验的同学,多半都遇到过类似场面:项目要求测一个电流信号,精度标称0.05%,于是选了片24位ADC,结果板上测出来的有效位数连18位都不到;旁边另一块板子用了一片16位SAR型ADC,反而是实测有效位数15.6位,妥妥达标。问题出在哪里?很多时候不是芯片不行,而是选型时被"分辨率"三个字带了节奏。
做高精度ADC硬件电路设计选型,最忌讳的就是只看分辨率位数。今天这篇就结合实际项目中反复踩过的坑,把真正决定精度的几个核心参数逐个说透,然后给你一套可以直接套用的选型思考路径:从传感器输出量、目标精度反推ADC位数,到参考源、驱动运放怎么搭,再到布板阶段哪些细节会在最后测试时给你"惊喜"。
1. 先说清楚一个误区:24位不代表你有24位精度
选型第一步要搞清楚,ADC芯片标的"24位"指的是分辨率位数,代表它能把满量程电压划分成2^24份。但分辨率只表示"理论上最细能分辨多少",它不回答"测得准不准"。
真正决定准不准的是一堆叠加在一起的误差项,比如:
- 转换时的内部噪声
- 非线性导致的积分/差分误差(INL、DNL)
- 参考源自身的噪声和温漂
- 输入驱动电路引入的失调和噪声
- 电源噪声串入模拟部分的表现
所以同一个项目里,用24位ADC如果前端驱动和参考没做好,测出来的数据抖动可能比16位SAR还大。我见过一个比较典型的案例,某工业现场的压力采集板,第一版用了某款24位Σ-Δ ADC,参考源用的是普通三端稳压器加RC滤波,输入直接接传感器输出没做缓冲。结果零输入时读数就有几十个码的跳动,算下来等效输入噪声到了微伏级别。后来把参考源换掉、前端加上精密运放做缓冲,同样的芯片有效位数直接提升4位以上。
选高精度ADC的时候,第一件事是把"分辨率位数"从脑子里降权,把下面这些小信号参数放到核心位置来评估。
1.1 ENOB(有效位数):比分辨率更接近真实水平
ENOB(Effective Number of Bits)是最能说明实际精度的参数,它把芯片在典型条件下测试得到的信纳比SINAD换算成了等效位数:
ENOB = (SINAD - 1.76) / 6.02
这里SINAD包括了信号、噪声和失真的综合关系。注意这个参数在不同采样率下、不同输入信号频率下是不一样的,选型时要看自己在实际使用频率范围内的数值。
比如某16位SAR ADC标称SINAD为95dB,算下来ENOB约15.5位;另一款24位Σ-Δ ADC在输出速率10kSPS时SINAD只有105dB,算下来ENOB约17.1位。这两款实际表现差距比你想象的16位和24位的字面差距小很多。而Σ-Δ型内部的数字滤波会进一步把带内量化噪声压下去,但代价是转换速率的局限。
这里给大家一个参考值,不同性能档位的SINAD大概是这样的:
| 档位 | SINAD范围 | 对应ENOB | 典型场景 |
|---|---|---|---|
| 入门 | 70~80dB | 11.3~13.2位 | 消费电子、电池监测 |
| 中端 | 85~95dB | 13.9~15.5位 | 工业控制、数据采集 |
| 高端 | 100~110dB | 16.2~18.1位 | 精密仪表、医疗设备 |
| 旗舰 | 110dB以上 | 18.1位以上 | 计量级、科学仪器 |
很多同学选型时用Datasheet首页那个"24位分辨率"来做对比,这其实没什么意义,不如把ENOB列表拉出来看。
1.2 噪声:像信号一样对待它
对高精度ADC来说,噪声是躲不开的核心矛盾。数据手册里通常给出两种噪声指标:有效值(RMS)噪声和峰峰值噪声。
RMS噪声直接和ENOB挂钩,它反映的是输出码序列的标准差对应的等效输入电压。而峰峰值噪声决定了读数稳定不动的时候跳动范围有多大,对于精密测量(比如称重、测温)来说,这个参数更重要。
举个例子,某24位Σ-Δ ADC在增益为1、输出速率20SPS时,RMS噪声典型值约1.2µV,峰峰值噪声约6.5µV。如果参考电压设为5V,那么一个LSB对应的电压是5V/2^24 ≈ 0.3µV。峰峰值噪声6.5µV相当于21个LSB的波动,但换算成实际精度,此时芯片的等效无噪声分辨率大约是19.5位左右。真正决定你系统能做到多少精度的,是这串数字,而不是那个漂亮的24位宣传值。
选型时建议做一张这样的对比表,把候选芯片在相近输出速率下的RMS噪声和峰峰值噪声列出来,比看宣传页有用得多。
2. 除了分辨率外,这几个参数才真正决定成败
前面解释了为什么分辨率会误导人,下面逐个拆解选型时真正要盯住的参数。它们相互关联,最终全部汇入"系统精度"这一个出口。
2.1 INL和DNL:线性度不是锦上添花
INL(积分非线性)描述了实际转换曲线偏离理想直线的最大偏差,单位通常用LSB表示。DNL(微分非线性)描述每个码宽和理想码宽的偏差。
对高精度系统来说,INL比DNL更致命,因为它是系统性的误差,直接决定了满量程范围内读数是否均匀。比如某16位SAR ADC的INL做到±1.5LSB,那么在大多数工程场景下,它的线性误差已经和系统其它误差源处于同一量级,可以接受。但如果INL做到±10LSB,满量程任意点的读数偏差可能达到满量程的0.015%,很多对精度要求严苛的场景是不能接受的。
DNL的问题更多表现为丢码。DNL小于-1LSB意味着某些码缺失,在波形记录、闭环控制这类信号连续性要求高的场合,丢码会造成明显的失真。多数高精度ADC都标称"无失码(No Missing Codes)",但要注意,这个保证通常只在特定采样率和温度范围内成立,超出范围要自己实测验证。
选型时不要只看INL典型值,要看全温度范围内的最大值。这一点对工业设备尤其重要,因为25℃下的表现和60℃时的表现可能是两个故事。
2.2 温漂:很多高精度项目栽在这里
ADC的增益误差和偏移误差都会随温度变化,而高精度系统往往要求在全温度范围(比如-40℃到85℃)内保持精度。增益温漂的单位通常用ppm/℃表示,它直接影响满量程读数的准确度。
给个直观的计算:如果目标精度是0.01%(100ppm),一颗增益温漂为5ppm/℃的芯片,在环境温度变化20℃时,增益误差就能变化100ppm,直接把整个精度指标吃光了。所以选芯片时要看全温度范围内的增益误差和偏移温漂,而不是只看25℃的典型值。
参考源的温漂同样关键。一个5ppm/℃的基准源在温度变化30℃时,输出变化150ppm,对16位系统来说,LSB占比是15.3ppm(1/2^16),这颗基准自身温漂就吞掉了10个LSB。所以高精度系统里,参考源温漂往往比ADC自身温漂更需要优先解决。
2.3 采样率与带宽:高精度和高速天生矛盾
很多刚入门的朋友会想"找一个24位、1MSPS的ADC不就行了吗",但物理规律在那里摆着:位数的提升依赖过采样和噪声整形,速度越快,有效位数掉得越快。SAR型ADC可以做到2MSPS同时保持14~16位ENOB,但越高速的片子在布局布线、驱动能力上的要求也越高。Σ-Δ型ADC通过调制器和数字滤波器实现高精度,但输出速率通常在几到几百kSPS,且有效位数随输出速率提高而下降。
我的个人建议是:先把项目需要的最低有效数据速率算出来,按这个速率的2~5倍来选ADC的输出速率,而不要盲目追求"够快",因为高速一定会在ENOB或系统复杂度上付出代价。
2.4 输入结构:SAR和Σ-Δ的驱动需求完全不同
选型还必须看输入结构。SAR型ADC输入级通常是一个采样电容网络,每次采样都会从输入源抽取一个电流脉冲,需要前端驱动运放有足够的带宽和输出电流能力来"及时"把电荷补上,否则会产生建立误差,直接影响精度。Σ-Δ型ADC内置调制器和数字滤波器,输入通常可以直接接传感器,但在高输入阻抗、高阻抗源场景下也需要缓冲。
这个差异直接决定了运放怎么选。SAR型ADC对运放的要求更苛刻,运放带宽不够或输出电流不够,静态精度再好的ADC也会被拖垮。
3. 一套能直接套用的ADC选型流程:从传感器反推
把前面这些零散参数串起来之后,写写实际工作时的一套完整选型方法。每次拿到新项目,我基本都走下面五步。
3.1 第一步:从传感器满量程输出反推所需位数
选ADC的第一步不是翻芯片手册,而是先算清楚传感器满量程输出多大、目标最低分辨率是多少。目标分辨率可以拆成"最小可分辨的物理量对应的电压值"。
举一个称重传感器的例子。某悬臂梁称重传感器灵敏度2mV/V,激励电压5V,满量程输出就是10mV。目标要求分辨0.05%满量程,那么最小可分辨电压是:
10mV × 0.0005 = 5µV
如果ADC参考电压取5V,那么理论上需要多少位分辨率?
n = log2(5V / 5µV) ≈ 20位
但这是理论位数,考虑到噪声、温漂等实际因素,实际可用位数至少要留出2~4位余量,所以选型时可以锁定在22位以上的Σ-Δ型ADC。如果目标提高到0.01%,那就是要分辨1µV,需求打到23位以上,这个档位基本只有少数几款旗舰Σ-Δ ADC能做到。
一个更完整的选型档位参考如下:
| 传感器满量程输出 | 目标精度 | 推荐ADC型号类型 | 备注 |
|---|---|---|---|
| 100mV | 0.1% | 16~18位Σ-Δ | 一般工业采集够用 |
| 10mV | 0.05% | 20~22位Σ-Δ | 称重、压力测量 |
| 1mV | 0.01% | 24位Σ-Δ+前置放大 | 需加仪表放大器 |
| 热电偶/微伏级 | 0.01% | 24位Σ-Δ+高增益 | 最关键在系统噪声 |
3.2 第二步:根据输出速率确定ADC类型
计算好位数需求后,看系统要求的输出速率。如果速率要求低于1kSPS,优先考虑Σ-Δ型,它在低频段的ENOB显著优于SAR型。如果要求在几kSPS以上,SAR型更现实。
一个常见判断方法:如果信号需要做FFT分析,需要同时保证带宽和幅度精度,SAR型往往是唯一选择。如果信号本身就是缓慢变化的直流或低频信号(称重、测温、应变),Σ-Δ型优势非常明显。
3.3 第三步:检查输入阻抗和驱动需求
计算ADC输入阻抗对信号源的影响。如果是SAR型,检查采样电容大小、采样频率对应的等效输入阻抗。如果等效输入阻抗低于信号源阻抗的1000倍(经验值),必须加缓冲运放。
这一步经常被忽略。有些工程师直接用传感器输出接SAR型ADC的输入,采样脉冲让信号源输出电压瞬间塌陷,即使ADC本身很好,测试结果也差得离谱。
3.4 第四步:锁定参考源和电源方案
ADC自身的精度再高,参考源不稳也是白搭。参考源的初始精度、温漂、噪声三个参数要一起看。0.1%初始精度、10ppm/℃温漂的参考源,只适合12位左右系统;16位系统建议用0.02%初始精度、3ppm/℃以下温漂的基准;24位级别的系统,参考源基本需要单独评估,带隙基准多半不够,要选低噪声的精密基准源,而且输出端还要做额外滤波。
电源部分建议参考源的供电单独走一路,避免和数字电路的开关噪声耦合。ADC的模拟供电脚建议串联磁珠并多加一级滤波电容,数字供电脚和模拟供电脚尽量分开布线。
3.5 第五步:确认可用时间和生态
这一步听起来很软,但实际每次都替我省了大量时间。确认目标芯片有没有成熟的Linux驱动或裸机例程、有没有评估板、有没有得到过的实际应用案例。做高精度ADC选型,长期供货、都有成熟参考设计这几点比"最高参数"更可贵。
4. 参考电路怎么设计:基准源、驱动运放和电源滤波的注意点
选型选得好,只是赢了一半,参考电路设计是另一半。很多项目ADC本身很好,是被周边电路拖到高精度门槛之下的。下面分享几个我实测中有效的做法。
4.1 基准源:高精度系统的隐形天花板
参考电压噪声会以几乎1:1的比例直接叠加到输入信号上。这个机制很容易理解:ADC的转换码值是用输入电压和参考电压的比值算出来的,参考电压的波动直接就是测量误差。所以参考源的设计优先级,在绝大多数情况下比ADC本身更高。
针对16位系统(LSB约76µV@5V),参考源的输出噪声要控制在LSB的几分之一以下,即总噪声不超过10~20µV。普通基准源输出噪声密度在1~5µV/√Hz左右,如果后面不加滤波,比较宽的带宽内噪声就会超出要求。
我在实际设计中经常采用两级滤波网络:第一级是参考芯片输出后的RC滤波,时间常数取几十毫秒量级;第二级是在ADC的参考输入引脚前再放一个小电容直接旁路高频成分。这个做法对付带外噪声非常有效,代价是参考电压建立时间变长,需要软件做延时等待。
基准源选型的一个实用技巧是:优先关注0.1Hz到10Hz的峰峰值噪声指标。如果这个值低于你的LSB值的1/10,这颗基准大概率不会拖后腿;如果这个值接近甚至超过LSB,即使初始精度再高也不要选。
4.2 驱动运放:SAR型ADC的电荷反冲应对
前面提到,SAR型ADC输入是一个采样电容网络,开关动作相当于把一个小电荷包打到信号源上。要保证建立精度,运放的带宽和输出电流必须能快速补上这个电荷。
工程上有一个经验法则是,驱动运放的-3dB带宽至少是ADC采样速率的5~10倍,同时增益带宽积(GBW)要满足输入信号最高频率和所需精度的组合。当ADC精度越高、采样率越高,对运放压摆率和建立时间的要求就越苛刻。如果用普通的通用运放去驱动16位SAR ADC,输入阶跃后的建立时间往往不够,造成明显的动态误差。
运算放大器的噪声预算分配可用下面方式估算:假设运放的总RMS噪声为Vn,输入信号正负满量程摆幅分摊到每一位的LSB为Vlsb,那么要求Vn不超过Vlsb/6左右,这样才能保证运放噪声不会把ADC的ENOB拖低。
4.3 电源设计:磁珠和电容如何搭配
高精度ADC的模拟电源建议使用LDO单独生成,而不是直接拿开关电源输出。开关电源的纹波通常在mV级别,对于16位系统来说,这个量级已经相当于几十个LSB了。
实际布线时我会把模拟电源、参考源电源、数字电源三条路径分开走,模拟部分用一个磁珠加两个电容做去耦,一个10µF负责低频储能,一个100nF负责高频旁路。数字部分结实地回到数字地平面。
ADC芯片的AGND和DGND引脚通常内部是分开的,PCB布局上建议把模拟地集中在芯片下方形成一个岛,再通过单点连接到数字地平面。盲目把AGND和DGND大面积连一起,反而会给开关噪声提供回流路径。
4.4 输入抗混叠滤波器:不光是滤波器,还是保护
一般认知里,抗混叠滤波器是为了防止高频信号折叠进带内。但对高精度ADC来说,RC滤波器还有另外一个作用:限制进入ADC的带外噪声总量。驱动运放本身的噪声带宽可能达到几十MHz,如果不做滤波,这些宽带噪声会通过混叠方式进入基带,压低ENOB。
每增加一级RC滤波,带外噪声衰减6dB/oct,两级就能把大部分宽带噪声挡在ADC之前。RC截止频率的选择要结合信号带宽和采样率来定,经验值是取信号最高频率的3~5倍,给信号留足裕度的同时尽量衰减噪声。
5. 选型实操对照:我用这些参数筛掉过好几款芯片
下面用去年做过的多路数据采集项目,完整走一遍筛选过程,你会看到前面这些参数是怎么落地用的。
5.1 项目需求和初筛过程
项目要求8通道同步采样,每通道信号是电桥式压力传感器的输出,满量程约20mV,目标精度0.02%,输出速率100SPS,工作温度范围-10℃到50℃。
第一步算出来最小可分辨电压大约是4µV,对应理论位数约21位,加上3位余量,锁定24位Σ-Δ型ADC。候选名单里列了三款:A型(某进口品牌)、B型(另一家进口大厂)、C型(国产某厂)。
如果只看Datasheet首页,三款都是24位,看不出明显差距。把详细参数拉出来后,差别立刻显现:
| 参数 | A型 | B型 | C型 |
|---|---|---|---|
| 输出速率100SPS时RMS噪声 | 0.85µV | 1.4µV | 1.1µV |
| 输出速率100SPS时峰峰值噪声 | 4.5µV | 7µV | 5.5µV |
| INL(全温范围) | 2ppm | 8ppm | 5ppm |
| 增益温漂 | 1ppm/℃ | 5ppm/℃ | 3ppm/℃ |
| 参考源温漂(内部) | 3ppm/℃ | 10ppm/℃ | 5ppm/℃ |
B型和C型的峰峰值噪声都超过了我们4µV的目标分辨率,意味着单独靠ADC本身就已经无法稳定分辨目标最小信号。A型的噪声指标刚好满足,但参考源温漂在项目工作温度范围(60℃跨度)内会造成约180ppm的参考电压变化,这个量级对于0.02%(200ppm)的精度指标来说太紧了。
5.2 最终确定和外置参考方案
最后决定使用A型芯片但放弃内部参考源,改用一颗外置精密基准源,温漂做到2ppm/℃以内,0.1Hz到10Hz噪声控制在5µV峰峰值以内。同时把ADC配置在更高增益档位,让传感器输出信号满量程尽可能贴近ADC输入范围,尽量利用内部增益把量化噪声压到最低。
实测下来的效果是:在100SPS输出速率下,系统无噪声分辨率从18.4位提升到21位左右,全温范围内的最大偏差从0.06%降到0.025%,达到了项目的0.02%目标。这个项目给我的启发是:高精度ADC选型从来不是选一颗芯片的问题,而是选一个芯片加配套电路的完整方案。如果只盯着"谁家的位数字面更大"来选,后面靠layout和软件补偿去填坑的代价,很可能比当初多花几块钱选好料要贵得多。
6. 布板阶段最容易翻车的三个细节
选型完成后,布板和调试阶段还有三个高频翻车点,稍微写一下供参考。
6.1 参考电容的位置和走线长度
参考源输出到ADC参考输入引脚的走线要短,参考引脚旁边的去耦电容需要紧贴引脚放置,因为参考输入引脚对高频噪声非常敏感。长走线像一根天线把周围辐射噪声收集进来,而紧贴的去耦电容可以形成最小的回路面积。
我见过一个案例,工程师将基准去耦电容放在PCB背面,通过过孔连接,结果有效位数掉了2位。把电容挪到正面紧贴引脚,其他什么都不改,ENOB立刻回到正常水平。
6.2 地平面的分割要适度
很多初学者一听说模拟地和数字地要分开,就盲目把PCB的整个区域切成两半,信号走线跨过缝隙时反而造成更大的回流路径。
实际设计中,我通常只保证ADC芯片下方有一个完整的模拟地岛,模拟地岛和数字地在ADC芯片的封装底部汇合,单点连接。所有模拟信号走线都限制在地岛范围内,数字信号走线不跨过模拟地岛的区域。这样既隔离了数字噪声,又避免了回流路径被切断。
6.3 别忽略时钟和通信引脚的干扰
SPI接口的SCLK、DIN、DOUT引脚在高速翻转时会产生毛刺,如果这些走线贴着模拟输入走线并行几厘米,噪声就会串进来。布板时数字通信线和模拟输入线要保持至少3倍线宽间距,实在避不开就用GND走线在中间做隔离。
还有一个容易漏掉的地方:如果ADC的转换时钟来自MCU的PWM或其他数字引脚,这个引脚的翻转噪声也要注意在源头滤波。用独立的有源晶振或专用时钟芯片,比直接从MCU引脚取时钟在高精度场合更可靠。
7. 最后分享一点个人习惯
做了不少高精度采集项目之后,我最后每次选型都多问自己三个问题:这颗芯片在目标输出速率下的真实ENOB是多少?参考源方案能不能支撑我的目标精度?前端驱动电路是否会成为瓶颈?三个问题都能给出满意答案,这颗料才敢画进原理图。
另外养成一个好习惯:芯片拿到手后先画一块最小评估板,只放ADC、参考源、供电和默认滤波,用信号发生器输入几个已知幅度和频率的信号,测一遍ENOB、INL、温漂,把测试数据和Datasheet对照。这一步花不了多少时间,但能在项目早期把"看起来够用"和"实际够用"的差距一次性排除掉。高精度ADC选型这事,选芯片只占三分之一,剩下的三分之二都在系统和细节里。