Ardumoto Shield 电机扩展板

来自Duinopeak_COM
跳转至: 导航搜索

产品简介


ArduinoL298P front.jpg
Ardumoto是一个带有L298 H-桥驱动的驱动板,主要用来驱动小型直流马达。为什么你需要一个驱动板?电机耗费很大电流,试图你的Arduino输出端口来直接驱动一个电机将(令你 相当失望)使你的Arduino对你相当不满。Ardumoto可以让你用微小电流来控制大电流(直接可以驱动电机的电流)。和Arduino主控板兼 容,与Arduino结合Ardumoto可以成为一个极好的小型机器人控制平台或者RC。


规格参数

新版的Shield支持3.3或者5V逻辑电平,一个分开的更健壮的VIN端子,PWM输入被移到PIN3.

这个Arduino电机驱动板可以控制两路直流电机。基于L298 H-桥芯片,Ardumoto可以每路驱动电流高达2A。驱动电源和Arduino板的Win line 相同,包括蓝色和黄色的LED来指示驱动方向,全部的驱动线都有反电动势保护二极管。

控制连接到OUT1/2的电机连接到数字端口12(方向A)和数字线3(PWM A)。

控制连接到OUT3/4的电机连接到数字端口13(方向B)和数字线3(PWM B)。

应用示例

感谢购买Ardumoto Arduino电机驱动板!这个文档将帮助你快速上手。Ardumoto是一个带有L298 H-桥驱动的驱动板,主要用来驱动小型直流马达。为什么你需要一个驱动板?电机耗费很大电流,试图你的Arduino输出端口来直接驱动一个电机将(令你 相当失望)使你的Arduino对你相当不满。Ardumoto可以让你用微小电流来控制大电流(直接可以驱动电机的电流)。 还需要什么? 除了Ardumoto驱动板之外你将还需一个5V的Arduino主控板:
Arduino Duemilanove
对于这个教程的目的,我们将假设你有一个Arduino Duemilanove。你需要驱动两路电机,应该是最大电流不超过2A的电机,如果你仍在购买这些我们向你推荐一些:
Motor.jpg

  • Micro Metal Gearmotor 100:1
  • Micro Metal Gearmotor 30:1
  • Mini Metal Gearmotor 100:1
  • Mini Metal Gearmotor 24:1

你将还需要一台电脑来编程…no,我不打算把电脑资源列出来。我假设你已经有了Arduino基础并且在这之前自己编过一些小例子。如果你没有,先看看我们的Arduino初学教程 Sweet. Now how do I make it work? 焊接好电机引线之后,如果你想让它看起来更专业一些,使用热缩管套住焊接端子。
Motor wire.jpg
当你焊好两个电机引线之后,把两个电机接在Ardumoto/Arduino 的接线端子上。 (一个电机接在1-2线另一个接在3-4线)。
Wire board.jpg
差 不多快好了。Ardumoto从Arduino主控板的Vin获得电机驱动电源,常规+5V来驱动L298驱动芯片逻辑部分。这对你来说意味着两 件事情:1.你不能使用Arduino Duemilanove的USB电源来驱动Ardumoto。2.你可能希望使用一个容量为2A的电源(根据你选的电机)。我们有一些很好的锂电池包,像 PRT-09704 (7.4V, 1000mAh) and PRT-09703 (7.4V, 2200mAh)。但是在我们的演示中我们将使用一个9V/1A的电源适配器,将这个9V/1A的电源适配器插入到Duemilanove的直流电源插座 中。最后插入你的USB转接线打开你的Arduino套件。
Board wire wheel.jpg
这里有一个Ardumoto的例子代码:保存zip包内的文件到你的Arduino项目目录,打开Arduino载入例子代码。当编译上传之后,你的两个电机将轮流以两种速度向一个方向运行,然后以两度向相反运行(可能有点混淆,但是当你看到的时候就会幕了然)。 代码详解 例子代码被设计的尽可能简单,减轻初学者的痛苦,事实上,这里-我将改进它。首先,我们认识一下哪些端口被用来做些什么?

//t pwm_a = 3; //PWM control for motor outputs 1 and 2 is on digital pin 3
int pwm_a = 10; //PWM control for motor outputs 1 and 2 is on digital pin 10
int pwm_b = 11; //PWM control for motor outputs 3 and 4 is on digital pin 11
int dir_a = 12; //dir control for motor outputs 1 and 2 is on digital pin 12
int dir_b = 13; //dir control for motor outputs 3 and 4 is on digital pin 13
void setup()
{
pinMode(pwm_a, OUTPUT); //Set control pins to be outputs
pinMode(pwm_b, OUTPUT);
pinMode(dir_a, OUTPUT);
pinMode(dir_b, OUTPUT);
analogWrite(pwm_a, 100);
//set both motors to run at (100/255 = 39)% duty cycle (slow)
analogWrite(pwm_b, 100);
}
void loop()
{
digitalWrite(dir_a, LOW); //Set motor direction, 1 low, 2 high
digitalWrite(dir_b, LOW); //Set motor direction, 3 high, 4 low
delay(1000);
analogWrite(pwm_a, 255);
//set both motors to run at 100% duty cycle (fast)
analogWrite(pwm_b, 255);
delay(1000);
digitalWrite(dir_a, HIGH); //Reverse motor direction, 1 high, 2 low
digitalWrite(dir_b, HIGH); //Reverse motor direction, 3 low, 4 high
delay(1000);
analogWrite(pwm_a, 100);
//set both motors to run at (100/255 = 39)% duty cycle
analogWrite(pwm_b, 100);
delay(1000);
}

每行代码的功能都很直观,digitalWrite 函数设置一个端口为高或者低电平,这里用来控制电机的方向(dir a对应的电机接线端子1和2,dir b对应的电机接线端子3和4). analogWrite函数是一个PWM(脉宽调制)函数,这个值设置电机的速度 (pwm_a 和dir a和输出1和2对应, pwm_b 和dir b和输出3和4对应).这个函数将接受的值的范围是从0(电机停止)到255(全速)。 好了,就是这样!你可以停止和前进(进入墙壁,椅子,猫咪…)请给我们来信,让我们知道关于你的项目!


资源