4、H桥电路设计:H桥拓扑结构、死区时间设置、直通保护、自举电路设计

步进电机驱动,说白了就是控制线圈里的电流方向和大小。而H桥,就是干这个活的“开关组合”。

我刚开始做电机驱动那会儿,觉得H桥不就是四个管子嘛,有啥难的?结果第一次上电,管子直接冒烟。嗯,从那以后,我再也不敢小看这个看似简单的电路了。

4.1 H桥拓扑结构

H桥的名字很形象——四个开关管(通常是MOSFET)搭成一个“H”形状。负载电机接在中间横杠上。

基本结构是这样的:

  • Q1(左上)Q4(右下)同时导通:电流从左向右流过电机
  • Q2(右上)Q3(左下)同时导通:电流从右向左流过电机
  • 四个管子全关:电机自由滑行(惰行)
  • Q1和Q2同时导通:直通!烧管子!

我个人习惯把H桥分成“高边”和“低边”。高边是Q1和Q2,接电源;低边是Q3和Q4,接地。驱动时,高边用PMOS或NMOS都可以,但NMOS导通电阻小、成本低,现在主流方案都用NMOS。

关键点:用NMOS做高边时,栅极电压必须比源极高出一个Vgs(th)。源极电压接近电源电压,所以你需要一个比电源电压更高的驱动电压——这就是自举电路存在的意义。

4.2 死区时间设置

为什么会需要死区时间?

你想想看,MOSFET开关不是瞬间完成的。关断需要时间,导通也需要时间。如果Q1还没完全关断,Q2就导通了——电源直接对地短路,电流瞬间飙升。

我在项目中遇到过这种情况:死区时间设得太短,管子发热严重。设得太长,电机电流波形失真,噪音大、效率低。

死区时间的设置原则:

  • 下限:大于MOSFET的关断延迟时间(td_off)与导通延迟时间(td_on)之差
  • 上限:以不影响PWM占空比精度为准,一般不超过PWM周期的5%
  • 典型值:对于几十kHz的PWM,死区时间通常在100ns~500ns之间

举个例子,我常用的IRF540N,关断延迟约50ns,导通延迟约30ns。保险起见,我会设到200ns。如果你用GaN器件,死区时间可以压到10ns以下。

小技巧:很多MCU的定时器自带死区插入功能。比如STM32的高级定时器,直接配置DTG寄存器就行。别自己用软件延时去搞,精度不够,还容易出bug。

4.3 直通保护

直通(Shoot-Through),也叫“穿通”。就是同一桥臂的上下两个管子同时导通。

直通的原因通常有三个:

  1. 死区时间不够——上面说过了
  2. 驱动信号毛刺——比如MCU上电瞬间IO口电平不确定
  3. 米勒效应——高边管子开关时,通过米勒电容耦合到低边栅极,导致低边误导通

我曾经吃过米勒效应的亏。那是一个24V的电机驱动板,低边栅极没加下拉电阻。高边一关断,低边栅极电压被耦合抬升到2V多,管子半导通,发热严重。

解决方案:

  • 硬件互锁:用逻辑门(如与门)确保上下管驱动信号不会同时为高
  • 栅极下拉电阻:在MOSFET栅极和源极之间加10kΩ电阻,防止浮空
  • 负压关断:对于大功率应用,用负压驱动(如-5V)确保管子可靠关断
  • RC缓冲:在桥臂中点对地加RC吸收网络,抑制电压尖峰

警告:直通不是“偶尔发生”的问题,而是“迟早会发生”的问题。一旦发生,MOSFET会在几微秒内烧毁。所以,硬件互锁是必须的,不能只依赖软件。

4.4 自举电路设计

前面说了,用NMOS做高边需要比电源电压更高的栅极驱动电压。自举电路就是干这个的。

自举电路的核心元件:一个二极管、一个电容。

工作原理很简单:

  1. 低边管子导通时,自举电容通过二极管从VCC充电
  2. 低边管子关断、高边管子要导通时,自举电容的电压叠加在电源上,给高边栅极供电
  3. 电容上的电荷会慢慢消耗,所以需要定期让低边导通来“补电”

自举电容的计算:

参数 说明 典型值
电容值 Cboot = Qgate / ΔVboot 0.1μF ~ 10μF
耐压 大于电源电压+驱动电压 25V ~ 100V
类型 低ESR,高频特性好 X7R陶瓷电容

Qgate是MOSFET栅极总电荷,可以从数据手册查到。ΔVboot是允许的电压跌落,一般取1V~2V。

举个例子,IRF540N的Qgate约70nC,允许跌落1V,那么Cboot = 70nC / 1V = 70nF。我一般取0.22μF,留点余量。

避坑指南:自举二极管一定要用快恢复二极管(FRD)或肖特基二极管。普通整流管恢复时间太长,高频下会发热甚至烧毁。我曾经用1N4007做过自举二极管,10kHz以上就扛不住了。

另外,自举电路有个天然缺陷——如果PWM占空比接近100%,低边长时间不导通,自举电容没机会充电,高边就会驱动不足。这时候要么限制最大占空比(比如95%),要么用隔离电源单独给高边供电。

嗯,H桥设计这块,说难不难,说简单也不简单。关键是把每个细节都想清楚:管子选型、死区时间、直通保护、自举供电。一个环节出问题,整个驱动板就废了。

我个人的经验是:第一次打板,先别急着上大电流。用示波器看栅极波形,确认死区时间、确认没有直通、确认自举电压正常。这些都没问题了,再上负载测试。

毕竟,烧管子事小,烧了板子还找不到原因,那才叫郁闷。