【零基础轻松玩转STM32】TB6612FNG直流电机驱动教程:手把手实践指南

系列文章目录

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


文章目录

  • 一、硬件认知篇
  • 1.1 TB6612FNG是什么?
  • 1.2 核心引脚说明(重点!)
  • 1.3 H桥原理揭秘
  • 二、硬件连接篇
  • 2.1 STM32接线示意图
  • 2.2 电源注意事项
  • 三、软件编程篇
  • 3.1 CubeMX配置
  • 3.2 核心代码解析
  • 四、进阶知识
  • 4.1 PWM调速原理
  • 4.2 死区时间(重要!)
  • 五、调试技巧
  • 5.1 常见问题排查
  • 5.2 示波器调试建议
  • 六、项目实战
  • 结语
  • 一、硬件认知篇

    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. 完整的电机控制实现

    作者:【云轩】

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【零基础轻松玩转STM32】TB6612FNG直流电机驱动教程:手把手实践指南

    发表回复