
1. 为什么要在LTspice里折腾一个双脉冲波形发生器搞功率电子的朋友对双脉冲测试肯定不陌生。简单说它就是给IGBT或者SiC MOSFET这类开关器件加两个连续脉冲通过观察第二个脉冲开通和关断瞬间的电压电流波形来评估驱动电阻选得合不合适、关断过压有多严重、开关损耗大概在什么量级。这套测试在实验室里通常靠一台信号发生器加一块驱动板来完成但如果你手头没有信号发生器或者想在做硬件之前先把驱动参数摸个大概那在LTspice里搭一个双脉冲波形发生器就是性价比最高的路子。LTspice本身是ADI原Linear Technology出的一款免费SPICE仿真软件体积小、速度快、模型库丰富在电源和功率电子圈子里几乎是标配工具。它的优势在于收敛性好、支持自定义子电路、波形查看器用起来顺手而且可以无缝导入各家厂商的SPICE模型。用它来做双脉冲测试最大的好处是你不需要焊板子、不需要担心炸管改一个电阻值重新跑一遍只要几秒钟特别适合在驱动电路定型之前做参数扫描。这篇文章面向的是已经会用LTspice画基本电路、但还没系统做过双脉冲仿真的朋友。我会从波形发生器的原理讲起一步步带你把脉冲源搭出来再接到IGBT半桥电路上最后给出驱动电阻和栅极电容的调试方法。中间会涉及子电路封装、参数化扫描、模型导入这些实操细节也会分享一些我自己踩过的坑比如脉冲宽度算错导致根本看不到续流、栅极电阻太小引起振荡之类的。整套流程走下来你应该能独立搭出一个可复用的双脉冲测试平台。2. 双脉冲测试到底在测什么先搞清楚原理再动手2.1 双脉冲测试的物理过程拆解双脉冲测试的核心思路是利用电感负载的续流特性来制造可控的电流条件。典型电路是一个半桥结构上管IGBT处于关断状态或者用二极管代替下管是被测器件负载是一个大电感。第一个脉冲让下管导通电感电流线性上升上升到目标值后关断下管电感电流通过上管的反并联二极管续流。经过一个短暂的死区时间后第二个脉冲到来下管再次开通此时电感电流已经建立下管开通瞬间会承受一个较大的电流变化率这就是我们想观察的开通过程。第二个脉冲关断时电感电流再次换流到上管二极管下管承受关断电压尖峰这就是关断过程的观察窗口。理解这个过程对设置脉冲参数至关重要。第一个脉冲的宽度决定了测试电流的大小计算公式是I Vdc × t1 / L其中Vdc是母线电压t1是第一个脉冲宽度L是负载电感。第二个脉冲的宽度通常取得比较短一般刚好够观察到开通过程完成即可太长了会增加不必要的损耗太短了可能还没进入稳态就结束了。死区时间的设置也有讲究要保证电感电流在这段时间内基本保持不变所以死区不能太长否则电流会明显衰减。2.2 为什么选择LTspice而不是其他仿真工具市面上能做电力电子仿真的工具不少比如PSIM、PLECS、Saber、Simulink等。PSIM和PLECS在电力电子领域确实很专业开关器件模型做得好仿真速度也快但它们都是商业软件授权费用不低。Saber功能强大但学习曲线陡峭而且同样价格不菲。Simulink虽然学校里有授权但搭一个双脉冲测试平台需要配合Simscape Electrical工具箱配置起来比较繁琐。LTspice的定位不太一样。它原本是模拟电路仿真的利器但凭借出色的收敛算法和灵活的器件建模能力在开关电源和功率电子领域也站稳了脚跟。它的器件模型可以直接从厂商官网下载比如英飞凌、意法半导体、安森美都提供LTspice可用的SPICE模型。而且LTspice支持行为级建模你可以用任意数学表达式来描述一个信号源这对做双脉冲波形发生器来说太方便了。另外LTspice的仿真速度在同类免费工具里算是第一梯队跑一个几十微秒的双脉冲波形通常几秒钟就能出结果。还有一点很实际LTspice的波形查看器支持FFT、积分、微分等数学运算你可以直接在波形窗口里算出开关损耗不需要导出数据到MATLAB里再处理。这对快速评估驱动参数很有帮助。2.3 双脉冲波形发生器的核心需求梳理在LTspice里实现双脉冲波形本质上就是构造一个电压源让它的输出在特定时间点跳变。听起来简单但实际做起来有几个需求要满足。第一脉冲的宽度、间隔、幅值都要能方便地调整最好是通过参数化变量来控制这样改一个数字就能重新跑仿真。第二脉冲的上升沿要足够陡否则驱动信号的边沿会影响开关过程的观察。第三要能方便地扩展到多脉冲或者改变脉冲极性以适应不同拓扑的测试需求。最直接的做法是用LTspice内置的PULSE电压源但标准PULSE源只能产生周期性的脉冲串要做双脉冲需要设置合适的周期和脉冲数用起来不够灵活。更好的方案是用两个PULSE源叠加或者用行为级电压源配合if语句来构造任意波形。我个人的习惯是用行为级源因为它的逻辑最直观想改哪里就改哪里而且可以封装成子电路反复调用。3. 手把手搭建双脉冲波形发生器3.1 用行为级电压源构造双脉冲信号打开LTspice新建一个原理图从元件库里拖一个bvbehavioral voltage source出来。右键点击这个源在Value栏里输入表达式。双脉冲的数学描述其实很简单在t1到t1t2时间段内输出高电平在t3到t3t4时间段内再输出一个高电平其余时间输出低电平。用LTspice的if函数可以写成嵌套形式Vif(timet1, if(timet1t2, Vg, if(timet3, if(timet3t4, Vg, 0), 0)), 0)这里的t1、t2、t3、t4、Vg都是参数可以在原理图上用.spice directive定义。比如.param Vg15 .param t110u .param t25u .param t320u .param t42u这样定义的好处是你可以在一个地方统一修改所有参数而且可以用.step命令对某个参数进行扫描。比如想看看不同驱动电阻下的开关波形只需要把电阻值也参数化然后加一条.step param Rg list 5 10 15 20LTspice就会自动跑四遍仿真把结果叠加显示。行为级源的输出阻抗默认是零这在实际中当然不可能但对于驱动信号来说问题不大因为后面通常会接一个驱动级或者直接接栅极电阻。如果你担心理想源太理想可以在输出串联一个小电阻比如1欧姆模拟驱动器的输出阻抗。3.2 参数化脉冲宽度与死区时间的计算方法脉冲宽度的计算不能拍脑袋要根据你的测试目标来定。假设母线电压Vdc400V负载电感L100uH你想测试的电流是20A那么第一个脉冲的宽度t1 I × L / Vdc 20 × 100e-6 / 400 5微秒。这个计算假设电感电流线性上升实际上由于IGBT的导通压降和线路寄生电阻电流上升会略慢于理想情况所以实际脉冲宽度可以稍微留一点余量比如取5.5微秒。死区时间的设置要考虑电感电流的衰减。在死区期间电感电流通过上管二极管续流二极管的正向压降会导致电流缓慢下降。衰减的时间常数大约是L/R其中R是回路的总电阻包括二极管导通电阻、线路电阻和电感本身的直流电阻。对于100uH的电感如果回路总电阻是0.1欧姆时间常数就是1毫秒远大于典型的死区时间通常1到5微秒所以死区期间的电流衰减可以忽略不计。但如果你用的电感很小比如只有几微亨那就要注意了死区时间不能太长。第二个脉冲的宽度t4通常取1到3微秒就够了目的是观察开通过程的电流上升和电压下降。如果你想同时观察关断过程那第二个脉冲的宽度要足够长让电流达到稳态后再关断。一般来说t4取2微秒左右是个不错的折中。3.3 把波形发生器封装成可复用的子电路每次画电路都重新搭一遍波形发生器太麻烦了LTspice支持子电路封装可以把常用的功能模块做成一个独立的.asc文件或者直接写成.subckt网表。我习惯用.subckt的方式因为这样可以在同一个原理图里定义多个实例而且参数传递很方便。具体做法是在原理图上放一个spice directive写入.subckt double_pulse out com params: Vg15 t110u t25u t320u t42u B1 out com Vif(time{t1}, if(time{t1}{t2}, {Vg}, if(time{t3}, if(time{t3}{t4}, {Vg}, 0), 0)), 0) .ends double_pulse然后在主电路里用X指令调用X1 gate emitter double_pulse Vg15 t15u t25u t315u t42u这样就把波形发生器变成了一个三端器件输入端是电源和地输出端是脉冲信号。子电路的好处是你可以把它保存到一个独立的.lib文件里以后任何项目都可以通过.include指令调用。注意在子电路定义中引用参数时需要用花括号把参数名括起来否则LTspice会把它当成节点名而不是参数值。这个坑我踩过好几次报错信息又不明显排查起来很费时间。4. 把波形发生器接到IGBT半桥电路上4.1 IGBT模型的选择与导入方法LTspice自带的元件库里没有IGBT模型需要自己导入。最可靠的方式是从器件厂商官网下载SPICE模型。以英飞凌为例他们的官网提供每款IGBT的LTspice模型下载通常是一个.lib文件或者.subckt网表。下载下来之后在LTspice里用.include指令引入.include IKW40N60H3.lib然后在原理图上放一个nigbt符号LTspice自带右键修改它的Value为模型名称比如IKW40N60H3。如果厂商提供的是子电路模型而不是直接的模型卡那就需要用X指令来调用具体格式参考模型文件里的注释。如果找不到现成的LTspice模型也可以用LTspice自带的理想IGBT模型来近似。在元件库里有nigbt符号它的参数包括Vce(sat)、Vge(th)、Cgc、Cge、Cce等可以根据数据手册手动填入。这种做法的精度当然不如厂商模型但对于评估驱动参数的趋势来说够用了。4.2 半桥电路搭建与关键节点标注半桥电路的搭建不复杂但有几个细节要注意。上管IGBT的集电极接母线正极发射极接桥臂中点下管IGBT的集电极接桥臂中点发射极接母线负极。负载电感一端接桥臂中点另一端接母线正极或者负极都可以取决于你想测的是开通还是关断。通常的做法是电感接在桥臂中点和母线正极之间这样下管开通时电感电流从母线正极经过电感流向桥臂中点再经过下管到负极。母线电容不能省它负责在开关瞬间提供低阻抗的电流回路。在仿真里可以用一个理想电压源并联一个大电容来代替电容值取100微法到1毫法都可以太小了会导致母线电压波动影响测试精度。实际测试中母线电容的选取要考虑纹波电流和电压跌落仿真里可以适当简化。关键节点要标注清楚方便后续看波形。至少需要观察的节点包括下管的栅极电压Vge、集电极-发射极电压Vce、集电极电流Ic以及电感电流IL。在LTspice里你可以直接点击节点来查看电压电流则需要点击元件或者用表达式来查看。对于IGBT的集电极电流如果模型内部没有引出电流探针可以用一个0V电压源串联在集电极回路里来测量。4.3 驱动电路的简化建模与栅极电阻设置实际的双脉冲测试中驱动电路通常是一个专用的栅极驱动芯片比如英飞凌的1ED系列或者TI的UCC系列。在仿真里没必要把驱动芯片的每个内部细节都建出来用一个简化的推挽输出级就够了。具体做法是用两个行为级电压源或者两个MOSFET组成推挽分别控制开通和关断。更简单的做法是直接用波形发生器的输出经过一个栅极电阻Rg_on接到栅极再用一个二极管和电阻Rg_off并联来实现开通和关断电阻的分离。栅极电阻的典型值在5到30欧姆之间具体取决于IGBT的栅极电荷和你想达到的开关速度。电阻越小开关越快但过压和振荡的风险也越大。在仿真里可以先取一个中间值比如10欧姆然后通过参数扫描来观察不同电阻值下的波形变化。栅极-发射极之间通常还会并联一个电阻用来在驱动信号丢失时确保IGBT可靠关断这个电阻一般取10k欧姆左右。提示在LTspice里做参数扫描时如果扫描的是电阻值建议用.step param命令配合花括号引用而不是直接修改电阻的Value。这样可以在同一个仿真里生成多条曲线方便对比。5. 仿真设置与波形调试的实操细节5.1 瞬态仿真参数设置与收敛性调整LTspice的瞬态仿真设置直接影响结果的准确性和仿真速度。对于双脉冲测试仿真时间要覆盖整个脉冲序列通常从0开始到第二个脉冲结束后几微秒。比如t15ut25ut315ut42u那么总仿真时间至少要到20微秒。最大时间步长Maximum Timestep的设置很关键设得太大会导致波形失真设得太小会拖慢仿真。经验值是取开关周期的百分之一到千分之一对于微秒级的脉冲最大步长取10纳秒到100纳秒比较合适。收敛性问题在开关电路仿真里很常见尤其是当电路包含多个非线性元件和快速跳变时。如果遇到收敛失败可以尝试以下几个方法在.tran语句里加上uic选项使用初始条件给关键节点加初始电压或者调整LTspice的积分方法在Control Panel的SPICE选项卡里把Integration Method从Trapezoidal改成Gear。另外在栅极串联一个小电阻比如1欧姆也有助于改善收敛。5.2 观察开通与关断过程的波形技巧看波形的时候不要一上来就全屏显示那样细节全丢了。正确的做法是先看整体波形确认脉冲时序和电流幅值大致正确然后用鼠标框选感兴趣的时间段进行放大。开通瞬间的波形通常在第二个脉冲的上升沿附近关断瞬间在第二个脉冲的下降沿附近。放大之后你可以用光标测量具体的数值比如开通延迟时间、电流上升时间、电压下降时间、关断电压尖峰等。LTspice的波形查看器支持多条曲线叠加显示你可以把不同栅极电阻下的Vce波形放在一起对比一眼就能看出哪个电阻值下过压最严重。还可以用数学表达式来计算开关损耗比如对Vce和Ic的乘积进行积分再除以开关周期就得到了平均开关损耗。这个功能在评估驱动参数时非常实用。5.3 用参数扫描快速找到最佳栅极电阻参数扫描是LTspice里最强大的功能之一。假设你想找到最佳的栅极电阻可以这样操作先把栅极电阻的值设为一个参数比如{Rg}然后在原理图上加一条.step param Rg list 5 10 15 20 25。运行仿真后LTspice会自动跑五遍每遍用不同的电阻值。在波形窗口里你可以用下拉菜单切换不同的运行结果也可以把所有结果叠加显示。判断最佳电阻值的标准通常是综合开关损耗和电压尖峰。电阻太小开关快但过压高电阻太大过压低但开关损耗大。你可以画一条曲线横轴是电阻值纵轴是开关损耗和电压尖峰的加权和找到最小值对应的电阻。当然实际选择还要考虑EMI和热设计仿真结果只是一个参考。注意参数扫描会增加仿真时间如果电路比较复杂建议先用较粗的步长扫一遍找到大致范围后再细化。另外扫描的变量不要太多否则组合爆炸仿真时间会变得不可接受。6. 常见问题与排查技巧实录6.1 波形不出来或者全是直线怎么办这是新手最常遇到的问题。首先检查波形发生器的表达式有没有写错特别是if语句的嵌套层次和括号匹配。LTspice对语法要求比较严格少一个括号就会报错。其次检查仿真时间是否覆盖了脉冲发生的时间点如果仿真时间设得太短脉冲还没出现就结束了。再检查电源电压是否加到了正确的节点上有时候原理图连线看起来连上了实际上节点名不一致导致电路没有供电。还有一个隐蔽的问题行为级电压源的输出默认是浮地的如果你没有给它提供参考地输出就是不确定的。确保行为级源的负端接到了电路的地节点。另外如果用了子电路封装检查一下子电路的端口定义和外部连接是否对应。6.2 仿真速度慢或者不收敛的解决方法仿真速度慢通常是因为时间步长设得太小或者电路里有太多高频振荡。先检查最大时间步长如果设到了皮秒级那肯定慢。对于微秒级的双脉冲测试最大步长取10纳秒到100纳秒足够了。如果电路里有寄生振荡可以在栅极串联一个小电阻来阻尼或者在仿真里加一些寄生参数来模拟实际线路。不收敛的问题更棘手一些。除了前面提到的调整积分方法和加初始条件还可以尝试给所有节点加一个很大的电阻到地比如1G欧姆这有助于LTspice找到直流工作点。另外检查电路里有没有悬空的节点或者短路的回路这些都会导致收敛失败。6.3 如何根据数据手册调整模型参数厂商提供的SPICE模型通常已经比较准确但有时候你需要根据实际测试条件做一些调整。比如数据手册上的开关时间是典型值而你的实际驱动条件可能不同。这时候可以调整模型里的栅极电荷参数或者输入电容参数让仿真结果更接近实际。具体做法是打开模型文件找到Cge、Cgc、Cce等参数根据数据手册的电容-电压曲线进行修正。如果用的是LTspice自带的理想IGBT模型参数调整就更直接了。Vce(sat)影响导通损耗Vge(th)影响阈值电压Cgc影响米勒平台。你可以先按数据手册的典型值填入然后跑一遍仿真对比开关波形和数据手册的曲线再微调参数直到吻合。常见问题可能原因排查方法波形全为零表达式语法错误检查if语句括号和参数引用脉冲时序不对参数定义错误核对t1/t2/t3/t4的数值和单位仿真不收敛电路存在悬空节点加1G欧姆到地电阻开关波形振荡栅极电阻太小增大Rg或加栅极电容电流波形失真时间步长太大减小Maximum Timestep模型报错模型文件路径不对用绝对路径或放在同一目录7. 进阶玩法让双脉冲测试平台更通用7.1 支持SiC MOSFET和GaN器件的模型替换双脉冲测试平台搭好之后换器件其实很简单只需要把IGBT模型替换成SiC MOSFET或者GaN HEMT的模型。不过要注意SiC和GaN的开关速度比IGBT快得多栅极驱动电压范围也不同。SiC MOSFET通常需要18到20伏的开通电压和负压关断GaN HEMT的栅极电压范围更窄通常在6伏左右。在仿真里要相应调整波形发生器的输出幅值和栅极电阻。另外SiC和GaN的开关振荡问题比IGBT更严重因为它们的开关速度更快对寄生电感更敏感。在仿真里可以加入一些寄生电感来模拟实际线路比如在集电极和发射极回路里各串联几纳亨的电感。这样仿真结果会更接近实际也能提前发现潜在的振荡问题。7.2 用LTspice的FFT功能分析开关噪声频谱LTspice的波形查看器内置了FFT功能可以对开关波形做频谱分析。具体操作是在波形窗口里右键点击波形选择FFT然后设置窗函数和点数。对于双脉冲测试你可以对Vce波形做FFT看看开关瞬间产生的高频噪声主要集中在哪些频段。这对EMI滤波器的设计很有参考价值。需要注意的是双脉冲不是周期信号直接做FFT意义不大。更好的做法是把双脉冲扩展成连续PWM波形然后再做FFT。你可以在波形发生器里把脉冲数增加或者直接用PWM源来代替双脉冲源。这样得到的频谱更能反映实际工作条件下的噪声特性。7.3 把仿真结果导出做进一步分析LTspice支持把波形数据导出为文本文件方便在MATLAB或者Python里做进一步处理。导出方法是在波形窗口里点击File菜单选择Export data as text。导出的文件包含时间列和各个节点的电压电流值。你可以用Python的numpy和matplotlib来读取和绘图也可以做更复杂的计算比如计算开关损耗的精确值、拟合热模型等。我个人的习惯是在LTspice里做初步的波形观察和参数扫描然后把关键数据导出到Python里做统计分析和报告生成。这样既利用了LTspice的仿真速度又发挥了Python的数据处理能力。整个流程走下来从搭电路到出报告通常一两个小时就能搞定比实际做硬件测试快得多。提示导出数据时注意选择合适的时间范围不要导出整个仿真时间否则文件会很大。另外LTspice导出的数据默认是科学计数法在Python里读取时要注意格式转换。8. 一些个人体会和踩坑记录我在刚开始用LTspice做双脉冲仿真的时候犯过一个很低级的错误把第一个脉冲的宽度设成了10微秒结果电感电流直接饱和了波形完全不对。后来才意识到电感电流的上升是线性的但电感的饱和电流是有限的仿真里用的理想电感没有饱和特性所以电流会一直上升。实际测试中电感饱和会导致电流急剧增大可能损坏器件。所以在仿真里也要注意电感的额定电流必要时可以给电感加一个饱和模型。另一个坑是栅极电阻的功率。仿真里电阻是理想的不会烧毁但实际测试中栅极电阻的功率不能忽略。特别是在高频开关时栅极电阻上的功耗可能达到几瓦需要选足够功率的电阻。我在仿真里通常会顺便看一下栅极电阻的电流波形估算一下功耗避免实际测试时电阻过热。还有一点关于模型导入的有些厂商提供的SPICE模型是加密的LTspice可能无法直接读取。遇到这种情况可以尝试用其他仿真软件打开模型文件看看能不能导出为未加密的格式。或者直接联系厂商的技术支持他们通常会提供LTspice兼容的版本。最后分享一个小技巧在LTspice里按Ctrl右键点击元件可以快速查看和修改元件的所有参数比双击再找参数快得多。另外按F2可以快速放置元件按F3可以快速连线这些快捷键用熟了能省不少时间。LTspice的快捷键可以在Control Panel里自定义你可以根据自己的习惯改成顺手的键位。