STM32Cubemx TB6612直流电机驱动

简介: STM32Cubemx TB6612直流电机驱动

一、TB6612FNG


TB6612是一个支持双电机的驱动模块,支持PWM调速。PWMA、AIN1、AIN2 为一组控制引脚,PWMA 为 PWM 速度控制引脚,AIN1、AIN2 为方向控制引脚;PWMB、BIN1、BIN2 为一组控制引脚,PWMB 为 PWM 速度控制引脚,BIN1、BIN2 为方向控制引脚。


PA4 --> BIN1
PA5 --> BIN2
PA6 --> AIN2
PA7 --> AIN1
TIM2_CH2(PA1) --> PWMA
TIM2_CH3(PA2) --> PWMB


驱动电机的 PWM 频率一般 10kHz(0.0001ms)左右,72MHZ/72/100=72000000/7200=10000HZ=10KHZ


二、CUbeMX配置


SYS



RCC



时钟树



GPIO配置



定时器配置



生成工程



生成代码



三、Keil代码


添加PWM电机驱动代码

/* USER CODE BEGIN 0 */
void motorControlL(uint8_t direction, uint16_t speed) {//左电机驱动
  HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3);
    /* 根据方向设置 IN1 和 IN2 引脚 */
    HAL_GPIO_WritePin(GPIOA, BIN1_Pin, (direction & 0x01));
    HAL_GPIO_WritePin(GPIOA, BIN2_Pin, ((direction & 0x01) ^ 0x01));
 
    /* 设置 PWM 引脚以控制速度 */
    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, speed);
}
void motorControlR(uint8_t direction, uint16_t speed) {//右电机驱动
     HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);
    /* 根据方向设置 AIN1 和 IN2 引脚 */
    HAL_GPIO_WritePin(GPIOA, AIN2_Pin, (direction & 0x01));
    HAL_GPIO_WritePin(GPIOA, AIN1_Pin, ((direction & 0x01) ^ 0x01));
 
    /* 设置 PWM 引脚以控制速度 */
    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, speed);
}
/* USER CODE END 0 */


while循环中红外光电逻辑判断

/* USER CODE BEGIN WHILE */
  while (1)
  {   
    if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8)== 1 && HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_9)== 1 ){ 
      motorControlL(1, 300); //第一个参数 0反向转  1正向转  第二个参数控制小车速度
      motorControlR(1, 300);
    }
    if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8)==0 && HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_9)==0){
      motorControlL(0, 0); 
      motorControlR(0, 0);
    }
    if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8)==0 && HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_9)==1){
      motorControlL(1, 180); 
      motorControlR(1, 300);
    }
    if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8)==1 && HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_9)==0){
      motorControlL(1, 300); 
      motorControlR(1, 180);
    }
 
    /* USER CODE END WHILE */


效果

car

 

链接: https://pan.baidu.com/s/1xOMmcG4KKbLN1cJ1ZK-zaQ?pwd=3h3k 提取码: 3h3k

目录
相关文章
|
4月前
|
传感器
手把手在STM32F103C8T6上构建可扩展可移植的DHT11驱动
【8月更文挑战第29天】本文详细介绍在STM32F103C8T6上构建可扩展且可移植的DHT11温湿度传感器驱动的步骤,包括硬件与软件准备、硬件连接、驱动代码编写及测试。通过这些步骤,可根据实际项目需求优化和扩展代码。
156 0
|
5月前
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
80 14
|
5月前
STM32Cubemx PWM驱动SG90舵机
STM32Cubemx PWM驱动SG90舵机
203 13
|
5月前
STM32CubeMX mpu6050驱动
STM32CubeMX mpu6050驱动
85 10
|
5月前
STM32CubeMX EC11旋转编码器驱动
STM32CubeMX EC11旋转编码器驱动
275 10
|
5月前
STM32CubeMX OLED驱动
STM32CubeMX OLED驱动
80 10
|
5月前
STM32CubeMX WS2812B灯驱动
STM32CubeMX WS2812B灯驱动
237 1
|
5月前
STM32CubeMX ULN2003步进电机驱动
STM32CubeMX ULN2003步进电机驱动
73 0
|
4月前
|
编解码 算法
掌握PWM:STM32F103实现PWM控制直流电机小风扇
PWM,即脉冲宽度调制(Pulse Width Modulation),是一种广泛应用于电子和电机控制领域的信号编码方法。PWM的核心思想是通过改变数字信号的脉冲宽度来模拟模拟信号的幅度变化,从而达到控制输出功率的目的。
650 0
|
6月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
476 2