bin1和bin2芯片区别,芯片oz9902各引脚功能图

首页 > 经验 > 作者:YD1662022-10-27 10:34:30

如果您的电动机需要超过13.5伏的电压,则TB6612FNG不适用。但是,如果您的电动机是低压(即3伏)设备,则L298N则可被取代。

尽管L298N可以处理的稳定工作电流几乎是TB6612FNG的两倍,但在达到峰值电流时也差不多。

在适用的范围内,TB6612FNG无疑是赢家。

我认为对于我的新设计,我将切换到TB6612FNG。即使我的抽屉里装满了L298N模块!

TB6612FNG在Arduino的应用

由于TB6612FNG使用与L298N相似的控制方式,因此您可以轻松地重新调整旧代码的用途,以使用新的控制器。实际上,这正是我为第一个演示所做的。

TB6612FNG的接线

对于此实验,您将需要以下组件:

接线如下:

bin1和bin2芯片区别,芯片oz9902各引脚功能图(9)

使用上图中右边表格所示将TB6612FNG连接到Arduino。并记住将STBY(待机)引线连接到 5伏,否则将无法正常工作。

TB6612FNG用在Arduino上的代码

连接完所有元件后,您可以运行以下代码以使其继续进行:

/* TB6612FNG H-Bridge Demo TB6612-Demo.ino Demonstrates use of TB6612FNG H-Bridge Motor Controller Drives two DC Motors DroneBot Workshop 2019 https://dronebotworkshop.com */ // Motor A int pwmA = 5; int in1A = 3; int in2A = 4; // Motor B int pwmB = 6; int in1B = 7; int in2B = 8; // Speed control potentiometers int SpeedControl1 = A0; int SpeedControl2 = A1; // Motor Speed Values - Start at zero int MotorSpeed1 = 0; int MotorSpeed2 = 0; void setup() { // Set all the motor control pins to outputs pinMode(pwmA, OUTPUT); pinMode(pwmB, OUTPUT); pinMode(in1A, OUTPUT); pinMode(in2A, OUTPUT); pinMode(in1B, OUTPUT); pinMode(in2B, OUTPUT); } void loop() { // Set Motor A forward digitalWrite(in1A, HIGH); digitalWrite(in2A, LOW); // Set Motor B forward digitalWrite(in1B, HIGH); digitalWrite(in2B, LOW); // Read potentiometers and convert to range of 0-255 MotorSpeed1 = map(analogRead(SpeedControl1), 0, 1023, 0, 255); MotorSpeed2 = map(analogRead(SpeedControl2), 0, 1023, 0, 255); // Set the motor speeds analogWrite(pwmA, MotorSpeed1); analogWrite(pwmB, MotorSpeed2); }

我们首先定义代表已连接TB6612FNG电机控制器的Arduino引脚的变量,IN1和IN2引脚以及PWM引脚。

接下来,我们定义变量以表示与电位计的模拟连接以及电动机速度的变量。

在设置中,我们仅将所有引脚定义为输出,然后进入循环。

我们通过设置两个电动机的方向来启动循环。如果愿意,可以使用上表反转一台或两台电机的方向。

接下来,我们从两个电位计读取该值,由于该值的范围是0到1023,因此我们使用Map函数将范围更改为0-255。

最后,我们使用产生PWM的AnalogWrite函数将PWM脉冲写出到电机控制器,从而设置它们的速度。

将代码加载到您的Arduino,连接电机电源,并使用两个电位器。您就能够使用它们控制电动机的速度。

TB6612FNG机器人汽车底座

对于TB6612FNG的最终实验,我将使用TB6612FNG H桥来驱动小型机器人汽车中的电机。

实际上,您可以使用最后一个实验来精确地完成此任务,并使用两个电位计控制电动机。但是这次我想做一些不同的编程。

这次我们将使用一个库。

适用于TN6612FNG的Sparkfun库

Sparkfun发布了专门为TN6612FNG开发的库,您可以从GitHub下载该库。

该库简化了电机控制器的使用。它具有使电动机在任何速度和两个方向上移动的功能,以及制动和停止的功能。

此外,Sparkfun库还附带一个示例代码,非常适合我们的机器人汽车。实际上,我只需要修改一行即可使其工作。

机器人车接线

我使用了其中一种流行的亚克力机器人汽车套件,可以轻松地在淘宝或Amazon上获得套件。这些套件带有一个底座,一对电动机,一些匹配的轮毂,一个电池座以及将它们组合在一起所需的所有硬件。

我们的机器人汽车的电气接线与我们刚刚使用的接线非常相似。Arduino和TB6612FNG之间的连接是相同的,并增加了Arduino与Standby引脚之间的连接。我已经拆下了两个电位器。

bin1和bin2芯片区别,芯片oz9902各引脚功能图(10)

我们可以用2节锂电池或4节AA电池为电动机供电,及为Arduino提供电源。为Arduino供电的另一个不错的选择是使用USB移动电源。

以我为例,我将布线保持在无焊面包板上,只用一个支架就可以固定Arduino。结果,我相信我创造了世界上最丑陋的机器人汽车!

您可以通过永久布线并正确安装和平衡Arduino和电池座来更好地完成工作。在我的情况下,该装置不平衡,因此我安装了一个小型C型夹,以增加后背的重量!

机器人车代码

在运行机器人代码之前,您需要安装Sparkfun库。最简单的方法是将库下载为zip文件。将其保存在计算机上的某个位置,以后可以找到它,“下载”文件夹是显而易见的位置。

现在打开您的Arduino IDE,然后单击页面顶部的Sketch菜单项。选择包括库,这将打开一个子菜单。

在子菜单中,从顶部开始的第二项将是Add ZIP Library(添加ZIP库)。选择该选项,将打开一个对话框。使用对话框浏览到保存库ZIP文件的位置并选择它。

该库将与示例代码一起安装。

要在Arduino IDE中运行示例代码,您需要从顶部选择File菜单,然后选择Examples。这将弹出一个子菜单。向下滚动子菜单,直到底部附近的“来自自定义库的示例”。在其下,您将看到按字母顺序排列的示例列表。查找Sparkfun TB6612FNG电机库,然后选择它。

库中仅包含一个名为MotorTestRun的示例代码。打开该代码,这是我们将用于机器人车的代码。

如果按照上图连接Arduino和TB6612FNG,则需要对代码进行一次更改,这是因为Sparkfun使用的Arduino引脚与连接时未使用相同的Arduino引脚。

Sparkfun使用引脚2进行AIN1(AI1)连接,而我使用引脚3。因此,您可以通过以下两种方式进行处理:

下面是代码,已修改为使用引脚3。

/****************************************************************************** TestRun.ino TB6612FNG H-Bridge Motor Driver Example code Michelle @ SparkFun Electronics 8/20/16 https://github.com/sparkfun/SparkFun_TB6612FNG_Arduino_Library Uses 2 motors to show examples of the functions in the library.This causes a robot to do a little 'jig'.Each movement has an equal and opposite movement so assuming your motors are balanced the bot should end up at the same place it started. Resources: TB6612 SparkFun Library Development environment specifics: Developed on Arduino 1.6.4 Developed with ROB-9457 ******************************************************************************/ // This is the library for the TB6612 that contains the class Motor and all the // functions #include <SparkFun_TB6612.h> // Pins for all inputs, keep in mind the PWM defines must be on PWM pins // the default pins listed are the ones used on the Redbot (ROB-12097) with // the exception of STBY which the Redbot controls with a physical switch #define AIN1 3 #define BIN1 7 #define AIN2 4 #define BIN2 8 #define PWMA 5 #define PWMB 6 #define STBY 9 // these constants are used to allow you to make your motor configuration // line up with function names like forward.Value can be 1 or -1 const int offsetA = 1; const int offsetB = 1; // Initializing motors.The library will allow you to initialize as many // motors as you have memory for.If you are using functions like forward // that take 2 motors as arguements you can either write new functions or // call the function more than once. Motor motor1 = Motor(AIN1, AIN2, PWMA, offsetA, STBY); Motor motor2 = Motor(BIN1, BIN2, PWMB, offsetB, STBY); void setup() { //Nothing here } void loop() { //Use of the drive function which takes as arguements the speed //and optional duration.A negative speed will cause it to go //backwards.Speed can be from -255 to 255.Also use of the //brake function which takes no arguements. motor1.drive(255,1000); motor1.drive(-255,1000); motor1.brake(); delay(1000); //Use of the drive function which takes as arguements the speed //and optional duration.A negative speed will cause it to go //backwards.Speed can be from -255 to 255.Also use of the //brake function which takes no arguements. motor2.drive(255,1000); motor2.drive(-255,1000); motor2.brake(); delay(1000); //Use of the forward function, which takes as arguements two motors //and optionally a speed.If a negative number is used for speed //it will go backwards forward(motor1, motor2, 150); delay(1000); //Use of the back function, which takes as arguments two motors //and optionally a speed.Either a positive number or a negative //number for speed will cause it to go backwards back(motor1, motor2, -150); delay(1000); //Use of the brake function which takes as arguments two motors. //Note that functions do not stop motors on their own. brake(motor1, motor2); delay(1000); //Use of the left and right functions which take as arguements two //motors and a speed.This function turns both motors to move in //the appropriate direction.For turning a single motor use drive. left(motor1, motor2, 100); delay(1000); right(motor1, motor2, 100); delay(1000); //Use of brake again. brake(motor1, motor2); delay(1000); }

使用Sparkfun库让使用TN6612FNG非常简单。定义所有电机控制器连接之后,我们设置两个对象,每个对象一个,分别命名为motor1motor2。注意创建对象时如何传递所有电机参数。

setup中不需要任何内容​​,因为该库负责将引脚定义为输出。

Loop本质上是库提供的功能的演示。该文档已被很好地记录下来,因此您可以毫无问题地让其适应您的需求。功能包括:

loop中的代码仅使用许多这些功能来练习自动驾驶汽车。实际上,它的设计目的是使汽车停在同一位置,但是我那丑陋的机器人汽车是如此不平衡,以至于再也没有机会这样做。也许您的汽车会做得更好!

bin1和bin2芯片区别,芯片oz9902各引脚功能图(11)

您可以试验代码并更改或添加更多功能来控制您的汽车。

结论

TB6612FNG是一种廉价的双H桥电机控制器,易于使用,可以在许多应用中直接替代L298N。它体积小,散热低,非常适合小型机器人汽车和其他电池供电的设备。

上一页123末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.