【mind+用户库】AFMotor电机驱动扣展板使用教程
介绍
电机扩展板作为Arduino平台最为流行的扩展板之一具有连接便利,功能丰富的特点。之前一直想在mind+平台使用这款电机扩展板,可惜官方一直没用出,学会了怎么编写用户库,只能自给自足了!本教程主要向读者介绍一下:AFMotor用户库的使用方法。
AFMOTOR电机扩展板主要功能特点
- 可最多驱动4个模型直流电机
- 可最多驱动2个28BYJ-48步进电机
- 可最多驱动2个舵机(Arduino的9号和10号引脚来驱动舵机)
- 板载两块L293D芯片负责电机驱动的核心工作
- 可配合Arduino Uno/Mega开发板使用(本扩展主要针对Uno开发板进行开发)
端口介绍
外接电源供电
如下图所示,AFMotor电机扩展板上配有外接电源接口。该接口所连接的直流电源可以为电机和Arduino开发板供电。
使用AFMotor电机扩展板驱动电机时,首要考虑的问题就是如何为扩展板供电。如果电源输出功率达不到驱动电机的要求,那么电机是无法正常工作的。在考虑如何选择电源时,我们需要重点关注两个方面 ,一个是电源电压,一个是电源电流。
注意:外接电源极性千万不要接反,否则会对扩展板造成损坏!
外接电源电压要求
AFMotor扩展板中起关键作用的芯片是L293D。该芯片所允许的直流电源电压范围是4.5V ~25V。因此AFMotor扩展板外接电源接口允许我们连接的电源也是4.5V ~25V。请注意:这是一个很宽泛的电压指标。具体我们应该连接的电源电压有多大,这是由被驱动的电机工作电压来决定的。
外接电源电流要求
与上面提到的电源电压要求相同,外接电源的电流要求也是由被驱动的电机来决定的。通常我们使用AFMotor电机扩展板所驱动的电机就是普通的模型电机(如以上电源讲解中的图片所示)。对于这一类型的电机,它们的工作电流大约是500mA左右,因此我们只要为扩展板配一个500 mA~1000 mA的外接电源就足够了。请注意,假如您所驱动的电机工作电流超过500mA,那么就要考虑为扩展板上的L293D加装芯片了。
扩展板跳线的作用
在以上两种工作方式里,我们对电机扩展板上的跳线采取了不同的操作方法。该跳线的作用是控制Arduino开发板是否通过外接电源来供电。当跳线移除的时候,外接电源不会为Arduino开发板供电。相反当跳线安置在插针上,外接电源将会为Arduino供电。
因此在程序开发过程中,当Arduino与电脑通过USB线连接时,我们需要将跳线从插针上移除。假如我们不移除该跳线,Arduino会有两路供电。而这两路电源同时工作会产生问题,严重的可能会造成开发板以及扩展板的损坏。
关于直流电机引线
可能有些朋友会感到好奇,直流电机有两根引线,这两根引线在连接到AFMotor扩展板电机端口时有没有顺序呢?这个问题的答案是“既有顺序也无顺序”。
如果您只是单纯的想要让电机转起来,那么这两根引线连接到扩展板端口上是没有顺序的。但如果您发现电机旋转的方向与您所期待的相反,您可以将这两根电机引线从扩展板上断开,然后交换顺序再接到扩展板端子上,这时您会看到电机旋转的方向就反过来了。
未占用的引脚
Arduino开发板的模拟输入输出引脚(A0~A5)没有被AFMotor扩展板所占用。
Arduino引脚2 和引脚13都没有被AFMotor电机扩展板所占用。如果您手中有AFMotor扩展板,您可以在扩展板的正面靠近2号引脚的位置找到一个没有焊接插针的预留孔。这个预留孔就是用于焊接额外插针以便于您使用引脚2的。与上面所提到的模拟引脚一样,引脚2预留孔也没有预先焊好插针。如果要用到此引脚,需要您自行焊接插针。
引脚13虽然没有被AFMotor扩展板占用,但是扩展板上没有将该引脚引出。使用引脚13需要您自行焊接额外引线才能使用。
(–转自太极创客网站)
准备阶段
安装方法:
1、直接搜索导入(推荐)
这是最推荐的方式,在用户库中搜索“hockel”,即可添加 AFMotor模块。
2、网络加载方式安装:
打开mind+ 选择上传模式->用户库:在搜索栏中输入:https://gitee.com/hockel/AFMotor
回车后出现下图,双击导入即可。
3、离线包安装
4*4矩阵键盘扩展库离线安装包下载地址:链接: 链接: https://pan.baidu.com/s/1HAOcWVSSuym-isQ64Qr7RQ 提取码: 5ie6
首先下载离线安装包:hockel-afmotor-thirdex-V0.0.1.mpext,将它保存到电脑任意位置,然后打开 Mind+ 软件,选择用户库,点击“导入文件”,如下图所示:
选择刚刚下载的离线安装包hockel-afmotor-thirdex-V0.0.1.mpext,点击打开即可:
积木列表
示例程序(驱动4个电机)
电路连接
https://detail.tmall.com/item.htm?spm=a230r.1.14.23.3c45467b97EsSw&id=600108071245&ns=1&abbucket=6
在开发时,Arduino的电源是由电脑通过USB线提供的。但由于电机运行所需的电源功率远远超过Arduino能提供的电源功率,因此Arduino是无法为电机供电的。要想让电机获得充足的电源供应,我们就需要在扩展板的外接电源端口接上直流电源来为电机供电。在这种情况下,扩展板上的跳线一定要移除。否则可能会损坏Arduino开发板以及电机扩展板!请务必注意!
另外,当扩展板上的跳线没有安置插针时,如果我们不给扩展板外接电源,而只是将Arduino开发板连接在电脑USB端口上。由于Arduino开发板输出的电能远远无法满足电机正常运行的要求,所以虽然看到电机也在动,但是动起来很没有力气。要想让电机以正常的方式运行,还是需要给扩展板连接外接直流电源的,这样电机才有充足的动力来运行。
程序代码
示例程序(驱动2个步进电机)
电路连接
程序代码
相关积木介绍:
步进电机初始化积木块:后面括号中的两个参数分别代表了步进电机旋转一周的步数以及步进电机连接在扩展板上的端口号。如AF_Stepper motor1(2048, 1)语句中参数2048代表motor1旋转一周需要走2048步。假如您的电机旋转一周需要32步,那么请在第一个参数位置输入32这一数字参数。
括号中第二个参数1代表motor1连接在M1和M2端口。对于motor2对象,它括号中的参数2代表motor2连接在M3和M4端口。
第三个参数:AFMotor的onestep库函数运行模式:
- SINGLE - 全步进模式(单线圈)。电机每走一步,扩展板只给一相线圈供电。
- DOUBLE - 全步进模式(双线圈)。电机每走一步,扩展板会同时给两相线圈供电。
此模式运行的电机比SINGLE模式下的扭矩要更大,但是电机耗电也会更多。
INTERLEAVE - 半步进模式。这种模式是SINGLE和DOUBLE的混合。电机每走一步,扩展板对线圈供电方式
在一相和两相之间交替切换。举例来说,电机走第一步时,只有一相线圈通电。
走第二步时,会有两相线圈供电,然后又是一相,再两相…这样交替通电。
这种控制模式的优点是电机运行更流畅,但是缺点是运行速度大打折扣。 - MICROSTEP - 微步进模式。此模式下的电机运行更光滑,但缺点是扭矩会打折扣。
总结
值针对了常用积木块写了简单的教程,更多玩法其他网友自行开发。最新教程欢迎关注个人博客:www.hockel.club