
1. 项目思路与整体架构LLC谐振变换器这一类拓扑在电源圈子里早就不是什么新鲜词了但每次聊起来还是值得好好拆一遍。原因很简单——它是目前中大功率隔离电源里综合表现最均衡的软开关方案之一既能做到原边开关管的ZVS零电压开通又能通过合理的谐振参数设计让副边二极管或同步整流管实现ZCS零电流关断开关损耗被压得极低效率曲线在整个负载范围内都比较好看。这几年新能源汽车的车载充电机OBC、服务器电源、通信电源、LED大功率驱动甚至很多工业辅助电源都在用LLC做核心功率级。这次我做的这个半桥LLC谐振变换器加上同步整流的MATLAB仿真本质上是一个“从零开始把主电路、控制环路、驱动逻辑、同步整流时序全部搭起来”的完整过程。半桥LLC相较于全桥LLC开关管数量少一半成本更低适合中功率200W到1kW左右的应用缺点是变压器励磁电流需要双向流动对变压器设计有一点要求同时原边开关管关断时会有一定的关断损耗。不过在仿真层面这些都不是问题我们反而可以通过波形把每一个模态看得清清楚楚。1.1 为什么选择半桥LLC而不是其他拓扑很多人一上来就想做全桥LLC觉得全桥功率大、更“高级”。但在实际项目中如果输出功率在几百瓦级别半桥LLC的综合性价比更高。原因有三个。第一半桥LLC只有两个开关管驱动电路和PCB布局难度都降了一个档次配套的自举驱动比如IR2110、UCC27714这类芯片方案非常成熟调试时少了一半的故障排查点。第二半桥LLC的谐振腔电压摆幅是Vdc/2以母线中点为参考工作时变压器励磁电流是对称的双向电流磁芯利用率得到保证不至于出现单端拓扑那样的偏磁问题。第三半桥LLC天然适应宽范围输入电压配合PFM脉冲频率调制控制可以做到从满载到轻载的全程软开关。再说直白一点很多刚接触谐振变换器的人一上来就被全桥LLC那一堆驱动时序和死区设置搞晕了。半桥LLC的驱动逻辑只有两路互补PWM一看就懂一调就会用来做LLC的原理验证和参数学习再合适不过。1.2 同步整流在半桥LLC里的作用与实现方式LLC的副边如果用电感整流二极管比如肖特基二极管在低压大电流输出场景下比如输出48V、24V二极管的正向导通损耗会非常可观。拿一个100W/12V输出的电源来举例输出电流接近8.3A变压器副边绕组电流有效值更高哪怕用正向压降只有0.4V的超级肖特基整流损耗也有3.3W以上效率直接被拉低两个百分点。这时候改用同步整流MOSFET利用其导通电阻极低毫欧级的特性导通损耗能降到0.5W以内效率的提升非常明显。同步整流的实现方式在仿真里可以简化处理但在原理上还是得讲清楚。同步整流MOSFET的驱动信号必须与原边开关管的驱动信号保持严格的时序关系——当原边Q1导通时能量通过变压器传给副边副边某个同步整流管应该导通原边死区时段副边两个同步整流管应该同时导通或关断具体取决于谐振电流方向。这个时序关系在仿真里可以通过检测变压器副边电压极性来生成驱动信号也可以用原边驱动信号加上延时补偿来模拟。2. 半桥LLC谐振变换器的工作原理拆解2.1 谐振网络与增益特性半桥LLC的谐振腔由一个谐振电感Lr、一个谐振电容Cr和一个变压器励磁电感Lm组成。Lr和Cr构成一个固定的串联谐振点fr1而LrCrLm构成另一个更低的串联谐振点fr2。两个谐振点的存在让LLC变换器可以在不同的频率段表现出不同的增益特性。当开关频率等于fr1即纯Lr-Cr谐振频率时变换器增益约为1此时谐振电流完全正弦化变压器原边电流在死区时间内能自然续流实现ZVS的条件最理想。当开关频率低于fr1高于fr2时变换器处于升压模式增益大于1适合输入电压偏低的场景。当开关频率高于fr1时变换器降压运行增益小于1。这种“一个拓扑两段特性”的增益曲线让LLC天生适合宽范围输入电压的场景。仿真中我们可以通过扫描方式在MATLAB里写一个for循环改变开关频率并记录输出电压来绘制出这条增益曲线直观看到频率对增益的影响。这个工作量不大但对理解LLC的工作机理非常有帮助。2.2 半桥LLC的工作模态分析一个完整的开关周期内半桥LLC大致经历6个模态在fr1附近运行且忽略死区时的简化分析模态1Q1导通谐振电流正向流动能量从输入侧通过变压器传递到副边Cr被充电此时Lr-Cr串联谐振。模态2Q1关断进入死区。此时谐振电流不能突变继续沿原方向流动给Q1的结电容充电、给Q2的结电容放电。当Q2的结电容放电到零即Vds20时Q2的反并二极管自然导通为后续Q2的ZVS开通创造了条件。模态3Q2导通此时Q2是零电压开通的谐振电流方向已经开始反向Cr放电变压器副边另一个整流管导通。模态4~6Q2关断死区续流Q1再次ZVS开通周而复始。这个过程中最核心的一点是死区时间必须大于Q1/Q2结电容的充放电时间否则无法实现ZVS。死区太短开关管硬开通死区太长会损失有效占空比和增益还可能让励磁电流反向流动增加损耗。仿真时我们可以很容易地扫描不同死区时间对效率的影响这个参数在硬件调试中往往很难调整一般由驱动芯片的固定死区决定仿真里可以先摸清楚最佳值。2.3 为什么说ZVS是LLC的灵魂ZVS零电压开关的含义是开关管在开通之前其漏源电压已经降到零开通时不产生电压-电流重叠损耗。对于MOSFET来说开通损耗主要取决于开通瞬间的Vds×Id面积如果Vds已经为零开通损耗理论上为零关断时因为有并联电容缓冲关断损耗也比较小。实现ZVS需要两个条件一是死区时间内必须有足够的能量将开关管的结电容电荷抽取或注入到零电压状态二是这个能量来自谐振电感Lr包括变压器漏感和外加谐振电感中储存的电流。条件一对应的就是Lm不能太大Lm太大励磁电流太小死区时间内没有足够的电流来充放电结电容ZVS就失效了。仿真里观察ZVS有一个简单的办法看开关管Q1的Vgs和Vds波形当Vgs从低变高即开通时刻时Vds应该已经等于零或接近零。如果看到Vds在开通瞬间还有一个明显的电压平台那么ZVS失败需要减小Lm或增大死区时间。3. MATLAB/Simulink仿真模型搭建详解3.1 仿真工具选型与基本设置我用的是MATLAB R2021a版本里的Simulink配合Simscape Electrical早期叫SimPowerSystems工具箱。搭建LLC仿真模型主要用到的模块有直流电压源DC Voltage Source、MOSFET带二极管、电容/电感/电阻、变压器多绕组、脉冲发生器Pulse Generator或PWM发生器、电压/电流测量模块、以及一些数学运算模块。仿真求解器设置非常关键。LLC是强谐振电路主电路开关频率通常在100kHz左右为了看清开关瞬态的细节仿真步长不能太大。我这里用的是ode23tb刚性求解器最大步长设为1e-7秒0.1微秒相对误差1e-4。如果没有设置合适的求解器步长很容易出现波形发散震荡越来越剧烈或者仿真报错。这里额外说一下Simulink里默认的求解器是ode45它对于LLC这类的刚性系统并不友好尤其在含有二极管和MOSFET换向死区时ode45很容易卡死或产生数值振荡。换到ode23tb或者ode15s这类刚性求解器后绝大多数发散问题都能解决。这也是我踩过几次坑之后换来的经验。3.2 主电路搭建的完整步骤我建议把仿真模型分成三个层次来搭主功率电路、控制电路、测量与显示电路。第一步搭主功率电路。直流输入源选400V正端接一个母线电容470uF左右到地然后通过两个串联的电容各220uF做半桥母线中点。Q1和Q2采用Simscape Electrical里的MOSFET选择带内部体二极管的那种Q1源极接Q2漏极这个连接点即为半桥中点。半桥中点通过谐振电容Cr选择Film Capacitor类型ESR设置小一点连接到LrLr再连接到变压器原边绕组的同名端。变压器选Mutual Inductor或Linear Transformer。LTLinear Transformer模块可以设置变比、漏感和励磁电感。我一般把Lr的物理谐振电感放在变压器外部变压器的漏感设置得比较小比如2uH励磁电感Lm则直接设置在变压器参数里。这样做的好处是Lr和Lm的数值彼此独立参数扫描时不容易搞混。变压器副边设两个绕组中间抽头结构。两个副边绕组各自串联一个同步整流MOSFET这里在仿真里可以用二极管代替先验证主电路是否正确然后共同接到输出电容和负载电阻上。第二步搭控制电路。半桥LLC用PFM控制通过一个压控振荡器VCO或者自建的VCO模块把误差放大器的输出电压转换为对应的开关频率。我习惯用SIMULINK自带的VCO模块它输入一个模拟电压输出对应频率的方波。当输出电压偏低时误差电压升高VCO输出频率降低LLC增益上升输出电压回升反之亦然。然后把这个方波信号经过一个死区时间生成电路拆成两路互补的PWM即Q1的驱动信号和Q2的驱动信号。死区模块可以用Transport Delay加逻辑运算也可以用Dead Zone模块或者直接用Simscape里的MOSFET Driver来设置死区。第三步接测量显示。在输入侧、谐振腔、变压器原边、副边、输出负载处分别加上电压表和电流表。特别注意电流表必须串联在支路上在Simscape里是串接在物理信号通路里电压表是并联在节点上的。我一般会把关键信号输出电压、输出电流、谐振电感电流、谐振电容电压、原边MOSFET漏源电压、驱动信号导出到MATLAB工作区方便后续用脚本画图分析。3.3 反馈环路与同步整流驱动电路的建模反馈环路在LLC仿真里要格外留意因为LLC的增益随负载变化非常剧烈反馈调频既要反应快又要稳定。我用的是一个典型二型补偿器PI加一个零点也就是误差放大器加RC反馈网络。输入信号是输出电压采样值经过分压电阻网络缩放到2.5V基准附近与参考电压2.5V相减得到误差经过补偿器后输出一个控制电压控制电压直接驱动VCO。这个环路的效果是输出电压偏高时控制电压升高开关频率升高增益下降输出电压回落。同步整流驱动信号的生成我在仿真模型里是这样处理的通过检测变压器副边电压极性来生成驱动信号。具体做法是把副边电压信号通过一个零比较器Sign模块或实际做一个带滞回的运算放大器模型当副边电压为正时输出高电平驱动同步整流管Q3导通当副边电压为负时输出低电平Q3关断同时Q4的驱动信号为此信号的取反。这种方式可以模拟自驱式同步整流的逻辑。一个容易踩的坑是直接用副边电压的过零来做比较时在电压接近零的过渡阶段比较器容易产生振荡导致同步整流管高频开关效率不升反降。解决方法是加入滞回比较器用Relay模块设置滞回宽度把滞回范围设置到副边电压幅值的5%左右比如副边电压幅值100V时滞回电压设为±5V。4. 关键参数计算与仿真结果分析4.1 谐振参数设计方法与实例这里我得给出一个具体的设计实例让读者能照着算。假设设计规格如下输入直流电压380V~420V标称400V输出电压48V输出功率500W谐振频率100kHz最低开关频率70kHz最高开关频率150kHz。第一步确定变压器的变比。让变换器在谐振频率fr1处工作于增益为1的状态下此时半桥LLC的增益表达式为G (Np/Ns) × (Vin/2) / Vout。所以变比n Np/Ns 2 × Vout / Vin 2 × 48 / 400 0.24。这是原边比副边的匝比意味着副边绕组匝数是原边的大约4.17倍。具体到变压器设计中原边如果绕20匝副边就是83匝左右绕整数值。第二步选取谐振电容Cr。谐振电容的电压应力跟谐振电流的积分有关一般按经验选取Cr的阻抗在谐振频率下与Lr的阻抗相等即串联谐振条件可以先假设Lr50uHCr 1 / (4π² × fr² × Lr) 1 / (4 × 9.87 × (100k)² × 50u) ≈ 50nF。这个值落在常规薄膜电容的可用范围内。Lr的选择要配合最大增益需求。当输入电压最低380V且满载时需要的最大增益Gmax (2×Vout) / (Vin_min×n) 96/(380×0.24) 1.053。这时候需要工作频率略低于fr1利用Lm的参与来升压。增益和频率的关系通过基波近似FHA方法可以得到一个解析公式仿真时我们可以直接扫频得到精确曲线然后再反过来微调参数。第三步确定Lm。Lm的影响主要是保证ZVS。根据经验Lm与Lr的比值k Lm/Lr通常在3~8之间。k值越大则增益曲线越陡峭轻载时越不容易进入容性区但ZVS范围会被压缩k值越小励磁电流大轻载损耗偏高。这里我取k5Lm250uH。这个值在仿真实测中ZVS条件在50%以上负载范围内都能满足。4.2 仿真波形解读与效率计算仿真跑完稳定后重点看几个波形谐振电感电流iLr和励磁电感电流iLm的波形。两条线应该大致呈“双半波”的形状当负载变重时iLr与iLm之间的差值即传到副边的电流变大。原边MOSFET的Vds和Vgs波形。确认Q1的开通瞬间Vds是否为零这一条前面已经专门说过是验证ZVS的关键。副边同步整流管的驱动和电流波形。同步整流管的导通时序应该与变压器副边电压极性一致如果出现明显的提前导通或滞后导通都会在电流波形上看到畸变效率也会随之下降。输出电压纹波。稳态下48V输出电压的纹波应该控制在100mV以内如果纹波太大检查输出电容容值和ESR或者在仿真回路里增加一个LC滤波。效率计算方面可以在仿真模型里给输入侧和输出侧分别加功率测量模块Power Measurement或者用电压乘电流再取平均值的方法效率η Pout / Pin。我这次仿真在满载500W条件下原边用理想MOSFET模型导通电阻Rds_on50mΩ副边同步整流管Rds_on10mΩ实测效率约96.4%。如果把所有的开关管换成默认的二极管效率只有92.1%左右。这4个百分点的效率差距就是同步整流的价值所在。4.3 参数扫描频率、负载与增益的关系为了给读者一个直观的认识我在仿真里做了一个扫频测试固定输入400V输出目标48V负载从10%满载到100%满载逐步增加记录每个负载点下反馈环路稳定后的实际开关频率。结果如下表负载百分比输出功率(W)实际开关频率(kHz)效率(%)10%50约14289.225%125约12893.550%250约11395.875%375约10596.2100%500约9896.4可以看到一个很有意思的规律负载越重开关频率越低。这正好符合LLC的增益特性——重载时需要更大的增益来维持输出而低频段接近fr2的方向增益更高。同时满载效率比半载略高这是因为半载时虽然电流小但频率高导致开关损耗占比相对升高。轻载效率偏低是LLC的固有特性这也是很多电源在轻载时采用间歇模式Burst Mode的原因。5. 常见问题与仿真调试技巧实录5.1 仿真发散、波形振荡的排查思路几乎每个做LLC仿真的人都会遇到波形发散或者仿真卡死的情况。根据我的经验90%的问题出在三个地方。第一个是求解器的设置问题前面已经说过换成刚性求解器并限制最大步长能解决大部分问题。手动检查的方法是如果仿真开始后波形在同一频率附近疯狂振荡且幅度不断增大大概率是数值问题而非电路问题。第二个是初始条件问题。Simulink在启动瞬间电容器电压为零电感电流为零这可能导致第一个开关周期内电流冲击过大触发保护或发散。解决办法是给电路设置合理的初始条件母线电容初始电压设为400V输出电容初始电压设为48V或者通过负载分压估算的稳态值。设置方法是在电容模块的Initial voltage参数里直接填入。第三个是驱动信号异常。检查一下驱动信号是否在仿真开始就正常输出PWM如果VCO的初始频率设置不当或者反馈环路正反馈接反了很容易把误差信号的极性搞反整个系统会在启动瞬间失控。我见过很多次因为误差放大器输入极性错误导致反馈变成正反馈输出电压直接冲到几百伏然后数值发散。5.2 同步整流时序不准时的现象与对策如果副边同步整流管没有同步导通或提前关闭会导致两个严重后果一是输出能量回收失败副边电流在关断瞬间产生较高的尖峰电压可能击穿功率管二是反向电流流过同步整流管的体二极管导致体二极管反向恢复损耗增加效率反而下降。仿真中这种现象表现为副边电压和电流波形在换向处有“毛刺”或尖峰振荡同时同步整流管电流波形出现反向的小脉冲。对策不外乎两种一是提高比较器的滞回电压防止零界点抖动二是给同步整流驱动信号加一段可调延时让驱动严格跟随副边电压的稳定过程。仿真里这两种方法都可以方便地通过加Transport Delay延时模块来调节而硬件调试时则需要在驱动芯片外围调RC参数难度会大很多。锁相环PLL方式虽然更精确但建模复杂度高一般可以在仿真验证阶段先不管。5.3 几个实用调试技巧第一个技巧用示波器Scope模块时可以在仿真中途停下查看各条曲线的实时数值。如果发现某条波形超出了预期量程比如谐振电容电压飙升到几千伏不用急着改电路先用Display模块查看对应节点的电压/电流量级判断是否数值错误。第二个技巧把关键参数输出电压纹波、效率、ZVS裕量导出到MATLAB工作区用脚本参数扫描自动计算。我把LLC模型的开关频率、Lr、Lm做成变量然后写一个for循环跑10组参数自动统计这10组参数下的效率和ZVS状态最后画出一张对比图。这个做法能非常直观地选出最优参数组合比手动一个个改参数试要高效得多。第三个技巧仿真模型里的理想MOSFET和真实MOSFET模型差异很大。如果用理想开关Ideal Switch来代替MOSFET那仿真速度和收敛性都会好很多但这样看不到Vds电压毛刺和ZVS的真实细节。建议验证控制逻辑时用理想开关验证效率和温升时改成带Rds_on和结电容的MOSFET模型分阶段建模可以节省大量调试时间。6. 后续扩展方向做完这套半桥LLC加同步整流的仿真下一步值得尝试的方向大概有三个。第一个方向是优化同步整流的控制逻辑从自驱式改为他驱式通过比较副边电流过零信号来生成驱动这样在高频重载下效率能再提升一截同时对死区宽容度更高。第二个方向是把模型扩展到全桥LLC或者三电平LLC研究多个谐振腔耦合时的均流和均压问题。全桥LLC的建模思路和半桥完全一致只是在驱动逻辑上多了一组互补信号仿真平台的复用性很高。第三个方向是把仿真模型的结果应用到硬件原型机上用DSP比如TMS320F280049C实现PFM算法配合UCC25600这类专用LLC控制芯片完成闭环验证。仿真里的反馈环路参数可以先用Ziegler-Nichols整定法初调再在硬件上看波形微调补偿器零点位置。从仿真到硬件参数调整的路径越平滑开发的坑越少。我在整个调试过程中最深的感受是LLC仿真模型其实比Buck/Boost仿真要“娇气”不少动不动就发散或者不收敛但这恰恰逼着你把原理搞透彻。每一次发散背后都有原因要么是参数不合理、要么是时序没对、要么是数值设置不当。当你把这些问题一个个解决掉对LLC的理解已经远超“电路大概能工作”的水平。对于那些刚接触LLC仿真的人建议不要一开始就追求模型完美先从理想器件把环路跑通再逐步加入寄生参数和损耗模型每一步对比波形、对比效率这样学到的东西最扎实。