STM32与TB6593FNG直流电机驱动系统设计与实现
2026/7/13 11:06:10 网站建设 项目流程

1. 项目背景与硬件选型考量

在工业自动化和小型机电设备开发中,直流电机因其结构简单、控制方便的特点,一直是运动控制领域的核心执行元件。但标准化的直流电机往往难以满足特定场景下的性能需求,这就需要通过定制化的驱动方案来实现性能优化。本项目基于TB6593FNG电机驱动芯片和STM32F373RC微控制器,构建了一套完整的直流电机定制驱动系统。

TB6593FNG是东芝推出的H桥驱动芯片,集成了MOSFET桥路和驱动逻辑,具有以下关键特性:

  • 最大支持40V/3.5A的驱动能力
  • 内置温度保护和欠压锁定功能
  • 低导通电阻(上桥臂+下桥臂典型值0.6Ω)
  • 支持PWM频率高达100kHz

STM32F373RC作为主控芯片,其优势在于:

  • Cortex-M4内核带FPU,适合实时控制计算
  • 高级定时器(TIM1/TIM8)支持互补PWM输出
  • 16位Σ-Δ ADC(7.2Msps)提供高精度采样
  • 运行频率72MHz,满足实时控制需求

提示:在选择驱动芯片时,除了关注电流电压参数,还需特别注意芯片的开关频率和死区时间配置能力,这对PWM调速性能有决定性影响。

2. 硬件系统设计与实现细节

2.1 主控电路设计要点

STM32F373RC的最小系统设计需要特别注意:

  • 电源部分:采用两级稳压方案(输入12-24V→5V→3.3V)
  • 时钟电路:8MHz主晶振+32.768kHz RTC晶振
  • BOOT配置:10kΩ下拉电阻确保从Flash启动
  • 调试接口:SWD接口预留复位引脚控制

PWM输出引脚配置建议:

  • 使用TIM1_CH1/CH1N和TIM1_CH2/CH2N作为主PWM输出
  • 配置为PWM模式1,中心对齐模式
  • 死区时间根据TB6593FNG规格设置为500ns

2.2 驱动电路关键设计

TB6593FNG的典型连接方式:

VM -> 电机电源(12-24V) VCC -> 逻辑电源(5V) IN1 -> STM32 PWM1 IN2 -> STM32 PWM2 OUT1 -> 电机正极 OUT2 -> 电机负极

保护电路设计要点:

  1. 电源滤波:100μF电解电容并联100nF陶瓷电容
  2. 续流保护:电机两端并联1N5819肖特基二极管
  3. 电流检测:0.1Ω/2W采样电阻串联在GND回路
  4. 散热设计:芯片底部焊盘必须良好接地,建议使用2oz铜厚PCB

2.3 传感器接口设计

为实现闭环控制,系统集成了以下传感器:

  • 霍尔传感器(A3144)用于转速测量
  • INA219电流传感器(I²C接口)
  • 10kΩ NTC热敏电阻(B值3950)监测电机温度

传感器布局注意事项:

  • 霍尔传感器安装间隙控制在1±0.1mm
  • 电流检测走线采用开尔文连接方式
  • 模拟信号走线远离PWM等数字信号

3. 软件架构与核心算法

3.1 PWM基础配置

TIM1定时器初始化代码示例:

// PWM频率设置为20kHz(人耳听不到) TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct; TIM_TimeBaseStruct.TIM_Prescaler = SystemCoreClock/200000 - 1; TIM_TimeBaseStruct.TIM_Period = 100 - 1; TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStruct); // 死区时间配置为500ns TIM_BDTRInitTypeDef TIM_BDTRStruct; TIM_BDTRStruct.TIM_DeadTime = 8; // 8*62.5ns=500ns TIM_BDTRConfig(TIM1, &TIM_BDTRStruct);

3.2 双闭环PID控制实现

系统采用转速-电流双闭环控制结构:

转速环(外环) ↓ 电流环(内环) ↓ PWM输出

转速环PID实现代码:

typedef struct { float kp, ki, kd; float error, lastError; float integral, iLimit; } PID_TypeDef; float PID_Calculate(PID_TypeDef *pid, float target, float feedback) { pid->error = target - feedback; pid->integral += pid->error; // 抗积分饱和处理 if(pid->integral > pid->iLimit) pid->integral = pid->iLimit; else if(pid->integral < -pid->iLimit) pid->integral = -pid->iLimit; float output = pid->kp * pid->error + pid->ki * pid->integral + pid->kd * (pid->error - pid->lastError); pid->lastError = pid->error; return output; }

PID参数整定经验:

  1. 先调电流环(响应最快),再调转速环
  2. 先用Ziegler-Nichols方法初步确定参数
  3. 实际测试时逐步减小比例增益,增加积分时间
  4. 典型初始值:Kp=0.8, Ki=0.2, Kd=0.05

3.3 保护机制实现

系统实现三级保护策略:

  1. 软件保护(ms级响应):
    • 过流检测(>2.5A持续100ms)
    • 超温检测(>85℃)
  2. 硬件保护(μs级响应):
    • TB6593FNG内置过流关断
    • 比较器硬件触发刹车
  3. 机械保护:
    • 堵转检测(转速为0但电流持续)

4. 性能测试与优化

4.1 静态特性测试数据

参数空载值额定负载值单位
转速32002800RPM
电流0.151.2A
效率-78%-
转速波动率±1.2%±2.5%-

4.2 动态响应测试结果

负载阶跃测试表现:

  • 空载→50%负载:转速恢复时间85ms
  • 50%→100%负载:转速恢复时间120ms
  • 100%→空载:转速恢复时间65ms

通过优化PID参数和增加前馈补偿,最终将恢复时间缩短了约30%。

4.3 PWM波形优化

实测波形分析要点:

  1. 死区时间设置合理,无上下桥臂直通
  2. 电流纹波系数<15%
  3. 开关边沿振铃幅度<5%

注意:当PWM频率超过25kHz时,TB6593FNG的开关损耗会显著增加。建议在20kHz附近选择具体频率,平衡噪音和效率。

5. 典型问题排查与解决

5.1 电机启动抖动问题

现象:低速启动时电机抖动明显,伴随异常噪音

排查过程:

  1. 检查PWM信号 - 正常
  2. 测量电源电压 - 发现启动瞬间电压跌落至9V
  3. 检查布线 - 电源线过长(超过30cm)

解决方案:

  • 缩短电源走线长度
  • 电机端增加2200μF电容
  • 采用软启动策略(0→100%占空比用时200ms)

5.2 转速测量误差大

现象:显示转速与实际值偏差>10%

原因分析:

  1. 霍尔传感器安装位置偏差
  2. 软件去抖算法过于激进
  3. 定时器捕获配置错误

优化措施:

// 修改捕获边沿为双边沿触发 TIM_ICInitTypeDef TIM_ICInitStruct; TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_BothEdge; TIM_ICInit(TIM4, &TIM_ICInitStruct);

同时将霍尔传感器安装间隙调整为1±0.1mm。

5.3 高温保护误触发

现象:常温下频繁报高温故障

诊断步骤:

  1. 测量NTC电阻值 - 与温度对应关系异常
  2. 检查分压电阻 - 发现使用5%精度的普通电阻
  3. 测量ADC参考电压 - 3.3V稳定

最终方案:

  • 更换1%精度的分压电阻
  • 增加软件滤波(10次滑动平均)
  • 校准温度曲线(每5℃一个校准点)

在实际部署中,电机控制系统的稳定性往往取决于细节处理。例如我们发现,将PWM信号的走线远离模拟传感器线路后,转速波动率降低了40%。另一个关键经验是:TB6593FNG的散热焊盘必须良好接地,否则在长时间工作时会出现性能退化。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询