☰
电容在ADC采样与电荷泵中的关键作用及实战选型要点
2026/10/6 20:33:55 网站建设 项目流程

做硬件调试这些年,电容大概是让我又爱又恨的元件。最近帮朋友调一块12位ADC采集板,输入一个稳定的1.2V基准电压,采回来的数值却在小数点后第二位来回跳,那种"明明电路很简单却查不出问题"的感觉,经历过的工程师都懂。最后盯着原理图看了半天,发现采样保持电容取值偏小,配合前端RC滤波电阻,跟踪时间压根不够,电容还没充到最终值开关就断开了。换个思路加大采样时间配置,数据立刻稳了。这个故事背后,其实牵出了电容电路的三条主线:用它做微分积分、用它做采样保持、用它搬运电荷构成电荷泵。

这篇文章想把电容在实战电路中的角色系统地拆一遍。从基础公式 i=C·dv/dt 出发,讲到ADC采样前级电路的设计要点,再讲到电荷泵这种靠电容搬能量的功率拓扑。适合正在做模拟前端、传感器采集、电源设计的工程师,尤其适合那些"理论都懂,但一上手就被采样偏差和电容选型问题卡住"的朋友。

1. 电容的物理本质决定它能做微分也能做积分

1.1 从 i=C·dv/dt 看电容的"性格"

电容最基本的关系式就是 i = C·dv/dt。这个式子含义很深:流过电容的电流并不取决于电容两端电压有多高,而取决于电压变化得有多快。也就是说,电容本质上是一个"对电压变化敏感"的元件,电压纹丝不动时它就像断路,电压稍微波动它就拼命充放电去对抗。

理解这个特性的最好类比是水库。水库里的水量代表电荷,水面高度代表电压,流入水库的水流就是电流。水库越大,同样灌入一股水流后水面上升得越慢——这就是大电容稳压效果好的原因。反过来,如果外面对水库的抽水速度不断变化,水面高度也随之变化,而"水面变化速度"乘以水库容量,就等于水流大小。这个视角是后面理解微分电路和积分电路的钥匙。

从能量角度看,电容存储的是电场能量 E = ½·C·U²。它不像电阻那样把能量变成热量消耗掉,而是先存起来再放出去。正是这种"暂存-释放"特性,让电容既能平滑电压(积分效应),又能传递瞬态变化(微分效应),还能在开关控制下把电荷从一个节点搬到另一个节点(电荷泵)。

1.2 积分电路:电流积累成电压

最经典的积分电路就是一个电容,加上一个恒流源或者通过电阻限流。当理想恒流源给电容充电时:

U = (1/C) · ∫i dt

如果电流恒定 I,那么 U = I·t/C,电压随时间线性上升。这个公式在很多场合直接可用,比如硬件设计中常见的软启动电路:用恒流源给电容充电,电容电压从0慢慢爬到目标值,爬升时间 t = C·U/I,想调整软启动时间就改电容容量或者充电电流。

用电阻给电容充电则更常见,阶跃响应是 U(t) = Vcc(1 - e^(-t/RC)),时间常数 τ = RC。注意,这里的RC不是"充到100%"的时间,而只是充到63.2%的时间。工程上一般认为5τ后基本充满,但具体到采样电路,5τ对应的残差约0.67%,对12位ADC来说还不够低,至少需要8~9τ才勉强达到1/4096精度以内。这个问题很多人会栽,后面采样部分细说。

1.3 微分电路:变化率转化成电压

微分电路最典型的结构是电容串联在信号路径上,后面接电阻到地。输出电压正比于输入电压的变化率 u_out ≈ RC·(dv_in/dt)。

这种电路在实际工程里相当"难伺候"。因为任何噪声、串扰、毛刺都带有极高的 dv/dt,经过微分电路后噪声被放大得很厉害,输出波形上全是尖刺。所以除了波形整形、触发沿检测这类特殊场景,没人拿它做常规信号处理。反倒是它的低频版本——隔直通交的耦合电容——在电路里无处不在:交流放大器级间耦合、串口电平转换、AC采样前端隔离直流偏置,都是用"电容阻断直流、让交流变化通过"这个思路。

从设计角度总结,电容的微分和积分特性是个一体两面:凡是需要"平滑""保持""延时"的地方,用的是积分效应;凡是需要"提取变化""隔离直流""引导瞬态电流"的地方,用的是微分效应。理解到这一层,再看采样保持电路和电荷泵,思路就顺了。

2. 采样保持:ADC前面那颗电容决定了你测得的数值准不准

2.1 采样保持电路的工作原理和时序

SAR型ADC做转换的前提是:转换期间输入电压必须保持稳定。于是就有了采样保持电路(S/H),结构上就是三件事:一个模拟开关、一个采样电容、一个高输入阻抗的缓冲器。

采样阶段,开关闭合,输入信号通过开关的导通电阻给采样电容充电,电容电压跟踪输入电压。保持阶段,开关断开,电容把最后一刻的电压"定格"下来,交给后级ADC逐位比较。整个过程就是电容充电和保持电荷的配合。

关键时序参数有三个,实际设计时一个都不能漏:

  • 采样时间(跟踪时间):从开关闭合到开关断开的时间,必须保证电容电压充到与输入电压的误差小于 ½LSB。
  • 孔径时间(孔径延迟):保持命令发出到开关真正断开的时间。这个时间不定会造成孔径不确定度,直接表现为采样值的噪声。
  • 保持时间:开关断开后电容电压维持精度的时长,取决于电容自放电和开关/引脚的漏电流。

很多工程师(包括以前的我)以为"只要ADC分辨率高就行",忽略了前端RC网络和采样电容构成的充电回路需要时间。拿12位ADC举例,如果参考电压是3.3V,那么一个LSB约0.8mV。要让充电残差低于0.8mV,即残差比例小于满量程的1/4096,按指数充电过程算,需要约8.3τ。如果采样电容是10pF,开关导通电阻50Ω,时间常数只有0.5ns,自然没问题。但如果你在前端加了RC滤波,比如常见的100Ω电阻加10nF电容,光这个滤波电容的时间常数就是1μs,还不算采样电容并联进去的额外负载,给1μs采样时间就有问题了。

2.2 采样误差从哪来:电荷注入、时钟馈通与孔径抖动

采样误差是精密ADC设计里最容易踩的坑。先说电荷注入。模拟开关断开瞬间,MOS管沟道里的电荷并不是立刻消失,而是会往源极和漏极两个方向泄放。如果开关管两侧结构不对称,或者采样电容比较小,这部分电荷就会转移到采样电容上,形成电压跳变,偏移量通常是毫伏级别。

解决办法有几种:采样电容尽量选大一点,电荷注入引起的电压变化 ΔU = Δq/C 会小一些;或者用互补CMOS开关、加虚拟开关(Dummy Switch)来抵消注入电荷。后端芯片如果是集成采样开关的ADC,一般内部已经做了优化,但使用外部采样保持电路或者多路复用器时就得仔细处理。

时钟馈通也类似:采样控制信号本身会通过开关管的栅漏/栅源寄生电容耦合到采样电容上,产生一个固定的电压台阶。它与输入信号大小无关,表现为失调误差。孔径抖动则直接影响信噪比:孔径时间每抖动几个皮秒,对应到一个高频信号的相位抖动,输出电压误差就越大。所以采样时钟的抖动要求在高频采样时格外苛刻,这也就是为什么高速ADC通常要求低抖动参考时钟。

2.3 STM32 ADC采样时间配置与多通道扫描陷阱

用STM32内置ADC时,采样时间不是"给个大概"就行。STM32的ADC采样时间由寄存器配置,常见选项有1.5、7.5、13.5、28.5、41.5、71.5、239.5个ADC时钟周期等。ADC时钟通常来自PCLK2分频,比如72MHz主频、PCLK2=72MHz时,ADC预分频设为6分频得到12MHz ADC时钟,则1个ADC时钟周期约83.3ns。

假设信号源内阻10kΩ,采样电容约4pF(STM32系列典型值,具体看型号手册),RC时间常数约40ns。要满足12位精度需要8.3τ,即约330ns。这个时间对应大约4个ADC时钟周期,看起来13.5周期够了。但如果你在外部又加了一阶RC滤波,电阻1kΩ、电容10nF,波形从外部滤波电容传递到内部采样电容的过程就复杂了,外部RC的时间常数是10μs,你不能再按40ns算,需要把采样时间拉到239.5周期,否则测出来的数值会系统性偏小。

多通道扫描更是陷阱重重。多个通道共用一个ADC,如果你把通道按"最慢通道配置采样周期",所有通道都会变慢——这是正确做法。如果开发时改了一个通道的采样时间而其他通道保持短采样时间,扫描时会出现"混合读数":慢信号通道窜到快信号通道上,或者采样不充分导致通道间串扰异常。我曾见过一个案子,三路传感器扫描数据周期性跳变,最后查出来就是通道配置不一致。

下面是一段配置采样时间的参考写法:

ADC_InitTypeDef ADC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); RCC_ADCCLKConfig(RCC_PCLK2_Div6); // ADC时钟 = 72MHz / 6 = 12MHz ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); // 采样时间设置为239.5个ADC周期,约19.96us,适合高阻抗信号源 ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5);

注意:不同STM32型号的ADC时钟最高频率限制不同,有的允许36MHz,有的只有14MHz。配置前务必查数据手册,否则采样结果可能完全不可信。

2.4 高性能采样开关:栅压自举为什么重要

如果把采样保持电路做成独立的模拟开关,就绕不开"导通电阻随输入电压变化"这个问题。常规CMOS传输门的导通电阻不是常数,输入电压靠近电源轨或者地轨时,电阻明显变化。开关导通电阻变化意味着采样电路的充电时间常数也在变,最终在ADC输出上表现为积分非线性(INL)失真。

栅压自举开关(Bootstrap Switch)的思路是:让开关管的栅源电压保持恒定。具体做法是把电源电压预先充到一个电容上,在采样阶段把这个电容跨接在开关管的栅极和源极之间。这样不管源极电压(也就是输入信号)怎么变,Vgs始终等于电容两端电压,导通电阻就稳定了。

这个技术在现代高精度、高速ADC内部用得很多,外部电路如果需要自己搭采样保持前端,也可以用来保证全输入范围内采样带宽一致。做低速高精度采集时,它不一定必须,但一旦信号频率上去、输入摆幅又接近电源轨,普通的CMOS开关就会露馅。

3. 电流与电压采样电路里的电容配合

3.1 电流采样电路的RC滤波怎么取值

电流采样通常是把电流流过采样电阻产生的压降送给运放放大。采样电阻值很小,压降也很小,这种微弱信号特别容易被开关噪声、地弹干扰污染,所以采样电阻到运放之间几乎都会加RC滤波。

关键问题是:这个RC的时间常数不能影响你关心的信号带宽。一个常用的做法是差分方式:采样电阻两端各串一个等值电阻R,然后在运放输入端并一个差分电容Cd,同时两个输入端各并一个共模电容Cc。差分信号走的回路是R+Cd+R,共模噪声走的是R+Cc。差分截止频率 f = 1/(2π·R·(2Cd? Cc?))。工程上更常用的是先估算需要抑制的噪声频段,反推滤波器截止频率,再选R和C。

一个参考起点:R取100Ω到1kΩ,差分电容取1nF到10nF,共模电容取100pF到1nF。但这只是起点,具体要结合运放的输入电容和信号最高频率来算。计算时需要注意的是,运放输入端本身还有输入电容,如果外部R取太大,运放输入电容和外接电容会形成分压/谐振,反而在某个频点放大噪声。所以R不宜无脑加大,宁可C加大。

3.2 交流电压采样:隔直、偏置与电容耦合

交流电压采样,尤其是220V交流的电压采样,通常先用电阻分压网络把高压降到ADC能接受的范围,然后做隔直处理。这里的电容起作用的地方就在于把直流分量去掉、只让交流分量通过,配合后级偏置电路把交流信号抬升到ADC输入范围中间。

具体做法常见两种。一种是纯电阻分压后直接进运放做偏置和放大,另一种是分压后串电容,后端再通过电阻网络设置直流工作点。第二种的好处是前端分压网络的直流电平与后级偏置完全解除耦合,但代价是电容+后端输入电阻构成的高通滤波器会限制最低可测量频率。比如电容取1μF,后端等效输入电阻100kΩ,那么高通截止频率约1.6Hz,测50Hz没问题,但如果要测更低的频率就需要加大电容到10μF、100μF。

这里想提醒一点:电容隔直之后的直流偏置点非常重要。如果偏置电压和运放输入偏置电流不匹配,会把工作点慢慢拉偏。还有一种隐蔽故障:输入信号是双极性,偏置到ADC中心点后,如果电容漏电大,输出中线会漂移,最终表现为"读数在一半以上/以下不对称"。

3.3 电容倍增电路:小电容干大电容的活

电容倍增器是个很巧妙的电路,利用运放的增益把一个物理小电容等效成一个大电容。常见做法是米勒电容倍增,利用运放反相端的米勒效应,等效输入电容 Ceq = C·(1 + A),A是这一级放大倍数。运放增益100倍,一个100nF的电容在输入端看起来就像10μF。

应用价值非常实际:在需要大电容的场合,比如低频滤波器、慢斜坡发生器、电源软启动延时,大容量电解电容体积大、等效串联电阻高,还可能有漏电问题。用运放加小薄膜电容等效出大电容,精度和稳定性反而更好。

但要注意,电容倍增器是有源器件,它受限于运放的带宽和压摆率。频率高了以后,运放增益下降,等效电容也不准了。还有,它只能单向工作,不能像物理电容那样双向储存和释放能量,所以在能量缓冲、去耦这些场合,它替代不了真正的电容。搞清楚应用边界,才能在合适的位置放心地用。

4. 电荷泵设计:用开关和电容把电压搬到想要的电平

4.1 电荷泵基本原理:飞电容与电荷转移

电荷泵是一种基于"电容充电-放电-再充电"的DC-DC变换器。它的核心是飞电容(Flying Capacitor)和一组同步开关。以最经典的负压电荷泵为例:第一步开关把飞电容接到输入电源,飞电容被充电到输入电压;第二步开关切换,把飞电容的正极接地,负极接到输出端,这时由于电容两端电压不能突变,输出端就得到大约-输入电压的电平,同时飞电容向输出电容和负载放电。如此往复,输出就维持在一个负压附近。

从能量角度看,电荷泵的本质是把单位电荷一批一批地从输入搬到输出。每搬运一批电荷,输出电容的电压会有微小的上升和下降,这就是纹波。开关频率越高,每周期搬运的电荷越少,纹波越小,但开关损耗也会增加。

实际工程中电荷泵最常见的应用包括:给运放提供负压、给LCD提供偏置电压、产生倍压给Flash编程电压、以及一些低功耗产品里用电荷泵产生LED驱动电压。选择电荷泵而不是LDO或电感开关电源的理由很直接:没有电感,EMI小、体积小、成本低;缺点是负载能力有限,一般到几百毫安就到头了。

4.2 关键设计参数:开关频率、飞电容容量与死区时间

电荷泵设计里最重要的两个参数是开关频率和飞电容容量。理想情况下,电荷泵输出等效阻抗近似等于 1/(fsw·Cfly),这个数值越大,带载后电压跌落越严重。比如要输出50mA负载、允许输出电压跌落100mV,等效阻抗就应该小于2Ω。如果开关频率100kHz,那么Cfly至少要5μF。这是一个工程估算起点,实际还要考虑开关管的导通电阻、电容ESR。

死区时间同样关键。很多电荷泵使用交叉开关(CDS模式),在开关切换过程中如果上下管同时导通,输入和输出之间就会形成贯通电流,轻则效率暴跌,重则电源轨被拉垮。所以开关的驱动信号之间必须插入一个很小的延迟,让两个开关都处于断开状态,这个时间就是死区。

设计时我会按下面顺序过一遍:

  • 确认负载电流和允许纹波,计算需要的最小开关频率和飞电容。
  • 根据输入输出电压范围选择飞电容耐压,预留至少1.5倍降额。
  • 确定开关管驱动方式,加死区时间。
  • 用示波器抓输出纹波和SW节点波形,确认没有直通和振铃。

4.3 电荷泵的纹波、效率与电容选型

输出纹波主要取决于输出电容和开关频率。粗略估算,纹波峰峰值 ΔV = Iload/(fsw·Cout)。如果负载50mA、开关频率500kHz、输出电容10μF,纹波约10mV。想降低纹波有两条路:加大输出电容,或者提高开关频率。加大输出电容直接有效,但注意电容的ESR也会贡献纹波,所以高频场合要用低ESR的陶瓷电容。

效率方面,电荷泵的损耗主要有三个来源:导通损耗(开关MOSFET的导通电阻和飞电容ESR)、开关损耗(栅极驱动、寄生电容充放电)、以及反向传输电荷时的固有损耗。理想2倍压电荷泵的效率可以达到接近100%,但输出电流越大、开关频率越高,实际效率越低,一般负载稍重的2倍压电路做到85%到92%比较常见。

电容选型是电荷泵设计里最容易忽视的一环。飞电容要承受较大的纹波电流,优先选低ESR的X7R或C0G陶瓷电容。C0G温漂最小、最稳定,但容值做不大;X7R容量可以做得比较大,但有直流偏压特性,施加额定电压后容量可能下降到标称值的50%到70%。输出电容则要注意总ESR对纹波的影响,通常用X5R/X7R并联一个小容值C0G来兼顾容量和频率特性。

如果做非隔离的220V交流转低压的系统,前级整流滤波电容的耐压和纹波电流就得更上心。220V交流整流后峰值电压约311V,滤波电容至少选400V耐压,常用450V铝电解电容。同时要考虑开机瞬间的浪涌电流,所以很多设计会在整流桥后串一个NTC热敏电阻来抑制浪涌。这类电容规格不是"看着差不多的容值就行",耐压余量、纹波电流额定值和寿命都需要仔细核对。

5. 实际调试经验与电容选型的几个大坑

5.1 采样值系统性偏小的完整排查链路

文章开头提到采样值偏小的案例,这里把完整的排查链写出来,给大家参考。

当时的现象是:输入电压稳定的1.2V基准,ADC读出来稳定在0.92V左右,不是跳变,是稳定的偏低。第一步先怀疑分压电阻,万用表量输入到ADC引脚的实际电压,确认芯片引脚上确实是1.2V,说明前端没有错。第二步检查参考电压,因为12位ADC读数是相对于参考电压的,如果参考电压偏低,读数就会偏高而不是偏低,方向不对。第三步怀疑采样时间不够,于是把采样周期从13.5周期改成239.5周期,读数立刻接近真实值,此时确认是跟踪时间不足。

背后的机理就是采样电容充电不充分。但为什么引脚上量到1.2V,采样还是不够?因为万用表测量的时间尺度是毫秒级,它有足够时间把电压测准,而芯片采样只有几微秒,它要在这几微秒里通过信号源内阻给采样电容充电。信号源内阻高的时候,前面没有足够的电容储能,微秒级充电根本充不满。这也解释了为什么前端RC滤波的取值会直接拖垮采样精度。

排查这类问题,建议顺序是:

  • 先用万用表确认引脚实际电压,排除前端分压/放大问题。
  • 检查参考电压和基准稳定性。
  • 用示波器看采样控制信号和输入信号的时序关系,确认采样窗口是否足够。
  • 逐步加大采样周期,观察读数变化趋势,找到拐点。
  • 检查前端RC滤波的截止频率,确认它没有把目标信号衰减掉。
  • 有条件的话用高阻抗缓冲运放(如电压跟随器)驱动ADC输入。

5.2 电荷泵输出电压异常的案例分析

另一个实战案例是电荷泵负压升压不正常。电路是标准的负压电荷泵,输入+5V,理论输出-5V,飞电容1μF,开关频率1MHz。实际测量输出只有-2.8V,而且随负载波动明显。

一开始怀疑芯片坏了,换了芯片依旧。后来用示波器抓SW节点波形,发现开关频率远低于设计值,只有200kHz多一点,再查芯片内部振荡器频率设定引脚,发现外接电阻误选大了。开关频率下降导致等效输出阻抗升高,带载后电压跌落就多了。把电阻改回标称值后,输出恢复正常。

这个案例说明一个道理:电荷泵的实际输出能力用等效阻抗衡量,任何导致有效开关频率降低的因素都会直接影响到带载能力。除了外部定时电阻,飞电容ESR过高也会表现为带载电压跌落,而飞电容容量不足则会出现"空载电压正常、负载一上来就掉"的现象。所以排查电荷泵问题时,最好同时测SW波形、输出纹波和输出电流,三个信息放一起,问题定位会快很多。

5.3 电容直流偏压特性:X7R衰减一半你信吗

陶瓷电容的直流偏压特性是很多工程师用过一次就忘不掉的教训。X7R电容在两端施加直流电压时,实际容量会显著下降。比如10μF的X7R陶瓷电容,在20V直流偏压下容量可能降到5μF以下,在接近额定电压时甚至可能只剩下标称值的30%上下。

这意味着什么?如果你按10μF设计了一阶低通滤波截止频率,在无直流偏压时工作正常,一旦电路进入正常上电状态,滤波截止频率可能默默漂移了一倍多。放在电源去耦场景里,表现为高频噪声纹波变大;放在RC延时电路里,表现为延时时间变短。

所以选型建议是:

  • 对精度敏感的电路尽量用C0G/NP0电容,虽然容量做不大,但容量随电压和温度几乎不变。
  • 需要大容量时选择耐压值比工作电压高一倍以上的X7R,靠"低偏压工作"来保住实际容量。
  • 产品设计阶段,用网分或LCR表实测工作点下的实际容量,而不是只参考数据手册标称值。
  • 如果电路里有电解电容,还要注意温度范围下的容量衰减和ESR变化。

最后再分享一个小经验:电容的参数不像电阻那样"标多少就是多少",它的容量、ESR、漏电流都会随电压、温度、频率变化。设计时既要留出计算余量,更要实测验证。做模拟电路这么多年,我越来越觉得"电容选型"四个字提出来容易做起来难,很多时候产品的精度边界和稳定性成败就在这几颗不起眼的电容上。希望这篇文章能帮你少走一些弯路,特别是那些看起来玄学的采样偏差和电压跌落问题,往电容方向想想,往往就有答案。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询