
LLC谐振变换器这个名词做电源的应该都不陌生。但很多朋友一上来就背公式、记增益曲线结果真到搭仿真的时候还是两眼一抹黑。今天我就用LTspice从半桥到全桥手把手把LLC的仿真搭起来跑一遍。我尽量不堆公式只讲清楚三件事LLC到底在做什么、仿真里怎么搭、波形怎么判断。看完之后你可以自己上手改参数、改拓扑不用再对着公式硬背。这篇文章适合正在做PFC后级电源、想验证LLC增益特性、或者准备把方案从半桥升级成全桥的工程师。哪怕你只是刚学开关电源只要会LTspice的打开文件、放置元件这些基本操作按步骤走也能复现。为了不让你只看个热闹我会用一组具体参数贯穿始终输入400V直流母线、输出48V/10A先跑半桥再把桥臂加倍改成全桥。这样两种拓扑的差异会非常直观。1. 先弄清楚LLC到底在做什么1.1 为什么LLC不能沿用PWM那套调占空比思路传统PWM变换器比如反激、正激或者buck都是固定开关频率、通过调节占空比来控制输出。LLC完全不是这个逻辑它用相对固定的50%占空比驱动半桥或全桥靠改变开关频率来调节输出电压。频率一变化谐振腔的等效阻抗就跟着变传到副边的能量也就变了。你可以把谐振腔理解成一个“频率阀门”。开关频率越接近谐振腔的自然频率阀门开得越大能量传输越顺畅增益越高频率拉远阀门收窄增益下降。所以LLC本质上是一种调频变换器而不是调宽变换器。理解了这一点再看LLC的增益曲线就不会觉得玄乎了。另一个很容易绕晕的点是LLC不是“一个频率”在谐振而是有两个谐振频率。一个由谐振电感Lr和谐振电容Cr决定称为第一谐振频率fr1另一个由Lr加励磁电感Lm再和Cr谐振称为第二谐振频率fr2。fr1一般是我们正常工作的基准频率fr2决定了频率下限和增益的极限。这个有点像一个秋千有两套摆长短摆决定你正常荡多高长摆决定你最大能荡多高。实际控制器通常会贴着fr1附近工作需要低压大电流或高压轻载时再往低频或高频方向拉。1.2 两个谐振频率与三种工作状态用这组参数举例Lr25uHCr100nFLm125uH。先算fr1公式是1/(2π√(Lr*Cr))代入后大约是100.6kHz。再算fr2用LrLm150uH和Cr算出来大约41.1kHz。开关频率和这两个谐振频率的位置关系决定了LLC的工作状态。工作频率等于fr1这是最理想的工作点。谐振电流接近标准正弦波原边开关管能实现ZVS副边整流二极管也能在零电流附近关断损耗最低效率最高。工作频率高于fr1谐振电流跟不上开关频率副边整流二极管还在导通就被强迫关断会出现反向恢复损耗。这时的LLC更像一个传统的串联谐振变换器适合输入电压偏高的场合。工作频率低于fr1这是宽范围输出的常见工作区。原边依然能维持ZVS副边二极管能自然关断但励磁电流和大环流带来的损耗会增加。频率越低增益越高输出电压越高一般不会低于fr2太多。很多初学者一上来就问“LLC的频率到底设多少”其实没有固定答案。你先在fr1附近跑一遍然后扫频看输出电压变化就能直观理解三个区间。1.3 死区里的关键ZVS到底是怎么来的ZVS是LLC最核心的价值也是让很多人头疼的地方。简单说ZVS就是开关管在开启前漏源电压已经降到0这样开启瞬间就没有电压和电流的重叠开关损耗几乎为零。问题是谁来把漏源电压拉到0答案是死区时间内谐振电流给开关管输出电容Coss充放电。半桥工作时上管关断后开关节点SW1的电压不会瞬间变化因为谐振电感Lr里的电流不能突变它会继续流给上管的Coss充电、给下管的Coss放电。等SW1节点电压被“抽”到接近0V下管体二极管导通下管再开通就是零电压开通。所以死区不是随便设的。死区太短谐振电流还没把电压拉到0开关管就开了死区太长励磁电流方向可能反转ZVZ会失效。LTspice里看ZVS是否实现非常方便把驱动Vgs和开关节点V(sw1)摆在一起看Vgs上升沿到来之前V(sw1)是不是已经到0或者到母线电压了。2. 仿真前的准备LTspice的电路搭建方法2.1 为什么我选LTspice看LLC波形LTspice是ADI官方免费提供的SPICE仿真工具没有许可限制体积小、启动快对电源拓扑的瞬态波形模拟非常合适。做LLC仿真我们需要盯着开关管Vds、谐振电流ILr、励磁电流ILm这些细节LTspice正好擅长这个。Simulink或者PLECS当然也能做但如果你只想快速理解一段死区里电流怎么换向、ZVS到底成不成立LTspice的波形精度和调试手感我觉得是最直接的。而且LTspice的元件库够用一个半桥LLC加整流输出全部用自带元件就能搭完不需要额外破解什么。如果你以前没装过去LTspice官网下最新版就行Windows和macOS都有安装包装完就能跑。原理图文件是.asc格式波形文件是.raw格式绘图设置会生成.plt日志在.log里。有时候保存文件夹里多出来好几个文件这是正常的别慌。.plt文件可以单独拷给别人对方打开原理图后加载.plt就能复用同样的波形显示设置。2.2 半桥LLC的电路结构与关键模块半桥LLC的完整链路是这样的输入直流母线400V由两个母线电容C1和C2分压形成半桥中点两个MOS管Q1和Q2组成半桥中点SW1输出方波方波经过串联谐振电容Cr和谐振电感Lr进入变压器原边变压器原边还并联着一个励磁电感Lm副边用二极管全桥整流再加输出电容Co和负载RL。这里有一个容易混淆的地方变压器模型本身包含了励磁电感但你在原理图里没有“理想变压器”这个现成符号需要自己用两个耦合电感模拟。这就是接下来要说的重点。谐振电感Lr既可以做成变压器的漏感也可以外置。仿真里外置最省事因为参数清晰改起来也方便。实际产品中为了利用漏感常常把Lr做进变压器里但仿真阶段我建议分开先让原理自己跑对。2.3 变压器建模别把漏感藏在K值里LTspice里搭变压器最常用的方法是用两个电感加一个耦合系数K。对LLC来说你要的是变压器原边电感量等于励磁电感Lm副边电感量按匝比折算耦合系数K取1漏感为0。然后外部再串联一个独立的Lr作为谐振电感。以n4:1为例原边设Lp125uH副边设LsLp/n²7.8125uH然后用一句K1 Lp Ls 1把它们耦合起来。这样就得到一只匝比4:1、励磁电感125uH、漏感为零的“理想变压器”。注意耦合系数K在这里只需要设置一次主要影响变压器电压比和耦合紧密程度。为什么不建议用K小于1来模拟漏感因为耦合系数和漏感之间不是线性关系K0.95、K0.98对应的漏感到底是多少很难一次算准而且漏感分布在原边还是副边也会影响谐振效果。我踩过这个坑后来发现直接外置Lr用K1做理想变压器是最稳定、最可控的做法。2.4 驱动信号与体二极管的处理LLC的开关管需要50%附近占空比的互补驱动并且要留死区。LTspice里最简单的办法就是两个脉冲电压源。高端MOS管的驱动源要接在栅极和源极之间也就是悬浮驱动这样电压源直接给出相对于源极的Vgs。半桥Q1源极是SW1节点所以V1接在g1和sw1之间下管Q2源极是地V2接在g2和0之间。死区设置可以参考这个例子100kHz频率、周期10us上下管各导通4.9us死区100nsV1 g1 sw1 PULSE(0 12 0.1u 20n 20n 4.9u 10u) V2 g2 0 PULSE(0 12 5.1u 20n 20n 4.9u 10u)V1从上电后0.1us开始持续4.9usV2从5.1us开始持续4.9us中间5.0us到5.1us就是上管关断、下管未开的死区。用脉冲源模拟驱动虽然简化了自举电路和驱动芯片但对研究LLC主电路工作过程完全够用。还有一件很重要的事MOS管必须要有体二极管通路否则死区时间里谐振电流没有续流路径仿出来的波形肯定是错的甚至不收敛。LTspice自带的理想NMOS模型不一定自带体二极管最保险的办法是在每个MOS管漏源之间并一个快恢复二极管用默认的D模型或MBR20200这种都行。很多LLC仿真跑不出ZVS不是参数问题就是少了这个二极管。3. 半桥LLC仿真实操一步一步看波形3.1 一组可以直接抄的参数我以一个48V/10A的半桥LLC为例参数如下。你可以原样在LTspice里搭跑通之后再改参数。元件参数说明输入电压VIN400V模拟PFC后母线C1、C2470uF半桥分压电容Q1、Q2NMOS模型并体二极管用普通NMOS或MOSFET模型Lr25uH外置谐振电感Cr100nF谐振电容兼顾隔直变压器Lp125uHLs7.8125uHK1匝比4:1励磁电感125uHD1~D4快恢复二极管MBR20200副边全桥整流Co470uF输出滤波电容RL4.8Ω48V/10A负载开关频率100kHz接近fr1死区100ns可后续调整谐振电容Cr在这里兼有隔直作用所以不需要另外加隔直电容。副边全桥整流共阴共阳各两只管子或者直接放四个整流二极管按桥式接法连到变压器次级和输出电容即可。3.2 仿真设置启动、时长、步长怎么定仿真命令我一般这样写.tran 0 5m 0 100n含义是仿真5毫秒从零开始最大步长100纳秒。开关周期是10us最大步长取100ns能把每个开关周期的细节都看清楚如果只关心稳态趋势可以再放宽到200ns跑得更快。启动阶段会有冲击电流属于正常现象。如果你想看稳态输出就从2ms或3ms之后开始看波形。LTspice默认的波形窗口会把整个仿真都显示出来可以用鼠标拖拽放大尾部区域。输出电压大约在48V到50V之间具体要看二极管的压降和变压器模型误差。如果仿真中途出现不收敛可以加一句.options plotwinsize0关闭波形压缩对收敛有帮助。还有一招是加.options maxstep50n把步长压得更小但仿真会变慢适合排查问题而不是日常使用。3.3 一屏多波形把谐振电流、励磁电流、开关节点摆在一起跑完仿真后最值得看的是这几个信号V(sw1)开关节点波形、I(L1)谐振电流、I(Lp)励磁电流、V(out)输出电压。把它们都添加到同一个波形窗口里你会立刻明白LLC的“气质”。开关节点V(sw1)是一个0到400V的方波方波的上升沿和下降沿对应两只MOS管的开关动作。谐振电流I(L1)在接近fr1工作频率时是漂亮的正弦波而励磁电流I(Lp)接近三角波。这两个电流在开关切换之前会短暂相交相交点就是变压器原边停止向副边传递能量的时刻也就是副边整流二极管电流过零点附近。输出电压V(out)稳定在48V附近纹波很小。如果电压明显偏低或偏高先看频率是否真的接近fr1再看负载电阻和匝比是否匹配。LLC开环仿真就像开环buck一样输出不等于目标值很正常只要知道当前工作点的增益就行。判断ZVS的波形组合是V(sw1)加高端驱动V(sw1)V(g1)。你看上管开通的时刻在驱动Vgs上升沿之前V(sw1)应该已经从低电平爬升到接近400V说明上管漏源电压已经为零。如果Vgs上升沿和V(sw1)跳变同时发生说明ZVS没实现这时候效率肯定不行需要调死区或励磁电感。3.4 怎么快速扫频找到增益曲线的感觉LLC的增益随频率变化这是它最重要的特性。LTspice里做频率扫描有两种方式一种是用.step扫描频率参数每次跑一个频率然后记录稳态输出电压另一种是一次性跑多个频率用.meas自动提取稳态值。我建议先用手动扫频做一次每次只改一个频率比如跑60k、80k、100k、120k、150k五个点。你会看到同一个电路在80k和100k附近输出比较高频率拉高到120k以上输出明显掉下去。这就是增益曲线在起作用。如果想一次性跑完可以把驱动源的周期参数化.param freq100k .param period1/freq .param dt100n V1 g1 sw1 PULSE(0 12 {dt} 20n 20n {period/2-dt} {period}) V2 g2 0 PULSE(0 12 {period/2dt} 20n 20n {period/2-dt} {period}) .step param freq list 60k 80k 100k 120k 150k这样每次仿真跑一个频率LTspice会自动依次跑完。输出波形会叠在一起你可以直观看到同一电路在不同频率下的输出电压差异。要注意扫频时每个频率都要跑足够长才能进入稳态所以仿真时间不能太短建议.tran设置为0 8m 5m让后3ms作为测量区间。如果你愿意再进阶一点可以用.meas自动把每种频率的稳态输出平均值抓出来.meas TRAN Vout_avg AVG V(out) FROM6m TO8m跑完看log文件里每个.step对应的Vout_avg就能画出一条“频率-增益”曲线比单纯看一堆波形直观得多。4. 从半桥改成全桥四个开关管的故事4.1 全桥LLC的电路与驱动时序全桥LLC就是把半桥的一只桥臂变成两只桥臂总共四只MOS管原边接在SW1和SW2两个开关节点之间。对角的两只管同时导通Q1和Q4一组Q2和Q3一组两组互相交替原边得到幅度为±Vin的方波。驱动时序上Q1和Q4同相位Q2和Q3同相位两组之间相差180°。拿刚才的100kHz、10us周期继续举例驱动可以这样写V1 g1 sw1 PULSE(0 12 0.1u 20n 20n 4.9u 10u) V2 g2 sw2 PULSE(0 12 5.1u 20n 20n 4.9u 10u) V3 g3 0 PULSE(0 12 5.1u 20n 20n 4.9u 10u) V4 g4 0 PULSE(0 12 0.1u 20n 20n 4.9u 10u)Q1和Q4同时导通电流从母线正端经过Q1、变压器原边、Q4回到地Q2和Q3同时导通时电流反向。四个管子都留了相同的死区ZVS的判断方法和半桥一样只不过要把SW1和SW2两个节点都盯着看。这里插一句很多人会把全桥LLC和移相全桥弄混。两者桥式结构看起来差不多但全桥LLC是调频控制而移相全桥是定频PWM移相控制工作原理完全不同。在LTspice里做LLC仿真时你用的是调频驱动别不小心写成移相模式了。4.2 同一个谐振槽接到全桥会发生什么如果把刚才半桥那套谐振槽和变压器直接搬到全桥输入还是400V你会看到输出电压几乎翻倍。原因是半桥的开关节点SW1只在0和400V之间摆动原边方波的基波幅度约等于200V全桥的SW1和SW2一个在400V、一个在0V原边得到的方波幅度是400V。变压器原边电压高了一倍副边输出自然也跟着高一倍。所以在全桥设计里想要维持48V输出变压器匝比要相应调整。刚才半桥用4:1全桥在相同输入电压下需要大约8:1折算回来副边电感就是Lp/64约1.95uH其他参数不用动。这个“半桥改全桥必须改匝比”的点很多人第一次仿真时都会忽略结果看到输出电压不对就开始怀疑拓扑。全桥的真正优势不是让输出电压翻倍而是同样输出功率下原边电流减半开关管的电流应力更小更适合做千瓦级以上的大功率电源。如果你只需要几百瓦半桥足够了强行上全桥只会增加驱动复杂度和成本。4.3 半桥与全桥怎么选对比表项目半桥LLC全桥LLC原边方波幅度约Vin/2基波约Vin基波典型功率范围几十瓦到几百瓦千瓦级以上开关管数量2只4只变压器利用率较低高驱动电路复杂度1路高边1路低边2路高边2路低边匝比需求较低较高适用场景适配器、充电器、中小功率模块通信电源、车载充电、大功率DC-DC选哪种拓扑核心看功率等级和成本。半桥够用的情况下没必要上全桥全桥多出来的两只管子、驱动隔离、PCB面积都是成本。功率到千瓦以上半桥的原边电流太大开关管并联又麻烦这时全桥的优势就体现出来了。4.4 全桥仿真的几个操作细节全桥仿真比半桥更容易出现波形不对称。四路驱动信号只要有一路延迟设置得不整齐原边正半周和负半周的电压伏秒就可能不等变压器会出现偏磁。LLC因为有谐振电容Cr串联在原边天然具备隔直能力所以偏磁问题会被缓解但驱动不对称依然会在谐振电流上留下二倍频波动。另外一个细节是全桥的四个开关管都要并联体二极管否则死区时间里续流路径会断。很多人图省事只给上管并了二极管结果下管一关波形全乱还以为是参数问题。还有全桥满载电流比半桥大很多仿真里如果用理想二极管做副边整流压降小输出电压会略高于真实情况。想更贴近实际就用带压降的二极管模型或者在输出端加一个0.5V左右的电压源模拟整流压降具体看你要研究什么问题。5. 仿真中容易踩的坑与排查思路5.1 仿真不收敛先别急着改电路LTspice玩LC谐振类电路最常见的报错是时间步长过小或者不收敛。这时候不要慌按顺序排查。先检查是不是没有体二极管导致死区电流断路这是LLC仿真里最高频的坑。再检查脉冲源死区有没有把上下管搞到直通直通瞬间相当于母线短路仿真直接崩。如果电路看起来没问题就降低仿真难度。把4.8Ω负载先改成100Ω轻载情况下LLC更容易起振或者把电压从400V先降到100V试跑跑通了再加回满载和全电压。这就像修水管先把总阀关小找准漏点再开大。还有一招是给谐振电感或变压器原边串联一个毫欧级小电阻比如10mΩ既能模拟实际绕线电阻又能在数值上帮助收敛。加了之后波形会有微小变化但不会影响你对原理的理解。5.2 看不到ZVS多半是模型和死区的问题波形都出来了但开关管就是没ZVS这是最常见的问题。先看死区时间。死区太短谐振电流来不及把开关节点电压拉到目标电平自然就ZVS失败。把死区从100ns加大到300ns试试如果波形改善了说明是死区不够。再看励磁电感。Lm越大励磁电流越小死区里能用来抽走Coss电荷的电流就越小。你如果发现轻载时ZVS失效把Lm调小一点比如从125uH改成80uH励磁电流变大ZVS范围就宽了但环流损耗也会增加。这是LLC设计里一个典型的“鱼和熊掌”问题仿真里可以直观看到折中。还有一种情况是MOS管模型没有Coss。ZVS的前提是开关节点上有电容可以被充放电如果模型太理想节点电容几乎为零就不可能看到缓慢的电压斜坡。建议在MOS管的漏源之间外接一个几百pF的电容来模拟Coss或者直接用带寄生参数的MOSFET模型。5.3 启动冲击太大、稳态太慢怎么办LLC启动瞬间谐振电容Cr上的电压从0开始建立谐振电流会出现很大的冲击尖峰这是正常现象。LTspice里如果只是看稳态波形可以直接把仿真时间拉长等5ms之后再观察。但如果你在研究软启动仿真里就需要模拟频率从高频逐步下降到目标频率的过程。最简单的方法是给输入电压做一个斜坡。把VIN设成PULSE(0 400 0 1m)让母线电压在1ms内从0慢慢升到400V冲击电流会小很多。或者利用LTspice的startup选项让电源电压从0开始上升。输出电容初始电压也可以设置比如.ic V(out)48让仿真直接从接近稳态的位置开始省去前面的过渡段。稳态太慢还有一种可能是负载太重、谐振腔品质因数太高导致收敛到最终值需要很多个周期。这种情况可以把RL先调大比如4.8Ω改成48Ω轻载时系统更容易稳定下来。5.4 波形看多了怎么快速确认工作点每次跑一批参数都要看一堆波形时间长了容易看花眼。我习惯用两个硬指标判断LLC是否工作正常第一看输出电压是否稳定第二看谐振电流波形是否“干净”。如果谐振电流明显畸变说明频率离fr1太远或者进入了不期望的工作区。还想更快的话就用.meas把关键数值自动记录下来比如谐振电流峰峰值、输出电压平均值、死区结束瞬间的开关节点电压。把这些数值集中到log文件里扫参数对比就方便多了。我自己调试LLC的时候常用一个参数列表配多个.step来跑然后用.meas输出结果表这样能快速锁定哪个频率点效率最高、哪个参数组合的ZVS边界最宽。关于LTspice保存文件多的问题我也多说一句。工程目录下出现的.plt、.raw、.log、.net都是正常文件.plt是波形显示设置.raw是波形数据。想给别人复现你的仿真把.asc和.plt发过去就够了.raw反而因为太大不适合发。如果你要用外部SPICE模型把.lib文件放到工程目录再用.include语句引用就能像用内置元件一样仿真。我自己第一次调半桥LLC时最深刻的教训就是“建模越简单越要留意模型之外的现实约束”。体二极管没加上去波形怎么调都不对一旦把续流路径补全整个电路立刻就正常了。后来从半桥改成全桥反而没花多少时间因为原理没变只是管子多了一半、驱动多了一半。你在LTspice里把半桥跑顺之后可以试着把匝比改成全桥方案再把四路驱动按对角关系接好一次就能跑通。这个经历比背十遍增益公式都管用。