
1. 从一个“负压从哪来”的坑说起搞硬件的人迟早会撞上一个问题板子上只有正电源但某个芯片偏偏要一个负压。运放要双电源、某些传感器偏置要负压、OLED对比度调节要负压、音频功放的偏置也要负压。第一次遇到这个需求的时候我脑子里第一反应是“再加一路隔离电源模块”但隔离模块体积大、成本高、纹波还未必好看。后来被老工程师点了一句你手里那堆DC-DC芯片随便搭个BUCK-BOOST就能出负压为什么非要舍近求远这句话把我带进了BUCK-BOOST电压反转的世界。所谓电压反转就是输入正电压输出一个幅度可调的负电压比如输入12V输出-12V、-5V甚至-15V。实现这个功能的核心拓扑就是BUCK-BOOST而工程上最常被拿来练手的芯片之一就是LM2597这类经典降压芯片的“反向用法”。这篇文章我就把从选型、搭电路、算参数到抓波形、排查问题的完整过程摊开讲一遍重点放在四开关BUCK-BOOST和传统单开关BUCK-BOOST的区别、MOS管波形到底该长什么样、以及那些文档里不会写的坑。适合已经会画基本电源电路、想搞明白负压到底怎么来的朋友也适合正在用STM32做数字电源控制、需要理解BUCK-BOOST工作过程的同学。先把结论摆前面电压反转不是玄学它的本质是把电感储能释放到输出电容上只不过输出的参考点被你“挪”到了负端。理解这一点后面所有波形和参数都好解释了。2. 电压反转到底怎么实现的拓扑选型与思路拆解2.1 为什么BUCK-BOOST能出负压先把这个“为什么”讲透不然后面看波形全是懵的。普通的BUCK电路电感一端接开关节点另一端接输出输出电容的正极就是输出电压。而BUCK-BOOST的接法是把电感的另一端直接接地输出电容的正极接地负极作为输出。这样一来输出端相对于地就是负的。你可以这么理解电感在开关导通时从输入吸收能量开关断开时电感电流不能突变它会找一个回路把能量放出去。在BUCK-BOOST里这个释放回路正好经过输出电容而电容的接法决定了能量被“灌”到负端。所以输出电压的绝对值可以比输入高也可以比输入低取决于占空比。这里有个关键公式做负压设计必须记住Vout -Vin × D / (1 - D)其中D是开关导通占空比。举个例子输入12V想要-12V代入算一下12 12 × D/(1-D)解得D 0.5。想要-5V则5 12 × D/(1-D)D ≈ 0.294。想要-24VD ≈ 0.667。注意D永远小于1所以理论上输出幅度可以无限大但实际受限于开关管耐压、电感饱和电流和效率一般不会做太夸张。这个公式也告诉你一件事BUCK-BOOST的输出电压和输入电压是“反相”的输入越高输出绝对值越大但占空比要跟着调。如果你用固定占空比开环跑输入一变输出就跟着变所以实际产品里必须加反馈。2.2 单开关BUCK-BOOST和四开关BUCK-BOOST差在哪这是很多人容易混淆的地方。传统BUCK-BOOST只有一个开关管和一个二极管结构简单、成本低但有两个硬伤一是输出极性固定为负二是效率一般尤其是二极管续流那一段损耗大。而四开关BUCK-BOOST也叫H桥BUCK-BOOST或非反相BUCK-BOOST用了四个MOS管组成桥臂通过不同的开关组合既能升压也能降压而且输出可以是正也可以是负效率还高。对比项单开关BUCK-BOOST四开关BUCK-BOOST开关数量1个MOS 1个二极管4个MOS输出极性只能负压可正可负效率中等二极管损耗大高同步整流控制复杂度低高需要死区管理典型应用小功率负压、偏置电池升降压、数字电源成本低较高如果你只是要一个几十毫安到几百毫安的负压单开关BUCK-BOOST足够了LM2597这类芯片改一下接法就能用。但如果你要做几百瓦、要求高效率、还要STM32参与闭环控制那四开关BUCK-BOOST才是正路。我这次两个都搭了先用单开关把负压跑通再用四开关验证波形和效率下面会分别讲。2.3 芯片选型为什么拿LM2597开刀LM2597是一颗经典的降压开关稳压器内部集成了开关管外围只需要电感、二极管、电容和反馈电阻。它本身是BUCK芯片但通过“浮地”接法可以改成BUCK-BOOST出负压。选它的理由很实际手头有、资料多、便宜、能跑1A左右足够验证原理。不过要提醒一句LM2597的反馈基准是1.23V做负压时反馈电阻的接法要反过来这点后面实操会详细说。如果你要用四开关方案那就不能靠这种集成芯片了得用分立MOS加驱动或者用专门的BUCK-BOOST控制器。我四开关部分用的是STM32产生PWM配合半桥驱动芯片IR2104来推MOS这样能灵活控制死区和占空比。3. 核心细节解析电感、电容、MOS管怎么选3.1 电感值怎么算饱和电流怎么留余量电感是BUCK-BOOST的心脏选错了要么效率低要么直接饱和炸管。计算电感值用这个公式L (Vin × D) / (ΔIL × fsw)其中ΔIL是电感纹波电流一般取输出电流的20%到40%fsw是开关频率。以LM2597为例它固定150kHz。假设输入12V输出-12V负载电流0.5AD0.5取ΔIL为0.2AL (12 × 0.5) / (0.2 × 150000) 200μH实际选220μH的标准值。但光算电感值不够还要看饱和电流。峰值电流Ipk Iout/(1-D) ΔIL/2。代入Iout0.5AD0.5ΔIL0.2A得Ipk 1 0.1 1.1A。所以电感的饱和电流至少要1.5A以上留30%余量。我手头用的是1.5A的屏蔽电感实测温升可以接受。注意BUCK-BOOST的电感平均电流比输出电流大因为电流是断续地往输出灌。很多人按输出电流选电感结果一上电就饱和波形直接变成三角波尖峰。3.2 输出电容的ESR比容量更重要负压输出的纹波主要由输出电容的ESR决定而不是容量。因为BUCK-BOOST的输出电流是脉冲式的电容要吸收这些脉冲。纹波电压近似为ΔVout ≈ Iout × D / (fsw × Cout) Ipk × ESR第一项是容量贡献第二项是ESR贡献。以0.5A输出、D0.5、150kHz、Cout220μF为例第一项约7.5mV。但如果ESR是0.1Ω第二项就是1.1A × 0.1 110mV直接主导。所以选电容要挑低ESR的固态电容或者多个陶瓷电容并联。我实际用了两个100μF的固态电容并联ESR降到20mΩ左右纹波控制在50mV以内。3.3 MOS管波形到底该长什么样这是标题里点名的重点。先说你该在示波器上看什么开关节点电压Vsw、电感电流IL、输出纹波Vout。单开关BUCK-BOOST的Vsw波形是一个从Vin|Vout|到0的方波占空比D。导通时Vsw接近0开关管压降关断时Vsw被二极管钳位到Vin|Vout|。如果你看到Vsw上有振铃那是寄生电感和电容在作怪加RC吸收或者减小环路面积。四开关BUCK-BOOST的波形复杂一些因为有两个桥臂。以降压模式为例左侧桥臂的上下管互补导通右侧桥臂的下管常通、上管常断。你会看到两个开关节点波形相位差180度。关键是死区时间如果死区不够上下管直通瞬间大电流烧管。我用STM32的互补PWM加死区死区设了500ns实测MOS管温升正常。实操心得抓MOS管波形一定要用差分探头或者隔离探头否则地线夹错位置会短路。我第一次测的时候地线夹在开关节点上一上电示波器就跳闸了后来老老实实换差分探头。4. 实操过程从搭电路到抓波形4.1 单开关BUCK-BOOST负压电路搭建先讲LM2597的负压接法。正常BUCK时反馈电阻从输出接到FB脚再接到地。做负压时要把反馈电阻的“地”挪到负输出上具体是FB脚通过一个电阻接到负输出另一个电阻接到正输入也就是系统地。这样反馈电压就是负输出和正输入之间的分压。具体参数LM2597基准1.23V想要-12V输出反馈电阻R1接在FB和负输出之间R2接在FB和地之间。公式是Vout -1.23 × (R1/R2 1)取R21kΩ要-12V则R1 (12/1.23 - 1) × 1k ≈ 8.76kΩ选8.66kΩ标准值。实测输出-11.9V可以接受。电感用220μH/1.5A二极管用SS34肖特基输出电容两个100μF固态并联。输入电容100μF电解加0.1μF陶瓷。上电前先用万用表确认没有短路然后空载上电测输出应该是负的。如果输出是正的说明反馈接反了。4.2 四开关BUCK-BOOST的STM32控制实现四开关部分我用STM32F103产生四路PWM通过IR2104驱动两个半桥。IR2104自带死区但为了保险我在软件里又加了500ns死区。控制策略是降压模式下左桥臂PWM右桥臂下管常通升压模式下右桥臂PWM左桥臂上管常通。模式切换靠比较输入输出电压自动判断。PWM频率设100kHz定时器用中央对齐模式这样能产生对称的互补波形。占空比通过PID调节反馈用电阻分压后接STM32的ADC。这里有个坑STM32的ADC参考地是系统地但负压输出的分压要小心不能直接把负压接进ADC否则会烧引脚。我的做法是用一个运放做电平搬移把负压转换成正电压再给ADC。代码上关键就是定时器配置和死区设置我用的是TIM1的CH1/CH1N和CH2/CH2N死区寄存器BDTR设了对应值。实测四开关效率在12V转-12V、1A负载下能到88%比单开关的78%高不少。4.3 波形抓取与参数记录抓波形的时候我记录了以下几组数据测试条件输入输出占空比纹波效率单开关空载12V-11.9V0.530mV-单开关0.5A12V-11.8V0.555mV78%四开关0.5A12V-12.0V0.525mV88%四开关1A12V-11.9V0.540mV86%波形上单开关的Vsw有明显的二极管反向恢复尖峰加RC吸收后改善。四开关的Vsw干净很多因为同步整流没有二极管反向恢复问题。电感电流波形在CCM模式下是三角波峰值和计算值吻合。注意测效率一定要用四线法测电压否则线损会算进去效率偏低。我一开始用普通表笔效率怎么算都只有70%换了四线法才发现是线损。5. 常见问题与排查技巧实录5.1 上电没输出或者输出正压这是最常见的。先查反馈电阻接法负压输出的反馈网络和正压是反的。如果输出是正压说明反馈电阻的地接错了。再查二极管方向BUCK-BOOST的二极管方向和平常BUCK不一样画图时容易搞反。最后查电感是否开路用万用表量一下通断。5.2 输出纹波大、有啸叫纹波大先看输出电容ESR换低ESR电容。啸叫一般是环路不稳定LM2597的补偿电容要调或者负载太轻进入DCM模式。四开关的话检查死区是否合适死区太大效率低太小有直通风险。我遇到过啸叫是因为电感值偏小换大一号就好了。5.3 MOS管发热严重甚至炸管先查死区用示波器看上下管驱动波形有没有重叠。再查MOS管耐压BUCK-BOOST的开关管承受电压是Vin|Vout|选管要留1.5倍余量。最后查驱动电阻太大开关慢损耗大太小振铃严重。我一般用10Ω到22Ω之间。5.4 常见问题速查表现象可能原因排查方法无输出反馈接反、二极管反、电感开路万用表测通断、核对原理图输出正压反馈地接错检查反馈电阻接地位置纹波大输出电容ESR高换固态电容、并联陶瓷啸叫环路不稳、轻载DCM调补偿、加假负载MOS发热死区不足、驱动电阻大示波器看驱动、调死区效率低二极管损耗、线损换同步整流、四线法测独家避坑调试负压电路时示波器一定要用隔离探头或者差分探头普通探头地线夹在负输出上会短路。我第一次调试就因为这个烧了一个探头血的教训。6. 一些实测体会和后续可以玩的方向单开关BUCK-BOOST适合快速验证负压需求成本低、电路简单但效率和纹波一般。四开关BUCK-BOOST性能好但控制复杂适合用STM32这类MCU做数字控制。我实测下来四开关在1A负载下效率能到88%纹波25mV已经能满足大部分模拟电路的需求。如果你也想动手建议先从单开关跑通理解负压怎么来的再上四开关。四开关的难点在死区和模式切换STM32的互补PWM加死区功能很好用但要注意ADC采样时刻最好在PWM中点采样避开开关噪声。后续我打算把四开关做成闭环数字电源用STM32跑PID把输入电压范围扩到6V到36V输出-12V固定看看能不能做到90%以上效率。另外还想试试用GaN管替换MOS把频率提到500kHz进一步减小电感体积。这些等跑通了再分享。