esp32上 tb6612电机驱动
时间: 2025-01-21 13:11:16 浏览: 150
### ESP32 使用 TB6612 电机驱动教程
#### 硬件需求
为了成功使用ESP32配合TB6612FNG电机驱动模块控制直流电机或步进电机,需要准备以下组件:
- ESP32开发板一块。
- TB6612FNG电机驱动模块一片。
- 合适类型的电机(可以是两个直流电机或者一个两相四线制的步进电机)。
- 杜邦线若干用于连接各个部件。
#### 连接方式说明
TB6612FNG具有多个输入输出端口以便于与微控制器相连并接收指令信号。具体来说,有IN1至IN4四个逻辑电平输入用来指定各路马达的动作方向;PWMA和PWMB分别对应着A通道和B通道的速度调节PWM波形输入;STBY为待机模式使能引脚,在高电平时允许正常操作而低电平则进入省电状态[^2]。
| ESP32 Pin | Function | Connected To |
|--|----------------|--------------|
| GPIOxx | IN1 | TB6612 IN1 |
| GPIOyy | IN2 | TB6612 IN2 |
| GPIOzz | IN3 | TB6612 IN3 |
| GPIOww | IN4 | TB6612 IN4 |
| GPIOaa | PWMA | TB6612 PWMA |
| GPIObb | PWMB | TB6612 PWMB |
| GND | Ground | TB6612 GND |
| VCC | Power Supply | TB6612 VMOT |
请注意替换表中的`GPIOxx`, `GPIOyy`等占位符为你实际使用的GPIO编号,并确保电源供应满足所选电机的要求。
#### 示例代码展示
下面给出一段简单的Arduino IDE兼容C++源码片段作为例子,演示如何利用上述连线配置让一对小型直流电机前进、停止再倒退一段时间后再次停下。
```cpp
// 定义INx针脚对应的GPIO号
const int IN1_PIN = 18;
const int IN2_PIN = 19;
const int IN3_PIN = 21;
const int IN4_PIN = 5;
// 定义PWM针脚对应的GPIO号
const int PWM_A_PIN = 17; // 对应PWMA
const int PWM_B_PIN = 16; // 对应PWMB
void setup() {
pinMode(IN1_PIN, OUTPUT);
pinMode(IN2_PIN, OUTPUT);
pinMode(IN3_PIN, OUTPUT);
pinMode(IN4_PIN, OUTPUT);
analogWrite(PWM_A_PIN, 0);
analogWrite(PWM_B_PIN, 0);
digitalWrite(13,HIGH); // STBY置高激活芯片
}
void loop() {
// 前进动作
forward();
delay(2000);
// 停止动作
stopMotors();
delay(1000);
// 后退动作
backward();
delay(2000);
// 再次停止
stopMotors();
delay(3000);
}
void forward(){
digitalWrite(IN1_PIN, HIGH);
digitalWrite(IN2_PIN, LOW );
digitalWrite(IN3_PIN, HIGH);
digitalWrite(IN4_PIN, LOW );
analogWrite(PWM_A_PIN, 255);
analogWrite(PWM_B_PIN, 255);
}
void stopMotors(){
digitalWrite(IN1_PIN, LOW);
digitalWrite(IN2_PIN, LOW);
digitalWrite(IN3_PIN, LOW);
digitalWrite(IN4_PIN, LOW);
analogWrite(PWM_A_PIN, 0);
analogWrite(PWM_B_PIN, 0);
}
void backward(){
digitalWrite(IN1_PIN, LOW);
digitalWrite(IN2_PIN, HIGH);
digitalWrite(IN3_PIN, LOW);
digitalWrite(IN4_PIN, HIGH);
analogWrite(PWM_A_PIN, 255);
analogWrite(PWM_B_PIN, 255);
}
```
这段程序实现了基本的方向切换功能,其中包含了启动前后的延时等待函数`delay()`调用以模拟持续运动的时间间隔。此外还设置了不同的速度等级通过改变传递给`analogWrite()`函数的第一个参数值来调整电机转速。
阅读全文
相关推荐


















