电机驱动实战-基于STM32的直流有刷电机H桥控制与保护电路设计

📅 2026/7/15 23:40:28 👁️ 阅读次数 📝 编程学习
电机驱动实战-基于STM32的直流有刷电机H桥控制与保护电路设计

1. 直流有刷电机驱动基础

直流有刷电机(Brushed DC Motor)是嵌入式系统中最常见的执行机构之一。它的核心结构包含定子、转子、电刷和换向器四个部分。当电流通过电刷流入转子线圈时,会在磁场中产生安培力,这个力通过左手定则判断方向,使转子持续旋转。

典型参数解读

  • 额定电压:12V/24V(常见工业标准)
  • 空载电流:通常为额定电流的10%-20%
  • 堵转电流:可达额定电流5-10倍(必须避免长时间堵转)
  • 减速比:如30:1表示输出转速降低30倍,扭矩增大近30倍

我在实际项目中发现,减速电机在启动瞬间容易产生3-5倍的冲击电流。曾经有个AGV小车项目因为没考虑这个特性,导致驱动MOSFET频繁击穿。后来通过软启动电路解决了这个问题。

2. H桥驱动电路设计

2.1 分立元件方案

传统H桥使用4个MOSFET构成电流通路:

// 典型驱动逻辑 void H_Bridge_Control(bool IN1, bool IN2) { MOSFET_Q1 = IN1 && !IN2; // 右上管 MOSFET_Q2 = !IN1 && IN2; // 左下管 MOSFET_Q3 = IN2; // 右下管 MOSFET_Q4 = IN1; // 左上管 }

这种方案需要特别注意死区时间(Dead Time)设置,我实测发现至少需要500ns间隔才能避免上下管直通。曾经因为死区不足导致半桥驱动芯片EG2104瞬间烧毁。

2.2 集成驱动芯片选型

对比常见驱动芯片特性:

型号工作电压峰值电流内置死区典型应用
L298N5-46V2A小型机器人
DRV88716.5-45V3.6A电动工具
EG210410-20V1A(驱动)520ns半桥驱动
BTN7960B5.5-28V43A1μs汽车座椅调节

实测中EG2104的自举电路设计很关键,建议:

  • 自举电容选用0.1μF X7R贴片电容
  • 自举二极管需选用快恢复型(如1N4148)
  • VBS引脚电压建议保持在12-15V范围

3. STM32高级定时器配置

3.1 互补PWM输出

使用TIM1产生带死区的PWM:

void TIM1_Init(void) { TIM_HandleTypeDef htim1; htim1.Instance = TIM1; htim1.Init.Prescaler = 0; // 168MHz时钟 htim1.Init.Period = 8399; // 20kHz PWM htim1.Init.CounterMode = TIM_COUNTERMODE_UP; HAL_TIM_PWM_Init(&htim1); TIM_OC_InitTypeDef sConfigOC; sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 4200; // 50%占空比 sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1); TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; sBreakDeadTimeConfig.DeadTime = 0x0F; // 约650ns死区 sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig); }

3.2 关键参数计算

  • PWM频率:168MHz/(8399+1) = 20kHz(超出人耳范围避免噪音)
  • 死区时间:DeadTime = (DTG[7:0]+1)*Tdts
    • Tdts = 1/168MHz ≈ 5.95ns
    • 0x0F对应(15+1)*5.95≈95ns(实际芯片会有额外延迟)

4. 保护电路设计

4.1 过流保护方案

采用低边采样电阻+比较器方案:

[电机] -> [H桥] -> [0.05Ω采样电阻] -> [LMV321放大20倍] -> [LM393比较] -> [STM32 ADC监测]

计算公式:

I_motor = (ADC_Value * 3.3V / 4096) / (0.05Ω * 20)

我在无人机项目中发现,普通贴片电阻在5A电流下温漂明显。后来改用合金采样电阻(如WSHP2818),温漂系数降低到50ppm/℃以下。

4.2 硬件保护逻辑

使用与门实现双重保护:

// 真值表 // MCU_OK HW_OK DRV_EN // 0 0 0 // 0 1 0 // 1 0 0 // 1 1 1 assign DRV_EN = MCU_OK & HW_OK;

5. 系统集成与调试

5.1 典型问题排查

  1. 电机抖动:检查PWM频率是否过低(建议>15kHz)
  2. MOSFET发热:测量开关损耗(示波器观察Vds/Id交叉区域)
  3. 自举电容失效:表现为高端驱动异常,可改用电荷泵方案

5.2 实测波形分析

优质驱动波形应具备:

  • 上升/下降时间 <100ns
  • 振铃幅度 <20% Vds
  • 死区期间无重叠导通

某次电动滑板车项目中,因PCB布局不当导致栅极振铃严重。通过以下措施改善:

  • 缩短栅极走线长度
  • 增加2.2Ω栅极电阻
  • 采用TVS二极管吸收尖峰