
最近帮朋友调一个51单片机的小项目电源部分从5V进来板上还带了一块需要负压偏置的LCD屏同时要给一颗Flash提供12V左右的编程电压。手里没有现成的负压芯片和升压模块也不想为这两路毫安级电流专门画一个电感Boost最后我选择用倍压电路自己搭。这个决定听起来有点“复古”但实测下来效果和稳定性完全够用。倍压电路在电源设计里属于那种“平时想不起来关键时候真香”的方案。它的核心思路是用二极管和电容做电荷搬运不用电感不用变压器就能把直流电压变成整数倍电压。适合给LCD偏压、闪存编程电压、OP运放供电这类小电流场景。这篇文章我准备把倍压电路的原理、手搓电路的过程、器件选型以及调试踩坑一次讲透给做硬件设计、MCU嵌入式电源和电源方向的同学做个参考。1. 倍压电路在电源设计中的定位不是所有升压都要上电感1.1 四种升压方案的取舍先说结论升压方案没有绝对的好坏只有匹配不匹配。电源设计里常见的升压手段大致能分成四类电感式Boost、电荷泵Charge Pump、变压器隔离式反激/正激以及带抽头或倍压整流的特殊拓扑。它们各自解决不同的问题我习惯用一个对比表把它们拎清楚方案核心元件效率输出电流能力体积成本典型场景电感Boost电感、MOS、二极管85%~95%大百毫安~数安中电池升压、LED驱动、USB PD电荷泵倍压电容、二极管、开关70%~90%小几毫安~几百毫安极小LCD偏压、Flash编程、运放供电反激/正激变压器、开关管80%~90%大且可隔离大ATX电源、适配器、隔离转换倍压整流电容、二极管50%~80%极小小CRT高压、X射线、Nixie管供电一个容易被忽略的事实电感Boost的效率和体积优势是在“中等以上电流”的前提下才成立的。当负载只有几毫安、十几毫安时Boost电路里电感的磁芯损耗、开关管的开关损耗、驱动电路的静态功耗占比反而会变得很高。有时候一颗电荷泵芯片加几个电容的静态电流比Boost轻载时的固定损耗还低。而且Boost电路有反馈环需要考虑电感饱和、环路稳定性、输出纹波抑制设计门槛比电荷泵高一个量级。如果只是给显示器调个负压、给Flash写个高压脉冲花半天时间调试Boost环路确实不太划算。1.2 什么情况下倍压电路是“最优解”在实际项目中我会优先考虑倍压电路的条件主要有三条电流需求小一般单路不超过50mA多路并联总量不超过200mA电压倍数相对固定二倍、三倍、四倍这种整数倍关系不需要连续调节布局空间紧张不希望为电感预留面积或者电路板上有强干扰源想避开电感的EMI问题。对照这三个条件你会发现很多具体场景都对得上LCD屏的VCOM偏置、VGH/VGL栅极驱动电源通常都在微安到毫安级NOR Flash烧写时的VPP引脚编程电流也就十几毫安老式电子管的灯丝供电、运放芯片的负压轨同样是倍压电路的传统地盘。这里要泼一盆冷水倍压电路绝对不适合做大功率主供电。它的本质是靠电容储能搬运电容的能量密度远低于电感磁场储能倍压级数越多输出阻抗越高带载能力指数级下降。你很难用倍压电路给一个需要500mA电流的MCU核心供电硬要做也能做但电容体积和纹波会让你后悔。2. 倍压原理拆开看电容并联充电、串联放电的搬运游戏2.1 电容储能与二极管的单向阀作用想理解倍压电路先要回到电容的本质。电容是一个储能元件它储存的是电场能量表达式是E 0.5CV²。电容两端电压不能突变所以它可以被充电到某个电压然后“举着”这个电压去别的地方放电。二极管的作用就更直观了它就是个单向阀。在倍压电路里二极管只允许电荷往一个方向流动保证电容在充电和放电两个阶段不会互相倒灌。把电容和二极管组合起来就实现了“并联充电、串联放电”的电荷泵基本单元。我用一个生活化的类比来解释你可以把每个电容理解成一个运水工。充电阶段每个运水工都从低位水池打满一桶水放电阶段运水工们排成一串站在台阶上把水一级一级地往高处的蓄水池倒。每一级台阶就相当于一个二极管每个运水工就是一颗电容。台阶站得越多水被抬得越高对应到电路里就是倍压级数越多输出电压越高。2.2 交流输入的经典半波倍压器从历史角度看最经典的倍压电路其实是针对交流输入的。它由多组二极管和电容组成比如一个四倍压整流器能把220V交流电整流成接近1200V的直流高压。这种电路在老式显像管电视、静电发生器里很常见。它的工作过程是这样的以二倍压为例交流电正半周时变压器副边电压上正下负二极管D1导通C1被充电到接近峰值电压Up实际要减去二极管压降负半周时电压反向D1截止此时C1上已存有Up电压叠加交流电压后总电压接近2Up通过D2给C2充电。最终C2两端电压稳定在约2Up附近。如果继续串联更多的二极管和电容组输出电压就能按“2倍、3倍、4倍”逐级增加。注意这个过程的本质是“交流峰值电压叠加”所以在同样电路里交流输入时的倍压效果和输入电压的峰值直接相关。设计高压倍压整流时尤其要注意电容耐压每个电容至少承受2倍峰值电压等级不够会直接炸。2.3 DC-DC电荷泵的开关倍压过程到了现代低压电子系统输入往往是稳定的直流而不是交流。这时需要在电路里自己制造“交流”也就是用开关管周期性翻转电容的其中一个极板电位这种结构被称为Dickson电荷泵也是目前所有电荷泵IC的核心架构。我拆解一个最简单的Dickson二倍压电路给你看。它由一颗飞跨电容fly capacitor也叫泵电容、两颗二极管和一颗输出电容组成。开关信号CLK接在飞跨电容的负端用NMOS或CMOS反相器驱动。具体工作分两个阶段阶段一充电CLK为低电平NMOS导通开关节点被拉到地。此时输入Vin通过D1给泵电容充电泵电容正端电压接近Vin负端为0V。阶段二泵升CLK为高电平NMOS截止飞跨电容负端被抬高到Vin。由于电容两端电压不能突变正端电压瞬间变为2Vin。此时D1反偏截止2Vin通过D2给输出电容充电输出电压逐步趋近2Vin - VdVd是二极管压降。如果想要三倍压就把同样的“二极管泵电容开关”单元再串一级。第一级输出2Vin左右第二级在此基础上再叠加Vin最终得到约3Vin - 2Vd。级数越多二极管的累计压降越大输出阻抗也越高。这就是你在数据手册上见到的“陶瓷电荷泵”内部结构只不过真实芯片里把二极管换成了同步MOS开关用来降低压降损耗。3. 实战用NMOS搭一个5V转15V的三倍压电路3.1 电路结构与分时工作过程纸上谈兵到这里直接上一份可以抄作业的设计。目标输入5V输出约15V负载电流10mA左右给Flash编程电压用。我的电路结构如下输入5V接到两个串联的泵电容单元每级由一个NMOS开关、一个二极管和一个泵电容组成第一级泵电容C1正端接D1阴极到输入负端接Q1的漏极Q1源极接地栅极接驱动信号CLK第一级二极管D1阳极接5V输入阴极接C1正端同时接第二级二极管D2的阳极第二级泵电容C2正端接D2阴极负端接Q2漏极Q2源极接地栅极接反相后的驱动信号CLKB第二级二极管D3阳极接C2正端阴极接输出电容C3和负载。驱动时序这里要额外讲清楚。如果两个NMOS用同一个CLK信号驱动会出现一个严重问题CLK高电平时Q1截止、Q2也截止两个泵电容同时处于泵升状态D2导通路径变成了“第一级高电压直接通过D2给第二级泵电容充电”看似合理但实际上第二级无法完成“先充电再泵升”的完整周期输出只能得到约2倍电压而不是3倍。所以正确的做法是让Q1和Q2交替导通。我用两路反相的方波CLK高时Q1导通第一级泵电容充电到5V此时CLKB为低Q2截止第二级泵电容处于泵升状态把第一级抬升后的电压通过D2向第二级传递。反过来同理。两级交替工作输出才能稳定在3倍压附近。3.2 NMOS开关管的选型细节这颗NMOS在倍压电路里是灵魂器件选型时我主要盯四个参数。第一是Vgs阈值电压。如果驱动信号是5V方波就应该选逻辑电平MOS管比如AO3400、IRLML6344、2N7002电流偏小不太推荐。普通MOS管Vgs阈值3V以上5V驱动虽然也能开但导通电阻偏大损耗会上去。第二是漏源耐压Vds。在3倍压电路里Q2关断时会承受C2正端电压也就是接近15V左右还要叠加泵升瞬间的尖峰建议选30V以上耐压的管子留足余量。第三是体二极管方向。这一点很多人会翻车。MOS管的体二极管是从源极指向漏极的。当NMOS做低边开关、源极接地、漏极接泵电容负端时体二极管方向是从地指向泵电容负端。如果泵电容负端在某些阶段的电压低于地体二极管会导通向回抽电导致效率下降甚至功能异常。解决办法是控制好时序保证泵电容负端最高电压不超过驱动电压太多或者改用带衬底-源极独立引脚的管子和负压偏置但后者在分立件方案里没必要控制好时序就够了。第四是寄生电容Coss。开关频率越高寄生电容的充放电损耗越明显。对于10mA负载100kHz到500kHz频率下AO3400这类小管子的Coss损耗基本可接受。用一句话总结选逻辑电平、耐压30V以上、Rds(on)小于100mΩ的小信号NMOS物理封装选SOT-23就够用。3.3 电容容量、耐压的估算方法电容参数的估算我会先算负载需要的电荷量再反推容量。10mA负载、100kHz开关频率一个周期是10微秒每个周期要搬运的电荷量是 Q I × T 10mA × 10μs 0.1μC。泵电容上的电压波动如果允许0.1V则容量至少 C Q / ΔV 1μF。实际设计我会取10倍以上余量用10μF保证带载时电压跌落不明显。耐压方面有个简单的口诀每级泵电容至少按2倍输入电压选输出电容至少按最大输出电压选。在这个5V输入、三倍压的例子里泵电容耐压建议选16V或25V输出电容选25V。陶瓷电容的电压降额通常要求50%以上所以25V耐压在15V输出下是合理下限。另外泵电容的材质优先选X7R或C0G不要用Y5V这种容量随温度变化极大的材质。倍压电路对电容容值的稳定性比较敏感容量漂移会导致输出电压和纹波跟着漂移调起来很头疼。4. 元件参数不能凭感觉纹波、效率与频率的计算4.1 输出纹波公式与电容下限倍压电路是典型的开关电容变换器它的输出纹波主要由两个因素决定一是输出电容的容量二是负载电流。工程上常用简化公式ΔVout ≈ Iout / (f × Cout)这个公式的含义是负载电流越大、开关频率越低、输出电容越小纹波就越大。以刚才的10mA负载、100kHz频率、10μF输出电容计算ΔVout 10mA / (100kHz × 10μF) 0.01V也就是10mV这个纹波对Flash编程电压来说完全可以接受。但要注意这个公式只考虑了电容容值的充放电压变化没考虑电容ESR和ESL的影响。实际电路中泵电容切换的瞬间会产生较大的电流尖峰如果输出电容的ESR偏高纹波会明显高于理论值。这就是为什么倍压电路的输出电容我坚持用MLCC而不是电解电容的原因电解电容的ESR是百毫欧到几欧姆级别MLCC能做到几毫欧到几十毫欧纹波表现完全不在一个量级。4.2 效率损失从哪里来倍压电路的效率问题很多人一开始算不明白。其实损耗来源就四个方向第一是二极管的导通压降损耗。每级二极管按0.3V到0.5V算肖特基如果输入只有5V、输出要做到15V三级二极管累计压降就是0.9V到1.5V。这直接导致带载时输出电压达不到理想的15V而是14V左右。第二是MOS管的导通损耗和开关损耗。导通损耗好理解Rds(on)乘以电流的平方开关损耗则来自栅极电容充放电以及与泵电容之间的电荷共享损耗。频率越高开关损耗越明显。第三是电容ESR损耗。每次充放电电流流过电容ESR都会发热。ESR越大发热越厉害这也是为什么不能用普通电解电容做泵电容的原因之一。第四是电荷共享损耗。这是电荷泵特有的损耗由两个电容之间的电压差造成。当一个充满电的泵电容连接到一个电压更低的电容时不可避免地会发生电荷重新分布这个过程的能量损失与电压差的平方成正比。所以电荷泵在高倍数、大负载时效率很难做高。实测下来分立元件的三倍压电路在10mA负载下效率通常在70%到80%之间。如果换成集成电荷泵芯片芯片内部用了同步开关替代二极管效率能到85%以上但依然不如Boost。4.3 MLCC偏压降容最容易被忽略的坑讲一个我踩过的实打实的坑MLCC陶瓷电容存在直流偏压降容特性。也就是说电容标注的10μF是在零偏压下的容值当它两端加上10V直流电压后实际有效容值可能只有标称值的30%到50%尤其是X5R、X7R这类高介电常数材质降容非常明显。在设计倍压电路时如果按10μF标称值计算纹波实际因为偏压降容输出纹波可能比预期大一倍以上。我曾经在做一个LCD偏压电路时输出纹波一直压不下去查了一圈才发现是输出电容在15V偏压下实际容值缩水到了3μF。解决办法有几个一是用更高耐压的电容比如25V或50V耐压的同容量电容偏压降容幅度会小很多二是并联两颗电容等效容值更大纹波更低三是选用C0G材质C0G完全不随偏压和温度变化但容值做不大适合小容值关键位置的降容规避。5. 从芯片到系统LCD偏压、Flash VPP和MCU设计中的倍压应用5.1 LCD偏压与负压产生LCD显示屏是倍压电路最典型的应用场景。大多数LCD面板需要几路特殊的供电电压栅极开启电压VGH通常10V到20V正压、栅极关闭电压VGL通常-5V到-7V负压、公共电极电压VCOM通常是正压的一半。如果你去翻主流LCD驱动芯片的数据手册会发现它们的内部框图里基本都内置了电荷泵有的甚至专门标注“内置四倍压电荷泵”来产生VGH。这是因为LCD栅极驱动需要的是电压摆幅而栅极本身的漏电流极小每路只有几微安到几十微安用倍压电路简直天作之合。自己搭负压时原理和正压倍压类似但方向相反把输出电容和地的位置对调让电荷泵把地电位“泵”到负压。另一种更省事的方式是用电荷泵反转型芯片如ICL7660外部加两颗10μF电容就能把5V转成-5V适合给运放做负电源轨。一个设计细节LCD负压的时序要求很严格尤其是面板上电和掉电时VGL必须比VGH先建立、后撤掉否则LCD栅极驱动IC会有闩锁风险。手动搭倍压电路时要在输出端加RC延时或使能控制不能简单把电源直接接上去。5.2 Flash VPP编程电压的电荷泵方案Flash存储芯片的编程电压VPP是个很有意思的供电需求。几大类NOR Flash在烧录时VPP引脚需要12V左右高压但编程时的电流很小一般是几毫安到十几毫安编程结束后就降到0。这种“高电压、小电流、间歇性工作”的负载特性简直是电荷泵的理想负载。很多烧录器、在线编程器内部的VPP产生电路用的就是电荷泵方案从3.3V或5V升压到12V再通过一个LDO或钳位电路把电压稳定在目标值。我最近那个项目就是这样做的。5V输入经过两级NMOS电荷泵升到约14V后面串一个精密并联稳压器TL431加三极管组成的线性稳压电路稳定输出12V。之所以在电荷泵后面又加一级线性稳压是因为倍压电路的空载输出电压会略高于带载电压直接用会超Flash的VPP绝对最大值加了稳压后电压精度能控制在±2%之内烧录更可靠。5.3 MCU系统里的时序配合与负载匹配把倍压电路放进MCU系统里最需要处理的是“源”和“载”的配合。以51单片机为例单片机GPIO直接驱动NMOS倍压电路时要考虑两个问题第一GPIO驱动能力够不够。51单片机传统准双向口的高电平驱动能力很弱只有几十微安。如果让GPIO直接去驱动NMOS栅极栅极电容充放电太慢开关波形边沿变缓效率骤降。正确做法是用一个三极管缓冲级或者反相器比如74HC04先把PWM波形整形再去驱动NMOS。第二PWM频率和占空比设置。电荷泵的两路驱动信号必须保证互补最好加一点死区时间。单片机输出PWM时我习惯用硬件互补输出如STM32的高级定时器带死区插入或者用74HC04反相加RC延时确保Q1和Q2不会同时导通。否则瞬间的直通电流可能会烧MOS管。这里顺便提一句“51单片机硬件设计”里常见的误区不少初学者喜欢把倍压电路的输出直接接到MCU的ADC采样通道用来检测高压。这个做法很危险倍压电路输出阻抗高外部测量动作可能会改变输出电压而且超过ADC量程会损坏引脚。一定要用电阻分压加跟随器再进ADC。6. 调试与踩坑记录输出电压不对时我按这条链路查6.1 常见故障现象与根因对照调试倍压电路和调试其他电源一样最忌瞎猜。我习惯先看波形再量电压然后对照故障现象找根因。下面这个表是我自己总结的实战时排查效率非常高故障现象可能根因排查方法输出电压远低于预期驱动时序不对两管同时导通示波器同时抓两路栅极波形检查互补性空载电压正常带载后电压暴跌泵电容容量不足或ESR偏高换成更大容量X7R电容实测不同容量下的带载能力输出电压纹波大有周期性毛刺输出电容偏压降容或ESR过大换用高耐压MLCC并联电容降ESR输出端有交流纹波但直流电压为零输出二极管反接查D2、D3是否装反用万用表二极管档确认方向运行一段时间后MOS管发热严重开关频率过高或者两管有交叠导通降低频率检查死区时间测开关节点波形输入电流异常大电源掉电泵电容短路或二极管击穿断电后万用表测电容和二极管替换验证6.2 示波器测量倍压电路的正确姿势测量倍压电路示波器探头的使用细节直接决定你看到的是真实信号还是假象。我的经验有下面几点第一关闭探头10×衰减的带宽限制。很多默认设置下示波器会开启20MHz带宽限制对于几百kHz的开关信号影响不大但如果你想观测开关节点的尖峰和振铃带宽限制会把关键细节滤掉导致你误判电路正常。第二用短地线弹簧探头。倍压电路开关节点的di/dt很大普通长地线探头会形成一个大环路天线捡到一堆高频噪声。淘宝上买那种探头地线弹簧把地线缩短到探头尖端测出来的波形干净很多。第三万用表测平均电压有陷阱。倍压电路输出是带纹波的直流万用表显示的是平均值或真有效值取决于表型。当纹波很大时平均值和实际峰值之间差距很大。我习惯用示波器的测量功能直接读平均值和峰峰值再和万用表互相印证。第四测输出电压时要在输出端并一个假负载。倍压电路空载时输出电容没有放电回路电压会充到接近理论最高值这时候测出来的电压没有工程参考意义。我通常会接一个1kΩ的电阻做假负载模拟实际工作状态。6.3 两个被忽略的小问题启动冲击与空载过压最后说两个我后来才真正重视的问题。第一个是启动冲击电流。倍压电路上电瞬间所有泵电容都是零电压电源会对它们视为短路冲击电流可能是稳态电流的几十倍。如果输入电源能力弱可能直接触发过流保护。解决办法是在输入回路串联一颗几欧姆的NTC热敏电阻或普通电阻配合输出电容的软启动等电容充到接近稳态后再短接。第二个是空载过压。当负载意外断开或电流骤降时倍压电路输出电压会上升可能超过后端元件的绝对最大额定值。在Flash VPP这类场景下过压会直接损伤芯片。所以我在所有倍压输出端都会加一个TVS管或稳压二极管做钳位宁可让多余能量在钳位上发掉也不让电压冲到危险区。按这套链路排查绝大多数倍压电路问题都能定位到具体元件或时序设置上。调试倍压电路的耐心成本其实比调试Boost电路低很多因为涉及的变量少波形也直观。只要你理解了“电容并联充电、串联放电”这个核心逻辑再难的电荷泵拓扑在你眼里都是同一件事的排列组合。当初那个51项目的倍压电路从画原理图到调出稳定15V我只用了一个晚上。现在它已经稳定跑在板子上帮LCD和Flash老老实实供着电。真心建议各位硬件同行在设计电源方案时不要只盯着电感DC-DC多用倍压电路装点自己的“武器库”。这种老技术在正确的位置上依旧是解决问题的最短路径。