我们做电源的很多时候最先暴露问题的不是计算器而是示波器和仿真软件。去年调一台800W的电源PFC电感在低压满载时“嗡嗡”叫抓电流波形发现高频锯齿波中间夹着一截一截的零电流平台。那时候我第一反应是电感饱和赶紧算了一轮临界电感又在LTspice里把负载和电感扫了一遍才确认是典型的CCM/DCM边界工作。打那以后Boost PFC这类功率级我都是先仿真、再动手。这篇实战笔记就把整套思路写下来为什么选LTspice、Boost PFC的CCM和DCM到底怎么区分、仿真电路怎么搭、波形怎么判、遇到不收敛怎么排查。目标读者是刚接触PFC的硬件工程师、做电源相关课题的学生还有想在电赛或工程实践中快速验证拓扑的人。看完之后你能自己在LTspice里搭一个Boost PFC跑出CCM、DCM两种模式的对比波形对边界切换点心里有数。1. 为什么用LTspice来做PFC仿真1.1 选型轻量免费还够用先聊工具。做电力电子仿真可选的软件不少我只说我自己用下来的感受。LTspice最大的价值不是功能有多炫而是“免费、轻量、收敛好”这三个词同时占齐。它的安装包只有几十兆启动快跑开关电源的瞬态仿真非常稳不会动不动就报“timestep too small”。而且它是SPICE内核器件模型是半导体厂商直接给的不是理想模型硬凑这就比很多纯系统级仿真工具可信得多。为了说清楚选择逻辑我用一张表格把几类常用方案过一遍工具能否免费使用适合场景主要受限点LTspice免费开关电源瞬态仿真、环路频率响应、损耗估算独立磁性元件建模需要人工等效复杂多域控制不如系统级工具方便PSIM商用授权电力电子系统级仿真、电机驱动价格不低元件模型相对理想SIMPLIS商用授权开关电源环路稳定性分析学习曲线陡波形查看不如LTspice顺手MATLAB/Simulink商用授权算法验证、控制系统设计开关瞬态仿真慢功率器件模型不如SPICE细我并不是说LTspice能包打天下而是说做Boost PFC这种“拓扑明确开关过程复杂需要观察电流波形细节”的事情它刚好在精度和易用性之间取得了平衡。另一个实际原因是ADI、英飞凌、安森美这些原厂官网都有现成的SPICE模型拿过来用.include一挂就能仿真这对于验证真实器件选型非常方便。我在实际项目中先用LTspice做拓扑和模式分析最后再去调环路参数大多数情况都能直接给硬件调试做参考。1.2 Boost PFC为什么是“标配”聊完工具再看拓扑。PFC全称是功率因数校正核心目标就一句话让输入电流的波形和输入电压一致不要给电网添太多谐波。早期很多电源只在整流桥后面挂一个大电解电容成本很低但交流输入电流变成很窄的尖峰脉冲谐波奇高功率因数可能只有0.5到0.6。现在要过谐波标准这种无源方案基本不灵光了。有源PFC方案里Boost PFC最常见原因可以从拓扑结构看出来交流输入经过整流桥后直接接一个Boost升压电路电感就在整流桥的输出侧。电感这种元件天生愿意维持电流连续而PFC控制的本质就是让输入电流跟着电压走所以Boost结构天然适合做电流整形。再加上它是升压拓扑输出电压比输入电压峰值高后级DC-DC变换器做起来也舒服。整条功率链路可以这样看工频交流源、整流桥、Boost变换器电感、开关管、二极管、输出电容、负载。控制核心是让流过电感的电流按正弦半波包络走然后通过输出电容把能量平滑送给负载。这个拓扑元件少、原理清晰、可靠性高所以从几百瓦的适配器到几千瓦的通信电源、充电桩模块Boost PFC几乎是标准答案。需要提醒的是Boost PFC虽然叫Boost但它和普通Boost变换器有个明显的不同整流桥后不能像普通电源那样直接放一个大电解电容。一旦把大电容放上去输入电流又变回尖峰脉冲PFC等于白做。这个问题后面搭仿真电路时会再次强调。2. CCM与DCM先搞懂两种工作模式再动手2.1 电感电流里看本质CCM和DCM这两个词所有电力电子教材都有讲但落到PFC仿真里很多人还是容易混。我习惯用一个“水桶蓄水”的类比电感就像一个水桶开关管导通时往里灌水关断时往外面倒水。CCM的意思是桶里的水一直没断过始终还有余量DCM则是水已经倒光了干等了一会儿才开始下一轮灌水。对应到电路里CCM就是整个开关周期内电感电流都大于零DCM则每个周期都会有一段电感电流等于零的时间。再细化一点。在Boost电路里一个开关周期内的工作是固定的开关管导通时电感两端电压基本等于输入电压Vi电感电流线性上升开关管关断时电感通过二极管向输出放电电感两端电压变成Vi减Vo电流线性下降。如果电流还没降到零下一个周期就来了这是CCM。如果电流已经降到零而且保持了一段时间这就是DCM。BCM则是“刚好降到零立刻开始下一周期”的临界点工程上常叫临界导通模式。怎么快速判断当前是哪种模式看电感电流波形最直观锯齿波的谷底离零线有多远。谷底始终在零上是CCM谷底贴着零线或有一段完全为零是DCM。这句话虽然简单但在仿真里非常实用很多分析都是从观察这个细节开始的。2.2 工程取舍CCM不便宜DCM更躁两种模式各有代价。CCM模式下电感电流纹波小开关管和二极管的峰值电流相对低导通损耗容易被接受但二极管每次关断时存在反向恢复问题恢复电流会在开关管上造成额外损耗和电压尖峰所以CCM必须用快恢复二极管或SiC二极管。同时为了让整个输入周期都保持CCM电感要设计得比较大控制上也普遍采用平均电流或峰值电流方案环路相对复杂。DCM的情况正好反过来。电感电流每个周期都会过零二极管反向恢复问题基本消失控制也简单很多很多低成本小功率PFC就是工作在DCM或BCM。但代价是电流纹波大、峰值电流高开关管和二极管要承受更大的电流应力输入侧的EMI滤波也要做重一点。此外DCM下输入电流的包络在过零附近有一个“死角”电流不能完全跟随电压谐波会比理想的CCM略差。我把主要差异整理成一张表方便对照对比项CCMDCM/BCM电感电流纹波较小很大开关管/二极管峰值电流较低明显偏高二极管反向恢复问题严重需快恢复器件基本可忽略输入EMI滤波压力较小较大控制复杂度较高较低典型应用功率几百瓦到几千瓦几十瓦到几百瓦所以选哪种模式不是拍脑袋而是根据功率、成本、体积、EMI要求综合权衡。比如高功率密度的小功率适配器很多就喜欢用BCM因为控制简单、磁性元件小大功率通信电源则会坚持CCM主要为了压低电流应力和EMI。2.3 临界条件怎样从理论上预判模式要提前预判CCM还是DCM可以做一个简单的定量估算。Boost电路在CCM下电压增益满足 Vo Vi / (1 - D)所以 D 1 - Vi / Vo。一个开关周期内电感电流的纹波峰峰值ΔIL Vi × D / (L × fs)。CCM的边界就是电感电流的谷值刚好到零也就是平均电感电流等于ΔIL的一半 IL_avg ΔIL / 2。临界电感可以反推出来 L_crit Vi × D / (2 × fs × IL_avg)。这里最容易忽略的一点是PFC中输入电压和输入电流都不是常数。假设理想PFC把输入电流整形成和电压同相的正弦波那么输入电流峰值为Ipk 2Po / Vpk瞬时平均电感电流就是IL_avg(t) Ipk × |sin(ωt)|。在电压峰值附近IL_avg比较大D比较小反而不容易进入DCM在过零附近IL_avg很小D接近1临界电感会变得很大。我用一个300W、输出400V、开关频率100kHz的案例来算。输入220VrmsVpk311V输入电流峰值约1.93A。在电压峰值处D0.222临界电感约179uH也就是说峰值附近用300uH基本能维持CCM。但到了过零附近临界电感会迅速升高到800uH级别所以哪怕用1mH也需要仔细核对过零那一段。这个结论直接决定了仿真里怎么选电感想在整个输入周期看到CCM电感不能小于这个过零临界值想看DCM把电感减小到几百微亨甚至100uH几乎必然进入DCM。这个“全周期临界电感”的概念很多初学者没意识到。它解释了为什么很多PFC实际不是“纯CCM”或“纯DCM”而是“峰值附近CCM、过零附近DCM”的混合状态。确切说只要电感不是足够大到覆盖整个正弦周期模式就会随时切换。在仿真时通过扫描电感值你就能清楚看到这条边界是怎么移动的。2.4 控制方式怎么影响模式除了电感控制策略也决定你会在CCM还是DCM。我这里不展开环路整定先给一个控制方案的全景。平均电流控制是CCM的经典方案。它有两个环路外环是输出电压误差内环是输入电流误差。电压误差信号和整流后的正弦半波相乘得到电流参考电流内环让电感电流去跟踪这个参考最后用PWM调制输出。这种方式动态好谐波低是几千瓦大功率PFC的主流。峰值电流控制在CCM下需要斜坡补偿否则占空比大于0.5会出现谐波振荡现在用得相对少。滞环电流控制则是让电感电流在一个参考带内上下波动参考带上限到了就关断下限到了就开通。滞环控制天然是变频的在小功率、低成本电源里非常常见比如很多临界模式PFC控制器就是滞环思想。做仿真的时候我建议先不要一上来就搭完整闭环那样遇到不收敛时很难排查。先用固定占空比的PWM信号把主功率级跑通观察CCM/DCM基本形态再逐步加入滞环电流控制让输入电流更接近真实PFC。这样难度递增排错成本最低。3. 仿真电路搭建全过程3.1 设计规格和器件参数仿真不是随便拉个图就完事建议先把设计指标定下来后面所有仿真数据才有参照。我这套例子的目标规格是输入交流220V/50Hz输出400V直流额定功率300W开关频率围绕100kHz。据此可以算几个关键参数。输出负载电阻Po300WVo400VR Vo²/Po ≈ 533Ω仿真里直接用560Ω电阻当额定负载偏差不大。输出电容Cout按支撑母线电压的常规做法取220uF耐压450V这种级别。电感是一个核心变量我会在仿真命令里用.step扫描100uH、300uH、1mH三个值分别对应明显DCM、部分周期DCM、接近全周期CCM三种情况。开关管和二极管也要选型。开关管建议用常见的N沟道MOSFET模型比如IRF840或者厂商的SPICE模型如果只想验证拓扑也可以用理想开关但要给它并联一个体二极管否则电感续流路径会断。Boost二极管必须用快恢复管比如MUR460、STTH之类千万别用1N4007后面5.1会讲为什么。顺带说一个LTspice使用细节你保存工程后文件夹里会逐渐积累.log、.raw、.net甚至更多辅助文件这是正常现象。.asc文件才是原理图源文件.raw是波形数据删掉不影响工程但千万别把.asc当临时文件删了。3.2 功率级整流桥后别加大电容功率级搭建的注意事项我踩过最大的坑是整流桥后平波电容。很多从DC-DC转过来的工程师会习惯性地在桥后放一个大电解电容来稳定直流母线但在PFC里这么做是致命的。桥后一旦并联大电容输入电流就变成靠整流桥峰值充电的窄脉冲功率因数回到零点几PFC完全失效。Boost PFC的桥后只接电感靠电感电流的连续性和控制环来整形输入电流。功率级在LTspice里的连接顺序可以按下面这几步来放置一个正弦电压源参数SINE(0 311 50)代表220Vrms/50Hz交流输入用四只二极管搭整流桥或者使用元件库里的整流桥符号正输出端做“bus”负端接地从“bus”接电感L1L1另一端接“sw”节点开关管Q1的漏极接“sw”源极接地栅极接PWM驱动信号快恢复二极管D1阳极接“sw”阴极接输出节点“vout”输出电容Cout和负载电阻Rload并联在“vout”和地之间找好地参考点尽量让GND参考统一方便波形观察。这里有一个关键点开关管的体二极管一定不能省。Boost电路在开关管关断时电感电流要经过二极管和负载续流但如果换向到另一个器件回路就断了。用集成MOSFET模型一般都自带体二极管用理想开关就必须手动并联一个二极管到地或者和MOSFET漏源并联。3.3 控制信号从固定占空比到滞环先跑固定占空比版本验证接线和拓扑最简单。给栅极接一个脉冲源 Vpwm g 0 PULSE(0 12 0 20n 20n 4u 10u)这是100kHz、占空比40%的PWM驱动幅度12V。跑个瞬态 .tran 0 100m 90m 500n uic前面90ms用于让主电路进入稳定后面保存10ms数据。固定占空比下输出电压不一定是400V因为占空比和负载共同决定了工作点但电感电流的CCM/DCM形态是能看出来的。如果某个瞬时输入电压较低、负载又轻就会出现明显的DCM平台。看完固定占空比再来搭一个更接近PFC的行为滞环电流控制。思路是生成一个与输入电压同相的正弦半波参考电流然后在电感电流上设上、下两条边界。电流低于下边界就开通MOSFET高于上边界就关断。这样做出来的波形在峰值附近会自动呈现CCM在过零附近自动进入BCM/DCM非常直观。在LTspice里参考电流可以用行为电压源生成 Iref I0 × abs(sin(2π × 50 × time))滞环部分建议用比较器加一个RS锁存器来实现或者用A元件里的施密特触发器配合延时。电感电流的取样可以在电感支路串一个小电阻0.1Ω转成电压方便比较器比较。这样仿真量不大但能明显看到模式和参考电流之间的跟随关系。如果只是为了观察CCM/DCM固定占空比方案其实已经够了。滞环控制的意义在于它能让你看到“PFC控制下”的模式切换过程而不是单纯开环的随意行为。两套方案我建议都跑一遍收获会完全不同。3.4 用.step扫描电感、负载看模式切换确认电路能跑之后最有价值的动作就是扫描参数。LTspice里一句.step就能把电感值扫开 .step param Lval list 100u 300u 1m原理图中的电感值不要写死填成{Lval}。跑完一次仿真波形窗口里会叠加三组曲线颜色不同你就能直观看到同一负载、同一输入下电感从100uH到1mH时电流进入DCM的过程。同理也可以扫描负载电阻 .step param Rlist list 560 1k 2k同样的电感负载越轻越容易DCM。这是因为输出功率变小后电感平均电流下降而纹波主要由输入电压、占空比和电感决定负载的影响不大两者一比自然更容易跌破零。如果想自动统计边界还可以加.meas命令比如 .meas TRAN IL_min MIN I(L1) TRIG time0.09 TARG time0.1这个测的是仿真最后10ms内电感电流的最小值。如果IL_min小于0说明电感电流已经穿过零基本就是DCM/BCM了。用.meas把不同参数组合下的最小值记录下来比肉眼看波形更高效也方便写进实验报告。4. 仿真波形解读与模式判定4.1 CCM典型波形电感电流、开关应力、输入电流先把电感值设成1mH、负载560Ω跑完看波形。展开任意一个开关周期电感电流是一个规整的锯齿波谷底明显在零线以上。以峰值附近为例平均电流接近1.9A纹波约0.7A电流永不落零这是CCM的标准画面。开关管漏源电压也很典型关断时电压接近400V加上一点开关尖峰导通时基本是0V。如果你取的是源极到地那波形会很干净。再看整流桥后的电流基本上是一个饱满的正弦半波包络过零附近没有明显“缺口”这正是CCM带来的好处——输入电流的连续性好谐波低。这里可以补充一个实用的观察方法把波形放大数一数一个工频周期内的高频锯齿数。100kHz开关频率对应50Hz工频一个周期内约2000个开关周期。如果展开后发现某段特别稀疏、某段特别密那很可能进入了变频的BCM或DCM而不是恒定100kHz的CCM。控制方式不同这一点在波形上差异很明显。4.2 DCM典型波形间断的电流和更高的峰值现在把电感改成100uH重新跑。电感电流的锯齿波会出现明显的“零平台”电流斜坡下降到零之后要停一段时间直到开关管再次开通才重新上升。这是DCM最直接的特征。如果展开看导通期间的电流上升斜率变得非常陡峰值电流明显比CCM高这正是“纹波大、峰值应力高”的体现。输入电流那边也会有变化。由于过零附近的死区正弦半波包络不再饱满会出现一个“凹坑”直观看起来就是电流波形不那么连续了。相位上输入电流也会出现一定程度的畸变谐波成分增加。这些都是DCM在示波器上的典型表现仿出来之后要能一眼认出来。仿真时特别容易忽略的是DCM下电感和MOSFET结电容会发生谐振导致开关节点出现一段振铃。这段振铃在不开任何吸收网络的情况下会非常明显波形看起来“毛刺”很多。不要一直怀疑模型有问题这是真实DCM中存在的寄生振荡实际设计里靠RC/RCD吸收和EMI滤波去压。4.3 用FFT看谐波和功率因数看时域波形只能定性想定量比较CCM和DCM的谐波差异用FFT更合适。在LTspice里先点击输入电流波形窗口然后菜单View→FFT出来的就是电流频谱。注意两点一是要选稳态段做FFT最好用.tran 0 100m 90m只保存后10ms二是FFT窗不要用默认的矩形窗改成Hanning或Hamming频谱泄漏会小很多。看频谱时50Hz基波是最大的那个峰。然后看250Hz5次、350Hz7次、550Hz11次这些奇次谐波。粗略的THD可以自己算 THD ≈ sqrt(I3² I5² I7² …) / I1 × 100%在CCM仿真里低频谐波通常明显低于DCM。具体差多少和电感量、负载、控制方式强相关。我自己做对比时习惯把CCM、DCM两组FFT结果放到同一个图里比较坐标轴很快就能得出“这个电感下THD会差多少”的结论。不过要泼一盆冷水FFT里的谐波只是开关级平均效果。实际EMI测试还要考虑共模、差模路径和PCB寄生LTspice仿真给的是“电路理想模型下的低频谐波趋势”用来对比系统优劣可以拿它当EMI最终判定则远远不够。4.4 从仿真到样机哪些能信哪些要打问号仿真跑得热闹但对工程师来说最关键的是判断哪部分可信、哪部分不能信。我的经验是工作模式CCM/DCM切换位置、电压增益、电流包络形状、控制逻辑是否正确这些是值得信的开关尖峰的绝对幅值、EMI频谱细节、损耗分布这些一般不能直接信。原因在于LTspice默认模型里缺少许多寄生参数PCB走线电感、电容ESR/ESL、MOSFET门极驱动电阻的传播延迟、变压器漏感等。你看到“400V加几十伏尖峰”的样子可能对但尖峰到底偏高还是偏低就得靠实测或寄生参数更全的模型来验证。我在实际项目中通常分两步走。第一步用理想器件跑拓扑和模式参数扫描、边界计算都在这时候做第二步换成厂商提供的真实SPICE模型加入门极驱动电阻和必要的寄生参数再跑关键工况看应力。至于最后的EMI和热设计还是要回到样机上用示波器和频谱仪说话。这个顺序能让仿真真正为硬件服务而不是变成“看图写故事”。5. 常见问题与排查技巧实录5.1 仿真不收敛怎么办LTspice报“timestep too small”或者直接中断是跑PFC最常遇到的问题。多数原因可以从几个方向排查。先看初始条件给输出电容设一个初值比如.ic V(vout)400或者用uic让电路从初始状态直接开始能省去很长的启动爬坡过程也减少数值冲击。再看拓扑有没有悬空节点比如电感后端没接二极管或者驱动信号漏接这类问题会导致矩阵奇异。器件模型也是很常见的坑。1N4007这类慢恢复二极管在PFC仿真里开关切换时反向恢复电流变化极快求解器很容易卡死。换成快恢复二极管型号仿真速度会立刻改善。另一个办法是给开关节点加一个很小的RC吸收比如几百皮法的电容串联几百欧姆电阻到地既能防止数值振铃也更接近实际电路。如果用了理想开关关断阻值别设成无穷大导通电阻也别设成零给个1mΩ到10mΩ会让SPICE矩阵好处理得多。还有一些仿真命令层面的调整比如限制最大步长 .tran 0 100m 90m 200n最大步长设得太大会漏掉开关边沿设得太小又会拖慢速度。我用200ns100kHz开关频率下每个周期有50个采样点波形精度足够仿真速度也可接受。5.2 启动瞬态与初始条件问题很多初学者看着前几十毫秒的波形一头雾水输出电压一直在爬升电感电流冲到几十安培然后问是不是电路设计错了。其实这就是启动瞬态不是稳态。PFC输出电压要从0升到400V输出电容充电需要时间期间电流应力非常大仿真不需要非把这段跑完不可。处理方式有几种。第一种是给电容设初值 .ic V(vout)400第二种是跑一长段瞬态但只保存后半段 .tran 0 100m 90m 200n第三种是直接用uic忽略初始状态从设定的初始条件开始算。注意如果用了.uic要保证初始条件和电路物理一致否则也会引发不收敛或波形异常。这里的关键原则是分析CCM/DCM一定要在稳态窗口里看启动波形只适合拿来看浪涌应力不适合判断工作模式。5.3 模型精度问题理想和真实器件差多少我用理想开关跑仿真时开关波形漂亮得很导通和关断都是瞬间完成的。但换上厂商的MOSFET模型之后波形边缘变圆了开关尖峰变大了二极管的恢复尾巴也出来了。这不是仿真变差了而是模型开始接近真实器件。如果你拿到的厂商模型是英飞凌、安森美这些厂家的SPICE模型导入LTspice后用.include就把模型“装”进去了。但要注意模型版本、温度和电压范围最好在datasheet允许范围内用。用真实模型观察损耗和应力时仿真速度会变慢所以我会分阶段先理想器件跑通功能再真实器件跑关键工况。这样既不会在初期被模型问题拖住也能保证最终结论有参考价值。还有一个小技巧二极管的反向恢复特性要看选用的模型是否自带。很多通用二极管模型恢复参数是默认的跟现实差距很大。想研究DCM/CCM对反向恢复的影响就要把这一步也算进去不然结论会失真。5.4 排查速查表最后把我在仿真里遇到过的问题整理成表方便大家遇到现象时直接定位。现象可能原因排查方向电感电流部分周期出现零平台进入DCM/BCM模式切换算临界电感看负载是否偏轻输入电流仍是窄尖峰整流桥后误加大电容去掉桥后平波电容检查拓扑输出电压上不去占空比不够或负载过重检查PWM频率和占空比确认电感没饱和输出电压不停爬升闭环没生效或负载开路检查反馈和控制部分接上额定负载开关尖峰高到离谱寄生电感、二极管恢复加RC/RCD吸收换快恢复器件仿真速度奇慢二极管模型慢、步长太小换快恢复管适当放宽最大步长保存文件越来越多LTspice正常输出.raw/.log/.net别删.asc波形和日志可清理这张表不是拿来背的你实际跑的时候遇到问题先看现象属于哪一类再回看对应小节排查思路就会清晰很多。仿真本身就是“试错、理解、再试”的过程只要不是每次都在同一个坑里栽跟头就算有收获。最后再说一点我自己的习惯。每次做Boost PFC仿真我都不会只跑一张图而是把电感、负载、输入电压分别用.step扫一遍再配几个.meas命令把关键电流最小值记录下来。整套流程走下来基本就能回答这些经典问题这个案子在全电压范围会不会掉出CCM轻载时DCM会不会太严重谐波指标还有没有余量这些如果不仿真光靠手算会非常痛苦而且容易在过零附近那种地方翻车。LTspice虽然只是个仿真器但你把它用成“模式的扫描仪”之后硬件调试会轻松很多。希望这篇笔记能帮大家少走点弯路。