[技术讨论] TB6612FNG双通道直流电机驱动芯片的应用电路和驱动方法

[复制链接]
146|0
TOSHIBA-王工 发表于 2025-10-10 10:41 | 显示全部楼层 |阅读模式
[color=var(--dsw-alias-label-primary)]
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状态
功能描述

0XXX停止待机模式(关机)
10XX停止强制停止
1PWM01逆时针转动方向1 + 调速
1PWM10顺时针转动方向2 + 调速
1100停止(浮空)无效模式
1111刹车电机快速停止
重要模式解释:
  • 正转/反转:通过 AIN1 和 AIN2 的 01 或 10 组合确定方向,PWMA 的占空比决定速度。
  • 刹车:当 AIN1 和 AIN2 同为 1,且 PWMA=1 时,电机两个端子被短路,产生一个制动力矩,使电机快速停止。
  • 停止:当 PWMA=0 时,无论 AIN1/AIN2 是什么,电机都会停止。

四、与微控制器(如Arduino)的连接示例
以Arduino Uno驱动两个直流电机为例:



TB6612FNG 引脚
Arduino 连接
说明

PWMADigital Pin 5 (PWM)控制电机A速度
AIN2Digital Pin 4控制电机A方向
AIN1Digital Pin 3控制电机A方向

PWMBDigital Pin 6 (PWM)控制电机B速度
BIN2Digital Pin 8控制电机B方向
BIN1Digital Pin 7控制电机B方向

STBYDigital Pin 9芯片使能,HIGH启用
GNDGND共地
VCC5V 或 3.3V逻辑电源
VM外部7~12V电池正极电机电源
GND外部7~12V电池负极电机电源地,与Arduino共地
五、示例代码(Arduino)[color=var(--dsw-alias-label-primary)][backcolor=var(--dsw-alias-bg-base)][color=var(--dsw-alias-label-primary)]cpp

[color=var(--dsw-alias-label-secondary)]
复制
下载





// 定义TB6612FNG控制引脚int STBY = 9; // 使能引脚// 电机Aint PWMA = 5;  // 速度控制int AIN1 = 3;  // 方向int AIN2 = 4;  // 方向// 电机Bint 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!



[color=var(--dsw-alias-label-tertiary)]


[color=var(--dsw-alias-label-tertiary)]


[color=var(--dsw-alias-label-tertiary)]


[color=var(--dsw-alias-label-tertiary)]


[color=var(--dsw-alias-label-tertiary)]








开启新对话











您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

33

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部