第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时,主要看这几个参数:
- Vds(漏源击穿电压):至少是电源电压的1.5倍。比如24V系统,选40V以上的管子。
- Id(漏极电流):电机峰值电流的2倍以上。别问我为什么,我曾经选了个刚好够的,结果一堵转就烧了。
- Rds(on)(导通电阻):越小越好。大电流时,这个电阻会发热。
- 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桥驱动的基本原理就讲到这里。下一章我们聊聊步进电机的细分驱动,这是实现精确流量调节的关键。