ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

LTspice开关电源环路仿真:从原理到相位裕度调试实战

2026/9/20 4:40:18 拓冰建站 浏览量
LTspice开关电源环路仿真:从原理到相位裕度调试实战 1. 环路测试为什么非做不可开关电源设计里有一件事特别容易被忽略就是环路稳定性。很多人把板子焊出来上电一看输出电压正常带载也没问题就觉得大功告成了。结果批量生产的时候一部分板子出现输出振荡或者动态响应差得离谱负载一跳变电压就塌下去半天回不来。这些问题追根溯源十有八九是环路补偿没调好。环路波特图就是用来量化评估这个稳定性的工具。它告诉你系统的穿越频率是多少、相位裕度有多少、增益裕度够不够。有了这张图你就能判断当前补偿网络到底行不行需不需要调整零极点位置。以前测环路要靠专门的环路分析仪那东西贵得离谱个人和小团队根本买不起。现在用LTspice做仿真可以在画原理图阶段就把环路特性摸清楚省时省力还省钱。这篇文章面向的是有一定开关电源基础、想用LTspice做环路仿真的朋友。不管你是刚接触SMPS设计的新手还是已经做过几款电源但没系统仿真过环路的老手下面的内容都能直接拿去用。我会从原理讲起把每一步为什么这么做、参数怎么算、仿真怎么跑、结果怎么看全部拆开揉碎说清楚。中间还会穿插一些我自己踩过的坑和总结的小技巧这些在官方文档里基本找不到。2. 环路仿真的核心原理与方案选型2.1 为什么不能直接仿真闭环波特图LTspice里跑交流扫描分析默认是线性化工作点之后做小信号分析。如果你直接对闭环电路做AC扫描得到的是闭环增益曲线它只能告诉你系统在某个频率下增益是多少但没法直接读出相位裕度。相位裕度是开环增益为0dB时开环相位与-180度之间的差值。所以必须想办法测开环特性。但问题来了开关电源闭环工作时反馈回路是闭合的你没法直接把环路从中间断开去测开环。硬断开的话直流工作点就跑了仿真根本没法收敛。所以需要一种方法在不破坏直流工作点的前提下把交流信号注入环路同时测量注入点前后的信号比值从而推算出开环增益。2.2 注入法测环路增益的基本思路业界通用的做法是“电压注入法”。在反馈分压网络和误差放大器之间或者误差放大器输出和PWM比较器之间找一个合适的注入点串入一个交流电压源。这个交流源只注入小信号不影响直流偏置。然后分别测量注入点两侧的电压用下面的公式计算开环增益T(s) - Vout_measured(s) / Vin_measured(s)注意这个负号因为注入点两侧的信号在闭环时是反相的。具体推导这里不展开你只需要记住在LTspice里用电压注入法测环路最终得到的环路增益曲线其0dB穿越频率处的相位与-180度的差值就是相位裕度。2.3 为什么选LTspice而不是其他工具LTspice做环路仿真有几个明显优势。第一是免费功能没有阉割这对个人开发者和小团队非常友好。第二是仿真速度快开关电源的开关频率通常在几十kHz到几百kHz要跑出准确的环路特性仿真时间需要覆盖足够多的开关周期LTspice的求解器在这方面效率很高。第三是灵活你可以自己搭注入电路也可以用现成的平均模型想怎么改就怎么改。当然也有缺点。LTspice的图形界面比较老旧操作逻辑跟常见的EDA工具不太一样新手刚开始会不太适应。另外它没有内置的环路分析功能需要自己搭测试电路、自己算相位裕度。但这些都是一次性投入学会之后就是一劳永逸的事。2.4 两种仿真模型的取舍用LTspice仿真开关电源环路有两种模型可以选择开关模型和平均模型。开关模型就是老老实实把MOSFET、二极管、电感、电容都按实际电路搭出来让LTspice跑真实的开关波形。这种模型最接近实际电路能反映开关纹波、死区时间、寄生参数等细节。但缺点是仿真速度慢因为开关频率高要跑出低频环路特性仿真步长必须很小仿真时间会很长。而且开关模型在AC扫描时LTspice会自动线性化工作点但开关动作本身是非线性的线性化之后得到的模型可能跟实际有偏差。平均模型则是用受控源代替开关管把开关周期内的平均行为建模出来。这种模型忽略了开关纹波只关注低频特性仿真速度极快而且AC扫描结果非常干净。缺点是它不能反映开关相关的非理想因素比如开关损耗、驱动能力不足导致的波形畸变等。我的建议是先用平均模型快速迭代补偿参数确定大致方向。然后用开关模型做最终验证确认在实际开关行为下环路仍然稳定。这样既保证了效率又保证了可靠性。3. 一步步搭建环路仿真电路3.1 准备工作明确你的功率级拓扑在动手搭仿真之前你得先搞清楚自己要仿的是什么拓扑。反激、正激、Buck、Boost、LLC不同拓扑的功率级传递函数不一样补偿网络的设计思路也不同。这篇文章以最常见的反激式开关电源为例其他拓扑的注入方法是一样的只是功率级模型需要相应调整。反激式开关电源在CCM模式下功率级有一个右半平面零点这个零点会随着负载和输入电压变化而移动是环路设计中最头疼的问题之一。用LTspice仿真可以很直观地看到这个零点对相位裕度的影响从而指导你如何设计补偿网络来应对。3.2 搭建功率级电路打开LTspice新建一个原理图。先把功率级搭出来。以反激为例需要以下元件直流输入源用一个电压源V1设置合适的直流值比如48V。变压器LTspice没有理想变压器模型需要用两个电感耦合来实现。初级电感Lp次级电感Ls耦合系数K。匝比n sqrt(Lp/Ls)。注意漏感也要考虑可以串一个小电感来模拟。主开关管用电压控制开关SW或者MOSFET模型。如果是平均模型这里用受控电压源或受控电流源代替。输出整流二极管用二极管模型D。输出电容包括等效串联电阻ESR这个对环路影响很大不能忽略。负载电阻设置你关心的负载条件。搭好之后先跑一个瞬态仿真看看输出电压能不能稳定。如果连基本工作都不正常后面的环路仿真就不用谈了。3.3 加入反馈与补偿网络反馈部分包括分压电阻和误差放大器。分压电阻把输出电压分压到基准电压比如2.5V。误差放大器可以用LTspice自带的opamp模型也可以用简化模型。补偿网络通常接在误差放大器的输出和反相输入之间常见的有Type II和Type III补偿。Type II补偿由一个电阻和两个电容组成提供一个零点和一个极点。Type III补偿多一组RC提供两个零点和两个极点。反激式开关电源通常用Type II就够了但如果右半平面零点比较低可能需要Type III来提供足够的相位提升。补偿网络的参数计算这里不展开网上有很多资料。你需要根据功率级的传递函数确定穿越频率和相位裕度的目标然后反推补偿网络的零极点位置。一般来说穿越频率设在开关频率的1/10到1/5之间相位裕度至少45度最好60度以上。3.4 关键一步搭建注入电路这是整个仿真最核心的部分。在反馈分压网络和误差放大器输入之间串入一个交流电压源Vinj。具体接法如下分压电阻的中点接到Vinj的正端。Vinj的负端接到误差放大器的反相输入端。Vinj的直流值设为0交流幅值设为1V。在Vinj的两端分别测量电压。Vinj正端对地的电压记为Vfb负端对地的电压记为Vea。然后开环增益T(s) -Vfb(s) / Vea(s)。在LTspice里你可以用表达式直接画出这个比值。注意注入点的选择很关键。一定要选在阻抗较低的一侧注入否则注入信号会被分压网络衰减太多导致测量信噪比变差。通常选在误差放大器输入端是比较稳妥的。3.5 设置AC扫描参数在LTspice里添加一个.ac指令。频率范围从1Hz到1MHz每十倍频程扫描100个点。这样既能覆盖低频增益又能看到高频衰减。扫描点数越多曲线越平滑但仿真时间也越长。100点/decade是个不错的平衡。如果你用的是开关模型还需要设置瞬态仿真参数让电路先进入稳态然后再做AC扫描。LTspice支持在瞬态仿真之后直接做AC分析但需要确保工作点已经稳定。具体做法是先跑一个足够长的瞬态仿真让输出电压稳定然后用.tran指令配合.ac指令。不过更简单的做法是直接用平均模型做AC扫描省去瞬态稳定的等待。4. 仿真结果解读与补偿网络调整4.1 看懂波特图增益曲线和相位曲线仿真跑完之后LTspice会弹出波形窗口。你需要画出两个曲线一个是增益曲线用dB表示一个是相位曲线用度表示。在LTspice里你可以用表达式20*log10(abs(Vfb/Vea))来画增益用atan2(im(Vfb/Vea), re(Vfb/Vea))*180/pi来画相位。增益曲线的0dB穿越点对应的频率就是穿越频率fc。相位曲线在fc处的值与-180度的差值就是相位裕度PM。如果PM大于45度系统基本稳定如果PM小于45度动态响应会有明显振铃如果PM接近0度甚至负值系统就会振荡。4.2 相位裕度不够怎么办如果仿真结果显示相位裕度不够说明补偿网络的零极点位置需要调整。常见的调整手段有降低穿越频率把fc往低频移相位裕度通常会改善。但穿越频率太低会导致动态响应变慢负载跳变时电压跌落大。增加零点在补偿网络中增加一个零点提升中频段的相位。零点频率通常设在穿越频率附近或稍低。调整极点位置补偿网络的高频极点用来衰减高频噪声但如果极点频率太低会吃掉相位裕度。可以适当提高极点频率。减小输出电容ESRESR带来的零点有时能提升相位但如果ESR太大零点频率太低反而会导致高频段增益上升影响稳定性。每次调整之后重新跑仿真观察相位裕度的变化。这个过程可能需要反复几次但有了LTspice的快速迭代通常半小时内就能找到合适的参数。4.3 增益裕度也要看除了相位裕度增益裕度也很重要。增益裕度是指相位达到-180度时增益与0dB的差值。一般要求增益裕度至少10dB。如果增益裕度不够系统在特定频率下可能产生高频振荡。在LTspice里你可以用光标测量相位曲线穿过-180度时的频率然后看该频率下增益曲线是多少dB。如果增益大于-10dB就需要调整补偿网络把高频段的增益压下去。4.4 用开关模型做最终验证平均模型跑出来的结果很漂亮但实际电路有开关纹波、寄生参数、驱动延迟等因素可能会让环路特性发生变化。所以补偿参数确定之后一定要用开关模型再跑一遍。开关模型的AC扫描结果可能会比较“脏”因为开关动作会引入高频分量。你可以适当增加仿真时间或者在测量时加一个低通滤波。如果开关模型下的相位裕度仍然满足要求那这个设计就比较靠谱了。5. 常见问题与排查技巧实录5.1 仿真不收敛怎么办LTspice仿真开关电源时不收敛是家常便饭。常见原因和解决方法如下问题现象可能原因解决方法瞬态仿真报错“Time step too small”开关动作太陡步长太小增加最大步长限制或使用.options trtol7AC扫描结果异常工作点未稳定先跑瞬态仿真确保输出稳定后再做AC波形振荡不衰减电路本身不稳定检查补偿网络降低穿越频率仿真速度极慢开关频率高仿真时间长用平均模型替代开关模型我自己的经验是在开关管两端并联一个小电容可以缓解开关瞬间的电压突变帮助收敛。但电容不能太大否则会影响开关波形。另外给电感串联一个小电阻模拟实际电感的直流电阻也能改善收敛性。5.2 注入信号幅度怎么选注入的交流信号幅度不能太大否则会激发非线性效应导致仿真结果失真。一般设1V就够了如果电路增益很高可以降到0.1V。但也不能太小太小的话信噪比差曲线毛刺多。你可以先设1V跑一次看看波形是否干净如果不干净就适当降低。5.3 测量点选在哪里注入点两侧的测量点选择直接影响结果准确性。正端测量点应该选在注入源靠近反馈分压网络的一侧负端测量点选在靠近误差放大器的一侧。这样测到的比值才是真正的环路增益。如果测反了得到的曲线是环路增益的倒数相位裕度会完全错误。5.4 相位曲线跳变怎么处理有时候相位曲线会出现360度的跳变这是因为atan2函数的取值范围是-180到180度。当相位超过180度时会跳变到-180度。处理方法是手动加上360度或者用LTspice的unwrap函数。在画相位曲线时可以用unwrap(atan2(im(Vfb/Vea), re(Vfb/Vea)))*180/pi来避免跳变。5.5 仿真结果和实测对不上仿真和实测有偏差是正常的但如果偏差太大就要找原因。常见原因包括仿真模型不准确、寄生参数没考虑、PCB布局影响、测量方法有误等。我的建议是仿真结果主要用来指导补偿网络的设计方向最终还是要以实测为准。仿真能帮你把参数范围缩小到很小的区间实测只需要在这个区间内微调即可。6. 几个提高仿真效率的实操心得6.1 用.step指令批量扫描参数LTspice的.step指令非常实用。你可以用它批量扫描补偿网络的电阻或电容值一次性跑出多条曲线直观对比不同参数下的相位裕度。比如.step param Rc list 10k 20k 50k这样就能在一个波形窗口里看到三条不同Rc值对应的环路曲线哪条相位裕度最好一目了然。这个方法比手动改参数、重新跑仿真效率高得多。6.2 保存仿真状态避免重复劳动LTspice支持保存仿真状态下次打开可以直接从上次的状态继续跑。具体操作是在仿真完成后点击菜单栏的“Simulate”-“Save Simulation State”。这样你就不用每次重新搭电路、重新设置参数了。对于需要反复迭代的环路仿真来说这个功能能省下大量时间。6.3 用.meas指令自动测量相位裕度每次跑完仿真手动看光标测相位裕度很麻烦。你可以用.meas指令自动测量。比如.meas AC fc WHEN mag(Vfb/Vea)1 .meas AC pm FIND ph(Vfb/Vea) WHEN mag(Vfb/Vea)1这样仿真结束后LTspice会在日志文件里直接输出穿越频率和相位裕度不用你手动去图上找。对于需要批量扫描参数的情况这个功能尤其好用。6.4 注意LTspice的默认设置LTspice有一些默认设置会影响仿真结果。比如默认的积分方法、默认的步长控制、默认的温度等。做环路仿真时建议把温度设为27度积分方法设为Gear步长控制设为严格。这些设置可以在.options指令里修改。另外LTspice默认会把仿真文件保存在原理图所在目录生成一堆.raw、.log、.net文件。如果你不想让目录太乱可以在保存时指定单独的仿真结果目录。6.5 从简单模型开始逐步增加复杂度新手最容易犯的错误是一上来就搭一个完整的开关电源电路结果仿真不收敛也不知道问题出在哪里。我的建议是分步走先搭一个理想的平均模型确认环路仿真流程能跑通然后逐步加入寄生参数、开关模型、驱动电路等每加一个部分就验证一次。这样即使出问题也能快速定位是哪个部分导致的。7. 环路补偿中几个容易搞混的概念7.1 零点为什么能提升相位很多新手不理解为什么RC串联形成的零点能提升增益和相位。你可以这样想在零点频率之前电容的阻抗很大RC串联支路相当于开路不影响增益。到了零点频率电容阻抗下降到和电阻相当支路开始导通增益开始上升。同时因为电容电流超前电压90度这个超前特性会让整个环路的相位往正方向移动也就是提升了相位裕度。7.2 右半平面零点的特殊性反激式开关电源在CCM模式下有一个右半平面零点这个零点跟普通零点不一样。普通零点提升增益和相位右半平面零点提升增益但降低相位。也就是说它会让增益曲线往上走同时相位曲线往下走这对稳定性是双重打击。所以右半平面零点必须远离穿越频率一般要求它在穿越频率的3倍以上。如果做不到就只能降低穿越频率或者改用DCM模式。7.3 穿越频率和动态响应的关系穿越频率越高动态响应越快负载跳变时电压恢复时间越短。但穿越频率太高相位裕度会下降稳定性变差。所以这是一个折中。一般来说穿越频率设在开关频率的1/10到1/5之间比较合适。如果开关频率是100kHz穿越频率设在10kHz到20kHz之间。这样既能保证足够的动态响应又能留出足够的相位裕度。8. 从仿真到实测的过渡建议仿真跑通之后下一步就是打板实测。但仿真和实测之间往往有差距怎么缩小这个差距有几个地方需要注意。第一仿真模型要尽量准确。电感的直流电阻、电容的ESR、二极管的导通压降、开关管的导通电阻这些参数都要在仿真里体现出来。虽然它们对低频环路特性的影响不大但对高频段和相位裕度有影响。第二PCB布局要合理。反馈分压网络要靠近误差放大器补偿网络要远离开关节点避免噪声耦合。这些布局上的细节仿真里体现不出来但实测时影响很大。第三测量方法要正确。实测环路通常用专门的注入变压器和频率响应分析仪。注入变压器的带宽要足够宽注入幅度要合适。测量时要注意探头接地要短避免引入额外噪声。第四实测结果和仿真结果对比时主要看趋势是否一致。如果仿真显示相位裕度60度实测只有40度但调整补偿网络后两者的变化趋势一致那说明仿真模型基本靠谱只是有一些寄生参数没考虑到。如果趋势完全相反那就要检查仿真模型或者测量方法是不是有问题。我个人在实际操作中的体会是LTspice环路仿真最大的价值不是给你一个精确的相位裕度数值而是帮你快速理解补偿网络中每个元件的作用。你改一个电阻看到相位曲线怎么动改一个电容看到穿越频率怎么移这种直观的反馈是任何教科书都给不了的。跑上十几次仿真之后你对环路补偿的直觉就建立起来了再设计新的电源时基本上能估个八九不离十。最后再分享一个小技巧如果你手头有实测的波特图数据可以把它导入LTspice和仿真曲线画在一起对比。LTspice支持导入CSV格式的数据用.freq指令或者直接在波形窗口里添加文件。这样你就能直观地看到仿真和实测的差距在哪里针对性地修正仿真模型。这个做法我用了好几年对提高仿真精度非常有帮助。