TB6612FNG双通道直流电机驱动芯片的应用电路和驱动方法

电子说

1.4w人已加入

描述

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 的 0110 组合确定方向,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!

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分