[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 以同样方式连接即可。 电路元件说明: 三、电机控制逻辑真值表这是理解如何控制电机的核心。下表展示了 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)]
开启新对话
|