本项目采用 Arduino Mega2560 Pro 作为主控开发板,电机驱动器选用 TB6612FNG,并配备了 12V 电源、两个直流减速电机和一个舵机。未来计划通过嘉立创将各模块集成到一个 PCB 板上,提升系统的集成度和稳定性。
本文将聚焦于电机驱动部分,详细讲解 TB6612FNG 的接线和代码实现。
TB6612FNG 简介
TB6612FNG 是一款高效、双通道的直流电机驱动芯片,能够驱动两个直流电机,每个通道最大电流为 1.2A,具有 PWM 控制功能,并支持正转、反转和刹车等多种模式。它因其简单易用和较高的性价比被广泛应用于各类机器人项目中。
电路接线说明
下表列出了 TB6612FNG 的主要引脚连接:
TB6612FNG 引脚 | Arduino 引脚 | 功能 |
---|---|---|
AIN1 | 5 | 电机 A 的方向控制引脚 1 |
AIN2 | 10 | 电机 A 的方向控制引脚 2 |
BIN1 | 6 | 电机 B 的方向控制引脚 1 |
BIN2 | 11 | 电机 B 的方向控制引脚 2 |
PWMA | 9 | 电机 A 的 PWM 输入 |
PWMB | 3 | 电机 B 的 PWM 输入 |
STBY | 8 | 驱动芯片使能引脚 |
12V 电源为 TB6612FNG 提供主电源,Arduino Mega2560 Pro 通过 USB 或外部电源供电。
/ PWM 和控制引脚定义 /
#define AIN1 5 // 电机 A 的方向控制引脚 1
#define AIN2 10 // 电机 A 的方向控制引脚 2
#define BIN1 6 // 电机 B 的方向控制引脚 1
#define BIN2 11 // 电机 B 的方向控制引脚 2
#define PWMA 9 // 电机 A 的 PWM 引脚
#define PWMB 3 // 电机 B 的 PWM 引脚
#define STBY 8 // TB6612 的使能引脚
/ 电机 PWM 固定值 /
const int fixedPWM = -50; // 设置为正值,表示正转
void setup() {
// 初始化控制引脚为输出模式
pinMode(AIN1, OUTPUT);
pinMode(AIN2, OUTPUT);
pinMode(BIN1, OUTPUT);
pinMode(BIN2, OUTPUT);
pinMode(PWMA, OUTPUT);
pinMode(PWMB, OUTPUT);
pinMode(STBY, OUTPUT);
// 激活 TB6612 (STBY 引脚拉高)
digitalWrite(STBY, HIGH);
// 设置电机转速和方向
Set_PWMA(fixedPWM); // 设置电机 A 的 PWM
Set_PWMB(fixedPWM); // 设置电机 B 的 PWM
}
void loop() {
Set_PWMA(fixedPWM); // 改变电机 A 的方向
Set_PWMB(fixedPWM); // 改变电机 B 的方向
}
/ 控制电机 A 的 PWM 和方向 /
void Set_PWMA(int pwm) {
if (pwm > 0) {
digitalWrite(AIN1, HIGH); // 正转
digitalWrite(AIN2, LOW);
analogWrite(PWMA, pwm); // 设置速度
} else if (pwm < 0) {
digitalWrite(AIN1, LOW); // 反转
digitalWrite(AIN2, HIGH);
analogWrite(PWMA, -pwm); // 设置速度(取绝对值)
} else {
digitalWrite(AIN1, LOW); // 停止
digitalWrite(AIN2, LOW);
analogWrite(PWMA, 0);
}
}
/ 控制电机 B 的 PWM 和方向 /
void Set_PWMB(int pwm) {
if (pwm > 0) {
digitalWrite(BIN1, HIGH); // 正转
digitalWrite(BIN2, LOW);
analogWrite(PWMB, pwm); // 设置速度
} else if (pwm < 0) {
digitalWrite(BIN1, LOW); // 反转
digitalWrite(BIN2, HIGH);
analogWrite(PWMB, -pwm); // 设置速度(取绝对值)
} else {
digitalWrite(BIN1, LOW); // 停止
digitalWrite(BIN2, LOW);
analogWrite(PWMB, 0);
}
}
-
所有控制引脚和 PWM 引脚都被设置为输出模式,并通过
digitalWrite(STBY, HIGH)
激活驱动芯片。 -
使用
analogWrite()
设置 PWM 占空比来调整电机转速,并通过digitalWrite()
控制方向引脚,决定电机正转、反转或停止。 -
fixedPWM
设置为 50,表示电机以中等速度运行。可以根据自己需要调整该值实现不同转速。 -
Set_PWMA()
和Set_PWMB()
函数为控制电机的核心,支持正转、反转及停止状态。