3、功率管驱动故障诊断:栅极驱动芯片欠压检测、米勒平台效应与直通短路、死区时间设置不当导致的故障

驱动电路,说白了就是功率管的“大脑”。大脑出问题,肌肉再强也白搭。我做FOC这些年,炸管子的案例里,十有八九跟驱动故障脱不了干系。今天咱们就聊聊驱动侧最常见的三个坑:欠压、米勒平台引起的直通、还有死区时间设置。

3.1 栅极驱动芯片欠压检测

驱动芯片要正常工作,供电电压必须达标。比如IR2101这类半桥驱动,VCC低于9V左右就会出问题。我见过不少新手,电源纹波大一点,驱动芯片就间歇性欠压,MOS管半开半关,直接冒烟。

⚠️ 注意: 欠压不是“没电”,而是电压不够高。驱动芯片内部逻辑混乱,输出波形畸变,比完全没电更危险。

我个人习惯,在驱动芯片的VCC引脚旁边加一个电阻分压,送到MCU的ADC去实时监测。阈值设成12V(对于15V供电的驱动)。低于这个值,立刻封锁PWM输出。

硬件上,很多驱动芯片自带UVLO(欠压锁定)功能。比如IR2110的UVLO阈值是8.6V(典型值)。但要注意,UVLO恢复有迟滞,一般是0.3V左右。也就是说,电压掉到8.6V以下关断,要回升到8.9V才重新开启。这个迟滞是好事,防止临界点反复跳变。

驱动芯片型号 UVLO阈值(典型) 迟滞电压
IR2110 8.6V 0.3V
IR2101 8.9V 0.3V
DRV8301 6.0V 0.5V

我曾经在一个项目中,用了便宜的DC-DC模块给驱动供电。负载一上去,电压掉到9V以下,驱动芯片反复进入UVLO状态。PWM波形变得乱七八糟,电机嗡嗡响就是不转。后来换了低纹波的LDO,问题才解决。

💡 经验: 驱动供电的滤波电容别省。我习惯在VCC引脚放一个10μF陶瓷电容+一个47μF电解电容,靠近芯片放置。

3.2 米勒平台效应与直通短路

米勒平台,这个词听起来高大上,其实说白了就是MOS管在开关过程中,栅极电压会“卡”在一个平台上一段时间。为什么会这样?因为栅极和漏极之间有寄生电容Cgd。当漏极电压变化时,会通过Cgd向栅极注入电流,导致栅极电压上升变慢。

这个平台期,MOS管处于线性区,导通电阻很大,电流却很大。如果上下管同时处于这个状态,那就是直通短路,电流瞬间飙升,管子秒炸。

我画个图帮你理解一下米勒平台的过程:

MOS管开启过程中的米勒平台 Vgs Vth Vplateau 0 时间 米勒平台 Vth(阈值电压) Vplateau(米勒平台电压) 关断区 米勒平台区 完全导通区

你看,Vgs上升到Vth之后,管子开始导通。但到了米勒平台电压,Vgs就“卡住”了。这时候漏极电压在下降,通过Cgd反馈到栅极。平台越长,管子在线性区待的时间越久,发热越严重。

怎么解决?我建议从两个方向入手:

  • 增大栅极驱动电流:用更强的驱动芯片,或者减小栅极串联电阻Rg。驱动电流大了,米勒平台持续时间就短。
  • 增加栅极负压关断:关断时给栅极一个负电压(比如-5V),让管子关得更彻底,防止米勒效应引起误导通。
🔑 关键点: 米勒平台不是坏事,它是MOS管开关过程的必然现象。问题在于平台时间太长,或者上下管平台重叠导致直通。

我记得有一次调试一个48V/10A的BLDC驱动器,上电就炸管。用示波器一看,上管关断时,下管栅极出现了一个尖峰,正好超过Vth。这就是米勒效应引起的“串扰”。后来在下管栅极加了一个10kΩ下拉电阻,问题解决。

3.3 死区时间设置不当导致的故障

死区时间,就是上下管都关断的那段“空白期”。设置死区是为了防止直通。但死区太短,管子还没关死,另一个就开了,直通短路。死区太长,电流续流通过体二极管,二极管发热严重,效率降低。

你想想看,死区时间到底设多少合适?这取决于几个因素:

  • MOS管的关断延迟时间(td_off):从栅极信号撤去到管子完全关断的时间。
  • 驱动芯片的传播延迟:从输入信号变化到输出变化的时间。
  • 死区时间裕量:一般建议在理论值基础上加20%-50%的裕量。

我一般这样估算死区时间:

// 死区时间估算示例
// 假设使用IR2101驱动 + IRF540N MOS管
// IR2101传播延迟:典型值 160ns
// IRF540N关断延迟:典型值 45ns

// 理论最小死区 = 160ns + 45ns = 205ns
// 实际设置 = 205ns * 1.5 = 307ns
// 取整为 350ns

// 在STM32定时器中配置
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;

// 死区时间寄存器设置
// DT = (dead_time / Tclk) - 1
// 假设定时器时钟为72MHz,Tclk = 13.89ns
// 350ns / 13.89ns ≈ 25
TIM_BDTRInitStructure.TIM_DeadTime = 25;  // 约350ns

实际项目中,我习惯用示波器直接看上下管栅极波形。调死区时间,直到看到上下管栅极波形之间有明显的“空隙”,而且空隙刚好够管子完全关断。这个空隙就是死区。

⚠️ 注意: 死区时间不是越大越好。死区太大,体二极管导通时间长,发热严重。对于高频应用(比如20kHz以上),死区时间每增加100ns,效率可能下降0.5%-1%。

我曾经在一个项目中,死区时间设了1μs。电机低速运行时没问题,但高速时效率只有80%左右。后来用示波器一看,死区太长,体二极管一直在导通。把死区调到300ns,效率直接升到88%。

嗯,这里要注意一点:不同品牌的MOS管,关断延迟差异很大。比如英飞凌的CoolMOS系列,关断延迟只有20ns左右。而一些老款MOS管,关断延迟可能到100ns以上。换管子的时候,死区时间一定要重新调。

💡 实用技巧: 我习惯在代码里把死区时间做成可配置参数。调试时用串口或者旋钮实时调整,找到最佳值后再固化到代码里。这样省去了反复烧录的麻烦。

总结一下驱动故障诊断的三个要点:欠压检测要实时监控,米勒平台要控制驱动电流和负压关断,死区时间要精确设置并留裕量。这三个问题处理好了,驱动电路基本就稳了。

📌 核心要点回顾:
  • 驱动芯片UVLO阈值要清楚,供电电压要稳定
  • 米勒平台是MOS管开关的必然现象,要控制平台时间
  • 死区时间要精确计算,用示波器验证
  • 换管子或驱动芯片后,死区时间必须重新调整

公众号:蓝海资料掘金营,微信deep3321