Skip to main content

tb6612

电机驱动示例

示例功能:综合板中集成了一个TB6612电机驱动模块,可以用于驱动2路电机。在使用电机驱动之前需要确认以下信息 一、电机驱动需要额外的供电,这可以尽可能的避免因为电机负载过大导致的烧毁主板。 二、综合板中电机驱动的驱动供电引脚VM默认连接在了DC供电的正极,这样直接使用扩展板中的DC头提供的外部供电就能给电机驱动供电 三、除了VM驱动供电外,同样需要逻辑供电(VCC),这需要连接3.3V或者5V 硬件接线示意图

PWMA —— GPIO35 // 电机A的PWM控制引脚 AIN1 —— GPIO36 // 电机A的输入1 AIN2 —— GPIO37 // 电机A的输入2 STBY —— GPIO45 // 待机控制引脚 PWMB —— GPIO10 // 电机B的PWM控制引脚 BIN1 —— GPIO11 // 电机B的输入1 BIN2 —— GPIO12 // 电机B的输入2 VM —— 独立供电(5~12V) 这个供电可从主板下发的DC座来,也可以往外接电源 VCC——3.3V GND-GND AO1\AO2 ——电机A BO1\BO2——电机B

同时驱动2路直流马达示例程序:


// 定义 TB6612 控制引脚
#define PWMA 35 // 电机A的PWM控制引脚
#define AIN1 36 // 电机A的输入1
#define AIN2 37 // 电机A的输入2
#define STBY 45 // 待机控制引脚
#define PWMB 11 // 电机B的PWM控制引脚
#define BIN1 11 // 电机B的输入1
#define BIN2 12 // 电机B的输入2

void setup() {
// 初始化电机控制引脚为输出模式
pinMode(PWMA, OUTPUT);
pinMode(AIN1, OUTPUT);
pinMode(AIN2, OUTPUT);
pinMode(STBY, OUTPUT);
pinMode(PWMB, OUTPUT);
pinMode(BIN1, OUTPUT);
pinMode(BIN2, OUTPUT);
// 初始化待机控制,解除待机模式
digitalWrite(STBY, HIGH); // 设置为高电平,启用电机驱动
// 设置 PWM 频率
ledcSetup(0, 2000, 8); // PWM 通道0,2kHz频率,8位分辨率
ledcAttachPin(PWMA, 0); // 将 PWM 控制引脚 PWMA 映射到通道0
ledcSetup(1, 2000, 8); // PWM 通道1,2kHz频率,8位分辨率
ledcAttachPin(PWMB, 1); // 将 PWM 控制引脚 PWMB 映射到通道1
// 设置电机A和电机B的初始状态
stopMotorA();
stopMotorB();
}
void loop() {
// 让电机A向前转动
forwardMotorA();
analogWrite(PWMA, 255); // 电机A的转速50%
delay(2000); // 转动2秒
// 电机A停止
stopMotorA();
delay(100);
// 让电机B向后转动
backwardMotorB();
analogWrite(PWMB, 255); // 电机B的转速50%
delay(2000); // 转动2秒
// 电机B停止
stopMotorB();
delay(100);
}
void forwardMotorA() {
digitalWrite(AIN1, HIGH);
digitalWrite(AIN2, LOW);
}
void backwardMotorA() {
digitalWrite(AIN1, LOW);
digitalWrite(AIN2, HIGH);
}
void stopMotorA() {
digitalWrite(AIN1, LOW);
digitalWrite(AIN2, LOW);
}
void forwardMotorB() {
digitalWrite(BIN1, HIGH);
digitalWrite(BIN2, LOW);
}
void backwardMotorB() {
digitalWrite(BIN1, LOW);
digitalWrite(BIN2, HIGH);
}
void stopMotorB() {
digitalWrite(BIN1, LOW);
digitalWrite(BIN2, LOW);
}