【零基础玩转STM32】手把手教你用TB6612FNG驱动直流电机

系列文章目录

1.元件基础
2.电路设计
3.PCB设计
4.元件焊接
5.板子调试
6.程序设计
7.算法学习
8.编写exe
9.检测标准
10.项目举例
11.职业规划


一、硬件认知篇

1.1 TB6612FNG是什么?

这是一款双通道直流电机驱动芯片(可同时控制2个电机),相比传统的L298N:

  • 效率提升30%(发热更少)
  • 支持高达1.2A持续电流
  • 内置短路保护电路

1.2 核心引脚说明(重点!)

VM  : 电机电源(建议6-12V)
VCC : 逻辑电源(3.3V-5V)
GND : 公共地

AIN1/AIN2 : 电机A转向控制
BIN1/BIN2 : 电机B转向控制
PWMA/PWMB : PWM调速输入
STBY     : 待机控制(高电平工作)

1.3 H桥原理揭秘

通过四颗MOS管组成"桥臂",控制电流方向:

  • AIN1=1, AIN2=0 → 正转
  • AIN1=0, AIN2=1 → 反转
  • 全高或全低 → 刹车/停止

二、硬件连接篇

2.1 STM32接线示意图

/* 以STM32F103C8T6为例 */
TB6612引脚  ->  STM32引脚
PWMA       ->  PA6(TIM3_CH1)
AIN1       ->  PB0
AIN2       ->  PB1
STBY       ->  PB5
GND        ->  GND(必须共地!)

2.2 电源注意事项

  • 使用独立电源给电机供电
  • 建议在VM端并联100μF电解电容
  • 逻辑电源与STM32共地

三、软件编程篇

3.1 CubeMX配置

  1. 使能TIM3_CH1(PWM生成)
  2. 设置PSC=71,ARR=999 → 10kHz PWM
  3. 配置PB0、PB1、PB5为GPIO_Output

3.2 核心代码解析

// PWM初始化
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);

// 电机控制函数
void MotorA_Ctrl(uint8_t dir, uint16_t speed)
{
    if(dir == FORWARD){
        HAL_GPIO_WritePin(AIN1_GPIO_Port, AIN1_Pin, GPIO_PIN_SET);
        HAL_GPIO_WritePin(AIN2_GPIO_Port, AIN2_Pin, GPIO_PIN_RESET);
    }
    else if(dir == BACKWARD){
        HAL_GPIO_WritePin(AIN1_GPIO_Port, AIN1_Pin, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(AIN2_GPIO_Port, AIN2_Pin, GPIO_PIN_SET);
    }
    __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, speed);
}

// 启用驱动芯片
HAL_GPIO_WritePin(STBY_GPIO_Port, STBY_Pin, GPIO_PIN_SET);

四、进阶知识

4.1 PWM调速原理

通过调节占空比控制平均电压:

  • 占空比 = 高电平时间 / 周期
  • 例如:12V电源,50%占空比 → 等效6V

4.2 死区时间(重要!)

当PWM频率超过10kHz时,需在CubeMX中:

TIM3->CCER |= TIM_AUTOMATIC_OUTPUT_ENABLE;
TIM3->BDTR |= 0x30; // 设置死区时间

防止H桥上下管直通短路


五、调试技巧

5.1 常见问题排查

| 现象 | 可能原因 | 解决方法 |
|–|
| 电机不转 | STBY未使能 | 检查STBY引脚电平 |
| 单方向转动 | 方向控制线接反 | 交换AIN1/AIN2接线 |
| 电机抖动 | PWM频率过低 | 提高至8-20kHz范围 |

5.2 示波器调试建议

测量PWMA引脚波形:

  • 确认频率是否正确
  • 检查占空比是否随设置变化
  • 观察波形是否干净无毛刺

六、项目实战

实现智能小车基础运动:

void Car_Move(uint8_t dir, uint16_t speed)
{
    MotorA_Ctrl(dir, speed); // 右轮
    MotorB_Ctrl(dir, speed); // 左轮
    // 添加延时可实现定时运动
}

结语

通过本文您已掌握:

  1. TB6612FNG的底层驱动原理
  2. STM32的PWM配置方法
  3. 完整的电机控制实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【云轩】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值