第4章 电机驱动接口设计:H桥电路原理、驱动芯片选型、PWM与方向控制逻辑

各位同学,咱们今天聊聊电机驱动接口。说实话,很多做嵌入式软件的朋友,一提到硬件电路就头疼。但你要想控制好剃须刀的刀头,这关必须过。我当年刚入行时,也踩过不少坑,今天就把这些经验掰开揉碎了讲给你听。

4.1 H桥电路原理——说白了就是个“换向开关”

H桥这个名字,你一看电路图就明白了。四个开关管(通常是MOSFET)摆成“H”形状,电机接在中间横杠上。它的核心任务就两个:让电机正转、让电机反转。

为什么会叫“桥”?因为电流从电源正极出发,经过两个开关管,穿过电机,再经过另外两个开关管回到负极,就像过桥一样。嗯,这里要注意:四个开关管不能同时导通,否则电源直接短路,瞬间冒烟。我在项目中就见过一次,同事调试时手一抖,代码里把上下管同时打开了,啪的一声,板子直接报废。

H桥的四种基本状态:

  • 正转:Q1和Q4导通,Q2和Q3关断。电流从左向右流过电机。
  • 反转:Q2和Q3导通,Q1和Q4关断。电流从右向左流过电机。
  • 刹车(快速停止):Q1和Q3导通,或者Q2和Q4导通。电机两端短路,利用反电动势快速制动。
  • 滑行(自由停止):四个开关全部关断。电机靠惯性继续转,慢慢停下来。

核心要点:剃须刀刀头控制中,我们最常用的是正转和刹车。反转一般只在清理刀头或特殊模式下使用。滑行状态很少用,因为刀头需要快速响应停止指令。

4.2 驱动芯片选型——别只看电流,还要看“脑子”

自己用分立元件搭H桥?我建议你别这么干。剃须刀空间那么小,板子比指甲盖大不了多少,分立元件根本塞不下。直接上集成驱动芯片,省心又省力。

选型时,我个人习惯先看这几个参数:

参数 说明 剃须刀场景建议
持续电流 电机正常工作时流过的电流 0.5A~2A 足够
峰值电流 启动瞬间或堵转时的电流 至少3A,留余量
工作电压 芯片供电范围 2.7V~5.5V(锂电池供电)
逻辑电平 MCU的IO口电压 1.8V/3.3V兼容
保护功能 过流、过热、欠压锁定 必须有,否则容易烧芯片

市面上常见的芯片,比如DRV8837、L9110S、TB6612,我都用过。DRV8837体积小、功耗低,适合剃须刀这种电池供电的设备。L9110S便宜,但保护功能弱,我建议慎用。TB6612性能强,但封装大,小尺寸产品塞不下。

我的经验:选芯片时,一定要看数据手册里的“逻辑输入时序图”。有些芯片要求PWM信号的高电平时间不能太短,否则内部逻辑会误判。我曾经因为这个原因,调试了整整两天,最后发现是PWM占空比低于5%时芯片不响应。嗯,从那以后,我每次选型都会仔细看时序参数。

4.3 PWM与方向控制逻辑——软件怎么指挥硬件

驱动芯片的接口通常很简单:两个输入引脚(IN1、IN2),一个PWM引脚(有的芯片把PWM和IN合并了)。你想想看,MCU只需要输出几根GPIO信号,就能控制电机转得快慢、转的方向。

常见的控制逻辑:

  • IN1=1, IN2=0:电机正转(PWM控制速度)
  • IN1=0, IN2=1:电机反转(PWM控制速度)
  • IN1=0, IN2=0:刹车(快速停止)
  • IN1=1, IN2=1:滑行(自由停止,部分芯片不支持)

PWM频率怎么选?剃须刀电机转速高,一般用20kHz~40kHz。为什么?因为人耳能听到20kHz以下的声音,频率太低会有“滋滋”的啸叫声,用户体验很差。我建议用25kHz,既听不到噪音,又能保证电机响应速度。

下面给一段简单的控制代码,基于STM32的HAL库:

// 电机正转,占空比50%
HAL_GPIO_WritePin(IN1_GPIO_Port, IN1_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(IN2_GPIO_Port, IN2_Pin, GPIO_PIN_RESET);
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 500);  // 假设ARR=1000

// 电机反转,占空比30%
HAL_GPIO_WritePin(IN1_GPIO_Port, IN1_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(IN2_GPIO_Port, IN2_Pin, GPIO_PIN_SET);
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 300);

// 刹车
HAL_GPIO_WritePin(IN1_GPIO_Port, IN1_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(IN2_GPIO_Port, IN2_Pin, GPIO_PIN_RESET);

警告:切换方向时,一定要先刹车再换向。直接从正转切到反转,电机两端会产生巨大的反电动势,轻则损坏驱动芯片,重则导致MCU复位。我曾经在测试时偷懒,没加刹车延时,结果连续切换方向十几次后,芯片直接冒烟了。正确的做法是:先刹车等待5ms~10ms,再设置新的方向。

4.4 实际项目中的避坑指南

讲几个我亲身踩过的坑,你遇到了能少走弯路:

  • 电源滤波:电机启动瞬间电流很大,会导致电源电压跌落。MCU如果检测到电压低于阈值,会直接复位。解决办法:在电机电源引脚旁边加一个大电容(100μF以上),再串一个小电阻(0.5Ω~1Ω)做缓启动。
  • 地线处理:电机电流回路和MCU信号回路要分开走线,最后单点接地。否则电机噪声会串到信号线上,导致PWM波形畸变。我见过一个案例,工程师把电机地和MCU地直接连在一起,结果电机一转,ADC采样值就乱跳。
  • 死区时间:如果你用分立元件搭H桥,上下管切换时必须插入死区时间(几百纳秒到几微秒)。集成驱动芯片内部已经处理好了,但如果你用PWM直接控制MOSFET栅极,这个必须自己加。否则上下管瞬间导通,短路电流能把铜箔都烧断。

好了,这一章的内容就这些。H桥电路是电机控制的基础,驱动芯片选型决定了系统的可靠性,PWM和方向逻辑则是软件和硬件的桥梁。你把这些搞懂了,剃须刀刀头控制就成功了一半。下一章咱们聊聊电流检测和堵转保护,那才是真正考验细节的地方。