最近在调一块12V转3.3V的板子,同事拿着原理图过来问:占空比到底怎么算才算准?我说这个问题看着基础,真细究起来坑不少。你按理想的式子算出来是0.275,实际一测往往是0.29甚至0.31,误差从哪来的?还有BOOST那边,锂电3.7V升5V,理论占空比0.26,结果样机一上负载掉到4.7V,占空比自己涨到0.37都不稳。这些问题绕不开同一件事:占空比不是套个公式那么简单,它背后是伏秒平衡、寄生参数、工作模式、甚至环路稳定性一堆事。
我正好前阵子把这套计算方法整理成了一个Excel工具,从BUCK到BOOST,从理想占空比到带损耗修正的工程占空比,再到电感纹波、输出纹波、临界电感值,全部联动计算。今天就把这套思路从头到尾捋一遍,适合正在做电源方案选型、刚接触开关电源设计、或者被“实测和理论对不上”折磨过的工程师参考。看完你不仅知道公式怎么来的,还能直接照着我这个工具的思路搭一个自己的计算表。
1. 为什么占空比是电源设计的“定海神针”
1.1 占空比到底在算什么
占空比的定义很简单:开关管导通时间Ton占整个开关周期T的比例,D = Ton / T。但在电源设计里,这个看似简单的比例决定了三件大事。
第一,电压转换关系。BUCK和BOOST的输出电压表达式里,占空比是唯一的控制变量。控制环路通过调节占空比来稳定输出电压,占空比算错了,后面所有参数都是空中楼阁。第二,电流纹波。电感电流纹波直接和伏秒积相关,而伏秒积就是占空比和电感两端电压的乘积。纹波电流决定了电感选型、输出电容的纹波电流额定值。第三,器件应力。占空比越大,开关管导通时间越长,但续流管承受的反压时间越短;占空比太小,最小导通时间可能触发控制芯片的保护。占空比不是孤立存在的,它是一个牵一发动全身的中间变量。
所以开关电源设计的第一步,永远是先把占空比算清楚。算清楚的标准不是“能套公式”,而是明白每个参数怎么进入公式、在什么边界条件下失效、以及实测值和理论值偏差的来源。
1.2 BUCK和BOOST的核心差异
BUCK降压电路和BOOST升压电路虽然都有电感、开关管和续流器件,但能量传输的路径完全不同,这导致占空比的表达式一个正比、一个反比,背后的物理含义也相反。
BUCK中,开关管导通时输入直接通过电感给输出供电并储能,开关管关断时电感通过续流二极管或同步管继续给输出供电。输出的平均电压等于输入电压乘以占空比,所以D = Vout / Vin,占空比不可能超过1,输出永远小于输入。
BOOST就不同了。开关管导通时输入全部加在电感上储能,负载电流完全靠输出电容撑着;开关管关断时电感的感应电动势和输入电压串联叠加,通过二极管向输出供电。输出电压等于输入电压除以(1-D),即D = 1 - Vin / Vout。这个“除”带来了一个先天问题:占空比越接近1,输出电压对占空比的变化越敏感,感应的电压尖峰也越难处理。
很多新手把这两个公式记混,根源是没搞懂能量流动的时间段。记住两条:BUCK在导通时“边传边储”,BOOST在导通时“只储不传”,这就不会弄反了。
2. BUCK电路占空比计算全解析
2.1 CCM模式下的占空比推导
连续导通模式(CCM)意味着电感电流在整个周期内都不为零,这是绝大多数重载工况下的工作状态,也是占空比计算最常用的场景。
推导的核心是电感的伏秒平衡:稳态下电感两端电压在一个周期内的平均值为零。拿非同步BUCK举例,开关管导通期间,电感左端被拉到Vin(忽略开关管压降Vsw),右端是Vout,电感两端电压是Vin - Vout;续流期间,电感左端被二极管钳位到-Vd(对地压降为 -Vd),右端是Vout,电感两端电压是-(Vout + Vd)。于是有:
[ (Vin - Vout - Vsw) \times D = (Vout + Vd) \times (1 - D) ]
解出来就是工程上最常用的BUCK占空比修正公式:
[ D = \frac{Vout + Vd}{Vin - Vsw + Vd} ]
其中Vsw是开关管导通压降,Vd是续流二极管正向压降。如果忽略这两个小量,就退化成教科书上的D = Vout / Vin。
举个例子:输入12V,输出3.3V,用一颗低压差肖特基二极管续流(Vd约0.5V)和一个MOS管(满载时Vsw约0.2V)。理想占空比是3.3/12 = 0.275,修正后是(3.3+0.5)/(12-0.2+0.5) = 3.8/12.3 ≈ 0.309。差了12%以上。这在低压大电流场景非常常见,因为Vd占比高。如果你设计的是一款5V/3A的非同步BUCK,输出二极管压降0.5V,那么占空比必须覆盖这个二极管导通期间的损耗,否则输出电压根本拉不到设定值。实测中出现输出电压偏低、或者带载后跌落,很多就是占空比修正没做够。
2.2 同步BUCK和非同步BUCK的占空比差异
同步BUCK把续流二极管换成了MOSFET,称为低边管或同步管。由于MOSFET导通时是电阻特性,压降约等于I_L × Rds(on),远小于二极管的正向压降,所以占空比计算需要换成对应的导通压降。
同步BUCK的占空比修正公式为:
[ D = \frac{Vout + V_ls}{Vin - V_hs + V_ls} ]
其中V_ls是同步管导通压降,V_hs是高边管导通压降。拿前面的例子,12V输入、3.3V输出、负载3A,如果高边管Rds(on)=30mΩ、低边管Rds(on)=20mΩ,那么V_hs=0.09V,V_ls=0.06V,修正后的D = (3.3+0.06)/(12-0.09+0.06) = 3.36/11.97 ≈ 0.2807,和理想值0.275只差2%。这就是同步整流的核心优势:占空比更接近理想值,效率也高得多。
但同步BUCK有一个非同步没有的坑:死区时间。在高边管和低边管切换的间隙,两个管子都不导通,电感电流必须走低边管的体二极管。体二极管压降约0.7V,虽然死区只有几十纳秒,在计算平均占空比时影响不大,但在轻载时死区期间的损耗占比会明显上升。所以同步BUCK在轻载时很多控制芯片会自动进入二极管仿真模式或者变频模式,占空比行为完全不同,后面第四章再细说。
2.3 最小/最大占空比带来的设计边界
占空比算出来只是一个工作点,真正的设计还要检查边界条件。每颗控制芯片都有最小可控导通时间和最大占空比限制,这两条边界直接决定了输入电压范围的可行性。
最小占空比出现在最高输入电压时。比如一颗BUCK控制器的Vout=5V,输入范围6V到20V,那么最高输入时D = 5/20 = 0.25。如果芯片的最小导通时间是100ns,开关频率是500kHz,周期2us,那么它能实现的最小占空比是100ns/2us = 0.05。0.25远大于0.05,没问题。但如果你把频率拉到2MHz,周期500ns,最小占空比变成100ns/500ns = 0.2,这时D=0.25就很危险了。实际中芯片为了在轻载下维持稳压,会采取跳过脉冲的方式,这就是PFM模式。
最大占空比出现在最低输入电压时。很多非同步BUCK芯片的最大占空比限制在85%到90%之间,原因是自举电容需要时间充电、或者驱动电路需要死区时间。如果最低输入6V、输出5V,D = 5/6 = 0.833,正好卡在85%的边界附近。这种情况下只要输出电流稍大、线路压降稍微多一点点,占空比就会触及上限,输出电压开始跌落,电感电流会进入一种“斜面越来越平”的不稳定状态。设计时一定要在Excel工具里把全输入范围的占空比扫出来,看看离芯片边界留了多少裕量。
3. BOOST电路占空比计算全解析
3.1 CCM升压占空比推导
BOOST电路的伏秒平衡推导同样从开关管导通和关断两个区间入手。导通时,开关管把电感左端接地(忽略Vsw),输入电压Vin全部加在电感上,电感电流线性上升,存储能量。关断时,电感电流不能突变,电感左端电势被抬升到Vout + Vd(加二极管压降),此时电感两端电压为Vout + Vd - Vin,电流线性下降。
伏秒平衡:
[ (Vin - Vsw) \times D = (Vout + Vd - Vin + Vsw) \times (1 - D) ]
忽略管压降,就得到理想BOOST公式:
[ D = 1 - \frac{Vin}{Vout} ]
用理想的情况看:锂电池3.7V升5V,D = 1 - 3.7/5 = 0.26。看起来不大,但注意一个关键差异:BOOST的输入电流是断续的(开关管导通时输入不向输出供电),所以要想输出5W,电感峰值电流要远高于基础输入电流的平均值。这在后面的Excel实例里会体现得更具体。
3.2 寄生参数对占空比的实际修正
BOOST的占空比受寄生参数的影响比BUCK大得多,尤其是二极管压降和整体效率。因为所有输出功率都要经过二极管或同步管,导通期间的能量损耗直接在输出电压上“扣”。
考虑二极管压降Vd和开关管压降Vsw后的BOOST占空比公式:
[ D = \frac{Vout + Vd - Vin + Vsw}{Vout + Vd - Vsw} ]
还是那个3.7V升5V的例子,用普通肖特基二极管(Vd约0.4V),开关管压降0.1V,那么D = (5 + 0.4 - 3.7 + 0.1)/(5 + 0.4 - 0.1) = 1.8/5.3 ≈ 0.34,比理想值0.26大了30%以上。
还有一个更接近工程实测的修正方式:直接用效率折损。假设转换效率为η,那么等效输出电压关系可以写成:
[ Vout = Vin \times \eta \times \frac{1}{1-D} ]
反解得:
[ D = 1 - \frac{Vin \times \eta}{Vout} ]
如果效率85%,那D = 1 - 3.7×0.85/5 = 1 - 3.145/5 = 0.371。这和实测的占空比非常接近。很多工程师发现BOOST的占空比“偏大”以为是仪表误差,其实是因为损耗让占空比必须前移才能弥补电压差。用效率修正的方法在做方案预判时非常实用。
3.3 极端工况下的占空比行为
BOOST有三个典型极端工况必须提前算。
第一,轻负载下的DCM模式。输出电流小到一定程度,电感电流在周期内就降到零了,此时电感电流断续,占空比不再是简单的1 - Vin/Vout。DCM的占空比取决于负载电流和电感量,通常比CCM占空比更小且随负载变化。这时候输出电压纹波会变大,控制环路的特性也发生变化,表现为轻载时输出有低频纹波或者脉冲群。
第二,输入电压接近输出电压的低压差工况。比如输入4.8V,输出5V,理想D = 1 - 4.8/5 = 0.04。这个占空比非常小,开关管每次只导通80ns(按2MHz算),最小导通时间可能都不够。同时BOOST在这种工况下,续流管导通时间接近整个周期,输出电压几乎等于输入电压减去二极管压降,实际上已经退化成“输入经过二极管直接输出”的路径,输出比输入低0.3V都不奇怪。
第三,BOOST特有的右半平面零点(RHPZ)问题。在CCM模式下,占空比突然增大时,先是电感储能时间变长、传输到输出的能量变少,输出反而先跌一下,然后才回升。这个“先跌后涨”的动态特性就是RHPZ在作怪,它要求环路带宽只能压在低处(通常是开关频率的1/10甚至1/20以下),否则负载突变时输出会振荡甚至失稳。设计占空比计算工具时,把RHPZ的估算频率也算出来,可以提前判断环路补偿的调整方向。
4. Excel计算工具实战:从公式到表格
4.1 工具整体结构与使用说明
这套Excel工具的核心思路,是把BUCK和BOOST的占空比、电感纹波、输出纹波、临界电感和器件应力全部做成联动表格,改一个输入参数,所有输出自动刷新。我把它拆成了三个工作表:BUCK计算页、BOOST计算页、以及一个参数汇总页。
每个计算页的结构分为两部分:黄色底纹的单元格是手动输入区,白色底纹的是自动计算区。手动输入区放的是设计规格和器件参数,包括输入电压上下限、输出电压、负载电流、开关频率、二极管压降、开关管压降、电感感值、输出电容容值等。自动计算区则根据这些输入完成三个层次的输出。
第一层是最基础的占空比结果:理想占空比、带损耗修正的工程占空比、以及对应的最小和最大占空比。第二层是电流相关参数:电感平均电流、纹波电流、峰值电流。第三层是电压应力:开关管漏源极最高耐压、二极管反压、输出纹波电压。这些参数直接决定了后面选型的方向,比如电感饱和电流按峰值电流留裕量,开关管耐压按输出电压加尖峰留裕量。
4.2 一个BUCK设计实例的完整计算
我们用汽车电瓶供电转5V的数字电路供电来演示。规格是这样的:Vin范围8V到16V,Vout=5V,Iout=2A,开关频率500kHz,非同步BUCK,续流用肖特基二极管Vd=0.4V,开关管导通压降Vsw=0.2V。
先算占空比边界。Vin=8V时,D_max = (5+0.4)/(8-0.2+0.4) = 5.4/8.2 ≈ 0.659。Vin=16V时,D_min = (5+0.4)/(16-0.2+0.4) = 5.4/16.2 ≈ 0.333。注意低输入电压下占空比超过65%,如果芯片最大占空比限制是80%,那这个边界还算安全,但8V输入已经是电瓶电压下限,接近欠压保护点,这里要额外确认启动时的电压跌落。
然后是电感纹波。BUCK的电感电流纹波公式:
[ \Delta I_L = \frac{(Vin - Vout) \times Ton}{L} ]
其中Ton = D / fsw。纹波最大的点出现在Vin最大时,因为此时导通时间短但电感两端电压差大,需要分别计算。Vin=16V时,Ton = 0.333/500kHz = 666ns,如果选L=22uH,ΔI_L = (16-5)×666ns/22uH ≈ 0.333A。这个纹波大约是负载电流的16.6%,很合理。如果电感选到10uH,纹波会翻倍到0.66A,输出电容的纹波电流压力就会变大。
输出纹波用陶瓷电容估算法:ΔVout ≈ ΔI_L / (8 × fsw × Cout)。选Cout=22uF陶瓷电容,ΔVout ≈ 0.333/(8×500k×22u) ≈ 3.8mV。但要注意陶瓷电容在直流偏压下的有效电容量会大幅下降,25V耐压的1206封装在5V偏压下可能只剩60%容量,实际纹波会比计算值高一些。
最后检查临界电感,保证最低负载20%即0.4A时还处于CCM模式。临界电感公式:
[ L_{crit} = \frac{(1 - D) \times R_{out}}{2 \times fsw} ]
在Vin=16V时D=0.333,R_out=5V/0.4A=12.5Ω,L_crit = (1-0.333)×12.5/(2×500k) ≈ 8.34uH。22uH远超临界值,CCM没问题。
4.3 一个BOOST设计实例的完整计算
再演示一个BOOST:锂电池3.0V到4.2V升压到5V,负载电流最大1A,开关频率1MHz,同步BOOST(低边管和高边管都带同步整流)先按理想同步管算,再按非同步带肖特基对比。
同步BOOST,忽略所有压降,占空比边界:Vin=3.0V时D_max = 1-3/5 = 0.4,Vin=4.2V时D_min = 1-4.2/5 = 0.16。如果改为非同步,采用Vd=0.4V的肖特基,那么D_max = (5+0.4-3.0)/(5+0.4) = 2.4/5.4 ≈ 0.444,D_min = (5+0.4-4.2)/5.4 = 1.2/5.4 ≈ 0.222。可以看到非同步的占空比整体偏大,而且低压输入时损耗更明显。
关键的是电感电流。BOOST的电感平均电流等于输入平均电流,等于输出功率除以输入电压再除以效率。取Vin=3.0V满载1A输出,忽略效率时平均输入电流I_in = 5×1/3 = 1.67A。如果选L=4.7uH,导通时电感纹波ΔI_L = Vin×D/(L×fsw) = 3×0.4/(4.7u×1M) ≈ 0.255A。电感峰值电流 = 1.67 + 0.255/2 ≈ 1.8A。这颗电感的饱和电流至少按2.5A到3A选,留足裕量。
BOOST的输出电容也要单独算。由于BOOST的二极管(或高边同步管)只在关断时间内向输出传输电流,所以输出电容需要提供大部分负载电流。输出纹波估算:
[ \Delta Vout \approx \frac{Iout \times D}{fsw \times Cout} ]
取Cout=47uF陶瓷电容,ΔVout = 1×0.4/(1M×47u) ≈ 8.5mV。这个纹波能满足大多数负载要求。如果想降到5mV以内,要么增大电容,要么提高频率。
4.4 用工具做全输入范围扫描
Excel工具最有价值的地方是可以快速做“如果改了输入电压范围,占空比和纹波怎么变”的扫描。我习惯在计算页旁边放一个小的输入电压扫描表,每50mV或者100mV一个点,列出占空比、纹波电流、峰值电流三个关键输出,然后观察趋势。
以BUCK的12V转3.3V为例,把输入从10V扫到16V,你会发现占空比从0.33往下滑到0.206,但电感纹波电流却从0.15A涨到0.22A,峰值电流的“最恶劣点”不在最低输入也不在最高输入,而是需要看中间某个位置。因为电感纹波增加的方向和平均电流变化的方向不同,峰值电流的最大点可能出现在输入电压中段。手算很容易漏掉这个,用Excel一拉就出来了。
对BOOST也一样,把锂电从3.0V扫到4.2V,占空比从0.44降到0.22,但电感峰值电流的最恶劣点在最低输入电压,因为此时平均输入电流最大、且占空比也最大。工具里把这些曲线随手一画,选型就能做到心中有数。
5. 常见问题与排查技巧实录
5.1 实测占空比与计算值不符怎么办
这是我被问得最多的问题,也是调试现场最容易卡壳的地方。实测占空比往往用示波器量SW节点波形,然后读取脉宽。结果和理论值对不上,通常有三个层次的原因。
第一层是忽略了压降修正。非同步BUCK如果用了二极管续流,低压大电流时实测占空比会比理想公式偏大5%到15%,这是正常的,用带Vd的修正公式就能对上。第二层是示波器的测量方式问题。SW节点的波形边沿如果不够陡峭,示波器触发电平不同,读出来的脉宽会有几十纳秒的误差,高频下这个误差很可观。第三层是控制环路在起作用。如果负载瞬态变化还没稳定,占空比正处于动态调节中,你抓到的只是过渡波形,不是稳态波形。应该等输出稳定后再测量,最好用平均模式抓多个周期的平均占空比。
如果修正公式也对、测量方式也对,但占空比仍然明显偏离,那就要怀疑是不是芯片已经进入限流模式或低频保护模式了。用电流探头看电感电流波形是否满足设计预期,如果电流波形出现削顶或者打嗝,说明占空比被环路或者保护逻辑重新定义了。
5.2 占空比失稳的几种典型场景
占空比不是光算出来静态值就没事了,动态稳定性更关键。我总结几个调试中遇到的典型失稳场景。
第一个是轻载跳频导致的“占空比抖动”。同步BUCK在轻载时如果不进入PFM,可能会出现电感电流反向(从输出往输入倒灌),控制芯片检测到后会跳过一些开关周期,这样示波器上看到的SW波形占空比忽大忽小。这不是故障,是芯片在自动切换模式。排查时看电感电流是否出现负向尖峰,就能确认。
第二个是斜坡补偿不足导致的次谐波振荡。峰值电流模式控制在占空比大于50%的时候,电感电流扰动会逐周期放大,表现为开关频率处占空比来回抖、输出电压纹波变大。解决办法是加大芯片的斜坡补偿量,或者降低电感值让电流下降斜率更陡。如果用的是自身没有外部斜坡补偿引脚的芯片,那只能调整电感选型来避开这个区域。
第三个是BOOST负载突变时的瞬时失控。BOOST的RHPZ决定了负载突然加重时,输出电压会先掉一下再回升,如果环路带宽太高,这个“先掉”会触发环路过度反馈,导致占空比震荡好几个周期。我碰到过一辆车载设备,升压后接GPRS模块,发射瞬间电流从0.1A跳到1.8A,输出直接掉了600mV,后来把环路带宽降到开关频率的1/15,同时在输出端加了22uF的MLCC,才彻底解决。
5.3 占空比相关的器件选型心得
占空比计算直接影响三个器件的选型,我给出几点实战心得。
电感选型重点看峰值电流和频率。峰值电流决定了电感饱和电流的下限,不能只看额定电流。很多电感标称电流是按升温漂移定义的,实际饱和电流可能只有标称的60%到70%。我习惯把计算出的峰值电流再乘以1.2作为电感饱和电流的最低要求。另外,电感值的选择会反作用到占空比行为,在BUCK中,电感太大导致瞬态响应慢,电感太小导致CCM边界被突破,需要结合最小负载电流校准。
开关管选型重点看电压应力。BUCK的高边管耐压要按输入电压最大值加开关尖峰来选,通常输入16V的电路选30V耐压MOS管,在电感寄生振荡比较严重的情况下40V更稳妥。BOOST的开关管耐压等于输出电压加二极管压降再加尖峰,5V输出的BOOST选20V就够,但如果输出纹波尖峰大,25V到30V更安全。这些都在Excel工具里自动算出来了,选型时直接对照着查。
输出电容选型要回头看纹波计算值。我见过不少工程师算完占空比就不管电容了,结果样机出来后纹波比预期大一倍。问题往往出在陶瓷电容的直流偏压特性,以及电容ESR被忽略。比如用10uF/25V的陶瓷电容在5V输出下实际只有6uF左右的容量,纹波计算必须用有效容量而不是标称容量。Excel工具里可以加一个“电容降额系数”的输入列,把这部分影响也摊进去算。
二极管和同步管选型也是同理,损耗会直接影响占空比修正量。如果你在样机调试中发现占空比比计算值大,第一个要检查的就是续流管的实际压降,用示波器测SW节点对地的负压值,那个值就是续流管导通压降,把它代入公式重新算,基本都能对上。
6. 两个实战习惯分享
最后分享两个我在反复调试中总结出来的习惯。
第一个是占空比的“最坏工况清单”一定要写全。很多设计只在标称输入电压下算了占空比,结果输入电压拉高或者拉低时就出问题。我现在的习惯是,任何BUCK和BOOST方案,都至少核对三个工况:最低输入电压满载、最高输入电压满载、最低输入电压空载。最低输入满载看的是最大占空比是否越界,最高输入满载看的是最小导通时间是否满足,最低输入空载看的是是否进入DCM或PFM以及输出电压是否被意外拉高。这三个位置只要不出问题,整个输入电压范围基本就稳了。
第二个是占空比要和电感纹波一起看,不要只看一个点。占空比对,不代表电感峰值电流合理。我调过一块升压板,占空比无论怎么算都在芯片允许范围内,但电感就是发热严重,最后测了电感电流波形发现峰值电流比预期高了30%,因为电感值偏小导致纹波超大,峰值电流已经接近饱和边界。从那之后我就把占空比、纹波电流和峰值电流放在同一张Excel表里联动看,改任何一个参数都盯着三个结果一起刷新。如果你也想搭一个这样的工具,建议把输入参数和自动计算结果分开放在不同颜色区域,参数变颜色变,一眼就能看出极限工况在哪。这套方法我用了很久,至少帮我少走了很多弯路。