赞
踩
单片机引脚的电流一般只有几十个毫安,无法驱动电机,因此一般是通过单片机控制电机驱动芯片进而控制电机。TB6612是比较常用的电机驱动芯片之一。
TB6612FNG可以同时控制两个电机,工作电流1.2A,最大电流3.2A。
只需改变AIN1、AIN2、BIN1、BIN2的高低电平就可实现电机的正反转。
这里我只驱动一个电机,先设置一下正反转的控制引脚。
然后用定时器1来输出两路的PWM(其实只需要用到一路,不过下意识设置了两个,懒得改了)
PWMA配置
PWMB配置
配置下中断
在主函数初始化
- //打开定时器
- HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
- HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_4);
- //设置AIN1 和AIN2 让电机A反转
- HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_RESET);
- HAL_GPIO_WritePin(AIN2_GPIO_Port,AIN2_Pin,GPIO_PIN_SET);
在循环里面,不断改变占空去看电机效果
- HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_RESET);
- HAL_GPIO_WritePin(AIN2_GPIO_Port,AIN2_Pin,GPIO_PIN_SET);
- for(int i=0;i<7100;i++)
- {
- __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_4,i);
- HAL_Delay(1);
- }
- for(int j=7100;j>0;j--)
- {
- __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_4,j);
- HAL_Delay(1);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。