电机驱动实战-基于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 集成驱动芯片选型
对比常见驱动芯片特性:
| 型号 | 工作电压 | 峰值电流 | 内置死区 | 典型应用 |
|---|---|---|---|---|
| L298N | 5-46V | 2A | 无 | 小型机器人 |
| DRV8871 | 6.5-45V | 3.6A | 有 | 电动工具 |
| EG2104 | 10-20V | 1A(驱动) | 520ns | 半桥驱动 |
| BTN7960B | 5.5-28V | 43A | 1μ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 典型问题排查
- 电机抖动:检查PWM频率是否过低(建议>15kHz)
- MOSFET发热:测量开关损耗(示波器观察Vds/Id交叉区域)
- 自举电容失效:表现为高端驱动异常,可改用电荷泵方案
5.2 实测波形分析
优质驱动波形应具备:
- 上升/下降时间 <100ns
- 振铃幅度 <20% Vds
- 死区期间无重叠导通
某次电动滑板车项目中,因PCB布局不当导致栅极振铃严重。通过以下措施改善:
- 缩短栅极走线长度
- 增加2.2Ω栅极电阻
- 采用TVS二极管吸收尖峰
