
做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模式公式推导从伏秒平衡出发一步一步手算CCMContinuous 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_minI_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 12VV_out 5Vf_sw 500kHzL 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模式公式推导断流之后占空比不再等于电压比DCMDiscontinuous 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_in12VV_out5Vf_sw500kHzL10uHI_out0.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.4880.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 0I_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.0VV_out 5.0Vf_sw 500kHz通过RT电阻配置输出电容3颗22uF陶瓷电容并联负载电子负载CC模式测量工具示波器 电流探头探头带宽覆盖开关频率的50倍以上电流探头串在电感回路里最好在电感引脚下直接测避开噪声较大的开关节点走线测量时有个小技巧电流探头用之前一定要做消磁和校零否则直流偏置误差会直接影响I_peak读数的可信度。如果手头只有电压探头也没有关系可以测电感两端或开关节点波形再用V_L L×di/dt反推电流斜率但精度会差一些还是建议直接上电流探头。5.2 CCM实测数据1A负载下的波形与理论对比负载设1A示波器抓到电感电流波形是干净的对称三角波没有断流平台确认工作在CCM。理论值回顾\Delta I_L理论 0.583AI_peak理论 1.292AI_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.244t_on理论 0.488usI_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_L1A0.583A0.62A6.3%CCM I_peak1A1.292A1.31A1.4%DCM占空比0.1A0.2440.252.5%DCM I_peak0.1A0.342A0.36A5.3%临界负载电流0.292A约0.30A2.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转5V500kHz10uH负载1A和0.1A for iout in [1.0, 0.1]: r buck_inductor_current(12, 5, 500e3, 10e-6, iout) print(fIout{iout}A - {r})这段脚本会在负载电流低于临界值的时候自动跳出CCM、进入DCM分支输出对应的占空比和峰值电流。我把RMS电流在DCM下的近似也写进去了方便直接估算温升。有了脚本你在调参数的时候就能快速看到趋势频率提高、电感加大纹波下降电感减小、负载变轻模式切换点左移。设计过程中的很多感觉实际上都能从这个脚本的几组输出里找到直观证据。文章最后说几句实在话。公式推导是必要的基础但做电源设计真正值钱的部分永远是实测和积累电感量会缩水、振铃会冒出来、轻载效率会掉链子这些都是书本上看不到的。如果你手头正好有一块Buck板子建议拿着示波器按本文的测试点去抓一次波形把CCM和DCM都亲眼过一遍这比我在这里写一万字都管用。先相信公式再用示波器超越公式这就是我做电源设计这几年最核心的体会。