共计 2440 个字符,预计需要花费 7 分钟才能阅读完成。
背景痛点
刚接触 Buck 电路设计时,最容易在纹波控制和热损耗估算上栽跟头。最常见的问题包括:
-
纹波过大 :新手往往只关注输出电压是否达标,却忽略了纹波指标。我曾见过一个案例,设计输出 5V/2A,实测纹波竟高达 300mV,导致后级 ADC 采样异常。问题出在输出电容选型时,只算了容值没考虑 ESR。
-
电感饱和 :有个朋友用 ” 经验值 ” 选了 4.7μH 电感,结果满载时电感啸叫。拆解发现磁芯已饱和——原来他没计算峰值电流,而该场景实际需要 10μH/3A 饱和电流的电感。
-
热失控 :MOSFET 温升估算错误最致命。有人按静态损耗选型,结果 PWM 频率上到 500kHz 时,开关损耗直接让管子烧毁。这其实是忽略了 $P_{sw}=0.5\cdot V_{in}\cdot I_{out}\cdot (t_r+t_f)\cdot f_{sw}$ 这个关键项。
理论框架
占空比公式的物理意义
Buck 电路最核心的公式是:
$$D=\frac{V_{out}+V_D}{V_{in}-V_{sw}+V_D}$$
- $V_D$:二极管正向压降
- $V_{sw}$:MOSFET 导通压降
这个公式实际反映了能量守恒。当开关管导通时,输入电压 $V_{in}$ 减去管压降 $V_{sw}$,给电感充电;关断时,电感通过二极管(压降 $V_D$)续流。输出电压就是这两种状态的平均值。
CCM 与 DCM 模式选择
- CCM(连续导通模式):适合大电流场景(通常 >500mA),电感电流始终大于零。优点是纹波小、效率高,但需要更大电感。
- DCM(断续导通模式):轻载时自动进入,电感电流会归零。优点是轻载效率高,但需要更复杂的补偿设计。
经验法则:当负载电流可能低于 20% 额定值时,建议按 DCM 设计控制环路。
参数计算
电感选型三步法
- 计算最小电感值:
$$L=\frac{(V_{in}-V_{out})\cdot D}{\Delta I\cdot f_{sw}}$$
其中 $\Delta I$ 通常取 20%-40% 的 $I_{out}$。这个取值不是随意的:
– <20% 会导致电感体积过大
– >40% 可能使电路进入 DCM
- 计算峰值电流:
$$I_{peak}=I_{out}+\frac{\Delta I}{2}$$
- 选型实例如下(Excel 公式可直接套用):
=ROUND((B2-B3)*B4/(0.3*B5*B6),1) \\ B2:Vin, B3:Vout, B4:D, B5:Iout, B6:fsw
电容选型要点
输出电容需同时满足:
- 容值要求:$C_{out}\geq\frac{\Delta I}{8\cdot f_{sw}\cdot V_{ripple}}$
- ESR 要求:$ESR\leq\frac{V_{ripple}}{\Delta I}$
举个实例:若要求纹波 <50mV,$\Delta I$=0.6A,fsw=500kHz,则:
- 最小容值 =0.6/(8500k0.05)=3μF
- 最大 ESR=0.05/0.6=83mΩ
PCB 设计避坑指南
高频环路最小化五原则
- 输入电容尽量靠近 MOSFET 的 D 极
- 续流二极管与 SW 引脚同层放置
- 地平面完整不间断
- 反馈走线远离电感 3mm 以上
- 使用 0402 封装的去耦电容(比 0603 寄生电感小)
实测对比:优化布局后,30MHz 处的 EMI 峰值从 45dBμV 降至 32dBμV。

图:布局优化前后的 EMI 扫描对比
补偿网络设计
输入电容 ESR 会引起次谐波振荡,典型现象是输出电压波形出现双脉冲。解决方案:
- 选择低 ESR 电容(如陶瓷电容)
- 添加 RC 补偿网络:
R_comp=ESR\cdot (1+D)\cdot \frac{C_{out}}{C_{comp}}\\
C_{comp}=\frac{1}{2\pi\cdot f_{cross}\cdot R_{comp}}
LTspice 仿真显示,加入 10Ω+100nF 补偿后,振荡现象完全消失。
自动化设计工具
Python 计算脚本示例(带 BOM 生成功能):
# Buck 设计计算器
import pandas as pd
def calculate_buck(v_in, v_out, i_out, f_sw, ripple_ratio=0.3):
"""
计算关键参数
:param ripple_ratio: 纹波电流与输出电流比值(默认 30%):return: 电感值 (uH), 峰值电流 (A), 最小电容 (uF)
"""
d = (v_out + 0.5) / (v_in - 0.2 + 0.5) # 假设 Vd=0.5V, Vsw=0.2V
delta_i = i_out * ripple_ratio
l = ((v_in - v_out) * d) / (delta_i * f_sw) * 1e6 # 转 uH
i_peak = i_out + delta_i / 2
c_min = delta_i / (8 * f_sw * 0.05) * 1e6 # 假设纹波 50mV
# 生成 BOM
bom = pd.DataFrame({"元件": ["电感", "输入电容", "输出电容", "MOSFET", "二极管"],
"参数": [f"{l:.1f}uH {i_peak:.1f}A", "10uF X7R", f"{max(3, c_min):.0f}uF 25V", "30V/10A", "3A/40V"]
})
return l, i_peak, c_min, bom
# 示例:输入 12V 转 5V/2A,500kHz
print(calculate_buck(12, 5, 2, 500e3))
测试验证要点
效率测试时要注意:
- 温度采样点选择:
- MOSFET 壳温(非环境温度)
- 电感绕组热点
-
二极管阴极
-
电子负载设置:
- CC 模式步进变化(如 0.5A→1A→1.5A→2A)
- 每个点稳定 10 秒再记录
典型效率曲线应有如下特征:
– 峰值效率出现在 50%-70% 负载
– 轻载时 DCM 模式效率骤降是正常的
开放思考题
- 当输入电压范围很宽(如 8V-36V)时,如何保证全范围稳定性?
- 同步 Buck 电路中,体二极管的反向恢复时间对效率有何影响?
- 在汽车电子场景下,如何应对抛负载测试(Load Dump)的瞬态高压?
希望这篇指南能帮你避开我当年踩过的坑。电源设计是个经验活,建议多动手实测,纸上计算永远只是第一步。
