ARTICLE DETAIL

资讯详情

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

MOS管寄生电容Ciss/Coss如何影响开关损耗?LTspice仿真与优化实战

MOS管寄生电容Ciss/Coss如何影响开关损耗?LTspice仿真与优化实战 做电源、做电机驱动、做DC-DC的工程师应该都遇到过这种场景板子刚上电还好频率一往上拉MOS管烫得能烤肉示波器一看开关波形全是圆角效率掉得一塌糊涂。这时候十有八九是MOS管自己那几个寄生电容在“搞事情”。我这次用LTspice把MOS管的Ciss、Coss这些参数拉出来做了一轮仿真顺便把开关损耗的优化路径捋了一遍整个过程不复杂但非常能说明问题。这文章适合刚接触LTspice、或者对MOS管寄生参数还停留在背公式阶段的朋友我尽量把每个步骤和背后的原理都讲透保证你照着操作一遍能真正理解Ciss/Coss是怎么影响开关损耗的而不是看完只会截图。1. Ciss/Coss/Crss到底是谁在“捣乱”1.1 三组寄生电容的内部结构很多人一看到Ciss、Coss、Crss就头晕其实把它们还原到MOS管内部就很好理解了。一颗增强型N-MOS管里面天然存在三对极间电容栅极和源极之间的Cgs、栅极和漏极之间的Cgd、漏极和源极之间的Cds。这三个电容是半导体结构自带的不管你愿不愿意它们都在那而且会随着电压变化而变化。Ciss叫输入电容数值上等于Cgs CgdCoss叫输出电容等于Cds CgdCrss叫反向传输电容其实就是Cgd自己也常被叫做米勒电容。你发现没有Cgd这个电容同时出现在三个参数里这就是它特殊的地方也是米勒效应能在开关过程中兴风作浪的根本原因。我用一个生活化的类比Ciss就像是栅极驱动电路要“灌满”的第一个水池Coss是漏源之间要“抽空”的另一个水池。你给栅极充电的速度决定MOS管多久能真正打开漏源之间电压下降的速度又和Coss的电荷释放有关。而那个Cgd相当于一个连通水池的管道栅极电压变化会通过它把“水”往漏极那边引引得好是加速引不好就是振荡和损耗。1.2 为什么Datasheet只给Ciss/Coss不给Cgs/Cds翻开任何一颗MOS管的规格书你找到的都是Ciss、Coss、Crss极少直接标Cgs和Cds。原因是Ciss和Coss在实际电路中更容易通过仪器测出来而且对应用设计更有指导意义。比如说你在设计栅极驱动电路时关心的是栅极引脚看进去“等效有多少电容”那就得看Ciss你在估算开关节点电压上升速率、算关断损耗时关心的是漏源之间的等效电容那就看Coss。而Crss则直接关系到米勒平台的长度。驱动电流给Ciss充电充到米勒平台区间时输入电压基本不变但驱动电流全部通过Cgd往漏极“漏”这一段时间正是开关损耗最大的一段时间。所以不夸张地说开关损耗的优化很大程度就是围绕这三组寄生电容做文章。我用LTspice仿真时并不会单独去“拆出”Cgs和Cds而是直接看MOSFET模型在开关过程中的整体表现。模型内部已经把这些非线性电容都考虑进去了仿真结果反而比手算更贴近真实。2. 仿真平台准备为什么选LTspice以及关键设置2.1 LTspice的优势与适用场景之前我也用过Pspice、Simplis甚至Saber做功率电路仿真各有各的长处但如果只是分析MOS管开关特性、验证驱动参数LTspice是我现在最常用的工具。它免费、轻量、模型库丰富而且收敛性调教得不错。很多时候我们要做的不是把整个电源系统搭出来而是把关键开关过程单独拎出来看LTspice完全够用而且启动速度比那几家商业软件快不少。最让我满意的是LTspice对MOSFET模型的建模细节。内置的很多功率MOS模型都包含了完整的非线性寄生电容曲线仿真时它会根据当前漏源电压、栅源电压动态调整电容值所以看到的结果比“用一个固定电容搭出来的等效模型”更可信。2.2 用到的关键设置与快捷键在开始搭电路前有几个设置先调好后面操作会顺手很多。默认情况下LTspice会压缩部分波形数据但做开关损耗分析时我希望看到尽量细致的瞬态过程所以仿真参数里需要手动控制最大步长。快捷键方面我常用的几个F2打开元器件库选MOS管、电阻、电源等器件。F4放置网络标签给节点命名。G放置地线符号。R放置电阻。S放置独立电压源。T放置文本框。调完电路后点菜单里的Simulate - Edit Simulation Cmd或者直接快捷键CtrlS打开仿真设置在里面输入.tran命令。我习惯在Edit Simulation Cmd里把Maximum Timestep填小一些比如5ns甚至1ns。别小看这个设置如果你不限制最大步长LTspice在低速区间可能会跳过大段的开关细节波形看起光溜但损耗算出来就偏了。实测下来对几十到几百kHz的开关过程最大步长设成开关周期的千分之一左右比较稳妥。2.3 确定仿真要测什么做开关损耗仿真前先想清楚要观察哪几个量栅源电压Vgs、漏源电压Vds、漏极电流Id以及它们乘积的积分值。Vgs可以看出栅极充电过程尤其是米勒平台Vds的下降/上升斜率和Coss相关Id则反映电流建立速度。三者相乘再对时间积分就是单次开关动作的损耗能量。我在LTspice里一般会在电路图上加一个行为电流源或者直接利用探针的波形运算功能但最直观的还是把这三个波形拉出来后用波形窗口的积分功能直接算面积。后面我会详细说操作方法这里先记住结论损耗面积 开关重叠区间的电压电流乘积积分。3. 手把手搭一个MOS管开关损耗仿真电路3.1 电路原理与器件选型我这次搭的是一个最简单但很经典的感性负载硬开关电路。别上来就搭全桥、半桥先把单管开关搞清楚后面扩展自然容易。电路结构一个直流电源VDD通过负载电感L1接到MOS管漏极电感并联一个续流二极管D1实际应用中就是钳位或续流的作用源极直接接地栅极通过一个驱动电阻Rg接到脉冲源V2。负载电感和二极管的选择上我随便用了一个100uH电感和一个快恢复二极管模型不影响结果演示。MOS管我选的是比较常见的IRF540N型号老但模型成熟规格书里的Ciss大概在1700pF左右Coss在500pF上下Crss约150pF这个数量级导致的现象非常典型适合用来做例子。3.2 在LTspice中放器件、设参数具体操作如下按F2打开元件库找到nmos选项这里会列出LTspice内置的MOS管模型我在对话框里直接输入IRF540选中后放到原理图上。然后按F2依次放置脉冲电压源voltage、直流电源voltage、电阻、电感和二极管。用W连线工具把它们连起来节点布局大概是这样VDD正极接电感L1的一端L1另一端接MOS管漏极这个节点命名为SW同时SW节点接二极管D1的阴极。D1阳极接VDD负极即地。源极接地。脉冲源V2正极接栅极电阻RgRg另一端接栅极节点G。V2负极接地。参数设置上VDD我用20V直流。负载电感L1取100uH串联电阻默认0其实实际电感都有寄生电阻但为了仿真理想化先不添麻烦。脉冲源是关键它决定了开关频率和占空比。双击V2在PULSE类型里填PULSE(0 12 0 10n 10n 50u 100u)这个串参数的意思是初始电压0V打开时跳到12V延迟0秒开始上升时间10ns下降时间10ns脉宽50us周期100us也就是开关频率10kHz。我这里故意把上升时间和下降时间设得很短这样能更清楚地看到MOS管寄生电容自己“拖慢”开关过程的效果。最后别忘了放地线符号G把公共参考点标好。3.3 设置瞬态仿真与测量指令我习惯用.tran指令配合.meas来做自动测量。点击菜单Simulate - Edit Simulation Cmd在对话框里选Transient填停止时间比如200u最大步长填5n点OK后把它放在原理图上。然后加测量指令。在原理图空白处点右键选择. SPICE Directive输入下面这几行.meas TRAN Vgs_peak MAX V(G) .meas TRAN Vds_min MIN V(SW) .meas TRAN Id_avg AVG I(M1)这几行分别测量栅极电压峰值、开关节点最低电压和平均电流先用来确认电路工作状态。真正的损耗测量我后面用波形积分来做因为那样能直接看到是哪一段贡献的损耗比单纯给一个数字要直观。放置完指令后点运行按钮LTspice会弹出波形窗口这时候就能开始看波形了。4. 从仿真波形看开关过程与损耗构成4.1 开通瞬间Ciss充电与米勒平台仿真跑完首先看Vgs波形。你会发现在驱动电压阶跃上升后Vgs并不是一下子冲到12V而是经历了一段明显的“平顶”这个平台就是米勒平台。平台出现的位置大概是Vgs等于MOS管阈值电压加上米勒效应所需的栅漏电荷充电电压。为什么会有平台因为开通初期Cgs先被充电Vgs上升漏极电流开始建立。当电流达到负载电流后Vds开始下降这时候Cgd开始承受电压变化驱动源必须为Cgd提供位移电流。由于Cgd的放电或充电过程需要大量电荷而驱动电流又被栅极电阻限制住Vgs就被“锁”在平台上直到Cgd的电荷转移完成。这个平台时间越长意味着Cgd越大或者说Crss越大米勒效应越明显。我在仿真里把波形放大看IRF540N的米勒平台大约维持了3-5us具体数值取决于Rg和驱动电压。平台期间Vds在快速下降Vgs不动但电流已经从0上升到负载电流所以这段时间的损耗其实不小。LTspice里观察这个细节很方便点波形窗口用滚轮放大或者按快捷键Ctrl滚轮调整时间轴就能看清各阶段的转折点。4.2 关断瞬间Coss充电与电压上升延时关断过程同样值得看。当Vgs从高电平往下掉先是Cgs放电Vgs开始下降等到Vgs跌到米勒平台附近时MOS管开始退出饱和区Vds开始上升。Vds上升时漏源之间的Coss需要被充电充电电流来自负载电流。如果Coss比较大Vds上升速度就会被限制电压建立时间变长。在感性负载的电路中关断时负载电流还要维持原来的方向所以续流二极管会导通续流SW节点电压被钳位到二极管正向压降附近直到Coss储存的电荷放干净SW电压才真正往VDD爬升。这个过程中的关键点是漏极电流Id和漏源电压Vds在关断初期同时处于“中间状态”也就是电流还没完全掉下去、电压已经开始往上冲两者重叠的时间越长关断损耗越大。Coss在这里起了双重作用一方面它延缓了电压上升表面上“保护”了管子但另一方面它储存的能量会在下一次开通时通过管子内部放掉这部分能量也会计入开关损耗。我用LTspice观察关断瞬间时最直观的是同时看I(M1)和V(SW)两条曲线你会发现电流下降的斜率和电压上升的斜率并不对称这正好对应Coss的充电过程。4.3 用波形量化开关损耗直接积分操作光看波形还不够得算数。LTspice波形窗口里可以直接算功率损耗曲线。具体方法在波形窗口里按住Ctrl键左键依次点击V(SW)曲线得到电压数值再用同样方式点击I(M1)电流曲线LTspice会自动创建一个“电压乘电流”的波形显示为V(SW)*I(M1)这就是瞬时功率。但这只是瞬时功率要算损耗能量还得对时间积分。我习惯在瞬时功率波形上再叠加一次积分右键点击波形名称里的V(SW)*I(M1)选择Integrate波形窗口就会变成积分数值随时间变化的曲线。这个积分波形的最终值就是整个仿真时间内MOS管消耗的总能量。如果只关心某一次开关的损耗可以在波形窗口里放大到那一段用游标或者重新限定仿真时间范围再积分。另一种更精确的办法是用.meas指令.meas TRAN Pon INTEG V(SW)*I(M1) FROM10u TO13u .meas TRAN Poff INTEG V(SW)*I(M1) FROM53u TO58u这里的时间范围要自己根据波形调整但好处是数值直接打印在SPICE Error Log里不用肉眼看图猜。我实测下来Rg10Ω、VDD20V、负载电感100uH时一次开通损耗大概是3.2uJ一次关断损耗大概4.5uJ。如果把频率提高到100kHz单管损耗就要乘上10光是开关损耗就到了0.77W这对一个小封装管来说已经很高了。这个计算过程也让“开关频率越高损耗越大”这句话变得非常具体。5. 针对Ciss/Coss的开关损耗优化实操5.1 调整栅极电阻快慢之间博弈既然已经能定量测损耗就可以开始做优化实验。最直观的参数就是栅极电阻Rg。我做了三组仿真Rg5Ω、Rg10Ω、Rg50Ω。Rg越小栅极充电电流越大Ciss被充得更快米勒平台时间缩短开通速度变快。但代价是驱动回路里可能出现更严重的振铃因为寄生电感和电容构成的LC回路阻尼变小了。Rg50Ω时开关过程明显变慢单次开通损耗比5Ω时高出一倍不止。这说明栅极电阻直接控制着损耗大小。但要注意栅极电阻不是越小越好。我把Rg降到2Ω再试虽然损耗又降了一点点但Vgs波形上出现了一个明显的过冲振荡这会带来电磁干扰问题。所以最佳Rg往往是在损耗和EMI之间取平衡实际应用里还得看系统要求。我在LTspice里验证了不同Rg下的开通损耗对比结果如下Rg开通损耗(Pon)关断损耗(Poff)开关振铃程度2Ω1.9uJ2.8uJ明显10Ω3.2uJ4.5uJ轻微50Ω8.1uJ9.6uJ几乎没有从这个表能直观看到Rg对损耗的影响非常线性。做设计时你可以先用10Ω起步再根据EMI测试结果微调。5.2 调整驱动电压与栅极电荷总量第二个常优化的量是驱动电压Vgs。把脉冲源的幅度从12V改成15VCiss最终充电电压更高但米勒平台电压基本不变所以平台期间驱动电流更大平台时间缩短。损耗明显下降。但同时要注意更高的Vgs意味着关断时Ciss需要放出更多电荷关断时间的改善未必同步。我在仿真里把驱动电压从10V提高到15V开通损耗降低了约25%关断损耗变化不大。这说明驱动电压对开通损耗的影响更明显因为这个阶段的损耗主要取决于充电速度。如果驱动芯片的输出能力有限驱动电压提不上去那就增大驱动电流能力也就是换驱动芯片或者加推挽三极管。LTspice里可以用一个更低的驱动源阻抗来模拟这种改进把脉冲源的Series Resistance直接设成1Ω效果类似。5.3 Coss的“软开关”启示做损耗优化时脑子里要一直记着Coss。硬开关过程中每次关断时Vds上升Coss在存储能量每次开通时Coss里的能量又在管子内部释放。这个特性其实可以反过来利用。如果MCU控制的电路能实现零电压开通也就是在MOS管开通之前先让Coss完成放电、让体二极管导通那么开通时Vds几乎为零开通损耗理论上可以降到很低。这就是软开关的基本思路。LTspice里模拟这种条件只需要把负载换成带谐振电感的拓扑或者强制改变时序让Vds先到零再给栅极信号。我在仿真中试过给栅极信号加了一个延迟让负载电流先把Coss放完再开通结果开通损耗几乎消失。这也是为什么很多高效率电源方案都往谐振方向做就是奔着Coss里的那点能量去的。5.4 优化迭代记录表每次调整参数后我都习惯把仿真结果记录下来形成自己的优化日志。不需要什么高级工具一张Excel表就够了列上Rg、Vgs、Pon、Poff、总损耗、波形振荡情况。几次迭代下来你就会发现自己对参数的敏感度有了直觉不用每次都从头试。我在这次优化里最后选择Rg10Ω、Vgs12V作为折中方案单周期总开关损耗从最开始的7.7uJ降到约6.8uJ如果频率100kHz每管能少0.09W损耗两个管就是近0.2W对系统热设计有实打实的帮助。6. 踩过的坑LTspice仿真寄生电容的常见问题6.1 “为什么我的MOSFET开关波形完全不像样”这个问题我遇到过很多次新手最多。最常见的原因是原理图中MOS管的源极和地没有接好或者栅极脉冲源没有公共地。LTspice是SPICE内核所有电压都是相对地的如果你漏了地线仿真器会把某个节点自动当作地波形自然就乱。还有一次我把二极管的极性放反了结果电流路径完全错乱SW节点电压一直上不去。所以搭电路时先画完连线再逐个双击器件确认极性尤其是二极管和电解电容这类有方向的元件。6.2 “为什么仿真出来的开关损耗和手算差很多”手算一般会用一个固定电容值比如直接拿规格书Ciss来算充电时间。但LTspice里的MOSFET模型电容是非线性的Ciss会随Vds变化高电压下和低电压下差好几倍。所以仿真结果往往比用固定电容估算更接近实际但跟手算对不上也正常因为这本来就是两种精度的算法。如果你发现仿真损耗比手算大很多先检查一下最大步长是不是设得太粗了。步长太粗会导致波形时间轴失真积分面积偏大。把最大步长降到1ns再看数值会收敛很多。6.3 “LTspice保存文件时多出好几个文件”这是LTspice的项目文件机制。一个原理图文件会对应生成.raw、.log、.op.raw等文件分别是波形原始数据、日志和操作点数据。这些都是仿真正常运行产生的不用管它们。如果你要分享电路给别人只需要发.asc文件就行其他文件打开时会自动重新生成。如果文件多了觉得乱可以在LTspice安装目录里调整工作目录设置或者每次仿真完顺手清理一下但没必要太纠结。7. 从这次仿真里获得的一点体会整个仿真做完我最大的感受是以前看规格书上的Ciss、Coss、Crss只觉得是几个数字等真在LTspice里看到米勒平台、看到Coss对电压上升的拖拽才知道这几个参数对开关损耗的影响有多大。如果你也想深入理解MOS管建议别急着上复杂的拓扑先像我这样搭一个单管感性负载开关电路把波形看透把损耗测明白再做优化实验。这一个流程走下来你再看任何MOS管驱动电路、损耗计算都会有种“原来是这么回事”的通透感。最后再分享一个小技巧做对比仿真时尽量保持开关频率和负载条件不变只改一个变量。工程上最怕的就是一次改好几个参数最后出了问题都分不清是哪个引起的。仿真也一样控制变量法永远是最好的排障思路。
返回列表