尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

LTSpice下VIPERGAN50TR准谐振反激电源仿真:从模型导入到波形分析

LTSpice下VIPERGAN50TR准谐振反激电源仿真:从模型导入到波形分析 最近在搞一款基于VIPERGAN50TR的50W USB PD快充方案板子还在改版我就先在LTSpice里把整个准谐振反激拓扑跑通了。说实话这颗芯片和普通反激控制器不太一样它内部集成了650V的GaN功率管开关速度比传统Si MOSFET快一个量级如果不先在仿真里把驱动时序、谷底导通、反馈环路这些关键点验证一遍直接打样回来大概率要对着示波器加班。这篇文章就是把我在LTSpice里用官方SPICE Model做VIPERGAN50TR仿真的完整过程记录下来包括模型怎么装、电路怎么搭、参数怎么算、波形怎么看以及我踩过的几个坑。做电源设计的朋友尤其是刚开始接触GaN反激仿真的可以直接照着这套思路去复现。1. 项目背景与整体设计思路为什么非要在LTSpice里跑一遍VIPERGAN50TR1.1 VIPERGAN50TR是什么它和传统反激芯片差在哪VIPERGAN50TR是ST推出的一款集成了650V增强型GaN HEMT的准谐振反激控制器属于VIPerGaN系列。它的典型输出功率在宽电压输入90V到265V交流下能做到50W在230V交流输入下甚至能拉到70W左右。这颗芯片最吸引人的地方是它把GaN功率管、驱动电路、高压启动电路、准谐振控制器全部封装在一起外围电路比“控制器外部GaN管子”的方案简洁太多。从电气特性上说GaN HEMT和传统MOSFET最大的区别就是寄生电容小、无反向恢复电荷所以开关损耗和死区损耗大幅下降。VIPERGAN50TR内部那颗GaN管的栅极由专用驱动电路控制驱动强度大dv/dt可以做到非常高。这个特性在提高频率、缩小变压器尺寸的同时也对PCB布局和环路设计提出了更严格的要求。用LTSpice做仿真就是要在不烧管子、不炸机的情况下把准谐振时序、VDS尖峰、负载瞬态响应这些问题先暴露出来。1.2 为什么选LTSpice而不是其他仿真工具现在市面上能跑开关电源仿真的工具不少有PSIM、Simplis、LTspice、Multisim还有ST自己的eDesignSuite。我选LTSpice原因很简单一是免费二是官方提供了VIPERGAN50TR的SPICE模型三是LTSpice的瞬态仿真收敛性在通用SPICE工具里算比较省心的四是社区资料多遇到问题随便一搜就能找到类似案例。很多人觉得LTSpice只能做线性电路和简单开关电源仿真其实它的瞬态仿真器非常给力处理准谐振反激这种强非线性拓扑完全够用。唯一的短板是它不擅长平均模型小信号分析做环路Bode图比较费劲。但对于我们这次的目标——验证启动过程、负载阶跃响应、谷底导通逻辑、过流保护动作LTSpice绰绰有余。1.3 仿真的核心目标验证哪些关键指标在画板之前我给自己列了一个仿真验证清单启动过程是否顺畅输出电压有没有过冲或反复重启稳态下VDS波形是否出现预期的准谐振谷底导通满载到轻载跳变时输出电压的恢复时间和振铃大小输入电压拉低时芯片的过流保护和欠压保护是否按预期工作GaN开关节点的高dv/dt是否在次级二极管上引起过大的电压尖峰这个清单就是整个仿真的验收标准。后面搭电路、设参数、看波形全部围绕这五条来。仿真不是走流程是要带着问题去跑。2. 模型获取与LTSpice环境准备官方SPICE Model的安装与兼容性处理2.1 从ST官网下载VIPERGAN50TR的SPICE ModelVIPERGAN50TR的模型在ST官网上可以直接下载不需要申请权限。在产品页的“Tools Software”或者“CAD Resources”一栏里能找到“VIPERGAN50TR SPICE model”的下载链接。下载下来是一个ZIP压缩包体积不大里面通常包含两个核心文件一个.lib后缀的库文件里面是VIPERGAN50TR的PSpice子电路定义一个.asy后缀的原理图符号文件这是给原理图编辑器用的图形符号我在下载的时候习惯把ZIP包解压到专门的一个文件夹不要直接双击打开然后到处乱放。因为你后面要复制到LTSpice的库目录里路径清晰能省掉很多“找不到文件”的麻烦。2.2 模型文件结构与LTSpice的兼容性打开.lib文件看一眼你会发现它其实是一个文本文件里面用.subckt VIPERGAN50TR ... .ends定义了一个完整的子电路。这个子电路内部建模了芯片的数字控制逻辑、误差放大器、比较器、软启动电路、ZCD检测以及GaN HEMT的输出特性。这里有个关键点ST提供的PSpice模型通常使用了行为级描述和逻辑门电路这些语法在LTSpice中绝大多数都能直接兼容。我实测下来这个模型在LTSpice XVII和LTSpice 24上都能跑。如果你的LTSpice版本太老比如2016年之前的老版本有可能会报语法错误。我的建议是升级到最新版本不要在这上面浪费时间。还有一个细节如果模型内部还引用了其他子电路文件有些复杂模型会拆成多个.lib文件你需要把所有引用的文件都放到LTSpice能搜索到的目录下否则会报“Unknown subcircuit”。2.3 安装模型的具体操作步骤这个操作我拆成三步照着做就行把VIPERGAN50TR.lib复制到LTSpice安装目录下的lib\sub子目录。比如我的LTSpice装在D盘路径就是D:\Program Files\ADI\LTspice\lib\sub。如果你用的是Windows默认路径在C:\Users\用户名\Documents\LTspice\lib\sub下也可以。放进去之后LTSpice就能自动搜索到库文件。把VIPERGAN50TR.asy符号文件复制到lib\sym目录下。为了好找我在lib\sym下建了一个ST文件夹把符号放进去。这样打开元件库的时候会看到ST分类方便以后放其他ST芯片。重启LTSpice让软件刷新元件库。然后新建原理图按F2打开选择元件窗口在目录树里找到ST文件夹就能看到VIPERGAN50TR了双击放置。这里有一个常见误区很多人以为把.lib放到sub目录后就不用管了直接在原理图里放置符号结果仿真时报错“Unknown subcircuit”。原因是你还需要在原理图里手动添加.include VIPERGAN50TR.lib指令或者设置自动加载库。最简单的方法是在原理图上按S键输入.include VIPERGAN50TR.lib然后用.op或者.tran指令跑仿真。如果你用的是官方.asy符号LTSpice有时会自动关联.lib但为了保险起见我每次都会手动加.include。这个习惯帮我避免了很多莫名其妙的问题。我自己的操作习惯是把所有第三方模型都统一放在一个固定的目录比如D:\LTspiceLib\ST然后在原理图里写完整路径的.include。虽然看起来啰嗦但换电脑、换项目的时候非常清楚不会出现模型文件散落各处找不到的情况。3. 搭建完整的QR反激仿真电路从变压器参数到反馈环路的落地3.1 原理图顶层的框架设计搭建VIPERGAN50TR仿真电路思路和搭真实的反激电源一样分四个部分输入整流滤波、原边控制与功率级、高频变压器、次级整流与反馈回路。在LTSpice里输入直接用直流源代替整流桥后的母线电压。我做的是宽电压仿真最低输入85V交流整流滤波后母线最低电压大约110V直流所以仿真时可以用一个V1直流源电压设为110V代表最严苛的低压满载工况。如果想看低压启动可以用PULSE或使用Vif(time1m,110,400)这种表达式模拟母线电压从低压爬升到高压的过程这个后面在启动仿真里会用到。原边部分就是VIPERGAN50TR本身配合输入电容、VCC供电电容、反馈电路和ZCD检测电阻。次级部分用二极管整流加输出电容输出设定为20V/2.5A50W满载。3.2 变压器建模与参数计算LTSpice里怎么绕一个高频变压器这是整个仿真里最关键的一步。LTSpice没有现成的变压器元件需要用电感加耦合系数来模拟。我的做法是放置三个电感分别对应初级、次级和辅助绕组然后通过一个K语句把它们耦合在一起。先算参数。VIPERGAN50TR工作在QR模式满载时最大开关频率我设定在120kHz左右。输入最低电压110V反射电压取100V那么最大占空比大约是Dmax Vr / (Vin_min Vr) 100 / (110 100) ≈ 0.475输出功率50W假设效率90%输入功率约55.5W。QR反激工作在临界模式时初级电感量可以用下面这个经验公式估算Lp (Vin_min² × Dmax²) / (2 × Pin × fsw)代入数值Lp (110² × 0.475²) / (2 × 55.5 × 120000) ≈ 205微亨我取整到220微亨留一点余量。这个数值在合理范围内实际变压器设计时再根据骨架和匝数微调。20V输出匝比n Np/Ns取5次级电感量就是Ls Lp / n² 220 / 25 8.8微亨辅助绕组给VCC供电目标电压17V左右辅助绕组与次级绕组的匝比Naux / Ns 17 / (20 0.5) ≈ 0.83折算到初级Np / Naux ≈ 6所以辅助电感量Laux Lp / 36 ≈ 6.1微亨在LTSpice里初级电感L1一端接VIPERGAN50TR的DRAIN脚另一端接输入母线。次级电感L2连接输出二极管和地。辅助电感L3一端接芯片VCC另一端接地。然后在原理图里添加耦合指令K1 L1 L2 L3 0.98耦合系数0.98是为了模拟漏感。如果你想要更精确地仿真漏感尖峰可以再加一个小电感串联在初级DRAIN端值取Lp的1%到2%也就是2到4微亨。对QR反激来说漏感直接影响VDS关断尖峰加这个小电感可让波形更接近实际。3.3 反馈环路建模TL431和光耦的简化处理反馈环路在SPICE里建模有两条路一是直接用ST或第三方提供的光耦和TL431完整模型二是用行为源做简化模型。我建议先做简化模型等主功率级仿真稳定了再换成真实模型看环路细节。简化思路是这样的输出电压经过两个电阻分压与2.5V基准比较误差通过一个运放或行为源放大然后控制光耦二极管所在支路的电流。光耦的传输特性可以用一个电流控制电流源来模拟比如PC817的CTR是50%到600%取典型值100%那么原边光耦输出集电极电流就等于控制端电流。在LTSpice里具体操作时我会放一个TL431的模型元件库里自带搜索TL431就有如果找不到可以用ST官方模型把TL431的阴极接到光耦LED的负极LED正极通过电阻连到输出电压。TL431的参考脚接分压电阻中点。光耦副边用一个受控电流源输出串联到VIPERGAN50TR的FB脚FB脚在芯片内部有上拉电流源所以光耦电流越大FB电压被拉得越低占空比越小形成闭环。这里有一个容易踩的点光耦是反相放大误差增大时光耦电流增大FB电压下降VIPERGAN50TR的占空比是随FB电压降低而减小的这个逻辑在仿真里要认真核对否则环路会变成正反馈输出电压直接飞出天际。3.4 仿真指令与时序分析设置搭建完电路就是设置仿真参数。我一般会做三个仿真启动仿真。用.tran指令时间设在30ms到50ms看输出电压和VDS从零开始的建立过程。指令写法.tran 0 50m 0 2u其中最后一项2u是最大步长这个值越小精度越高但仿真越慢。对启动过程2微秒的步长就够用了。如果发现波形乱跳再把步长缩小到500纳秒。稳态波形仿真。在启动仿真结束后如果还想看VDS细节可以把仿真起始时间设在器件已经稳定之后比如.tran 0 20m 10m 50n这条指令的含义是从10ms开始输出波形仿真到20ms最大步长50纳秒。对观察准谐振谷底导通来说50纳秒的步长基本够用。如果想看GaN开关沿的细节比如dv/dt和振铃把步长缩到5纳秒不过仿真时间会明显变长要有心理准备。负载瞬态仿真。在稳态仿真基础上把次级负载电阻用PULSE源控制。电阻不能直接加脉冲吗LTSpice支持电阻值用表达式比如R1的值设为R20/(if(time10m,1,0.1))就实现了10%到100%负载跳变。或者更简单用一个MOS管作为开关负载。4. 仿真结果解读从启动波形到准谐振谷底导通4.1 启动过程分析软启动和过冲启动仿真跑完第一件事看输出电压VOUT波形。正常的启动过程应该是输出电压平稳爬升达到20V之后几乎没有过冲或者过冲小于5%。VIPERGAN50TR内部有数字软启动占空比会从很小逐渐增大所以输出电压的爬升曲线比较光滑。如果在启动过程中看到输出电压冲到了22V、23V再掉下来说明反馈环路的补偿有问题一般是光耦回路电流建立太慢或者环路带宽不够。这时候我去检查TL431的补偿电容它连接在TL431阴极和参考脚之间作用类似于误差放大器补偿。增大这个电容可以降低环路带宽减小过冲但会让负载瞬态响应变慢需要权衡。另外启动时还要看VCC电压是否超过了芯片的欠压保护阈值。VIPERGAN50TR的VCC工作电压有一个范围如果辅助绕组电压建立太慢VCC在启动过程中会跌到UVLO阈值以下芯片进入重启循环输出电压呈现锯齿状一个周期升一点然后掉回零。这个现象说明辅助绕组匝数偏低或VCC电容偏小需要调整参数。4.2 VDS波形与谷底导通验证准谐振反激的灵魂就在VDS波形上。把仿真时间放到稳定后的几个开关周期看VIPERGAN50TR的DRAIN脚对地电压。一个完整的开关周期应该是导通期间VDS接近0V关断瞬间VDS迅速上升到Vin加上反射电压大约210V左右。由于漏感的存在VDS上升沿通常会有一个超过300V的尖峰这是正常的。随后在变压器消磁结束之后VDS开始随着LC谐振振荡电压从Vin向着振荡最低点下落这个下落的谐振谷底就是准谐振开关的机会。重点看第二次开启的时刻。正常情况VDS在振荡到大约第一个波谷的时候芯片的ZCD检测到辅助绕组电压过零点触发GaN管导通VDS被钳位到接近0V。在这个波形上你看到的是VDS在波谷处被直接截断重新开始下一个导通周期。这就是谷底导通它把开关损耗降到了最低。如果VDS波形在消磁结束后乱振荡没有出现明显一致的谷底或者谷底位置忽高忽低多半是ZCD检测电路参数不对。VIPERGAN50TR的ZCD脚通过分压电阻检测辅助绕组的电压波形分压比决定检测灵敏度。我的经验是用典型值几k到几十k的电阻分压并从芯片数据手册给的推荐值出发去微调。4.3 负载瞬态响应与环路初判负载瞬态仿真是我最喜欢的一步因为它能直观暴露出环路的问题。把负载从10%突然跳到100%观察输出电压变化。理想情况下输出电压会有一个短暂的下垂幅度在100mV以内然后在一百微秒级的时间内恢复到20V恢复过程有轻微的振铃但很快收敛。如果输出电压下垂很大超过500mV说明环路带宽偏低或者TL431的补偿电容太大。如果恢复过程出现明显的等幅振荡说明环路相位裕度不足补偿电容需要增大。这个调参过程在仿真里非常快比实测方便太多。这里说一个我自己的经验在调环路参数时我会盯着FB脚的电压波形看而不是只看输出。FB脚的波动能直接反映芯片内部误差放大器的工作状态。如果FB电压在一个周期内波动很大说明环路增益太高需要增加补偿。如果FB基本平直说明环路把误差压得很稳。4.4 过流保护动作的观察VIPERGAN50TR内部有逐周期过流保护通过检测内部功率管的电流来限制最大输出功率。在仿真里可以尝试把次级的负载电阻改得特别小比如输出短路或者过流然后看芯片是否能进入打嗝保护状态。短路仿真时输出电流会急剧增大原边电感电流峰值超过芯片内部阈值OCP比较器翻转关断GaN管。之后经过一段消隐时间芯片重新尝试启动如果短路还在就再次关断形成打嗝。在波形上表现为VDS有规律的几个脉冲然后停一段占空比极小输出电流被限制在安全范围。这里要注意官方SPICE模型对OCP的建模精度和芯片实际有一定差距仿真看到的打嗝频率只能做参考不能作为最终设计依据。但它可以帮助你检查采样电阻、变压器参数是否会让OCP在正常满载时就误触发这个判断在仿真里还是很准的。5. 常见问题踩坑实录从“Unknown subcircuit”到“Time step too small”5.1 模型导入报错Unknown subcircuit和Syntax Error第一类问题是模型根本加载不了。错误信息会在LTSpice的SPICE Error Log里显示最常见的是Unknown subcircuit: xxx这个报错九成是.include没有生效或者.lib文件的路径不对。我去检查原理图中是否加了.include VIPERGAN50TR.lib以及这个指令是否拼写错误。另一种可能是.lib文件放在某个子目录下但没有被LTSpice的库搜索路径覆盖到我一般会把它复制到lib\sub然后重新加载。第二类报错是Syntax Error通常是PSpice语法和LTSpice不兼容。ST的官方模型做了兼容处理一般不报错但如果你从第三方网站下载模型就可能遇到。解决办法是打开.lib文件定位错误的行看看是不是行为源表达式用的函数名称不一样比较常见的是LOG()函数在LTSpice里需要写成LOG10()或者单位后缀不识别。这类问题改起来不难但要耐心。5.2 仿真不收敛Time step too small的排查思路跑仿真最糟心的事就是跑到一半弹出来Time step too small; time 3.457e-003, timestep 1.2e-09然后仿真就停了。这个问题在开关电源仿真里很常见本质上是因为电路里存在一个极快的变化求解器为了保证精度被迫把步长缩小到极小最后还是溢出。处理思路从容易到复杂我按这个顺序排查先把最大步长放宽比如.tran 0 50m 0 5u能跑但改成50n就报错那问题出在步长和器件模型之间的冲突。试着增大电感模型中的串联电阻哪怕是0.01欧都能显著改善收敛性。或者在变压器次级并联一个小电阻模拟实际线圈损耗也能吸收寄生振荡。如果还不行在.tran指令里改用uic关键字跳过初始条件计算直接给电路一个状态。比如给输出电容设置初始电压IC20V让仿真从接近稳态的条件开始。最后一个手段是在.options里调整求解器参数.options reltol1e-3 abstol1e-6 gmin1e-8把reltol从默认的0.001放宽到0.003收敛机会大很多代价是精度稍差。对定性分析来说完全够用。5.3 波形异常排查无输出、VDS异常、谷底消失有时候电路搭完整了仿真也跑完了但波形明显不对。我遇到过几种典型的仿真结束输出电压一直是0。这种情况先看输入源有没有电压再看芯片的VCC有没有建立。VIPERGAN50TR有内部高压启动电路VCC电压需要达到启动阈值芯片才开始开关。如果VCC一直起不来检查VCC电容和辅助绕组连接方向的极性。辅助绕组反了VCC就是负压芯片永远启动不了。这个在仿真里非常容易踩因为电感方向不对在原理图上看不出来只有跑仿真才暴露。VDS电压飙升到几千伏。这个一般是变压器耦合方向不正确。耦合电感K1 L1 L2 L3 0.98中电感器的同名端用“·”点标注如果初级和次级同名端方向相反反激变压器的能量传输出错导致VDS尖峰巨大。把次级的点方向反过来就好。还有个比较隐蔽的问题谷底导通消失了VDS波形看起来像连续导通模式即CCM。这个不是电路错误而是负载太大或者初级电感选得太大导致变压器一直工作在CCMQR功能没有介入。检查一下负载电阻是否对应满载把负载减轻一点或者增大初级电感设计值的方向。5.4 仿真速度慢不是故障但很烦VIPERGAN50TR模型精度很高GaN管的开关沿非常快这导致仿真步长会被压得很小跑50ms的启动过程可能要十几分钟。我的做法是分阶段仿真先用较粗的步长比如5微秒跑100ms让电路完全进入稳态。然后查看输出电容电压把这个电压作为初始条件用.ic命令设置上去。再用50ns的精细步长从稳态附近开始仿真只看几十微秒的开关细节。这样既保证了精度又节省了大量时间。如果机器性能不行还有一招就是在不影响核心功能的前提下适当增大芯片周边电阻电容的阻值比如把ZCD分压电阻从10k提高到100k让寄生参数引起的振荡频率降下来这能明显加快仿真速度。但要注意改参数后要和真实电路的参数对照清楚不能为了仿真速度而让设计参数失真。5.5 常见问题速查表现象可能原因解决思路Unknown subcircuit.include指令缺失或路径错误检查.lib文件放置位置和.include写法Syntax Error模型语法与LTSpice不兼容打开.lib定位错误行修改行为源表达式Time step too small寄生振荡太强或模型过严苛放宽步长加阻尼电阻调整reltol输出电压为0VCC没建立、输入源错误检查VCC供电、辅助绕组极性VDS尖峰异常大变压器同名端错误检查K语句和电感点标记方向谷底导通消失工作点进入CCM减小负载或调整初级电感仿真极慢GaN开关沿过快分段仿真合理设置.ic初始条件这些坑我大部分都踩过每次都能从SPICE Error Log和波形图里找到线索。做电源仿真心态要稳出现报错是常态关键是会看日志、会分阶段排查。最后再分享一个小技巧。官方SPICE模型虽然精度不错但它毕竟不是实测芯片有些保护功能可能没有完整建模比如过温保护、共模干扰等。仿真结果主要用来验证系统级行为不能代替手里的实测。我现在的习惯是先用LTSpice把主拓扑、反馈环路、启动时序跑通确认设计方向没问题再动手画板子等样机回来直接用实测数据去修正仿真模型。这样一轮下来开发速度反而比单纯仿真或者单纯实测都快不少。
返回列表