当前位置:   article > 正文

STM32平衡小车 TB6612电机驱动学习

tb6612

TB6612FNG简介

单片机引脚的电流一般只有几十个毫安,无法驱动电机,因此一般是通过单片机控制电机驱动芯片进而控制电机。TB6612是比较常用的电机驱动芯片之一。

        TB6612FNG可以同时控制两个电机,工作电流1.2A,最大电流3.2A。

  •  VM电机电源正极,是驱动电压输入端(>10V),
  • VCC为逻辑电平输入端(2.7V~5.5V)。
  • PWMA/PWMB为两个电机提供pwm脉冲,也就是控制电机的速度。
  • AIN1/AIN2,BIN1/BIN2.控制电机的正反转和停止

只需改变AIN1、AIN2、BIN1、BIN2的高低电平就可实现电机的正反转。

  •  STBY可以理解为一个使能端口,高电平有效。
  • AO1和AO2是电机A的输入电压,也就是这两个口接电机的正负极
  • BO1和BO2是电机A的输入电压,也就是这两个口接电机的正负极

工程创建:

这里我只驱动一个电机,先设置一下正反转的控制引脚。

 然后用定时器1来输出两路的PWM(其实只需要用到一路,不过下意识设置了两个,懒得改了)

PWMA配置

 PWMB配置

 配置下中断

工程代码

在主函数初始化

  1. //打开定时器
  2. HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
  3. HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_4);
  4. //设置AIN1 和AIN2 让电机A反转
  5. HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_RESET);
  6. HAL_GPIO_WritePin(AIN2_GPIO_Port,AIN2_Pin,GPIO_PIN_SET);

在循环里面,不断改变占空去看电机效果

  1. HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_RESET);
  2. HAL_GPIO_WritePin(AIN2_GPIO_Port,AIN2_Pin,GPIO_PIN_SET);
  3. for(int i=0;i<7100;i++)
  4. {
  5. __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_4,i);
  6. HAL_Delay(1);
  7. }
  8. for(int j=7100;j>0;j--)
  9. {
  10. __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_4,j);
  11. HAL_Delay(1);
  12. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/426682
推荐阅读
相关标签
  

闽ICP备14008679号