ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

LTspice仿真RC吸收电路,解决开关管关断电压尖峰

LTspice仿真RC吸收电路,解决开关管关断电压尖峰 开关电源、电机驱动、逆变器这类东西做久了谁都躲不过一个麻烦开关管关断瞬间那个又尖又高的电压尖峰。运气好是波形难看运气不好直接炸管。早年我调板子全靠示波器加一堆电阻电容上去试一边焊一边换效率低不说还经常烧器件。后来我把RC吸收阻尼电路搬进LTspice做仿真分析才发现这东西原来可以在电脑上提前跑明白。这篇文章就把我从搭建电路、设置仿真参数、读取波形到排查问题的完整流程讲一遍想入门LTspice或者正在被尖峰电压折腾的朋友照着这套思路操作基本能少走一半弯路。1. 先从原理说起RC吸收阻尼电路到底在解决什么问题1.1 开关管关断时的电压尖峰是怎么冒出来的要理解RC吸收电路在做什么就得先搞清楚尖峰电压的来源。任何实际的开关电源或驱动电路里导线本身有寄生电感变压器有漏感这些电感虽然数值不大但在开关管关断的那一瞬间作用非常明显。开关管导通时电流从漏极流向源极把电感中储存了磁场能量。关断动作发生后开关管通道迅速进入高阻状态电流想要从某个值瞬间变为零电感不允许电流突变于是它会在开关管两端感应出一个反向电动势方向和母线电压叠加。学过电路基础都知道电感两端电压等于 L 乘以 di/dt关断速度越快电流变化率越大产生的尖峰电压就越高。这个现象可以用一个生活场景来类比你正在用水管浇花突然把阀门拧死水管会剧烈抖动一下甚至发出“砰”的一声这就是水锤效应。电流和水流一样有惯性开关管就是那个阀门寄生电感就是那根水管尖峰电压就是水锤在管壁上产生的压力冲击。管子承受的电压等于电源电压加感应电压一旦超过器件的额定耐压就可能雪崩击穿一次两次没事次数多了管子就废了。在示波器上看到的典型波形是开关管漏源电压在关断瞬间冲出一个尖峰紧接着以正弦衰减的形式振荡。振荡的频率取决于寄生电感与电路等效电容如果没有阻尼元件这个振荡会持续很久还会带来额外的EMI辐射干扰。所以RC吸收电路的核心目的就两个第一把尖峰峰值压到安全范围内第二给振荡回路提供阻尼让振荡尽快衰减。1.2 RC吸收支路的能量走向与工作过程RC吸收电路的结构非常简单就是一个电阻和一个电容串联然后并联在开关管的漏源两端或者并联在整流二极管两端原理是相通的。它本身没有独立性必须依托于开关器件工作所以很多人把它叫缓冲电路或者snubber电路。当开关管导通时漏源压降接近零吸收支路两端的电压也接近零电容里几乎没有电荷这条支路基本不工作不影响主回路的效率。真正的动作发生在关断瞬间开关管开始关断电流从开关管通道向吸收支路换流寄生电感中的能量开始给电容充电。由于电容两端的电压不能突变所以开关管电压的上升速度会被电容延缓尖峰被削掉一截。电容充满电荷之后接下来的事情就交给了电阻。寄生电感和电容之间会发生能量交换形成一个LC振荡回路如果没有电阻能量会在电感与电容之间来回转移波形表现为持续振荡。电阻在这里充当阻尼元件把一部分能量以热量形式消耗掉每一次振荡都被衰减一点几个周期之后能量耗尽电压稳定下来。所以R和C的角色完全不同。电容负责转移能量、抑制电压突变电阻负责消耗能量、抑制振荡。两者缺一不可只加电容不加电阻会出现严重的振铃只加电阻不加电容关断瞬间的电压上升率没有任何改善电阻在高压高频下还会产生额外损耗。还有一个细节容易被忽略开关管重新开通时电容上还留着上次关断时充的电荷这些电荷会通过开关管放电产生一个较大的放电电流尖峰。这个电流会叠加在开关管的开通电流上R越大、C越大放电时间越长开通损耗就会越大。1.3 初始参数怎么估先给一个能跑的起点很多初学者问RC吸收的参数怎么定我的习惯是不要指望一次算准先估一个量级再通过仿真扫描精确优化。因为实际电路中的寄生电感很难精确测量公式算出来的值只能作为起点。常用的估算法基于能量守恒。设寄生电感为Ls关断前电流为I允许的电压过冲为ΔV则电容C可以按下面的关系估算1/2 × Ls × I² 1/2 × C × ΔV²也就是说寄生电感储存的能量全部转移到电容上对应电容充电后的电压增量。推出来就是 C Ls × I² ÷ ΔV²。举个例子漏感10微亨关断电流5安培允许的过冲电压30伏算下来C大概是 10e-6 × 25 ÷ 900约等于0.28微法也就是280纳法左右。电阻的选取思路是让RC支路接近临界阻尼。LC回路的特征阻抗是 sqrt(Ls/C)把R取到这个值附近振荡衰减最快。按上面C取280nF、Ls取10uH来计算R就是 sqrt(10e-6 ÷ 280e-9)大概6欧姆左右。但实际工作中很少直接取这个理论值因为R太小放电电流会很大R太大又起不到阻尼作用。工程上常用的起始范围是电阻10到100欧姆电容1到10纳法然后根据仿真波形微调。这里有个重要提醒RC吸收电阻是实实在在消耗功率的功率损耗大致等于 0.5 × C × V² × f其中V是电容充电的电压摆幅f是开关频率。电容一旦取得大高频下的损耗会迅速上升电阻温度和整机效率都会受影响。所以选型不只看波形还要算功耗。2. 在LTspice里把仿真电路搭起来2.1 元件放置与电路连接不用很复杂就能跑LTspice界面乍一看比较朴素但常用操作其实非常顺手。我的建议是先把仿真原理图简化到最小可运行状态把寄生电感、开关管、RC吸收、负载电阻和直流电源搭出来就行不需要一开始就上完整的主控芯片和反馈环路。打开LTspice新建一个原理图放置元件用快捷键最方便。电阻按R电容按C电源按V地线按G这些都是默认的快捷键比点菜单快得多。需要额外添加电压控制开关时按F2打开元件库在[SW]目录里能找到sw这个压控开关模型不过直接用自带N沟道MOSFET更贴近实际在元件库的[Power Products]或[MOSFET]目录下选一个通用型号就行。电路连接我习惯按照主功率回路来布局直流电源正极出来接寄生电感电感出来接开关管的漏极开关管源极接地负载电阻并联在电源输出两端作为电流通路RC吸收支路并联在开关管的漏源之间也就是漏极接电阻再接电容电容另一端接源极。画完原理图后每个元件都可以右键编辑参数比如电感的数值10u负载电阻10吸收电阻47吸收电容10n。有些朋友习惯给元件标上清晰的名字这个动作看着不起眼但对后续查看波形和参数扫描非常有帮助。右键点击元件标号可以修改为Lleak、Rsnub、Csnub这类有意义的名称这样波形图里的标识一目了然不用每次都在一堆R1、C1、L1里猜谁是谁。2.2 脉冲源与开关管模拟真实的开关过程RC吸收电路是在开关过程中工作的所以仿真里必须有一个周期性开关的信号源。LTspice里的电压源可以设置成PULSE类型也就是方波脉冲这就是网上很多人问的“方波发生器在哪”的答案不是单独找一个方波发生器元件而是把电压源类型改成PULSE。双击电压源符号在Advanced选项里把功能设置为PULSE然后填写参数。举个例子PULSE(0 10 0 10n 10n 5u 10u)这一串参数从左到右分别是初始电压0V脉冲电压10V延迟时间0上升时间10纳秒下降时间10纳秒脉冲宽度5微秒周期10微秒。这个信号的意思是每10微秒一个周期前5微秒输出10V高电平后5微秒输出0V低电平。上升和下降时间设成10纳秒是为了模拟真实驱动芯片的开关速度。如果用N沟道MOSFET作为开关管就把这个脉冲电压直接加到栅极和源极之间高电平期间管子导通低电平期间管子关断。由于栅极驱动电压是10V大多数功率MOSFET都能完全导通。如果用的是压控开关sw则需要右键给它配置一个模型比如.model MYSW SW(Ron1m Roff10Meg Vt2.5 Vh0.5)这里的Ron是导通电阻1毫欧Roff是关断电阻10兆欧Vt是阈值电压2.5伏。LTspice里给压控开关加模型的方法是在原理图上放置一个独立的.model指令或者打开元件属性直接指定模型名称。主回路的电源我通常用一个直流电压源比如48V或者100V根据你想仿真的系统电压来定。为了模拟变压器漏感或引线电感在电源和开关管之间串一个几微亨到几十微亨的电感。没有这个寄生电感RC吸收电路就没有用武之地尖峰根本不出现这恰恰是很多新手仿真出来没有波形变化的原因。2.3 仿真指令设置.tran与.step的填写要点LTspice的仿真不是按一下运行按钮就自动跑而是需要添加仿真指令。瞬态分析指令是.tran这个最常用。点击工具栏上的小人图标或者按S键输入指令可以快速添加。.tran指令的标准写法是.tran 0 100u 0 50n四个参数分别是步进时间通常写0即可让软件自动决定、总仿真时间100微秒、开始保存数据的时间0、最大时间步长50纳秒。最大时间步长这个参数很关键它决定了仿真结果的细腻程度。如果想让波形更平滑把最大步长设小一点比如10纳秒代价是仿真时间变长。如果只是想快速看趋势可以设大一点比如200纳秒。参数扫描指令是.step它需要和.tran配合使用。比如我想看不同吸收电容对尖峰的影响可以在原理图上把电容的容值写成一个变量名假设写成{Cval}然后添加指令.step param Cval list 1n 4.7n 10n这个指令会让LTspice把Cval依次取1纳法、4.7纳法、10纳法并分别做三次瞬态仿真最后把所有波形叠加显示在同一张图上。需要注意的是参数扫描与瞬态仿真必须同时存在单独.step不会产生任何结果。还有两个常用选项值得记住。.options plotwinsize0可以让仿真数据保存时不做压缩波形放大后细节依然清晰。.options abstol1e-12可以提高电流精度在处理微小漏电流时有用。这些指令放在同一个指令框里用换行分隔就行。3. 仿真结果的读法与参数优化3.1 关键波形怎么看尖峰、振荡与开关过程跑完瞬态仿真后LTspice默认会显示节点电压波形。想查看某个具体位置的电压把鼠标移到导线上光标会变成红色电压表图标点击一下就出现该节点的电压波形。想看电流波形把鼠标移到元件引脚上光标变成电流表图标点击就能显示流过元件的电流。我最先关注的是开关管漏源电压波形。从波形图上能清楚看到电压在关断瞬间快速上升冲出一个尖峰后回落并伴随振荡。尖峰的峰值、振荡持续的时间、振荡的幅度这三个指标直接决定了RC吸收电路到底行不行。理想的波形是尖峰被削平到一个可接受的高度振荡在几个周期内衰减到几乎为零。漏源电压的尖峰幅度要按百分比衡量。比如母线电压100V如果关断尖峰冲到150V说明过冲50%这在多数情况下是不允许的。一般工程经验是控制在10%到20%以内也就是尖峰不超过110到120V。超过这个范围就要考虑增大吸收电容或者减小吸收电阻。同时要看流经RC吸收支路的电流。电容电流在关断瞬间会出现一个比较陡的脉冲这是能量转移的正常过程。但如果这个脉冲幅度大得离谱说明电容容量取得太大充电电流过高。这个电流不仅增加损耗还会在电阻上产生额外的压降反过来影响吸收效果。电流波形配合电压波形一起看才能对电路的动态过程有完整的判断。3.2 用.step做参数扫描找到R和C的最优区间LTspice做参数扫描是一件非常省心的事情。我常用的方法是先固定电阻扫描电容确定电容量级之后再固定电容扫描电阻。这样一步步逼近最优值比同时扫两个参数更容易理解。比如固定R为47欧姆把电容用变量{Cval}表示添加.step param Cval list 1n 2.2n 4.7n 10n 22n跑完以后能看到五条漏源电压波形叠在一起。电容小的时候尖峰压不住波形最高电容大到一定程度尖峰下降就不明显了说明已经到了边际效应区间再增大容量只会增加损耗和成本。这时候取曲线出现明显拐点的那个值就行。电阻的扫描思路类似。固定电容把电阻设为变量{Rval}用.step param Rval list 10 22 47 100 220。电阻太小阻尼强但关断瞬间电流冲击大电阻太大LC振荡衰减慢波形拖尾很长。最优的电阻值是波形振荡最少、拖尾最短的那个区间通常就是特征阻抗 sqrt(Ls/C) 附近。这里我提供一个我实际用过的对照表供参考条件是电源电压100V、寄生电感10uH、开关频率100kHz、关断电流约5A吸收电阻吸收电容尖峰电压振荡衰减情况电阻功耗估算10 Ω4.7nF132V衰减偏快电流冲击略大0.11W47 Ω4.7nF118V振荡2~3个周期后消失0.09W100 Ω4.7nF126V振荡衰减较慢拖尾明显0.08W47 Ω1nF145V尖峰偏高仍有振荡0.02W47 Ω10nF112V波形平稳电流冲击增加0.19W这个表格只是一个示例数据具体数值会随你的寄生电感和系统电压变化但趋势是明确的电容增大尖峰降低损耗上升电阻过小或过大波形都不理想。仿真扫描的意义就是迅速找到这种趋势中的拐点让选型从拍脑袋变成看数据说话。3.3 电阻功耗与发热估算不能只看波形好看有些朋友看到波形压住了觉得大功告成直接忽略了电阻的热问题。实际上RC吸收电阻是高频功率消耗器件它的发热量直接决定系统可靠性和效率这一点我在实际项目中踩过坑。电阻消耗的功率主要来自两部分第一部分是关断期间寄生电感能量通过电容转移时在电阻上产生的损耗第二部分是开关管开通瞬间电容充电电荷通过开关管和电阻形成的放电回路产生的损耗。总体可以用近似公式估算P ≈ C × V² × fV是电容两端的电压变化幅度近似等于开关管承受的电压f是开关频率。举个例子电容10纳法电压100伏开关频率100千赫兹算出来功率就是 10e-9 × 100² × 100e3 0.1瓦。如果开关频率提高到500千赫兹同样是10纳法功率就变成0.5瓦电阻必须选1瓦以上的额定功率还要留出散热余量。在LTspice里查看电阻功耗有一个简单的方法点击选中电阻按Alt键同时把鼠标放在电阻上光标会变成一个温度计图标点击后显示瞬时功率波形。用Ctrl键加鼠标左键可以打开测量光标直接读出稳态平均功率。仿真出来的功耗值和公式计算值相互印证这样选电阻就不会出现焊上去没几分钟就烫到不能碰的情况。另外提醒一点电容的耐压等级也要注意。吸收电容在关断瞬间承受的电压可能超过母线电压加上过冲尖峰所以耐压选择要留足余量。一般建议电容耐压至少是母线电压的两倍比如母线100V选200V以上的电容比较稳妥。这个细节在仿真里看不到做实物板子时必须考虑。4. 常见问题与排错技巧实录4.1 仿真不收敛、时间步长过小怎么办LTspice用久了最烦的一个报错是“Time step too small”也就是时间步长过小导致的仿真中断。这个问题在含有开关器件的电路里非常常见尤其是加了RC吸收之后振荡频率很高仿真器为了精确计算必须把步长压得非常小结果就是跑到一半直接不收敛。遇到这种情况我的第一反应是先检查有没有把最大时间步长设置得过小。比如硬把最大步长设成1纳秒而仿真总时长是几毫秒计算量会非常巨大也容易出现数值问题。把最大步长放宽到10纳秒或者50纳秒通常是有效的。如果放宽步长还是不行那就要检查电路里是否存在异常大的dv/dt或di/dt。栅极驱动信号的上升时间如果设得太夸张比如1皮秒仿真器会在脉冲沿上疯狂细分步长最后直接崩溃。把上升时间改成合理的几纳秒甚至几十纳秒问题往往就解决了。还有一个办法是切换求解器在主菜单Simulate里的Control Panel选SPICE选项卡把Solver改成Alternate很多顽固的不收敛问题用交替求解器都能扛过去。4.2 波形振荡不停或者尖峰压不住是哪里错了仿真跑通了但波形不理想这时候不要急着调参数先检查电路连接和元件性质。振荡完全不停最典型的错误是RC吸收支路没有构成有效回路比如电阻和电容虽然放了但它们之间的连接线断开了或者电容接地位置不对导致能量转移路径被切断。从原理图上仔细看一遍确认吸收支路确实并联在开关管漏源两端。尖峰压不住除了电容容量不够这个常见原因外还有可能是模型参数太理想。仿真里的MOSFET如果用的是接近理想的开关模型关断速度极快di/dt极大相应地尖峰就会很夸张。真实的功率管有栅极电容和内部寄生参数开关过程没有仿真里那么陡峭。这种情况下可以在驱动回路里串一个栅极电阻比如10欧姆人为放慢开关速度这样仿真结果会更接近实际。还有一种情况是寄生电感值设得太大导致能量巨大而RC吸收参数正在合理范围内再怎么调也压不住。这时候需要回头确认漏感或引线电感的量级是否合理。我见过有人随手填了个1毫亨的电感上去结果仿真波形尖峰几乎要冲破天际其实实际电路中不可能有这么大的寄生电感。4.3 第三方模型、稳压管与PWM相关的一个坑LTspice自带模型库虽然很丰富但它主要覆盖自己公司相关的器件以及一些通用的二极管、三极管和MOSFET。很多朋友想用TI、英飞凌或者其他厂商的具体型号直接搜名字搜不到就以为LTspice不支持其实不是这样。LTspice支持导入第三方SPICE模型。你只需要去器件厂商官网下载对应的SPICE模型文件通常是.lib或者.mod文件然后放在仿真工程目录下在原理图上添加指令.include model_name.lib然后在放置元件的对话框里选择“nmos”或“diode”等通用符号右键编辑属性把Value填写成模型文件里定义的模型名称即可。这个过程对新手来说有点绕我第一次用的时候也花了不少时间但掌握之后扩展性非常好。类似的稳压二极管的模型也可以用.model命令自定义比如.model MYZEN D(Is1e-14 BV12 IBV5m)这表示一个击穿电压12伏的稳压管模型电流参数设在5毫安。LTspice库里也有现成的稳压管模型只是需要在选择二极管时搜索zener关键字。另外有人问LTspice怎么生成PWM或者怎么找比较器型号。其实生成PWM最直接的办法就是用PULSE电压源前面已经说过。想要类似比较器的行为可以用LTspice的behavioral voltage source也就是B元件通过表达式实现输出翻转。这些技巧和RC吸收仿真不是直接相关但在搭一个完整开关电源仿真的时候经常会用到这里一并列出来供参考。4.4 LTspice日常使用小技巧分享几个我实际用下来非常顺手的小技巧对提高仿真效率很有帮助。第一波形图里多组曲线对比时可以用鼠标左键点击曲线图左下角的图例来区分颜色点击一下就会加粗方便截图放汇报材料。按住波形名称拖动可以把它拖到另一个波形面板里单独查看避免两条曲线量纲不同挤在一张图上看不清。第二测量波形参数不需要肉眼读数。在波形图里按Ctrl键加鼠标左键会显示测量光标可以读出具体坐标值。配合.meas指令可以自动计算上升时间、峰值、平均值等指标比如.meas TRAN Vpeak MAX V(drain)仿真结束后打开SPICE Error Log就能看到Vpeak的数值这是批量对比不同参数时的利器。第三LTspice的界面默认是全英文网上有汉化包但我的建议是直接用英文版。原因不是汉化不好而是很多教程、论坛讨论、模型文档用的都是英文术语用英文界面反而能减少概念理解上的偏差。把几个常用菜单记熟实际使用并不困难。第四仿真文件保存成.asc格式后是纯文本可以直接用记事本打开查看和修改。这个特性非常方便遇到一些小改动直接改文本就行不用打开图形界面。另外把仿真文件放在固定目录模型文件也用相对路径引用换电脑或者发给同事时不容易出现找不到文件的问题。最后再说一下RC吸收电容的布局问题。虽然这是仿真之外的事情但对仿真结果有直接影响真实电路里RC吸收支路要尽可能靠近开关管引线越短越好否则吸收支路本身的寄生电感会让仿真和实测出现很大差距。我在实际做板子时就因为吸收电阻离管子远了那么几厘米示波器上的尖峰比仿真高出一大截后来把元件挪近了才正常。仿真是个很好的起点但最终还是要用测试数据来验证两手抓才能把电路做扎实。
返回列表