电子说
TB6612FNG是一款性能优于传统L298N的电机驱动芯片,具有效率高、外围电路简单、体积小等优点,非常适合在机器人、智能小车等项目中驱动两个直流电机或者一个步进电机。
一、TB6612FNG 核心特性
双通道H桥驱动:可独立驱动两个直流电机或一个步进电机。
高输出电流:连续输出电流可达1.2A(单通道),峰值电流可达3.2A。
宽工作电压:电机驱动电压 VM 最高可达15V;逻辑电压 VCC 范围为2.7V~5.5V。
多种控制模式:支持正转、反转、刹车、停止四种模式。
低待机电流:内置关机电路,可进入低功耗待机模式。
PWM支持:支持高达100kHz的PWM频率,实现精确调速。
二、典型应用电路驱动图
下图是TB6612FNG驱动一个直流电机的典型应用电路。驱动两个电机只需将另一路的 AIN1/AIN2/PWMA 和 AO1/AO2 以同样方式连接即可。
电路元件说明:
电源部分
VM (电机电源):连接一个4.5V 至 15V的电源,用于驱动电机。必须在 VM 和 GND 之间靠近芯片的位置并联一个 100µF 的电解电容和一个 0.1µF 的瓷片电容,以进行电源去耦,吸收电机工作时产生的电流突变和噪声。
VCC (逻辑电源):连接一个2.7V 至 5.5V的电源,为芯片内部逻辑电路供电。通常直接连接到单片机(如Arduino, STM32)的 3.3V 或 5V 引脚。同样需要在 VCC 和 GND 之间并联一个 0.1µF 的瓷片电容。
控制信号输入
AIN1, AIN2 (A通道输入信号):这两个引脚接收来自单片机的数字信号(HIGH/LOW),用于控制电机的旋转方向。
PWMA (A通道PWM输入):这个引脚接收来自单片机的PWM信号,用于控制电机的转速。
STBY (待机引脚):当此引脚为高电平(HIGH) 时,芯片正常工作;当为低电平(LOW) 时,芯片进入待机(关机)模式,所有输出停止。通常直接连接到单片机的I/O口,方便控制电机启停。
电机输出
AO1, AO2 (A通道输出):这两个引脚直接连接到直流电机的两个电极。
GND:所有GND引脚(芯片底部还有一个大的散热焊盘)都必须可靠地连接到公共地。
三、电机控制逻辑真值表
这是理解如何控制电机的核心。下表展示了 AIN1, AIN2, PWMA 和电机状态的关系。
| STBY | PWMA | AIN1 | AIN2 | 电机A状态 | 功能描述 |
|---|---|---|---|---|---|
| 0 | X | X | X | 停止 | 待机模式(关机) |
| 1 | 0 | X | X | 停止 | 强制停止 |
| 1 | PWM | 0 | 1 | 逆时针转动 | 方向1 + 调速 |
| 1 | PWM | 1 | 0 | 顺时针转动 | 方向2 + 调速 |
| 1 | 1 | 0 | 0 | 停止(浮空) | 无效模式 |
| 1 | 1 | 1 | 1 | 刹车 | 电机快速停止 |
重要模式解释:
正转/反转:通过 AIN1 和 AIN2 的 01 或 10 组合确定方向,PWMA 的占空比决定速度。
刹车:当 AIN1 和 AIN2 同为 1,且 PWMA=1 时,电机两个端子被短路,产生一个制动力矩,使电机快速停止。
停止:当 PWMA=0 时,无论 AIN1/AIN2 是什么,电机都会停止。
四、与微控制器(如Arduino)的连接示例
以Arduino Uno驱动两个直流电机为例:
| TB6612FNG 引脚 | Arduino 连接 | 说明 |
|---|---|---|
| PWMA | Digital Pin 5 (PWM) | 控制电机A速度 |
| AIN2 | Digital Pin 4 | 控制电机A方向 |
| AIN1 | Digital Pin 3 | 控制电机A方向 |
| PWMB | Digital Pin 6 (PWM) | 控制电机B速度 |
| BIN2 | Digital Pin 8 | 控制电机B方向 |
| BIN1 | Digital Pin 7 | 控制电机B方向 |
| STBY | Digital Pin 9 | 芯片使能,HIGH启用 |
| GND | GND | 共地 |
| VCC | 5V 或 3.3V | 逻辑电源 |
| VM | 外部7~12V电池正极 | 电机电源 |
| GND | 外部7~12V电池负极 | 电机电源地,与Arduino共地 |
五、示例代码(Arduino)
// 定义TB6612FNG控制引脚 int STBY = 9; // 使能引脚 // 电机A int PWMA = 5; // 速度控制 int AIN1 = 3; // 方向 int AIN2 = 4; // 方向 // 电机B int PWMB = 6; // 速度控制 int BIN1 = 7; // 方向 int BIN2 = 8; // 方向 void setup() { // 将所有控制引脚设置为输出 pinMode(STBY, OUTPUT); pinMode(PWMA, OUTPUT); pinMode(AIN1, OUTPUT); pinMode(AIN2, OUTPUT); pinMode(PWMB, OUTPUT); pinMode(BIN1, OUTPUT); pinMode(BIN2, OUTPUT); // 启动驱动器 digitalWrite(STBY, HIGH); } // 自定义电机控制函数 void motor(int n, int dir, int pwm) { // n: 电机编号,0为A,1为B // dir: 方向,1为正转,0为反转 // pwm: 速度,0-255 int in1, in2, pwmPin; if (n == 0) { in1 = AIN1; in2 = AIN2; pwmPin = PWMA; } else { in1 = BIN1; in2 = BIN2; pwmPin = PWMB; } if (dir == 1) { // 正转 digitalWrite(in1, HIGH); digitalWrite(in2, LOW); } else if (dir == 0) { // 反转 digitalWrite(in1, LOW); digitalWrite(in2, HIGH); } analogWrite(pwmPin, pwm); // 设置速度 } // 刹车函数 void brake(int n) { if (n == 0) { digitalWrite(AIN1, HIGH); digitalWrite(AIN2, HIGH); analogWrite(PWMA, 0); } else { digitalWrite(BIN1, HIGH); digitalWrite(BIN2, HIGH); analogWrite(PWMB, 0); } } void loop() { // 电机A以速度200正转,电机B以速度150反转 motor(0, 1, 200); motor(1, 0, 150); delay(2000); // 运行2秒 // 刹车 brake(0); brake(1); delay(500); // 停止0.5秒 // 电机A以速度150反转,电机B以速度200正转 motor(0, 0, 150); motor(1, 1, 200); delay(2000); // 运行2秒 // 进入待机模式(软关机) digitalWrite(STBY, LOW); delay(2000); // 待机2秒 digitalWrite(STBY, HIGH); // 重新启动 }
六、注意事项
务必共地:单片机的地、电机电源的地、TB6612FNG的GND必须连接在一起,否则控制逻辑会混乱。
电源去耦:VM 和 VCC 引脚附近的电容必须要接,且尽量靠近芯片引脚,否则系统会不稳定,甚至损坏芯片。
散热:TB6612FNG在驱动大电流电机时会发热,PCB设计时应将芯片底部的散热焊盘通过过孔连接到地平面,以帮助散热。
布线:电机的大电流路径(电池 -> TB6612 -> 电机)应使用较粗的导线。
希望这份详细的说明和电路图能帮助你成功应用TB6612FNG!
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !