Arduino AFMotor 电机扩展板详解

 

概述
端口介绍
外接电源供电
安装AFMotor电机库
连接电机引线
驱动直流电机电路
驱动直流电机示例程序
驱动28BYJ-48步进电机电路
驱动28BYJ-48步进电机示例程序
驱动舵机(伺服电机)电路
驱动舵机(伺服电机)示例程序
其它AFMotor扩展板相关资料


Arduino AFMotor 电机扩展板概述

电机扩展板作为Arduino平台最为流行的扩展板之一具有连接便利,功能丰富的特点。很多朋友们喜欢用这款电机扩展板驱动机器人或智能小车的电机。本页将向您介绍如何使用Arduino Uno开发板通过AFMotor电机扩展板来控制通用模型直流电机28BYJ-48步进电机以及舵机(伺服电机)。如果您希望学习如何使用Arduino Uno通过CNC扩展板来控制NEMA步进电机,请点击这里进入该页面

扩展板外观

Arduino-AFMotor-电机扩展板
Arduino AFMotor 电机扩展板正面
Arduino AFMotor电机扩展板背面
Arduino AFMotor电机扩展板背面
Arduino AFMotor电机扩展板侧面
Arduino AFMotor电机扩展板侧面

AFMotor电机扩展板主要功能特点

  • 可最多驱动4个模型直流电机
  • 可最多驱动2个28BYJ-48步进电机
  • 可最多驱动2个舵机(伺服电机)
  • 板载两块L293D芯片负责电机驱动的核心工作
  • 可配合Arduino Uno/Mega开发板使用(本页面主要针对Uno开发板进行讲解)


端口介绍

电机扩展板各个端口情况请见下图

Arduino AFMotor 电机扩展板
Arduino AFMotor 电机扩展板


外接电源供电

如下图所示,AFMotor电机扩展板上配有外接电源接口。该接口所连接的直流电源可以为电机和Arduino开发板供电。

Arduino-AFMotor电机扩展板外接电源接口
Arduino-AFMotor电机扩展板外接电源接口

使用AFMotor电机扩展板驱动电机时,首要考虑的问题就是如何为扩展板供电。如果电源输出功率达不到驱动电机的要求,那么电机是无法正常工作的。在考虑如何选择电源时,我们需要重点关注两个方面 ,一个是电源电压,一个是电源电流

注意:外接电源极性千万不要接反,否则会对扩展板造成损坏!

外接电源电压要求

AFMotor扩展板中起关键作用的芯片是L293D。该芯片所允许的直流电源电压范围是4.5V ~25V。因此AFMotor扩展板外接电源接口允许我们连接的电源也是4.5V ~25V。请注意:这是一个很宽泛的电压指标。具体我们应该连接的电源电压有多大,这是由被驱动的电机工作电压来决定的。

在购买电机时,卖家应该为您提供电机技术参数信息。这其中就有电机的工作电压这一参数。比如您所驱动的电机工作电压是+5V,那么您在使用AFMotor扩展板驱动该电机时,可以使用+5V的直流电源连接到外接电源接口上。但遗憾的是,不是所有卖家都能给您提供电机的技术参数,甚至有些卖家提供的参数是错的。这就需要您自己“猜”电机工作电压了。

这个“猜”电压的操作实在是无奈之举。如下图所示,假如您所购买的电机是这种通用的直流模型电机,那么可以试着使用+5V电压为该电机供电。

直流电机
130直流电机
模型电机
模型直流电机

在电机工作中,要特别注意电机是否有异常发热的现象。就是说您在用手轻轻触碰电机时,不能感到烫手。一旦发现电机太热,那么请更换电机。千万不要明明知道电机很烫,还让它持续工作,这很容易产生危险。

另外对于工作电压低于4.5V的直流电机,我不建议您使用AFMotor驱动板来驱动这些电机的。

外接电源电流要求

与上面提到的电源电压要求相同,外接电源的电流要求也是由被驱动的电机来决定的。通常我们使用AFMotor电机扩展板所驱动的电机就是普通的模型电机(如以上电源讲解中的图片所示)。对于这一类型的电机,它们的工作电流大约是500mA左右,因此我们只要为扩展板配一个500 mA~1000 mA的外接电源就足够了。请注意,假如您所驱动的电机工作电流超过500mA,那么就要考虑为扩展板上的L293D加装芯片了。

在本页教程中,我们给您举了三个示例。它们分别是驱动直流模型电机、驱动28BYJ-48步进电机以及驱动舵机(伺服电机)。这里没有驱动NEMA17步进电机的讲解。可能有的朋友会认为这是因为AFMotor电机扩展板不能用于驱动NEMA17步进电机。

其实不然。AFMotor电机扩展板是可以用于驱动NEMA17步进电机。但前提条件是要为扩展板上的L293D芯片配备散热装置。否则扩展板就会因为过热而停止工作,严重的还有可能烧毁L293D芯片。这是为什么呢?

由于大多数NEMA17步进电机的工作电流是在1000mA左右。如果让L293D芯片输出如此高的电流,芯片会产生很严重的发热现象。因此要想用AFMotor扩展板驱动NEMA17步进电机,就必须要为L293D芯片上加装散热片。然而通常我们买来的AFMotor电机扩展板是没有配备散热装置的。这是因为AFMotor电机扩展板主要就是驱动普通的直流模型电机,很少有人会用它来驱动NEMA17步进电机。所以也就无需为L293D芯片配备散热装置了。

对于驱动NEMA17步进电机来说,通常我们使用的是Arduino CNC 步进电机扩展板。假如您想了解更多的这方面信息,请点击这里进入该页面


安装AFMotor电机库

使用AFMotor电机扩展板驱动电机以前,需要先将AFMotor库安装到Arduino IDE中。如果您不知道如何进行操作,请点击这里进入Arduino IDE安装库的说明页面

在这里我们向您推荐两个电机程序库。一个是必须安装的,一个是可按您需要选择安装的。

必装的库是AFMotor库。这个库是AFMotor扩展板的开发团队Adafruit专门为该扩展板编写的。它的优点是非常简单易用,但是功能相对单一。假如您只是驱动直流模型电机,那么这个AFMotor库就足够了

但是如果您还想用AFMotor扩展板驱动28BYJ-48步进电机的话,AFMotor库虽然也可以实现这一功能,但是它的功能太简单了。所以我们建议您使用AccelStepper库来控制步进电机。请注意:AccelStepper库本身不能配合AFMotor电机扩展板工作。只有安装了AFMotor库以后,AccelStepper库在AFMotor库的配合下才能用于AFMotor电机扩展板驱动步进电机。这也就是说,无论您是否使用AccelStepper库,都要首先安装AFMotor库

以下是这两个库的下载链接:

下载 AFMotor库
下载 AccelStepper库


连接电机引线

如下图所示,在AFMotor电机扩展板的两侧共有4个直流电机端口,每一个端口都有独立的编号,即:M1,M2,M3,M4。每一个电机端口都是由两个接线端子所构成。

AFMotor电机扩展板电机端口
AFMotor电机扩展板电机端口

这些端子上的螺丝可以起到紧固电机引线的作用。如下图所示,通过顺时针旋转螺丝,插入端子的引线将会被固定住。相反,逆时针旋转螺丝可以松开端子中的引线。

用螺丝刀拧紧AFMotor扩展板接口中的电机连接线
用螺丝刀拧紧AFMotor扩展板接口中的电机连接线


驱动直流电机电路

AFMotor电机扩展板最多可以驱动4个直流电机。以下我们将给您介绍两种电机扩展板的使用方法。第一种是在您开发项目时的使用方法,第二种是项目开发完毕后,您在使用扩展板驱动电机工作时的方法。这两种方法最大的区别在于:开发时的Arduino开发板是通过USB数据线连接在电脑上的。但是在工作时开发板是不连接电脑的。

项目开发时AFMotor电机扩展板使用方法

首先介绍的是在项目开发时AFMotor电机扩展板的使用方法。请看下图展示的电路连接说明。

AFMotor电机扩展板驱动直流电机(开发过程)
AFMotor电机扩展板驱动直流电机(开发过程)

在开发时,Arduino的电源是由电脑通过USB线提供的。但由于电机运行所需的电源功率远远超过Arduino能提供的电源功率,因此Arduino是无法为电机供电的。要想让电机获得充足的电源供应,我们就需要在扩展板的外接电源端口接上直流电源来为电机供电。在这种情况下,扩展板上的跳线一定要移除。否则可能会损坏Arduino开发板以及电机扩展板!请务必注意!

另外,当扩展板上的跳线没有安置插针时,如果我们不给扩展板外接电源,而只是将Arduino开发板连接在电脑USB端口上。这时,当您把本页的示例程序上传给Arduino以后,您有可能看到电机在没有外接电源的情况下也可以运动,但是动力很弱。这是因为此时驱动电机的电能是来自于Arduino开发板的。由于Arduino开发板输出的电能远远无法满足电机正常运行的要求,所以您虽然看到电机也在动,但是动起来很没有力气。要想让电机以正常的方式运行,还是需要您给扩展板连接外接直流电源的,这样电机才有充足的动力来运行。

工作运行时AFMotor电机扩展板使用方法

一般在正常工作状态下,Arduino开发板是不会与电脑通过数据线进行连接的。这时我们就要通过AFMotor电机扩展板上外接电源端口同时为扩展板和Arduino供电。如下图所示:

AFMotor电机扩展板驱动直流电机(工作阶段)
AFMotor电机扩展板驱动直流电机(工作阶段)

注意:当使用外接电源同时为Arduino和电机扩展板供电时,扩展板上的跳线必须安置在插针上。否则Arduino是无法工作的。

扩展板跳线的作用

在以上两种工作方式里,我们对电机扩展板上的跳线采取了不同的操作方法。该跳线的作用是控制Arduino开发板是否通过外接电源来供电。当跳线移除的时候,外接电源不会为Arduino开发板供电。相反当跳线安置在插针上,外接电源将会为Arduino供电。

因此在程序开发过程中,当Arduino与电脑通过USB线连接时,我们需要将跳线从插针上移除。假如我们不移除该跳线,Arduino会有两路供电。而这两路电源同时工作会产生问题,严重的可能会造成开发板以及扩展板的损坏。

关于直流电机引线

可能有些朋友会感到好奇,直流电机有两根引线,这两根引线在连接到AFMotor扩展板电机端口时有没有顺序呢?这个问题的答案是“既有顺序也无顺序”。

如果您只是单纯的想要让电机转起来,那么这两根引线连接到扩展板端口上是没有顺序的。但如果您发现电机旋转的方向与您所期待的相反,您可以将这两根电机引线从扩展板上断开,然后交换顺序再接到扩展板端子上,这时您会看到电机旋转的方向就反过来了。


AFMotor电机扩展板驱动直流电机示例程序

示例程序

无法复制本示例程序?

以下示例程序为演示如何使用Arduino Uno开发板通过AFMotor电机扩展板 驱动4个直流电机。
如需查看此示例程序演示视频,请点击这里


驱动28BYJ-48步进电机电路

AFMotor电机扩展板最多可以驱动2个28BYJ-48步进电机。以下我们将给您介绍两种电机扩展板的使用方法。第一种是在您开发项目时的使用方法,第二种是项目开发完毕后,您在使用扩展板驱动电机工作时的方法。这两种方法最大的区别在于:开发时的Arduino开发板是通过USB数据线连接在电脑上的。但是在工作时开发板是不连接电脑的。

项目开发时AFMotor电机扩展板使用方法

首先介绍的是在项目开发时AFMotor电机扩展板的使用方法。请看下图展示的电路连接说明。

AFMotord电机扩展板驱动28BYJ-48步进电机(开发时电路连接)
AFMotord电机扩展板驱动28BYJ-48步进电机(开发时电路连接)

与驱动直流电机的原理相同,在使用AFMotor扩展板开发步进电机项目时,扩展板上的跳线也一定要移除!请务必注意!

工作运行时AFMotor电机扩展板使用方法

一般在正常工作状态下,Arduino开发板是不会与电脑连接的。这时我们就要通过AFMotor电机扩展板上外接电源端口为扩展板和Arduino同时供电。在这种情况下的电路连接如下图所示:

AFMotord电机扩展板驱动28BYJ-48步进电机(工作时电路连接)
AFMotord电机扩展板驱动28BYJ-48步进电机(工作时电路连接)


驱动28BYJ-48步进电机示例程序

示例程序1

无法复制本示例程序?

本示例程序旨在演示如何使用Arduino Uno开发板通过AFMotor电机扩展板以及AFMotor库来驱动2个28BYJ-48步进电机。
如需查看此示例程序演示视频,请点击这里

示例程序2

无法复制本示例程序?

本示例程序旨在演示如何使用Arduino Uno开发板通过AFMotor电机扩展板以及AccelStepper库驱动2个28BYJ-48步进电机。由于本程序主要目的是演示AFMotor电机扩展板使用方法,因此本程序仅仅是让28BYJ-48步进电机在AFMotor的控制下匀速旋转。 对于AccelStepper库的丰富功能,本程序没有做出很完整的演示。AccelStepper库的功能远远超过本示例程序所演示的内容。 如果您希望了解AccelStepper库的详细使用方法,请点击这里进入本站的AccelStepper库页
如需查看此示例程序演示视频,请点击这里

示例程序3

以下示例程序旨在演示如何使用AccelStepper库配合AFMotor电机扩展板以及AccelStepper库的丰富功能。由于此程序大量使用AccelStepper库的程序内容,如果想要完全理解这段程序,需要您首先了解AccelStepper库的使用方法。太极创客网站中有专门介绍AccelStepper库的讲解,您可以点击这里进入该页面


驱动舵机(伺服电机)电路连接

AFMotor扩展板驱动舵机实际上就是通过Arduino的9号和10号引脚来驱动舵机。10号引脚对应的是扩展板上的servo1端口,9号引脚对应的是servo2端口。

如果您希望更多的了解如何使用Arduino驱动舵机,请点击这里进入舵机资料页面

Arduino AFMotor扩展板驱动舵机(伺服电机)电路连接说明
Arduino AFMotor扩展板驱动舵机(伺服电机)电路连接说明


驱动舵机(伺服电机)示例程序


其它AFMotor扩展板相关资料

模拟输入输出引脚

Arduino开发板的模拟输入输出引脚(A0~A5)没有被AFMotor扩展板所占用。如下图右下角黑色文字和箭头指示,模拟输入输出引脚被AFMotor扩展板延申至板上以便使用。模拟引脚旁的另外两排引脚分别是Arduino的+5V引脚,和接地引脚。它们的具体位置也用黑色文字在下图中进行了标注。

Arduino 电机扩展板 端口说明
Arduino 电机扩展板 端口说明

遗憾的是,市场上销售的AFMotor扩展板并没有为模拟引脚以及旁边的+5V和GND引脚焊接插针。如果您需要使用这些引脚的话,需要自己焊接插针。

未占用引脚

Arduino引脚2 和引脚13都没有被AFMotor电机扩展板所占用。如果您手中有AFMotor扩展板,您可以在扩展板的正面靠近2号引脚的位置找到一个没有焊接插针的预留孔。这个预留孔就是用于焊接额外插针以便于您使用引脚2的。与上面所提到的模拟引脚一样,引脚2预留孔也没有预先焊好插针。如果要用到此引脚,需要您自行焊接插针。

引脚13虽然没有被AFMotor扩展板占用,但是扩展板上没有将该引脚引出。使用引脚13需要您自行焊接额外引线才能使用。

AFMotor电机扩展板电路资料

百度网盘下载:https://pan.baidu.com/s/1zNbOb2hMowRBCPY095myyw (提取码:16p4)