1. 项目背景与核心器件选型
在工业自动化和消费电子领域,直流有刷电机因其结构简单、控制方便、成本低廉等优势,仍然是许多应用场景的首选驱动方案。然而传统驱动电路存在效率低、体积大、保护功能薄弱等问题。我们基于东芝半导体的TC78H651AFNG H桥驱动器和STMicroelectronics的STM32L432KC超低功耗MCU,设计了一款高性能、高集成度的下一代直流有刷驱动解决方案。
TC78H651AFNG是一款双H桥电机驱动器IC,内部集成低导通电阻(典型值0.22Ω@5V)的DMOS功率管,支持2A持续电流输出。其宽工作电压范围(2.7V-16V)和多种内置保护功能(过流、过热、欠压锁定等),使其成为中小功率有刷电机驱动的理想选择。与同类产品相比,其待机电流低至0μA(典型值),特别适合电池供电的便携式设备。
STM32L432KC是基于ARM Cortex-M4内核的超低功耗MCU,运行频率高达80MHz,具有128KB Flash和64KB SRAM。其突出的特点是极低的运行功耗(71μA/MHz)和丰富的外设接口(包括高级定时器、运放、比较器等),为电机控制提供了硬件级的支持。L4系列特有的智能运行模式(动态电压调节)可进一步优化能效比。
2. 硬件系统设计与实现
2.1 功率驱动电路设计
TC78H651AFNG的典型应用电路如图所示。关键设计要点包括:
- 电源去耦:在VM(电机电源)和VCC(逻辑电源)引脚就近放置0.1μF陶瓷电容,大电流应用需额外并联10μF钽电容
- 散热处理:在PCB设计时,需将芯片的散热焊盘(Exposed Pad)通过多个过孔连接至底层铜箔,建议至少2oz铜厚
- 信号滤波:所有控制输入引脚(IN1-IN4)串联100Ω电阻并并联100pF电容,防止高频干扰导致误动作
重要提示:当驱动感性负载时,必须在电机两端并联快速恢复二极管(如1N4148)或TVS管,以吸收关断时产生的反电动势,保护功率MOSFET不被击穿。
2.2 STM32L432KC接口设计
MCU与驱动器的连接方案如下表所示:
| MCU引脚 | 驱动器引脚 | 功能描述 |
|---|---|---|
| PA8 | IN1 | 通道1方向控制 |
| PA9 | IN2 | 通道1PWM输入 |
| PA10 | IN3 | 通道2方向控制 |
| PA11 | IN4 | 通道2PWM输入 |
| PC13 | STBY | 待机控制(低有效) |
特别优化点:
- 使用TIM1_CH1/CH2产生硬件PWM,避免软件模拟带来的时序抖动
- 配置PC13为开漏输出并上拉,实现安全的待机控制
- 在PCB布局时,将MCU的模拟地(AGND)与功率地(PGND)单点连接,降低数字噪声干扰
3. 软件架构与核心算法
3.1 基础驱动层实现
基于STM32CubeMX生成初始化代码后,需重点配置以下外设:
/* PWM定时器配置 */ htim1.Instance = TIM1; htim1.Init.Prescaler = 0; htim1.Init.CounterMode = TIM_COUNTERMODE_UP; htim1.Init.Period = 159; // 80MHz/160 = 500kHz PWM频率 htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; HAL_TIM_PWM_Init(&htim1); /* GPIO配置 */ GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);3.2 运动控制算法
我们实现了三种电机控制模式:
- 速度闭环控制:通过编码器反馈实现PID调速
void PID_Update(PID_HandleTypeDef *hpid, float feedback) { float error = hpid->SetPoint - feedback; hpid->Integral += error * hpid->SampleTime; // 抗积分饱和处理 if(hpid->Integral > hpid->MaxOutput) hpid->Integral = hpid->MaxOutput; else if(hpid->Integral < -hpid->MaxOutput) hpid->Integral = -hpid->MaxOutput; float derivative = (error - hpid->LastError) / hpid->SampleTime; hpid->Output = hpid->Kp * error + hpid->Ki * hpid->Integral + hpid->Kd * derivative; hpid->LastError = error; }- 位置控制:采用梯形速度曲线规划
- 力矩控制:通过电流采样实现恒力矩输出
4. 关键性能优化技巧
4.1 功耗优化实践
- 动态电压调节:根据负载情况实时调整PWM频率
- 轻载时降低至20kHz减少开关损耗
- 重载时提升至500kHz改善电流纹波
- 智能待机策略:
void Enter_StandbyMode(void) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); } - 时钟门控:关闭未使用外设的时钟
__HAL_RCC_TIM2_CLK_DISABLE();
4.2 电磁兼容(EMC)设计
- PCB布局要点:
- 功率回路面积最小化
- 电机电缆采用双绞线并加磁环
- 敏感信号线远离功率走线
- 软件滤波措施:
- ADC采样采用中值平均滤波
- PWM死区时间设置为200ns
- 关键信号增加数字迟滞比较
5. 实测数据与典型应用
5.1 性能测试结果
在24V/1A负载条件下测得:
- 效率:92%@500kHz PWM
- 温升:ΔT=35°C(无额外散热)
- 响应时间:0-全速<50ms
- 待机功耗:<5μA
5.2 工业应用案例
- 自动化生产线:
- 传送带速度控制
- 机械臂关节驱动
- 精密定位平台
- 医疗设备:
- 输液泵流量控制
- 手术床升降驱动
- 呼吸机阀门调节
经验分享:在医疗应用中,需特别注意PWM频率需高于20kHz以避免可听噪声,同时要增加冗余保护电路确保安全。
6. 进阶开发方向
- FOC算法移植:虽然针对有刷电机,但可借鉴无刷电机的磁场定向控制思路
- 预测性维护:通过电流纹波分析判断碳刷磨损状态
- 网络化控制:集成CAN FD接口实现多电机同步
通过实际项目验证,本方案相比传统L298N驱动方案效率提升30%,体积减小60%,特别适合空间受限的嵌入式应用。在开发过程中,我们发现STM32L4的运放外设可直接用于电流采样,省去了外部运放电路,这个设计技巧值得在类似项目中推广。