☰
IR2104半桥驱动空载发热排查:死区时间不足导致的MOS管直通问题
2026/9/27 20:29:00 网站建设 项目流程

如果你的IR2104半桥驱动电路在空载状态下MOS管热得能煎鸡蛋,但带载后反而正常了,九成以上的原因都出在死区时间上。我去年调一块48V直流电机驱动器时,就为这个“空载发热”折腾了整整一个通宵:空载电流测出来只有几十毫安,两只IRFP4468却烫到不敢碰。最后抓到的真凶,就是IR2104内部虽然自带死区(手册典型值520ns左右),但配上一对大管子的米勒平台和栅极电阻,这点时间根本不够,上下管在我眼皮底下交叠导通了。这篇文章把当时的排查思路和3步修复过程整理出来,波形对比也一起放上,给还在被半桥驱动空载发热折磨的朋友一个参考。

1. IR2104半桥驱动:先搞懂芯片在电路里扮演什么角色

1.1 半桥驱动电路的基本结构与角色

在电机驱动、同步Buck、反激辅助电源这些场景里,半桥拓扑几乎是标配:高边MOS管Q1的漏极接母线电压Vbus,源极接输出中点VS;低边MOS管Q2的漏极也接VS,源极接功率地GND。负载挂在VS和GND之间。要让这个桥正常工作,Q1和Q2必须严格交替导通:Q1导通时Q2关断,Q2导通时Q1关断,中间还要有一段两个管子同时处于关闭状态的安全间隔,否则电源正负极就通过两个管子“短路”了。

IR2104就是专门干这个活的高压半桥驱动芯片。它负责把控制器输出的逻辑电平(通常是3.3V或5V的PWM信号)转换为能驱动功率MOS管的栅极电压(一般需要10V~15V),同时解决高边MOS管栅极参考电位浮动的难题。芯片的主要引脚包括:HIN和LIN是高边与低边的逻辑输入,HO和LO是对应的栅极驱动输出,VB和VS之间接自举电容,SD是关闭使能脚,VCC和COM是芯片供电和地。实际使用中,自举电容的位置和走线质量直接决定高边管子能不能被正常驱动,这也是后面排查发热问题时不能跳过的一环。

理解这个结构之后,再看“空载发热”这个问题就清晰多了:空载时负载基本不消耗功率,如果MOS管仍然发热,说明能量损耗发生在管子开关过程本身,而不是负载上。这就把排查方向锁定到了驱动波形、死区时间、栅极充放电这几个环节。换句话说,空载发热是驱动电路“原理级”问题的典型症状,不是靠加散热片能糊弄过去的。

1.2 死区时间到底是什么,为什么必须有

死区时间,英文叫dead time,通俗点说就是在上下两个管子切换时,故意留出的一小段“谁都别开”的空档。它的存在是因为MOS管不是理想开关。以IRF540为例,从驱动电压加到栅极到漏源电流完全建立,要经过导通延迟时间td(on)和上升时间tr,加起来差不多一百纳秒;关断也一样,要经过td(off)和下降时间tf。如果上下管信号完全互补、没有任何间隔,高边还在慢慢关闭的时候低边已经开始导通了,两个管子的阻抗都不算高,Vbus就会直接灌下来形成贯穿电流,也就是shoot-through。

IR2104内部有一个固定的死区时间,手册上的典型值在520ns左右,不同批次和环境温度下会有偏差。这个时间对于很多小功率管子是够用的,但“够用”有一个前提:外部MOS管的开关速度必须足够快,而且驱动回路的走线、栅极电阻、米勒效应不能把实际开关时间拖得太长。一旦实际关断时间超过IR2104预留的死区,内部死区就形同虚设,直通仍然会发生。

用红绿灯来打比方最容易理解:死区时间就是两个方向都亮红灯的“全红清空期”,目的是让上一个方向的车完全离开路口,下一个方向再放行。如果全红时间太短,路口还没清空就放行,两个方向的车就会在路口中间撞在一起。MOS管的“撞车”方式就是直通发热。

1.3 空载发热的机理:贯穿电流才是主角

空载情况下,负载电流很小,MOS管上的通态损耗几乎可以忽略,主要的发热来源有三种:开关损耗、驱动损耗、贯穿损耗。开关损耗来自电压电流交叠,每次开关都有一部分时间管子既承受电压又流过电流;驱动损耗来自栅极电容充放电,一般只有毫瓦级;贯穿损耗则是上下管同时导通时流过的大电流尖峰,虽然单个尖峰持续时间可能只有几十到几百纳秒,但开关频率动辄20kHz、30kHz,累加起来就是可观的发热功率。

更麻烦的是贯穿电流的峰值很大。以48V母线为例,如果两个管子同时导通,回路里只剩下PCB走线电阻、引脚电感、管子体电阻,瞬间电流可以冲到几十安培。即使每周期只交叠200ns,在30kHz开关频率下,等效平均功耗仍然可能达到1W以上,管子在空载状态下几分钟就能烫手。这也是为什么标题里“空载发热”特别值得警惕——它往往是驱动逻辑有问题的第一信号。

很多朋友遇到空载发热会直接怀疑散热片不够大,甚至换更大的散热器,但问题根源在原理层,散热再大也只是治标不治本。正确做法是先把波形抓出来,用数据判断到底是哪一种损耗在主导。下面就说测量方法。

2. 用波形说话:空载发热时先测对这几个点

2.1 测量高边栅极波形最容易踩的坑

调试半桥驱动,示波器是必须的工具,但测量方式不对会把你带进沟里。IR2104的HO输出是相对于VS这个浮动点的,也就是说高边MOS管的栅源电压才是真正决定它开关动作的信号,而不是HO对地的电压。很多新手直接把示波器探头地线夹到功率地,然后去点HO引脚,看到的是一个叠加在母线电压上的高位信号,在高端管子关断期间甚至可能是0V到几十V之间的跳变,这个波形既不能反映真实栅压,还会误导你对死区的判断。

正确做法有两种。第一种是用高压差分探头,把探头的正负极分别接在MOS管的栅极和源极,直接测Vgs。这是最可靠的方案,一般实验室里如果有100MHz以上的高压探头,随便怎么测都行。第二种是退而求其次,测低边管子的时候就测LO对COM,因为低边的源极本来就接在功率地;测高边管子时,如果你的示波器支持两通道相减,可以分别测HO和VS再相减,但两个普通探头本身的共模抑制比有限,高速切换时相位误差和共模成分会污染结果,只能看个大致趋势,不能用来做精密死区测量。

另外一个容易忽视的点是地线回路。示波器探头的地线夹本身有电感,在母线电压高频振铃时,地线夹会拾取噪声,让测量波形出现毛刺。空载发热判断死区时,这些毛刺经常被误认为是交叠。建议把探头地线夹尽量缩短,或者用接地弹簧,把示波器采样率设置到250MS/s以上,否则几百纳秒的死区可能根本抓不出来。

2.2 正常死区波形和直通波形,眼睛能看出来的区别

把探头接好之后,在空载条件下跑起来,先看HO和LO两路波形。正常情况下,理想的切换应该是这样两个台阶:HO从高电平开始下降,经过下降沿完全变成0V后,保持一段两个管子都关断的“低谷”,然后LO才开始上升。这个低谷的长度就是实际的死区时间。在示波器上你会看到上下两路信号之间存在一个明显的台阶,不会重叠。

如果死区不足,波形上看到的往往是HO下降沿还没完全到底,LO的上升沿就已经起来了。也就是说,两个信号的翻转沿在时间轴上产生了交叠。你可以在示波器上把两个通道的垂直位置拉开,用光标分别测量HO下降到10%、LO上升到10%这两个时刻,两者之间的时间差如果是负值或者极小的正值,基本上可以断定发生了直通。

还有一种情况需要特别留意:HO的下降沿看起来关断了,但实际关断是通过米勒平台慢慢完成的。如果驱动回路阻抗太大,高边管子可能拖到LO已经上升后才真正进入关断状态。这时的波形表面上看交叠不明显,但VS点会露馅——在切换瞬间,VS会出现一个高频的“V字形”塌陷或者剧烈振铃,那是两个管子同时导通的电压波动特征。所以判断直通不能只看HO/LO,还要结合VS波形一起看。

2.3 判断死区时间是否够用的量化标准

光会看波形还不够,最好给自己一个量化标准。工程上常用的经验法则是:死区时间要大于高边最大关断总时间减去低边最小导通总时间,同时预留至少两到三倍安全裕量。关断总时间大约等于td(off)+tf,其中td(off)是关断延迟时间,tf是下降时间;导通总时间约等于td(on)+tr,这两个数据在MOS管规格书里都能查到。

举个例子,IRF540的典型td(off)在60ns左右、tf在30ns左右,td(on)在40ns左右、tr在25ns左右。理论算下来关断总时间比导通总时间多出约25ns,好像很小,IR2104的520ns死区绰绰有余。但注意这是规格书里在特定测试电路、特定栅极电流下的结果,实际应用中如果你用了22Ω栅极电阻,栅极充放电电流受限,开关时间会明显变长;再叠加PCB走线电感、米勒电容的非线性、电源电压波动,实际关断时间可能翻倍甚至更多。所以严格来说,不能拿规格书简单加减,要看实际波形。

更实用的做法是直接用示波器测出实际死区时间,然后与驱动波形上实测的高边关断时间比较。如果实测死区与关断时间之比小于2,就该考虑增加死区了。比如你测到实际死区只有300ns,而高边管子从HO开始下降到漏源电流消失用了200ns,虽然看起来还能承受,但温度升高、批次变化都会让参数漂移,保险起见就要加长死区。这也是我下面三步里第一步要做的事。

3. 3步解决死区过短导致的空载发热问题

3.1 第一步:上示波器实测,先拿到现场证据

很多人一遇到发热就急着改参数,这是本末倒置。第一步永远是把现场波形测出来,确定问题是不是真的出在死区时间上。操作步骤很简单:

先把母线电压降到安全值,比如24V甚至12V,负载可以拆掉,只保留半桥本身。然后用示波器两通道同时测量低边栅源电压和高边栅源电压,或者至少测LO对COM、再测VS,通过VS的切换特征辅助判断。PWM频率设置为实际工作频率,比如20kHz或30kHz,占空比设成50%,先把最对称的工况跑起来。

接着用示波器光标功能,测出以下几个数据:HO下降沿开始到LO上升沿开始的时间差;高边管子的实际关断时间(从HO下降到高边Vgs跌到栅极阈值以下所用的时间);母线电流在高边关断瞬间是否存在尖峰。如果时间差明显小于实际关断时间,或者母线电流出现周期性大尖峰,当场就能确认死区不足。

这一步经常遇到的尴尬是没有差分探头。没有探头时,可以换一个思路:在母线正极串一个几十毫欧的采样电阻,用示波器测电阻两端电压波形。如果每个PWM周期都出现几A甚至十几A的尖峰,那就是直通最直接的物证。用这个方法可以绕过高压测量,安全又能说明问题。

3.2 第二步:在PWM控制端把死区时间加到位

确认死区不足之后,接下来就是修。IR2104自身不能调整死区时间,能做的只有两条路:要么在输入信号上做手脚,要么换带外部可调死区的驱动方案。最推荐也最干净的做法,是在产生PWM的控制器里直接插入死区。

如果你用STM32,高级定时器TIM1或TIM8自带死区插入寄存器,这是工程上用得最多的方案。一个例子是:系统时钟72MHz,死区采样时钟t_dts为72MHz,换算后每个计数步进约13.9ns,想设置约1μs死区,DTG值就等于72。代码大致是:

// STM32F103 TIM1 死区配置示例:约1us @ 72MHz TIM1->BDTR &= ~TIM_BDTR_DTG_Msk; TIM1->BDTR |= (72 << TIM_BDTR_DTG_Pos); // DTG = 72, deadtime ≈ 1us TIM1->BDTR |= TIM_BDTR_MOE; // 主输出使能

代码只是示意,具体还要配合PWM的输出极性、互补输出配置。如果想要更长的死区,需要按参考手册里DTG分段规则换算,比如超过127以后死区放大倍数不同,直接写更大的数不一定能得到线性延长时间。如果用的不是STM32,任何带死区功能的MCU或专用PWM芯片都可以做同样的事,关键是理解死区时间就相当于两个互补信号上升沿之间人为插入的延迟。

如果控制器不支持死区调节,还有硬件补救法:在IR2104的HIN或者LIN输入脚前面加RC延时网络,让两路输入信号错开。具体做法是在其中一路信号线上串联一个电阻R,并在信号对地接一个电容C,利用RC充电时间把这一路信号的上升沿拖后,形成一个固定延时。但要注意,RC电路对上升沿和下降沿都会有影响,简单RC会让占空比失真,所以必须配合施密特触发器整形,或者只应用到LIN路径上,避免上下桥输入同时被扭曲。这个方法能应急,但不算优雅,能上MCU死区还是优先上MCU。

推荐的初始死区值:小功率MOS管(Qg在几十nC级别)可以从1μs开始试,大功率MOS管(Qg超过100nC)建议从2μs开始试。加进去之后看发热和波形,逐步微调。

3.3 第三步:核对栅极电阻和自举电路,给死区争取余量

死区时间加到位以后,如果发热明显改善,问题基本解决;但有些板子会出现新情况:加大死区后波形边沿还是不好看,或者加多了死区导致带载效率下降。这时候就要回头查栅极驱动回路的配合。

第一个要查的是栅极电阻Rg。Rg越大,开关过程越慢,MOS管在放大区停留的时间越长,不仅增加开关损耗,还会吃掉IR2104原本预留的死区。反过来,Rg太小,关断瞬间电流变化率di/dt太高,会在PCB寄生电感上产生电压过冲。实践中常用“慢开快关”结构:在Rg两端反并联一个快恢复二极管,开通时电流经过Rg,关断时电流走二极管,这样既能让开通平缓、控制EMI,又能让关断迅速、缩短死区需求。这个结构在电机驱动里很常见,MOS管发热问题的排查清单里一定有它。

第二个要查的是自举电容。自举电容的作用是在高边管子导通期间给高边栅极提供能量,电容太小,高边驱动电压在开关过程中会跌落,导致高边管子不能完全导通,进入线性区发热。这种发热和死区直通发热波形表现不同:死区直通时HO和LO有交叠特征,自举不足则更多表现为高边Vgs波形出现缓慢下降或欠压。自举电容的最小取值可以用Cb≥Qg/ΔVbs估算,比如IRFP4468的Qg在190nC附近,若允许ΔVbs跌落0.5V,则需要至少380nF,实际建议取1μF甚至2.2μF,并且要贴近VB和VS引脚放置。

第三个要查的是layout。VS点到自举电容、MOS管的回路必须尽量短粗,驱动返回路径不能和大电流路径共用。很多发热问题在原理图上看不出来,一量波形到处都是振铃,就是因为layout把驱动回路和大电流回路扭到一起了。调试时如果波形振铃严重,可以临时在栅极串联一个小电阻来压振铃,但根子上还是要优化走线。

4. 改进前后的波形对比与实测经验

4.1 改进前后,到底差了多少

我在自己的板子上做过一次完整的对比实验,把数据拿给大家参考。被测系统是一块48V、30kHz的半桥驱动板,高边和低边管子用的都是IRFP4468,栅极电阻最初是22Ω,IR2104供电15V,控制器输出占空比50%、无死区设置,结果空载状态下管子三分钟就烫到近85摄氏度。示波器实测HO下降沿到LO上升沿的时间差只有大约80ns,而且两个沿在时间轴上明显交叠,母线中串联的采样电阻上出现了约2.4A的周期尖峰。

把死区调到1.8μs、栅极电阻改成慢开快关结构之后,同样条件下HO关断后要等约1.8μsLO才开启,交叠完全消失,母线尖峰从2.4A降到约120mA,MOS管表面温度在三分钟内只有30摄氏度出头,几乎是室温。下面是当时记录的对比数据:

对比项目改进前(死区不足)改进后(死区1.8μs)
HO下降沿与LO上升沿时间差约80ns,存在交叠约1.8μs,无交叠
空载母线电流尖峰约2.4A约120mA
空载3分钟MOS管表面温度约85℃约30℃
VS中点波形切换点塌陷,振铃明显有平稳空闲平台,振铃显著减弱

这个对比非常直观:问题根本不在于散热,而在于每次开关时都在偷偷放炮。死区时间一旦给足,贯穿电流清零,温度自然就掉下来了。之后接上电机负载跑,整机输入电流和温升也明显改善,整体效率从91%上下提到了94%左右,空载修复顺带把整机效率也带高了。

4.2 常见问题速查:发热但波形看不出直通怎么办

调试中你可能会遇到一种迷惑情况:波形看起来没有交叠,但MOS管还是热。这时候多半不是死区问题,而是下面几个坑。

第一,自举电容容量不足或漏电大,高边栅压在开关过程中跌落,管子没有完全导通,工作在放大区。这个从波形上能看出来:高边Vgs在导通末期往下掉,而不是稳定在10V以上。解决办法是加大自举电容、减小自举路径电阻、检查自举二极管反向漏电流。

第二,高边驱动回路的走线太长太细,栅极波形出现振铃,振铃谷值如果低于米勒平台,管子会反复开关,产生额外损耗。这种情况会在HO波形上看到明显的过冲和振铃,在栅极串联一个几欧姆到几十欧姆的小电阻能有效抑制。

第三,体二极管反向恢复损耗。如果你的半桥工作在同步整流或者续流工况,低边体二极管的反向恢复电荷会在高边开通过程中造成额外电流尖峰,这种尖峰不是直通,但同样会发热。解决方法是选择反向恢复快的MOS管,或者优化死区时间,不要让体二极管长时间导通。

第四,SD引脚悬空。IR2104的SD使能脚悬空时容易受干扰,导致驱动状态异常。工程上一般用10kΩ上拉到VCC或者由MCU明确控制,避免上电瞬间逻辑未定性导致驱动输出不确定。很多空载发热的“玄学”问题最后都发现是SD脚没接好。

第五,测量本身有误差。如果用普通探头测浮动HO信号,地线回路带来的共模噪声可能让你误判交叠。这种时候先回到低压母线、用采样电阻看母线电流尖峰,或者用差分探头重新测一遍。

4.3 说点手册上没写的IR2104使用心得

IR2104是一款很老的芯片,但至今还在大量出货,说明半桥驱动这个需求有多稳定。实际用下来,我觉得有几点是数据手册上不会特意强调的。

一个是IR2104的输入信号要尽量保持规范。虽然芯片内部有死区逻辑,但输入信号还是要按互补方式来设计,不能随意让HIN和LIN同时长时间为高,否则芯片和后续电路都容易工作在不可预期的状态。另一点是IR2104的VCC供电一般要10V到20V之间,欠压锁定在8V多,如果供电低于阈值,芯片输出会关断,这时候如果负载是感性器件,续流路径缺失会导致VS电位异常,引发一系列诡异现象。

还有一个经验是,调试空载发热问题时,尽量先用低压运行。比如24V的板子先用12V跑,把波形和发热问题解决后再上高压。低压下直通电流峰值小,不容易炸管,但发热趋势已经能反映问题。等波形完全干净了再慢慢升压,既安全又能快速定位问题。

最后想说的是,MOS管发热这类问题,最忌讳拍脑袋改参数。我那次如果不动示波器直接换更大散热器,估计熬几个通宵也找不到根子。先测波形、确认交叠,再顺着死区、栅极电阻、自举电容、layout这四个方向排查,基本都能在半小时内定位。大家如果调整完死区之后波形仍然有交叠,或者出现新的振铃现象,欢迎把具体型号、频率和波形截图一起发出来讨论。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询