3、电机驱动基础:H桥驱动原理、MOSFET选型与栅极驱动、PWM调制与死区时间设置

各位同学,咱们今天聊点硬核的。电机驱动,说白了就是怎么让电机听话。你让它转它就转,让它停它就停,让它正转它绝不反转。这背后,H桥是核心,MOSFET是手脚,PWM是大脑的指令。我做了这么多年转向系统,这三个东西要是没搞透,车子上了路心里是真没底。

3.1 H桥驱动原理:让电机正反转的“魔法开关”

H桥这个名字,你一看电路图就明白了。四个开关管摆成“H”形,电机横在中间那根横杠上。它的任务很简单:控制电流方向。

怎么控制?我习惯这么记:

  • 正转:左上和右下导通,电流从左往右流过电机。
  • 反转:右上和左下导通,电流从右往左流过电机。
  • 刹车:要么上下同侧导通(短路制动),要么全部关断(滑行)。

你想想看,这就像过河。你想从左岸到右岸,就开左边的桥和右边的桥。想回来?换一对桥就行。简单吧?

核心要点:H桥绝对不能出现“上下直通”。也就是左上和左下同时导通,或者右上和右下同时导通。那叫“直通短路”,电流瞬间爆炸,管子直接冒烟。我在项目里见过有人调试时忘了加死区,一上电MOSFET就炸了,那声音,跟放鞭炮似的。

实际应用中,我们常用的是“半桥”组合。一个半桥就是上下两个管子。两个半桥拼起来,就是一个完整的H桥。很多集成驱动芯片,比如DRV8837、L298N,内部就是这么干的。

3.2 MOSFET选型与栅极驱动:选对管子,成功一半

MOSFET是H桥的执行者。选型选不好,后面全是坑。我个人习惯从这几个维度下手:

参数 我的建议 为什么
Vds(漏源击穿电压) 至少2倍母线电压 电机反电动势尖峰很高,留余量才安全
Rds(on)(导通电阻) 越小越好,<10mΩ 电阻大,发热大,效率低。转向电机电流大,发热是头号敌人
Qg(栅极总电荷) 尽量小,<50nC Qg小,开关速度快,开关损耗低。但要注意,太快了会有振铃
Id(漏极电流) 2倍峰值电流以上 电机堵转时电流最大,必须扛得住

嗯,这里要注意。栅极驱动不是随便给个电压就行。MOSFET的栅极是个电容,你得给它快速充放电才能让它快速开关。驱动电流不够,管子就会“慢吞吞”地开关,损耗巨大。

我曾经在一个项目中,用了普通的GPIO直接推MOSFET,结果管子温升特别快。后来加了专门的栅极驱动芯片,比如IR2104,问题就解决了。驱动芯片的好处是:

  • 提供足够的峰值电流(通常1A~4A)
  • 自带死区时间控制
  • 有的还带欠压锁定和故障反馈

我的小技巧:栅极串联一个10Ω~22Ω的电阻。这个电阻能抑制开关时的振荡,又不至于让开关速度太慢。具体阻值,用示波器看栅极波形,调到没有明显振铃为止。

3.3 PWM调制与死区时间设置:精细控制的灵魂

电机要调速,靠的就是PWM。占空比越大,平均电压越高,电机转得越快。但PWM不是简单的“给电-断电”,这里有两个关键点:

3.3.1 PWM调制方式

常用的有两种:

  • 单极性调制:一个半桥的上下管互补导通,另一个半桥的下管常开或常闭。优点是纹波小,但开关损耗集中在一边。
  • 双极性调制:四个管子全部参与开关,对角线上的管子同时通断。优点是响应快,但纹波大,损耗也大。

转向系统里,我一般用单极性调制。因为转向电机对纹波敏感,纹波大了会抖,手感很差。

3.3.2 死区时间——绝对不能省

死区时间是什么?就是上下管切换时,故意插入的一段“全关断”时间。为什么要这么做?

因为MOSFET关断比开通慢。你想想看,上管还没完全关断,下管就开了,这不就直通了吗?

警告:死区时间太短,会直通炸管。死区时间太长,波形失真,电机噪音大,效率低。我一般从100ns开始调,用示波器看上下管的栅极波形,确保一个完全关断后另一个才开通。

具体设置多少?我分享一个经验公式:

死区时间 > 关断延迟时间 - 开通延迟时间 + 安全裕量

安全裕量我通常取50~100ns。比如某款MOSFET的关断延迟是40ns,开通延迟是20ns,那死区时间至少设到120ns。

实际项目中,很多MCU的PWM模块自带死区插入功能。比如STM32的高级定时器,直接配置DTG寄存器就行。我习惯用库函数:

// 以STM32为例,设置死区时间为100ns
TIM_BDTRInitTypeDef bdtr;
bdtr.TIM_OSSRState = TIM_OSSRState_Enable;
bdtr.TIM_OSSIState = TIM_OSSIState_Enable;
bdtr.TIM_LOCKLevel = TIM_LOCKLevel_1;
bdtr.TIM_DeadTime = 10; // 根据时钟频率计算,这里假设时钟为100MHz,10对应100ns
bdtr.TIM_Break = TIM_Break_Disable;
bdtr.TIM_BreakPolarity = TIM_BreakPolarity_High;
bdtr.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
TIM_BDTRConfig(TIM1, &bdtr);

代码看着简单,但实际调试时,我建议先用示波器抓波形确认。别信手册,信眼睛。

3.4 知识体系总览

下面这张图,是我自己画的。它把H桥、MOSFET、PWM和死区的关系串起来了。你一看就明白:

电机驱动核心知识体系 H桥驱动原理 MOSFET选型 PWM调制 死区时间设置 Vds / Rds(on) / Qg 单极性 / 双极性 关断延迟 - 开通延迟 + 裕量 三者关系:H桥是骨架,MOSFET是肌肉,PWM是神经 死区是安全保险,缺一不可

说白了,H桥给了你控制方向的能力,MOSFET给了你执行的能力,PWM给了你精细调节的能力。而死区时间,是保证这一切安全运行的底线。这三样东西,你吃透了,电机驱动这块就算入门了。

避坑指南:我曾经在调试时,为了追求极致的效率,把死区时间压到50ns。结果电机一启动,噪音大得吓人,波形上全是毛刺。后来老老实实加到150ns,世界清净了。记住,稳定比效率更重要。

好了,这一章就到这里。下一章咱们聊聊电流采样和闭环控制,那又是另一片天地了。


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