做Buck电路设计的朋友,十有八九都经历过这个场景:芯片选好了,输入输出电压都清楚,负载电流也定了,结果卡在电感上——电感量取多少?饱和电流怎么留裕量?网上公式一堆,有的按最大输出电流1.2倍取峰值,有的让你先判断CCM还是DCM,还有的直接建议你"跑个仿真吧",看完更不知道从哪下手。
这篇文章就专注一件事:把BUCK电路电感电流的计算彻底讲透。从CCM和DCM两种工作模式下的公式推导开始,到手算全流程,再到用示波器实测验证理论值,最后聊几个公式之外但直接影响项目成败的选型坑。适合刚接触电源设计的工程师、做嵌入式硬件想搞懂Buck工作原理的开发者,以及准备做电源类毕业设计的学生。读完你能做的不只是套公式,而是拿到任何一组Vin/Vout/负载/频率参数,都能自己把电感电流算明白。
1. 为什么Buck电路的电感电流计算不能凭感觉
BUCK电路拓扑本身不复杂:开关管、整流管(或同步管)、电感、输出电容,四个主要元件。电感在其中的角色特别关键——它把开关节点的高频方波电压"剪辑"成相对平滑的电流,再送给输出电容和负载。
1.1 电感电流决定了一大堆后续设计参数
电感电流算出多少个值,直接决定了你后面怎么选型:
先看饱和电流。电感磁芯最怕的就是饱和,一旦饱和,电感量骤降,电流直接失控,轻则输出纹波爆炸、效率暴跌,重则烧管。而饱和电流的校验基准,就是电感电流的峰值I_peak,不是平均电流,更不是输出电流。
再看输出纹波。输出电容上的电压纹波,本质上就是电感纹波电流对电容充放电的结果。纹波电流\Delta I_L算不对,纹波电压就是一笔糊涂账。
还有开关管电流应力。高边开关管的峰值电流、有效值电流,都是依据电感电流来校核的,这直接关系到MOSFET的选型和散热设计。
模式判断也一样。系统到底工作在CCM(连续导通模式)还是DCM(断续导通模式),边界就是电感电流的最小值归零的那个负载点。模式又反过来影响控制环路的补偿设计、轻载效率、EMI频谱。可以说,电感电流是整个BUCK设计里牵一发动全身的核心变量,不能靠猜。
1.2 一个直观类比:电感就是飞轮
如果你觉得上面这些公式太抽象,可以这么理解:电感像一个有惯性的飞轮,开关管是间歇性推动飞轮的手。开关管导通时,输入电压给飞轮加速(电流上升);开关管关断时,飞轮靠惯性继续转动,带动输出(电流下降)。飞轮质量越大(电感量越大),转速波动越小(纹波电流越小);但飞轮质量太大,转动惯量也会让系统的动态响应变慢。这里还有个前提——飞轮的转速(电流)不能掉到零。如果每次还没等下一脚推力到来,飞轮就已经停转了,那系统就进入了DCM,整个运动规律都变了。这正是CCM和DCM的本质区别。
明白了电感电流为什么重要,我们接着推公式。
2. CCM模式公式推导:从伏秒平衡出发一步一步手算
CCM(Continuous Conduction Mode)指的是整个开关周期内,电感电流始终大于零,电流波形是一个叠加在直流平均值上的三角波。这也是大多数中重载Buck的设计目标模式。
2.1 CCM的两个时间片段与伏秒平衡
CCM下,一个开关周期T分成两个阶段:
阶段一:开关管导通,持续时间为 t_on = D×T。此时电感左端被拉到V_in,右端是V_out,电感两端电压为V_in - V_out(忽略开关管压降),电感电流线性上升,上升斜率是:
di/dt = (V_in - V_out) / L
阶段二:开关管关断,持续时间为 t_off = (1-D)×T。非同步Buck中电感电流通过续流二极管续流,同步Buck中通过低边MOSFET续流。此时电感右端仍然是V_out,左端被钳位到接近0V(二极管压降或MOS导通压降很小),电感两端电压近似为 -V_out,电流线性下降,下降斜率是:
di/dt = -V_out / L
一个稳态周期内,电感的伏秒积必须平衡,否则电感电流每周期都会累积变化,无法稳定。这是开关电源最核心的物理约束:
(V_in - V_out) × t_on = V_out × t_off
把 t_on = D×T、t_off = (1-D)×T 代入,立即得到一个漂亮的结论:
D = V_out / V_in
这就是CCM下BUCK的占空比公式——它只和输入输出电压有关,和负载电流、电感量都无关。这个结论在你判断"芯片实际输出的占空比是否合理"时非常有用。
2.2 电感电流的四个关键值:纹波、平均值、峰值、最小值
基于伏秒平衡和电感伏安特性,可以推导出CCM下电感电流的全部关键参数。
纹波电流\Delta I_L,就是上升阶段电流增加的总量,也等于下降阶段电流减少的总量:
\Delta I_L = (V_in - V_out) × t_on / L = (V_in - V_out) × D / (f_sw × L)
利用 D = V_out/V_in,还可以写成对称形式:
\Delta I_L = V_out × (1-D) / (f_sw × L) = V_in × D × (1-D) / (f_sw × L)
后一个式子有时候用着更方便,因为它直接展示了\Delta I_L和占空比D的关系:当D接近0.5时纹波最大,当D趋向0或1时纹波趋近于零。
平均电感电流I_L_avg:在CCM稳态下,输出电容的平均电流为零,所以电感电流的平均值就等于负载电流:
I_L_avg = I_out
峰值电流I_peak和最小值I_min:
I_peak = I_out + \Delta I_L / 2 I_min = I_out - \Delta I_L / 2
这两个值一个用于磁芯饱和校验,一个用于判断是否接近DCM边界。只要I_min还大于0,系统就老老实实待在CCM。
还有一个用于散热计算的RMS值。三角波的有效值可以近似表达为:
I_rms ≈ sqrt( I_out² + \Delta I_L² / 12 )
工程上DCR铜损就用它算,后面第6章还会提到。
2.3 手算实例:12V转5V、500kHz、10uH电感的完整计算过程
我们用一个非常典型的参数组合走一遍手算:
- V_in = 12V
- V_out = 5V
- f_sw = 500kHz
- L = 10uH
- 设计最大负载 I_out_max = 2A
- 当前分析负载点 I_out = 1A
第一步,算周期和占空比:
T = 1 / f_sw = 1 / 500kHz = 2us D = V_out / V_in = 5 / 12 = 0.417 t_on = D × T = 0.417 × 2us = 0.833us t_off = T - t_on = 1.167us
第二步,算纹波电流:
\Delta I_L = (V_in - V_out) × D / (f_sw × L) = (12 - 5) × 0.417 / (500 × 10³ × 10 × 10⁻⁶) = 7 × 0.417 / 5 = 0.583A
注意这里单位容易踩坑:电感10uH要写成10×10⁻⁶ H,频率500kHz要写成500×10³ Hz,最后结果才是安培。我刚开始做电源时经常把uH的10的负六次幂漏掉,算出的纹波电流大了一千倍,还一度怀疑芯片是不是坏了。
第三步,算当前负载1A下的峰值和最小值:
I_peak = 1 + 0.583/2 = 1.292A I_min = 1 - 0.583/2 = 0.708A
因为I_min = 0.708A > 0,所以1A负载下确实工作在CCM。按满载2A校验时,纹波率r = \Delta I_L / I_out = 0.583 / 2 ≈ 0.29,这是个相当健康的数值,主流电源芯片通常推荐纹波率在0.2到0.4之间。
峰值电流1.292A(满载时约1.292A?不,满载时I_peak = 2 + 0.583/2 = 2.292A)。这里要分清:纹波电流\Delta I_L在CCM下基本不随负载变化(只和Vin/Vout/fsw/L有关),但峰值和最小值会随负载整体平移。这个特性后面实测时会再次验证。
3. DCM模式公式推导:断流之后占空比不再等于电压比
DCM(Discontinuous Conduction Mode)在轻载时很常见。这时候电感电流在一部分开关周期内降到了零,波形从"连续三角波"变成了"一段三角波加一段平躺的零电流死区"。
3.1 负载变轻时,为什么系统会"断流"
回到CCM下的公式:I_min = I_out - \Delta I_L / 2。当负载电流I_out逐渐减小,但\Delta I_L基本不变时,I_min迟早会触到零。如果负载继续降低,电感电流的谷底没法再往下走了,只能提前停止续流,进入一段谁都导通的"死区时间"。
举个直觉的例子:你在一个有惯性的传送带上推箱子,如果箱子的速度已经降到了零,而下一脚还没踩下,那箱子就会停在原地等下一脚。开关管再次导通后,电流从零重新爬升,而不是从某个正的下坡底值开始爬。这就是DCM。
在同步Buck中还有一个专门的问题:如果轻载时强制保持CCM,电感电流会在死区时间变成负的,即电流从输出端倒灌到地,白白消耗能量。所以很多同步Buck在轻载时会自动进入DCM或突发模式来防止负向电流(第4章详谈)。
3.2 DCM的三个阶段与公式推导
DCM下一个开关周期分成三段:
阶段一(t_on):开关管导通,电感电流从0线性上升到I_peak,斜率仍然是(V_in - V_out)/L。
阶段二(t_dem):开关管关断,但电感电流尚未归零,续流管导通,电流从I_peak线性下降到0,斜率是-V_out/L。
阶段三(t_idle):电感电流为0,续流管也关断,输出完全由输出电容放电维持。此时开关节点悬空,存在寄生振荡。
同样利用伏秒平衡。稳态下一个周期内电感储能必须收支相等,所以:
(V_in - V_out) × t_on = V_out × t_dem
由此得到:
t_dem = (V_in - V_out) / V_out × t_on
这个式子和CCM下的伏秒平衡形式上一致,但注意它只约束t_on和t_dem的关系,并不包含t_idle。正因如此,开关管占空比D(= t_on / T)不再像CCM那样可以简单等于V_out/V_in。也就是说,DCM下占空比和输出电压的关系"失耦"了,控制器必须通过反馈环路动态调整占空比,才能稳住输出电压。
接下来推导输出电流。DCM下电感电流波形是一个三角形,每个周期传输的电荷量就是三角形的面积:
Q = 1/2 × I_peak × (t_on + t_dem)
平均输出电流就是每个周期的电荷量除以周期:
I_out = Q / T = I_peak × (t_on + t_dem) / (2T)
而I_peak从阶段一得出:
I_peak = (V_in - V_out) × t_on / L
把t_dem的表达式代入,整理后得到DCM下占空比D(这里D仍然定义为t_on/T)的计算公式:
D = sqrt( 2 × L × I_out × f_sw × V_out / (V_in × (V_in - V_out)) )
对应的峰值电流可以写成:
I_peak = sqrt( 2 × I_out × V_out × (V_in - V_out) / (f_sw × L × V_in) )
如果觉得推导过程繁琐,可以直接把这两个公式当成DCM模式下的"黑箱结论"用。但建议至少要记住一点:DCM的占空比与I_out、L、f_sw都有关,负载越轻、电感越大,所需的占空比越小。
3.3 DCM手算实例:同样12V转5V,负载降到0.1A会怎样
沿用上一节的参数:V_in=12V,V_out=5V,f_sw=500kHz,L=10uH,I_out=0.1A。
先判断模式。CCM下的临界负载电流是\Delta I_L/2 = 0.583/2 ≈ 0.292A。0.1A < 0.292A,所以必定进入DCM。
代入DCM占空比公式:
D = sqrt( 2 × 10×10⁻⁶ × 0.1 × 500×10³ × 5 / (12 × (12-5)) ) = sqrt( 5 / 84 ) ≈ 0.244
对比之下,CCM时占空比本来应该是0.417,现在DCM下实际占空比缩到了0.244。
t_on = 0.244 × 2us = 0.488us t_dem = (12-5)/5 × 0.488us = 0.683us t_idle = 2us - 0.488us - 0.683us = 0.829us
峰值电流:
I_peak = (12-5) × 0.488us / 10uH = 7 × 0.488×10⁻⁶ / 10×10⁻⁶ ≈ 0.342A
可以做个快速验证:三角形面积平均法,I_out = I_peak × (t_on + t_dem) / (2T) = 0.342 × (0.488+0.683) / (2×2) ≈ 0.342 × 1.171 / 4 ≈ 0.1A,严丝合缝。
这里有个反直觉的结论:负载从1A降到0.1A,但DCM的峰值电流只从1.29A降到0.34A,并没有等比例缩小。原因是轻载下占空比缩短了,但电流在t_on内的爬升斜率没变,所以峰值降幅远小于负载降幅。这个特性直接决定了轻载下依然不能把电感饱和电流标称值降得太低。
4. CCM/DCM边界判断与模式选择的工程逻辑
现在公式都齐了,但实际设计时第一件事不是套公式,而是判断:我的电路应该工作在哪种模式?边界在哪?
4.1 临界电流和临界电感:一条明确的公式
由CCM下I_min = I_out - \Delta I_L / 2可知,临界点是I_min = 0:
I_out_crit = \Delta I_L / 2 = V_out × (1-D) / (2 × f_sw × L)
当系统的实际负载电流I_out大于I_out_crit时,工作在CCM;小于I_out_crit时,进入DCM。
反过来,如果你想指定一个最小负载I_out_min,要求系统全程不进入DCM,那么需要的临界电感是:
L_crit = V_out × (1-D) / (2 × f_sw × I_out_min)
注意这里用的是最小负载电流,不是最大负载电流。很多初学者会在这踩坑——拿最大负载去算电感,算出来很小,结果轻载时系统掉进DCM,环路补偿全部失效。所以正确流程是:
- 按最大负载和合理的纹波率算一个初始电感值;
- 再用最小负载电流去校验,看是否满足全范围CCM的要求;
- 如果不满足,要么加大电感,要么接受DCM并调整环路设计。
还拿12V转5V、500kHz举例。如果要求最小负载0.5A时仍然CCM,那么:
L_crit = 5 × (1 - 0.417) / (2 × 500×10³ × 0.5) = 2.917 / 500000 ≈ 5.83uH
所以标称电感至少要大于5.83uH,考虑电感容差和直流偏置后的实际电感量下降,工程上选10uH才比较稳妥。若只按满载电流算,可能选个4.7uH也"感觉够了",但轻载就失控了。
4.2 CCM和DCM怎么选:没有绝对好坏,只有场景适配
这个问题在电源社区里争论很多,直接给结论:两者各有明确的使用场景,不该无脑选某一个。
CCM的核心优势是纹波电流确定、输出纹波好预测、负载调整率好、控制环路模型成熟,所以中重载连续输出场景(比如CPU内核供电、电机驱动母线)基本都设计在CCM。缺点是轻载时开关损耗持续存在,占空比小、电流尖峰窄,非同步Buck在轻载效率会很差。
DCM的核心优势是轻载下电感可以选小、磁芯体积小,而且在同步Buck中轻载能自动关断低边MOS来阻止负向电流倒灌,效率可以明显优化。缺点同样明显:输出纹波大、负载调整率变差、控制环路增益变化大、开关节点在死区时间会产生振铃导致EMI变差。
从控制角度补充一句:BUCK在CCM和DCM下的小信号传递函数是不同的(尤其是输出滤波极点位置随负载变化),所以很多芯片会针对两种模式做不同的补偿。如果你自己搭分立Buck电路,模式切换点附近最容易出现环路不稳定,调试时尤其要留意。
实际产品中非常常见的做法是:重载时强制CCM,轻载时自动降到DCM或突发模式(PFM/Pulse Frequency Modulation),这也是很多电源芯片标榜"轻载高效"的原因。比如手机充电器、USB PD适配器在空载/轻载时都是切到DCM或间歇工作模式来拉低待机功耗。
4.3 同步Buck里的特殊问题:电感电流过零与负向电流
同步Buck的情况比非同步要微妙一些。非同步Buck里二极管天然单向导电,电流降到零时自动截止,无缝进入DCM;同步Buck里低边MOS是双向导电的,如果不主动关断,电感电流会继续线性下降变成负电流——电流从输出端通过低边MOS流回地,能量白白损耗掉,轻载效率一落千丈,还可能造成输出过冲。
所以同步Buck在轻载时必须有机制在电感电流过零附近关断低边MOS,这就是常说的DCM、AAM(高级异步调制)或二极管仿真模式。反过来,有些要求固定频率的应用(比如噪声敏感场景)会强制使用FPWM(强制PWM)模式,宁可接受轻载负向电流,也要保证开关频率恒定、频谱干净。
刚接触GaN FET的开发者还要多留一个心眼:GaN器件的零反向恢复特性让它切DCM时更干净,但因为它关断速度极快,死区时间内LC谐振的振铃频率更高、幅度更大,对布局和RC吸收提出了更高要求。这一点第6章会展开。
5. 实测对比:把理论值摆到示波器面前
公式推导得再漂亮,不上示波器实测一次都算不得数。这一节分享我实际拿板子测下来的数据,测试条件就沿用前文的典型参数。
5.1 测试平台与测量方法
- 测试板:某款5A同步降压芯片评估板,外置电感10uH铁氧体功率电感
- V_in = 12.0V,V_out = 5.0V,f_sw = 500kHz(通过RT电阻配置)
- 输出电容:3颗22uF陶瓷电容并联
- 负载:电子负载CC模式
- 测量工具:示波器 + 电流探头(探头带宽覆盖开关频率的50倍以上),电流探头串在电感回路里,最好在电感引脚下直接测,避开噪声较大的开关节点走线
测量时有个小技巧:电流探头用之前一定要做消磁和校零,否则直流偏置误差会直接影响I_peak读数的可信度。如果手头只有电压探头也没有关系,可以测电感两端或开关节点波形,再用V_L = L×di/dt反推电流斜率,但精度会差一些,还是建议直接上电流探头。
5.2 CCM实测数据:1A负载下的波形与理论对比
负载设1A,示波器抓到电感电流波形是干净的对称三角波,没有断流平台,确认工作在CCM。
理论值回顾:
- \Delta I_L理论 = 0.583A
- I_peak理论 = 1.292A
- I_min理论 = 0.708A
实测读到的数据:
- \Delta I_L实测 ≈ 0.62A,比理论值大约6.3%
- I_peak实测 ≈ 1.31A,比理论值大约1.4%
- I_min实测 ≈ 0.69A,和理论值吻合在3%以内
\Delta I_L偏大,最直接的原因通常是电感的实际电感量小于标称10uH——后面用LCR表测了这颗电感在1A直流偏置下的电感量只有约9.0uH,比标称值低了10%。因为陶瓷电容负载下,直流偏置确实会让磁芯的等效磁导率下降,电感量缩水,纹波电流自然比公式算出来的大一点。
从工程角度讲,6%的偏差完全在可接受范围内,但它提醒我们:公式算出来的是"理想值",实际电感在偏置状态下的真实电感量才是决定纹波的因素。
5.3 DCM实测数据:0.1A负载下的波形与理论对比
负载降到0.1A,波形变成"一个三角尖峰加一条平躺的零电流死区",典型DCM特征。
理论值回顾:
- D理论 = 0.244,t_on理论 = 0.488us
- I_peak理论 = 0.342A
实测数据:
- 实际t_on约0.50us,换算占空比约0.25,和理论值偏差约2.5%
- I_peak实测约0.36A,比理论值大约5.3%
- 零电流平台明显,大约持续0.8us,和理论t_idle = 0.829us基本对上
另外在零电流平台期,示波器能看到开关节点上有一个高频振铃,频率大约几十MHz,这是MOS管的寄生电容Coss和电感L在死区时间形成LC谐振的表现。DCM下这个振铃是必然存在的,它会以传导和辐射形式变成EMI噪声,后面第6章专门讲处理办法。
5.4 误差来源与工程校验建议
汇总一下理论值和实测值:
| 项目 | 理论值 | 实测值 | 偏差 |
|---|---|---|---|
| CCM \Delta I_L@1A | 0.583A | 0.62A | +6.3% |
| CCM I_peak@1A | 1.292A | 1.31A | +1.4% |
| DCM占空比@0.1A | 0.244 | 0.25 | +2.5% |
| DCM I_peak@0.1A | 0.342A | 0.36A | +5.3% |
| 临界负载电流 | 0.292A | 约0.30A | +2.7% |
误差来源主要是三个:
第一,电感量本身有偏移。标称10uH实际在偏置电流下会降到9uH左右,这是导致纹波电流偏大的主因。
第二,开关管的导通压降和死区时间没有进模型。实测电路中开关管、整流管的压降让电感两端实际电压和理想值有微小差异,死区时间则让有效占空比和理论占空比有偏差,同步Buck的体二极管续流也会造成一点点电压损失。
第三,测量设备的系统误差。电流探头的高频衰减、示波器垂直分辨率和探头耦合噪声都会对峰值读数产生影响,尤其DCM波形上升沿又窄又陡,探头带宽不够时峰值容易被削掉。
工程上建议的做法是:公式计算结果出来后,给峰值电流再乘一个1.1到1.2的系数去选器件;样品回来后一定要亲自用示波器看过波形再用,尤其是DCM振铃幅度和峰值,这是万用表量不出来的东西。
6. 电感选型与调试避坑:公式背后那些容易被忽略的细节
公式和实测都对上了,接下来就是落地的选型和调试环节。这里有几个不是公式直接能告诉你的坑,全都是实际做板子踩过的。
6.1 饱和电流和温升电流不是一回事
电感规格书上最常见的两个电流参数是饱和电流I_sat和温升电流I_rms。简单理解:
I_sat指电感量因直流偏置下降某个比例(通常是30%)时的电流,决定的是磁芯会不会"撑不住"。I_rms指电感温度上升一定温度(通常是40K)时的有效值电流,决定的是线圈和磁芯能不能扛住发热。两者都要满足,缺一不可。
选型经验值:
- I_sat > 1.2 × I_peak_max(考虑高温和批次离散再加一点裕量)
- I_rms > 1.2 × I_out_max(负载电流就是电感电流有效值的主要成分)
- 环境温度超过50℃时,建议裕量再放大到1.3倍以上
另一个容易忽视的点:I_sat的定义温度。很多电感规格书在25℃下测饱和电流,但磁芯材料在高温下饱和点会变化,像铁粉芯的饱和电流随温度升高反而略有增加,铁氧体则基本不变,MnZn功率铁氧体要注意高温下饱和点下降的情况。选型时尽量看规格书里"偏置电流-电感量曲线",别只看一个数字。
6.2 直流偏置下电感量会缩水,这是实测偏差的最大来源
上一节实测里已经看到,标称10uH的电感在1A直流偏置下实际只有9.0uH左右。功率电感的磁芯材料普遍存在"直流偏置导致磁导率下降"的特性,负载电流越大,有效电感量越低,纹波电流越大。
这在铁粉芯、铁硅铝这类材料上尤其明显,它们在几安电流下电感量可能掉到标称值的50%甚至更低。所以设计时一定要去查规格书里的DC Bias曲线,确认在你实际电流下电感量还有多少,再用这个实际值回头校验纹波电流和峰值电流。
建议养成一个习惯:算完公式后,先看所选电感在I_peak处的实际电感量,如果低于所需值,就需要换更大的标称电感或选择更高饱和电流的磁芯材料。
6.3 DCM的振铃和EMI:轻载效率换来的高频噪声
DCM下电感电流归零后,开关节点处于高阻态,但L和MOS管的寄生电容还在,于是形成LC谐振,振铃频率通常从几十MHz到上百MHz,幅度在轻载时尤其刺眼。这个振铃会通过开关节点直接辐射,也会经过PCB走线耦合到输出端,是EMI测试不通过的高频来源之一。
应对手段按优先级排列:
- 优化开关节点布局,减小寄生电感和寄生电容,让振铃频率尽量高、幅度尽量小
- 在SW节点对地加RC吸收电路,典型值从几欧姆到几十欧姆、几百pF到几nF,吸收振铃能量的同时会增加开关损耗,需要实测效率平衡
- 调整栅极电阻,减慢开关管的di/dt和dv/dt,牺牲一部分开关速度换EMI裕量
- 合理选择电感类型,屏蔽式电感对抑制辐射比非屏蔽式好很多,但成本高一些
如果你用的是GaN FET做同步Buck,建议RC吸收参数从小阻值小容值开始调。GaN的开关速度太快,RC吸收选得过大,损耗占比会非常惊人,甚至把轻载效率优化的成果全部吃回去。
6.4 把整个计算流程固化成一个可复用脚本
公式和方法论最终要变成生产力。我平时在项目开始阶段会用一个小脚本快速估算各个负载点下的工作模式和电流参数,省得每改一次参数就重算一遍。这里分享一个精简版:
import math def buck_inductor_current(Vin, Vout, fsw, L, Iout): """ 计算BUCK电感电流关键参数 Vin/Vout: 输入输出电压, V fsw: 开关频率, Hz L: 电感量, H Iout: 负载电流, A 返回: 模式、占空比、纹波电流、峰值电流、最小电流 """ T = 1 / fsw # CCM下的占空比和纹波电流 D_ccm = Vout / Vin dIl = (Vin - Vout) * D_ccm / (fsw * L) Icrit = dIl / 2 # 临界负载电流 if Iout > Icrit: # CCM模式 Ipeak = Iout + dIl / 2 Imin = Iout - dIl / 2 Irms = math.sqrt(Iout**2 + dIl**2 / 12) return { "mode": "CCM", "D": D_ccm, "dIl": dIl, "Ipeak": Ipeak, "Imin": Imin, "Irms": Irms, } else: # DCM模式 D_dcm = math.sqrt(2 * L * Iout * fsw * Vout / (Vin * (Vin - Vout))) Ipeak = (Vin - Vout) * D_dcm / (fsw * L) ton = D_dcm * T tdem = (Vin - Vout) / Vout * ton tdead = T - ton - tdem return { "mode": "DCM", "D": D_dcm, "dIl": Ipeak, # DCM下无周期内三角纹波,峰值即纹波峰峰值 "Ipeak": Ipeak, "Imin": 0, "Irms": Ipeak * math.sqrt((ton + tdem) / (3 * T)), "ton": ton, "tdem": tdem, "tdead": tdead, } # 示例:12V转5V,500kHz,10uH,负载1A和0.1A for iout in [1.0, 0.1]: r = buck_inductor_current(12, 5, 500e3, 10e-6, iout) print(f"Iout={iout}A -> {r}")这段脚本会在负载电流低于临界值的时候自动跳出CCM、进入DCM分支,输出对应的占空比和峰值电流。我把RMS电流在DCM下的近似也写进去了,方便直接估算温升。
有了脚本,你在调参数的时候就能快速看到趋势:频率提高、电感加大,纹波下降;电感减小、负载变轻,模式切换点左移。设计过程中的很多"感觉",实际上都能从这个脚本的几组输出里找到直观证据。
文章最后说几句实在话。公式推导是必要的基础,但做电源设计真正值钱的部分永远是实测和积累:电感量会缩水、振铃会冒出来、轻载效率会掉链子,这些都是书本上看不到的。如果你手头正好有一块Buck板子,建议拿着示波器按本文的测试点去抓一次波形,把CCM和DCM都亲眼过一遍,这比我在这里写一万字都管用。先相信公式,再用示波器超越公式,这就是我做电源设计这几年最核心的体会。