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。想要-24V,D ≈ 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.5A,D=0.5,取ΔIL为0.2A:
L = (12 × 0.5) / (0.2 × 150000) = 200μH
实际选220μH的标准值。但光算电感值不够,还要看饱和电流。峰值电流Ipk = Iout/(1-D) + ΔIL/2。代入Iout=0.5A,D=0.5,ΔIL=0.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输出、D=0.5、150kHz、Cout=220μ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)
取R2=1kΩ,要-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.9V | 0.5 | 30mV | - |
| 单开关0.5A | 12V | -11.8V | 0.5 | 55mV | 78% |
| 四开关0.5A | 12V | -12.0V | 0.5 | 25mV | 88% |
| 四开关1A | 12V | -11.9V | 0.5 | 40mV | 86% |
波形上,单开关的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,进一步减小电感体积。这些等跑通了再分享。