ARTICLE DETAIL

资讯详情

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

开关电源振铃与尖峰抑制:LTspice中RC吸收电路的仿真分析方法

开关电源振铃与尖峰抑制:LTspice中RC吸收电路的仿真分析方法 做电源的应该都见过这个场面示波器夹上开关节点屏幕上立刻弹出一团几十兆赫兹的振铃尖峰比母线电压高出快一倍怎么调驱动都压不下去。我第一次碰到这情况第一反应是换更慢的管子结果效率掉了三个点振铃还在。后来才意识到问题根本不在开关管本身而在寄生参数。能解决这个问题的标准电路叫RC吸收阻尼电路RC snubber而检验方案最快的方法就是用LTspice做仿真分析。这篇文章我会完整还原我对一个Boost开关节点做RC吸收仿真分析的全过程包括寄生参数怎么建模、仿真指令怎么写、参数怎么扫描、损耗怎么评估以及从仿真到样机之间那些只有做过的人才知道的坑。适合正在学开关电源的工程师、想把振铃压下去的硬件开发以及一切被尖峰超压折磨过的人。读完你就能照着搭一个自己的仿真环境不用再靠手摸电容电阻碰运气。1. 开关节点上的振铃先搞懂它从哪来1.1 水锤效应电流被强行切断时会发生什么想象一根水管里水流正欢你突然用闸阀把水瞬间堵死管壁会剧烈振动甚至发出砰砰的声音这就是水锤效应。开关电源里的振铃本质上是同一件事电流的载体从MOSFET换到二极管或者从一条回路换到另一条回路时电流不能瞬间停止因为回路里藏着寄生电感。这个寄生电感来自哪里来自PCB走线、管子封装引脚、输入电容的ESL、变压器漏感。我在12V转20V的Boost节点上实测过光是一段两厘米的走线加一个SOT-23管子的封装就轻易贡献了50到150nH的寄生电感。这种量级的电感在高频开关场合完全不可忽略。当MOSFET关断时主电感电流被迫转移到二极管支路。转移过程越快寄生电感两端产生的感应电压V L × dI/dt就越大。这个电压叠加在原本的关断电压上就形成了我们看到的尖峰。尖峰之后寄生电感和开关管结电容、二极管结电容构成一个LC谐振回路能量在电感和电容之间来回倒腾就是屏幕上那团衰减很慢的振铃。1.2 振铃的频率与过冲数据会说谎吗这个LC谐振回路的频率可以估算f 1 / (2π√(L×C))拿我这次的例子寄生电感100nH开关管输出电容Coss约200pF带入公式f 1 / (2π√(100×10⁻⁹ × 200×10⁻¹²)) ≈ 35.6MHz频率越高说明寄生电感越小、节点电容越小。很多人觉得振铃频率高是好事说明寄生小这个想法要警惕——频率高只说明谐振点高幅度该超压还是超压。过冲幅度取决于谐振回路里储存了多少能量、以及回路的阻尼程度。还有一个关键量是特征阻抗Z₀ √(L/C)寄生电感100nH、电容200pF时Z₀ ≈ 22.4Ω。这个数一会儿选RC参数时很有用先记下。能量角度也很好理解关断时刻寄生电感里存的能量0.5×L×I²会全部灌进节点电容里和节点电容原有的0.5×C×V²叠加。电容电压从V变成V满足0.5×C×V² 0.5×C×V² 0.5×L×I²所以电流越大、寄生电感越大尖峰越猛。这也是为什么重载时最容易看到恐怖的过冲电压。1.3 为什么RC吸收能同时解决尖峰和振铃RC吸收电路就是一只电阻串一只电容然后并联在开关管两端也可以并联在二极管两端。它做两件事第一吸收。电容的电压不能突变把它并在开关管漏源两端后关断瞬间电感里的电流会优先灌进这个电容而不是硬砸在开关管的结电容上。由于外部吸收电容远大于结电容同样能量下电压增量小得多尖峰自然被压住。这个过程叫吸收。第二阻尼。电阻串在电容的路里当LC回路开始振铃时电流每在电感电容之间往返一次都要流过这个电阻变成热量耗散掉。振荡能量被不断抽走振铃就衰减得快。这个过程叫阻尼。所以这个名字起得很实在RC吸收阻尼电路吸收靠C阻尼靠R。设计原则也就两条Cs要远大于节点寄生电容通常取节点电容的2到10倍Rs取在特征阻抗附近Rs ≈ √(L/Cs)再用仿真精调。2. 在LTspice里搭一个能复现振铃的Boost节点2.1 为什么我选Boost而不是Buck或FlybackRC吸收在反激电源里用得最多但我不建议初学者上来就仿反激因为变压器模型会引入漏感、匝间电容这些额外变量仿真结果一多你就分不清是谁贡献的振铃。Buck又常有同步整流、自举驱动这些干扰项。Boost是最干净的实验场一个功率电感、一个开关管、一个二极管、一颗输出电容开关节点清清楚楚寄生参数可以一个个手动塞进电路里。等你在Boost上把RC吸收的原理和手感练出来了再去套Flyback的漏感模型就是顺水推舟的事。2.2 电路结构与寄生参数注入位置电路参数如下表我是按一个12V入、20V出、100kHz的CCM Boost设计的元件值说明V112V输入电源L1100µHRser0.1Ω主功率电感Lstray100nH热回路寄生电感手动注入Coss200pF开关管输出电容手动注入D11N5819肖特基二极管Cout100µFRser0.1Ω输出电容Rload22Ω负载约18W输出S1理想开关SW代替MOSFET这时候有个关键设计寄生电感放哪、输出电容放哪直接影响能不能复现真实的振铃。我把热回路寄生电感Lstray放在开关节点sw和开关管漏极m1d之间。这个位置模拟的是从二极管阳极、经过开关管、回到地的热回路寄生。关断瞬间Lstray里的电流原本是流向开关管进地的开关管一关这股电流只能掉头冲进Coss尖峰就在这里产生。Coss直接并在开关管漏源之间模拟MOSFET的输出电容。我用的是LTspice自带的电压控制开关SW它内部没有任何寄生参数开关特性接近理想。这样做的好处是所有寄生都是我手动控制的模型足够透明你一眼就能看到哪些参数在起作用。等你想精细化的时候再把SW换成厂商的MOSFET模型后面会讲。2.3 元件放置、脉冲源与仿真指令在原理图里操作大概是这个流程按F2打开元件库依次放voltage电压源、inductor、cap、di、sw、res。二极管选1N5819库里自带。SW这个元件要从[SW]里选它四个引脚两个是开关路径两个是控制端。开关路径接m1d和GND控制端接脉冲源Vg和GND。脉冲源就是你的PWM发生器。网上总有人问LTspice方波发生器在哪其实就是voltage元件右键把函数设成PULSE就行。我这次的驱动是PULSE(0 12 0 5n 5n 4u 10u)意思是0到12V上升沿5ns下降沿5ns高电平4µs周期10µs正好100kHz、40%占空比的方波。电源放置后别忘了放地快捷键G。用Label Net给关键节点命名in、sw、m1d、out、vg、n1。最后通过Edit→SPICE Directive添加指令。我这次用到的完整netlist放这里你直接存成snubber_boost.cir在LTspice里File→Open打开就能跑* Boost switch-node ringing RC snubber demo V1 in 0 12 L1 in sw 100u Rser0.1 Vg vg 0 PULSE(0 12 0 5n 5n 4u 10u) S1 m1d 0 vg 0 SW .model SW SW(Ron10m Roff10Meg Vt2.5 Vh0.1) Coss m1d 0 200p Lstray sw m1d 100n D1 sw out D1N5819 Cout out 0 100u Rser0.1 Rload out 0 22 * RC snubber branch: 先用1nF 22Ω RS m1d n1 22 CS n1 0 1n .tran 0 3m 0 5n startup .meas TRAN Vds_peak MAX V(m1d) .backanno .end仿真指令里两个细节值得说。第一maxstep我给了5ns因为我们要看35MHz的振铃5ns的步长算下来每个周期大约5到6个点勉强够看波形轮廓。真要做过冲幅度定量分析我建议在稳态附近把步长压到1ns甚至500ps具体做法是把.tran改成.tran 0 3m 2.99m 1n意思是总共仿3ms只存最后10µs且这10µs用1ns步长精细跑。第二startup选项让电源从0开始爬升模拟真实上电过程避免初始条件不一致带来的麻烦。2.4 裸奔波形先量化三件事先把RC吸收支路去掉跑一遍。你会看到启动阶段输出电容充电之后进入稳态但开关管漏极m1d上的电压并不干净。用光标量一下三件事要记下来峰值电压V(m1d)大约能冲到39到42V而关断稳定值只有20V出头过冲接近一倍。振铃频率用View→FFT看或者直接量相邻两个峰之间的周期大约35MHz和我们用公式算的LC谐振频率吻合。振铃衰减很慢要2到3µs才能明显收住这就是高Q值回路的样子。这三组数据就是你的基准线。后面RC参数怎么选都是围绕把峰值压到多少、振铃多快消失、额外代价多大这三个目标来权衡的。3. 挂上RC吸收第一次看到阻尼的力量3.1 接法很简单但参考节点不能错RC吸收支路就一根线的事在m1d和GND之间串上电阻和电容。我用的是RS22Ω从m1d接到n1再让CS1nF从n1接到GND。你可能会问为什么不直接并在二极管D1上并二极管也能吸收反向恢复振铃但这次的振铃源头是开关管关断时Lstray和Coss的谐振吸收支路靠近开关管才能有效阻尼这个谐振回路。接错位置吸收效果打对折。3.2 对比波形峰值、振铃周期、衰减时间挂上1nF22Ω再跑和裸奔波形叠在一起看差别非常明显指标无吸收1nF 22ΩVds峰值约40V约24.5V振铃频率约35MHz约12MHz节点电容变大导致振铃衰减到5%以内约2.5µs约0.25µs超调比例接近100%约20%峰值从40V掉到24.5V振铃不到300ns就安静了。原理上加入1nF后节点总电容从200pF变成约1.2nF同样的电感能量灌进大六倍的电容里电压增量自然小。而22Ω电阻提供阻尼把回路的Q值拉低能量迅速变成热量。3.3 为什么参数不能拍脑袋有同行觉得Rs和Cs随便选个值就完事这是最典型的翻车姿势。Cs如果太小比如只有220pF和Coss加一起也就420pF吸收效果有限峰值还是高。Cs如果贪大用4.7nF、10nF峰值确实压得很低但每个开关周期里电容充电放电的损耗成倍上升高压应用下效率能被它啃掉几个点。Rs的方向也很讲究。Rs太小比如2Ω关断那一下电流路径很通承受瞬态冲击的其实是电阻本身和开关管导通时的放电电流峰值电流I V/Rs20V电压落在2Ω上就是10A的脉冲电流这可不是闹着玩的。Rs太大比如100Ω吸收支路跟开路差不多LC回路得不到有效阻尼振铃该什么样还什么样。一个电容负责扛住能量一个电阻负责消耗能量两者的配合才是RC吸收的本质。这里顺带提一下另一个思路有人用稳压管Zener或TVS管做钳位效果类似但原理不同。RC吸收是把能量耗散掉钳位是把过压能量削掉用稳压管的话LTspice里可以用二极管模型加BV参数近似或者直接导入厂商的zener模型。两种方案各有适用场景RC吸收胜在软、可控、不依赖钳位电压精度Zener/TVS胜在尖峰能量大时不会让效率损失线性上涨。我这次还是聚焦RC吸收。4. 参数扫描让.step和.meas替你做决策4.1 .step param的两个用法参数扫描是RC吸收设计的主菜LTspice的.step指令有两种常用方式。方式一是列表扫描适合扫离散的几个值.step param Rs list 2 5 10 22 47 100方式二是线性扫描适合看趋势.step param Cs 220p 4.7n 20如果同时想扫R和C的组合网格可以写两个.step但要注意.meas的测量结果会按每个.step序号分别存进SPICE Error Log你可以在View→SPICE Error Log里看到所有steps的测量值和对应序号只是不会像单个step那样每条都自动标在波形上。实际操作中我更喜欢分开扫一次只动一个变量变量之间的耦合关系反而更清楚。4.2 固定Cs1nF扫Rs把电路里的Rs用.step替换C固定1nF跑一轮记录Vds峰值、振铃衰减时间以及放电脉冲电流。我这次跑的典型结果如下RsVds峰值振铃衰减导通瞬间Rs电流峰值现象2Ω约23.5V约1.2µs仍有振荡约10A欠阻尼电流应力大5Ω约24V约0.4µs约4A可用但偏激进10Ω约24V约0.3µs约2A接近特征阻抗手感好22Ω约24.5V约0.25µs约0.9A衰减最快综合最优47Ω约26V约0.5µs约0.4A阻尼偏弱100Ω约30V约1.2µs约0.2A吸收支路接近开路很有意思的是从峰值电压看Rs从2到100Ω只差7V左右但振铃衰减时间差出5倍。这说明Rs对阻尼的贡献比对吸收的贡献更敏绞。还有一点容易被忽略Rs越小开关管导通瞬间储存在Cs里的能量放电越猛这个大电流脉冲会带来额外的开关损耗和振铃所以别一味追求小Rs。我的选择是22Ω既靠近特征阻抗√(L/Cs)≈10Ω的同一量级又不会让放电电流失控。4.3 固定Rs22Ω扫Cs接下来把Cs作为变量Rs固定22Ω。结果同样很有代表性CsVds峰值振铃衰减估算损耗Cs×V²×f220pF约31V约0.9µs约8.8mW470pF约27.5V约0.4µs约19mW1nF约24.5V约0.25µs约40mW2.2nF约22V约0.2µs约88mW4.7nF约21V约0.18µs约188mW这组数据很有指导意义。Cs从220pF加到1nF峰值压降6.5V效果立竿见影从1nF加到4.7nF峰值只再降3.5V但损耗涨了近5倍。边际收益急剧递减。所以工程上不会一味堆Cs而是定一个峰值必须控制在多少伏以内的预算然后选能满足预算的最小Cs值。4.4 用.meas把你从肉眼里解放出来肉眼看波形算峰值和衰减十几个step跑下来能看花眼。我习惯在仿真文件里写好.meas语句一次跑完自动出表。.meas TRAN Vds_peak MAX V(m1d) .meas TRAN Psnub_avg AVG V(m1d,n1)*I(RS)第一条测Vds峰值第二条测吸收电阻的平均功耗。注意RS这条网表里我写成RS m1d n1 22LTspice里电阻电流方向是从第一个节点流向第二个节点所以V(m1d,n1)*I(RS)就是电阻的瞬时功耗对时间平均就是它的平均耗散功率。跑完在View→SPICE Error Log里翻每个.step序号对应的Vds_peak和Psnub_avg都列得清清楚楚复制到Excel里就是一张完整的设计表。5. 损耗账本RC吸收从来不是免费的5.1 一个周期里电阻到底烧了多少能量每次开关管导通Cs里存的0.5×Cs×V²能量会通过Rs放掉每次关断电感电流又通过Rs给Cs充回来。一充一放能量大部分变成电阻上的热量。工程上常用这个估算式P ≈ Cs × V² × f这里的V是关断时开关管漏源电压的稳定值f是开关频率。拿我这个电路算Cs1nFV≈20Vf100kHzP 1×10⁻⁹ × 400 × 1×10⁵ 40mW和仿真里.meas AVG出来的数值非常接近大概42到45mW的样子差在二极管正向压降带来的额外电压上。这个量级对18W的Boost来说占效率约0.25%可以接受。5.2 高压场景下的教训同样的公式搬进反激电源就完全不是一回事了。假设一个反激主开关关断电压V300Vf100kHzCs还是1nFP 1×10⁻⁹ × 90000 × 1×10⁵ 9W9W白白烧在电阻上这就是为什么高压电源里RC吸收不能乱加Cs每大一倍损耗就翻一倍。很多工程师拿着低压模拟的手感上来就给反激加个4.7nF的RC吸收效率顿时掉两个点还找不到原因。仿真在这里的价值是让你在画板子之前就把这笔账算清楚。.meas测出来的Psnub_avg会和估算式对得上心里有数后再决定是用RC吸收还是改RCD钳位或者上TVS。5.3 一套可以抄的取值流程经过这几轮折腾我形成一个固定的操作流程分享给你先在仿真里测出无吸收时的Vds峰值和振铃频率f_ring。估算节点电容C_node。如果你知道大概的Coss和二极管结电容直接加起来不知道也没关系从振铃频率反推L_stray 1 / (4π² f_ring² C_node)前提是你能估算一侧。选Cs取C_node的2到10倍先按5倍起步。选Rs取√(L_stray/Cs)附近的值然后用.step对Rs做一轮细扫观察峰值和衰减时间。用.meas量Psnub_avg对照Cs×V²×f估算判断损耗在不在预算内。超了就回落Cs再重扫一轮Rs。这个流程一般两轮到三轮就能收敛。重点是先吸收、后阻尼、再算账每一步都有数据支撑而不是拍脑袋。6. 模型、探头、布局仿真和样机之间隔着这几道坎6.1 更真实的开关管模型怎么导入第三方模型理想SW模型适合理解原理但到了要跟实测对标的时候我建议换成厂商MOSFET模型。TI、Infineon、onsemi的网站都提供PSpice模型这些模型大部分能被LTspice直接吃进去只要注意三点。第一下载来的通常是个.lib或.subckt文件放到仿真文件夹里用SPICE Directive写.include C:/path/to/vendor_model.lib第二把原理图里的MOSFET符号的Value改成模型名同时把Prefix改成X让LTspice知道这是个subckt调用。特别注意pin顺序厂商模型里D、G、S的声明顺序不一定和LTspice符号默认的一致接错了整个波形都是错的。判断方法很简单看模型文件里.subckt那一行的pin顺序再对照符号引脚。第三有些TI的模型用了比较特殊的PSpice语法比如behavioral source的特殊写法LTspice里可能要微调一下才能收敛。网上搜ltspice导入第三方模型能翻到不少案例但百分之九十的报错最后都出在pin顺序和文件路径这两件事上。顺便回答一个常见疑问LTspice能不能用TI的芯片模型答案是主要能用TI的PSpice模型兼容性在主流厂商里算好的。装好之后跑的仿真开关管的开通关断时间、米勒平台、输出电容非线性都会体现出来振铃幅度和实测的吻合度会明显提高。6.2 为什么示波器看到的频率总是比仿真低这是我从仿真转向实测时最困惑的问题仿真里35MHz的振铃示波器上看到的只有28MHz连峰值都对不上。后来才逐项找到原因。探头的输入电容是第一个真凶。一支常规10×探头输入电容大约10到15pF直接挂到开关节点上等于给节点并联了一个电容。这会让谐振频率整体下移。更麻烦的是探头地线夹子形式的地线常常自带几十nH的寄生电感这个电感串在测量回路里会改变你看到的振铃形态。正确做法是用探头接地弹簧或者tip-and-barrel把地线环缩到最小。第二个问题是仿真里没建全的寄生。PCB铜箔对地分布电容、电感下面的敷铜、变压器绕组电容这些都是实际存在的隐形电容。你仿真里只放了一个200pF的Coss板子上随便一点铺铜就多出几十pF。所以仿真频率偏高、实测频率偏低是常态。第三个问题很多人栽过电容的直流偏压效应。X7R电容在20V直流偏压下面实际电容量可能只剩标称值的一半甚至更少。我遇到过仿真里放1nF的C0G效果很好焊到板子上用的是X7R 1nF结果振铃依旧一测才发现偏压下只剩500pF左右。高压节点上做RC吸收强烈建议用C0G/NP0或薄膜电容别用X7R或者至少把降额换算进仿真值里。6.3 从仿真结果到PCB布局的几个提醒仿真帮我们确定了Rs和Cs的值但再好的值也救不了烂布局。RC吸收支路在板子上必须紧贴开关管摆放Rs到Cs、Cs到开关管源极的回路要短走线不要太细。R的寄生电感在MHz级振铃面前可不是笑话所以用0603或0805的贴片电阻别用带长引脚的插件电阻。测量位置同样重要。测Vds就在管子引脚根部量别在过孔或远端量差一两厘米的走线压降就能让峰值读数偏几个伏。如果你在仿真里看到吸收效果完美样机上却还有振铃优先检查这三个地方吸收支路是不是贴得够近、电容是不是被直流偏压打了折、示波器探头是不是拖了根长地线。另外仿真的理想开关是把dI/dt当成无穷大而实际MOSFET的关断速度由栅极电阻和Ciss决定。如果你要精确预测尖峰的绝对值别只用理想开关把栅极驱动电阻、栅极回路电感也加进仿真或者直接用厂商的功率MOSFET模型。我自己做完这一整套分析后最大的体会是RC吸收不是什么高深数学但它是一家子寄生参数在打架你只有把这些看不见的电感、电容、损耗一个个请到明面上仿真才能真正替你预报样机的问题。LTspice的价值正在于此——它让玄学变成了可以反复试验的工程。下次再看到开关节点振铃别急着一股脑加电容先把它请进仿真里聊一聊。
返回列表