第1章:H桥驱动原理

各位同学,今天我们来聊聊H桥驱动。这是步进电机驱动的核心,也是很多新手容易踩坑的地方。

H桥这个名字,说白了就是四个开关管搭成一个"H"形状。电机接在中间横杠上,通过控制开关的通断,让电流从不同方向流过电机。就这么简单。

1.1 H桥电路结构

标准的H桥由四个MOSFET组成:Q1、Q2是上桥臂,Q3、Q4是下桥臂。电机接在Q1/Q3连接点和Q2/Q4连接点之间。

我刚开始做驱动时,总觉得这结构太简单了。直到有一次,我同时打开了Q1和Q3...嗯,MOS管直接冒烟了。这就是所谓的"直通"现象,后面会细讲。

H桥的四种基本工作状态:

  • 正转:Q1和Q4导通,电流从A流向B
  • 反转:Q2和Q3导通,电流从B流向A
  • 制动:Q3和Q4同时导通,电机短接
  • 自由滑行:所有MOSFET关断,电机惯性转动

关键点:正转和反转时,绝对不能同时导通同一侧的上下两个MOSFET。这是H桥驱动的基本底线。

1.2 单极性驱动 vs 双极性驱动

这个问题,我当年面试时被问过。现在我也经常拿这个问题考新人。

单极性驱动:每次只让电流从一个方向流过。说白了,就是只用H桥的一半。比如只让Q1和Q4工作,或者只让Q2和Q3工作。

双极性驱动:电流方向会交替变化。正转时电流从A到B,反转时从B到A。步进电机通常用这种。

我个人的习惯是:

  • 小功率、低成本的场合,用单极性驱动
  • 医疗制氧机这种需要精确控制的,必须用双极性驱动

为什么?你想想看,单极性驱动只能产生正电压,电机响应慢。双极性驱动可以快速切换电流方向,步进电机的定位精度更高。

对比项 单极性驱动 双极性驱动
MOSFET数量 2个(或4个但只用一半) 4个
电流方向 单向 双向
控制精度 一般
适用场景 风扇、泵类 步进电机、伺服电机

我的经验:在医疗制氧机项目中,我一开始用了单极性驱动,结果流量调节的线性度很差。换成双极性驱动后,问题立刻解决了。所以,别省那两颗MOSFET的钱。

1.3 MOSFET选型

MOSFET选型,说白了就是选一个能扛得住电压、电流,还能快速开关的管子。

我选MOSFET时,主要看这几个参数:

  1. Vds(漏源击穿电压):至少是电源电压的1.5倍。比如24V系统,选40V以上的管子。
  2. Id(漏极电流):电机峰值电流的2倍以上。别问我为什么,我曾经选了个刚好够的,结果一堵转就烧了。
  3. Rds(on)(导通电阻):越小越好。大电流时,这个电阻会发热。
  4. Qg(栅极电荷):影响开关速度。Qg越小,开关越快。

举个例子,我常用的N沟道MOSFET是IRF540N。Vds=100V,Id=33A,Rds(on)=0.077Ω,Qg=72nC。性价比很高。

注意:上桥臂最好用P沟道MOSFET,这样驱动电路简单。但P沟道管子贵,而且Rds(on)大。我个人的做法是:上桥臂也用N沟道,加一个自举电路。虽然电路复杂点,但性能好。

1.4 死区时间设置

死区时间,这是H桥驱动里最容易忽略的问题。

为什么会需要死区时间?因为MOSFET开关不是瞬间完成的。关断需要时间,导通也需要时间。如果Q1还没完全关断,Q3就导通了,那就直通了。

我曾经在一个项目中,死区时间设得太短,结果MOSFET温升很快。后来用示波器一看,每次切换时都有微小的直通脉冲。嗯,从那以后我再也不敢把死区时间设得太短了。

死区时间的设置原则:

  • 一般取MOSFET关断时间的2-3倍
  • 对于IRF540N,关断时间约50ns,死区时间设150ns左右
  • 如果驱动频率高,死区时间可以适当缩短

代码实现(以STM32为例):

// 死区时间设置示例
// TIM1的刹车和死区寄存器
TIM_BDTRInitTypeDef TIM_BDTRInitStructure;

TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable;
TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;
TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_1;
TIM_BDTRInitStructure.TIM_DeadTime = 0x0A;  // 死区时间约150ns
TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable;
TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_Low;
TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;

TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);

避坑指南:我曾经见过一个工程师,死区时间设了1μs。结果电机在高速运行时,电流波形严重畸变,电机噪音大得吓人。死区时间不是越长越好,太长会影响PWM的占空比精度。

好了,H桥驱动的基本原理就讲到这里。下一章我们聊聊步进电机的细分驱动,这是实现精确流量调节的关键。