Arduino 和 TB6612FNG 驱动直流电机

TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速与方向,输入电压在3V~12V,因此在集成化、小型化的电机控制系统中,它可以作为理想的电机驱动器件。

Arduino 和 TB6612FNG 驱动直流电机

简介

TB6612FNG每通道输出最高1.2 A的连续驱动电流,启动峰值电流达2A/3.2 A(连续脉冲/单脉冲);
4种电机控制模式:正转/反转/制动/停止;
PWM支持频率高达100 kHz;
待机状态;
片内低压检测电路与热停机保护电路;
工作温度:-20~85℃;
SSOP24小型贴片封装。

引脚

引脚 定义
VM 驱动电压输入端(3-12V)
VCC 逻辑电平输入端(2.7-5.5)
GND 电源地端
STBY 正常工作/待机状态控制输入端
PWMA PWM信号输入端
AIN1、AIN2 电机A控制模式输入端
A01、A02 电机A驱动输入端
PWMB PWM信号输入端
BIN1、BIN2 电机B控制模式输入端
B01、B02 电机B驱动输出端

Arduino接线

Arduino 和 TB6612FNG 驱动直流电机

示例代码


int STBY = 10; //standby
 
//Motor A
int PWMA = 3; //Speed control 
int AIN1 = 9; //Direction
int AIN2 = 8; //Direction
 
//Motor B
int PWMB = 5; //Speed control
int BIN1 = 11; //Direction
int BIN2 = 12; //Direction

/*
 * Move specific motor at speed and direction
 * motor: 0 for B, 1 for A
 * speed: 0 is off, and 255 is full speed
 * direction: 0 clockwise, 1 counter-clockwise
 */
void move(int motor, int speed, int direction){
   digitalWrite(STBY, HIGH); //disable standby
 
   boolean inPin1 = LOW;
   boolean inPin2 = HIGH;
 
   if(direction == 1){
     inPin1 = HIGH;
     inPin2 = LOW;
   }
 
   if(motor == 1){
     digitalWrite(AIN1, inPin1);
     digitalWrite(AIN2, inPin2);
     analogWrite(PWMA, speed);
   }else{
     digitalWrite(BIN1, inPin1);
     digitalWrite(BIN2, inPin2);
     analogWrite(PWMB, speed);
   }
}
 
void stop(){
   digitalWrite(STBY, LOW); 
}

void setup(){
   pinMode(STBY, OUTPUT);
 
   pinMode(PWMA, OUTPUT);
   pinMode(AIN1, OUTPUT);
   pinMode(AIN2, OUTPUT);
 
   pinMode(PWMB, OUTPUT);
   pinMode(BIN1, OUTPUT);
   pinMode(BIN2, OUTPUT);
}
 
void loop(){
   move(1, 255, 1); //motor 1, full speed, left
   move(2, 255, 1); //motor 2, full speed, left
 
   delay(1000); //go for 1 second
   stop(); //stop
   delay(250); //hold for 250ms until move again
 
   move(1, 128, 0); //motor 1, half speed, right
   move(2, 128, 0); //motor 2, half speed, right
 
   delay(1000);
   stop();
   delay(250);
}
- 本文为本站原创文章,转载请保留出处。
- 文章链接:https://www.xpstem.com/article/2000353

2025-07   阅读(244)   评论(0)
 标签: 创客 Arduino TB6612

涨知识
面向对象编程

面向对象编程(Object Oriented Programming)是一种编程方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。

评论:
相关文章
ESP32 Arduino 开发框架

Arduino开发环境下适用于ESP32芯片系列开发板的应用开发框架。


【ESP32 C++教程】Unit1-2 C++类基础知识

本小节主要介绍C++ 类相关的基础知识,包括类的定义、继承、多态,范围作用域等。


【ESP32 C++教程】Unit1-1 开发环境准备

本讲主要介绍VSCode Arduino开发环境的搭建,及与Arduino IDE开发环境的比较。


Arduino-ESP32与ESP-IDF的版本对应表

Arduino-ESP32与ESP-IDF的版本对应表。


ESP32 + Arduino使用TFT_eSPI库

Arduino+ESP32上使用TFT_eSPI库快速点亮这个屏幕,驱动芯片ST7789


Arduino 数据结构: 队列Queue

Queue 库提供了一个通用的 C++ 动态队列实现,专为在 Arduino 项目中使用而定制。


小鹏浇花套件单机版程序V1.0.0

本程序是小鹏物联网智能浇花套件的单机版程序(不连接物联网),供同学们参考。


Arduino 数据结构: ArrayList

ArrayList 类是一个 C++ 模板类,它提供了 ArrayList 的实现,以便轻松存储任何指定类型的值。它允许使用索引进行高效存储和检索,支持排序操作。


ESP32 FreeRTOS 双核使用

ESP32系列(包括ESP32-S3)搭载Xtensa双核处理器,默认情况下Arduino框架仅使用单核运行用户代码,通过多核编程,可以充分利用硬件资源来提升系统响应和性能。


理解 MSBFIRST(最高有效位)和 LSBFIRST(最低有效位)

在本文中,先解释 MSB(最高有效位)和 LSB(最低有效位)的概念,以及 MSBFIRST 和 LSBFIRST。然后展示了 MSBFIRST 和 LSBFIRST 的使用如何影响移位寄存器的输出。