概述
本教程适用于现在古老的V1电动机护罩。您有可能使用的是V2,请查看教程https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino。该教程仅供历史参考,并且仅供先前的客户使用!
Arduino是电子产品的一个很好的起点,并且带有电动机护罩,它也可以成为机器人技术和机电一体化的一个很好的整洁平台。这是功能齐全的电动机屏蔽罩的设计,能够为许多简单到中等复杂的项目提供动力。
2个5V“业余”伺服器的连接连接到Arduino的高分辨率专用计时器-无抖动!
多达4个具有单独8位速度选择的双向DC 电机(因此,分辨率约为0.5%)
最多2个步进电机(单极或双极),具有单线圈,双线圈,交错或微步进。
4个H桥:L293D芯片组提供每桥0.6A(峰值1.2A)的热关断保护,4.5V至25V
下拉电阻可在加电期间使电机保持禁用状态
将Arduino复位按钮置于顶部
2针端子块以连接外部电源,用于单独的逻辑/电机电源
经过测试与Mega,Diecimila和Duemilanove兼容
完整套件可用于可以从Adafruit商店购买。
下载易于使用的Arduino软件库,就可以开始使用!
常见问题解答
本教程适用于现在古老的V1电动机防护罩。您有可能使用的是V2,请查看教程https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino。该教程仅供历史参考,并且仅供先前的客户使用!
此防护罩可以使用多少个电机?
您可以使用2个在5V电压下运行的DC伺服器,最多4个DC电机或2个步进电机(或1个步进和最多2个DC电机)
我可以连接更多的电动机吗?
否,目前还不能例如,可以堆叠屏蔽或轻松连接屏蔽以控制4个步进器。
帮助!我的马达不起作用! - 救命!我的电机不工作!。..但是伺服系统工作正常!
是LED灯亮了吗?如果LED不亮,则步进电机和DC电机连接不会做任何事情
如果LED不亮,请不要费心编写上传代码或为电机接线,这将不起作用。
LED指示灯是什么?
LED指示直流/步进电机电源正在工作。如果不亮,则直流/步进电机将不会运行。伺服端口由5V供电,不使用直流电动机电源。
我正在尝试构建此机器人,但它似乎无法在9V电池上运行。 。..
请阅读用户手册以获取有关适当电源的信息。
此屏蔽能否控制3V小型电动机?
否实际上,它适用于更大的6V +电机。除非您以6V超速驱动,否则它不适用于3V电动机,否则它们将更快地耗尽。
屏蔽板上的电源连接器有什么作用?如何为电动机供电?
请阅读用户手册以获取有关合适电源的信息。/div》
电动机运行时,我的Arduino吓坏了!屏蔽层破损了吗?
电机会消耗很多能量,并可能导致“电力不足”重置Arduino。因此,屏蔽罩设计用于单独的(分开的)电源-一个用于电子设备,另一个用于电动机。这样做可以防止电源不足。请阅读用户手册以获取有关适当电源的信息。
我有良好的固态电源,但是直流电动机似乎“切出”或“跳越”。
尝试将陶瓷或碟形0.1uF电容器焊接在电动机接线片之间(在电动机本身上!),这将减少可能会反馈到电路中的噪声(感谢macegr!)
如果每个电机需要600mA以上的电流怎么办?
您可以替换SN754410的(风险自负),也可以在现有的L293D驱动器之上搭载更多的L293D驱动器。
电机上未使用哪些引脚
所有6个模拟输入引脚都可用。它们也可用作数字引脚(引脚14至19)
不使用数字引脚2和13。
仅在使用指定的DC/步进器时使用以下插针:
数字插针11:直流电机#1/步进器1(激活/速度控制)
数字插针3:DC电动机#2/步进器#1(激活/速度控制)
数字引脚5:DC电动机#3/步进器#2(激活/速度控制)
数字引脚6:DC电动机#4/步进器#2(激活/速度控制)
如果使用任何DC/步进器,则使用以下引脚
数字引脚4、7、8和12用于通过74HC595串并锁存器驱动DC/步进电机
以下引脚仅在使用特定的伺服器时使用:
数字引脚9:伺服#1控制
数字引脚10:伺服#2控制
哪些引脚是c
直流/步进电动机不是?直接连接到Arduino。它们连接到Arduino所说的74HC595锁存器。您不能直接与电动机通信,必须使用电动机屏蔽库。
,嗯?我不明白。..
您可以尝试阅读Michael撰写的这篇不错的概述K
如何连接未使用的引脚?
模拟引脚(模拟0-5,也称为数字引脚14-19)在右下角断开。
引脚2的引出线较小唯一真正未使用的针脚
其余的针脚不会折断,因为它们可以被电机罩使用。如果您确定不使用这些引脚,则可以在组装套件时使用堆叠式接头连接到它们,或者使用电线焊接到接头的顶部,或者使用“机翼屏蔽”
尝试运行示例代码时遇到以下错误:“错误:AFMotor.h:没有此类文件或目录。。..”
确保已安装AFMotor库
如何安装库?
阅读我们的库教程
我有两个步进电机,我想同时运行它们,但是示例代码只能y先控制一个,然后再控制另一个?
步进电机库step()例行程序不能同时运行两个电动机。相反,您将必须“交错”通话。例如,要使两个电动机都前进100次,您必须编写如下代码:
for(i = 0; i 《100; i ++){
motor1.step(1,FORWARD,SINGLE );
motor2.step(1,FORWARD,SINGLE);
}
如果您想要更智能的控制,请查看AccelStepper库(在“下载”部分中),该库具有一些并发的步进器电机控制示例
什么是“建议的电机”?
大多数人都是从多余的商店购买电机的,没有电机会让所有人高兴
但是,由于这是一个很普遍的问题,我建议您购买电机来自Pololu(直流伺服,直流电动机)或Jameco(各种各样!)以及许多盈余网上商店。
电动机护罩是否与UNO R3兼容还是Mega R3?多余的引脚呢?
电动机的防护罩与R3 UNO和MEGA兼容。 R3在每个接头连接器上都有2个额外的引脚。这些是插头上其他引脚的重复,并且不需要屏蔽。
我正在使用4WD机器人平台,但无法正常工作。
Maker Shed,DF Robotics,Jameco等公司的4WD机器人平台中使用的电机有很多“刷子噪音”。这会反馈到Arduino电路并导致不稳定的操作。通过将3个降噪电容器焊接到电动机上可以解决此问题。电机端子之间为1个,每个端子与电机外壳之间为1个。
但是我的电动机上已经装有电容器,但仍然无法工作。
这些电动机会产生大量的电刷噪声,通常需要完整的3电容处理才能充分抑制。
为什么不只在屏蔽层中设计电容器?
它们将无效那里。必须在源头处抑制噪声,否则电动机导线将像天线一样工作并将其广播到系统的其余部分。
做到!
本教程适用于现在比较古老的V1电动机护罩。您有可能使用的是V2,请查看教程https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino。该教程仅供历史参考,并且仅供先前的客户使用!
放手!这是一个道理易于制作的套件,只需完成以下每个步骤即可构建套件
工具和准备
检查零件清单
将其焊接
准备工作
本教程适用于现在古老的V1电动机护罩。您有可能使用的是V2,请查看教程https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino。该教程仅供历史参考,并且仅供先前的客户使用!
教程
别忘了学习如何使用万用表!
工具。组装时需要一些工具。这些工具均不包含在内。如果您没有它们,现在将是借阅或购买它们的好时机。每当组装/固定/修改电子设备时,它们都非常方便!我提供了购买链接,但是,当然,您应该在最方便/最便宜的地方获得它们。其中许多零件都可以在Radio Shack或其他(更高质量的)DIY电子产品商店中找到。
烙铁
您可能会在本地五金店找到的任何入门级“多合一”烙铁都可以工作。与生活中的大多数事情一样,您将得到所要付出的一切。
升级到高端烙铁设置,例如我们在商店中购买的Hakko FX-888,将使焊接变得轻松有趣。
请勿使用“冷热”烙铁。 !它们不适合用于精密的电子工作,并且可能损坏套件(请参阅此处)。
单击此处购买我们的入门级可调30W 110V烙铁。
单击此处升级为原装的Hakko FX-888可调温焊接铁。
焊料
您将需要松香芯,60/40焊料。好的焊料是一件好事。不良的焊锡会导致桥接和冷焊点难以找到。
单击此处购买一盘含铅焊料(建议初学者使用)。
单击此处购买一盘无铅焊料。
万用表
您将需要一个高质量的基本万用表,可以测量电压和连续性。
单击此处购买基本万用表。
单击此处购买顶级的万用表。
单击此处购买便携式万用表。
齐平斜刀
一旦将它们焊接到位,您将需要齐平的斜角切割器来修剪电线和引线。
k在这里购买我们最喜欢的刀具。
Solder Sucker
奇怪的是,这是该脱焊真空工具的技术术语。对于清理错误很有用,每个电气工程师的办公桌上都会出现一个错误。
单击此处购买错误。
用放大镜帮助第三手
不是绝对 这是必需的,但是它将使处理过程变得更快,并且将使焊接变得更加容易。
在此处选择一个。
零件列表
本教程适用于现在古老的V1电动机护罩。您有可能使用的是V2,请查看教程https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino。该教程仅供历史参考,并且仅供先前的客户使用!
《表类=“ editor-table”》 图片
名称 说明 分销商 数量
PCB 印刷电路板 Adafruit 1
IC1,IC2
L293D
双H桥
*请参见使用页上的注释,以替换为SN754410
L293D 2
IC3 74HC595N
串行到并行输出锁存器 74HC595N 1
IC1‘和IC2’
16针插座(可选!)
自2010年7月起,这些都包含在套件中
通用 2
LED1
3mm LED,任何颜色
电机电源指示灯
3mm LED 1
R1 用于LED1的1.5K电阻 1/4W 5%电阻 1
R2 10K下拉电阻
棕色,黑色,橙色,金 1/4W 5%电阻器 1
RN1 10针总线10K-100K电阻网络 100K电阻器网络 1
C2,C4,C6 0.1uF陶瓷电容器 通用 3
C1,C3,C5 100uF/6V电容器(或更大) 100uF/6V上限 3
C7,C8 47uF/25V电容器(或更大) 47uF/25V cap 2
X1
5位3.5mm接线端子
(或3位和2位)
3.5mm端子 2
X2 2位3.5mm接线端子 3.5mm端子 1
RESET 6mm轻触开关 6mm轻触开关 1
PWR 跳线/旁路 0.1”跳线 1
36针公头(1x36) 通用 1
焊接
本教程适用于现在比较古老的V1电动机护罩。您有可能使用的是V2,请查看教程https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino。该教程仅供历史参考,并且仅供先前的客户使用!
接下来,如图所示,将电阻滑入PCB,使它们平放在电路板上。弯曲一下导线脚,使电路板翻转时不会出现极化现象。
电阻不会极化,这意味着您可以按“两种方式”放置它们,并且它们会正常工作。
接下来是三个集成电路(IC) IC1,IC2 和 IC3 。当IC出厂时,支脚有些倾斜,这使得将它们插入PCB变得困难。通过将支腿轻轻地弯曲到平坦的桌面上以使其完全笔直来准备焊接。
如果您有驱动电动机的经验,则可能希望跳过插座,因为这会降低芯片的散热能力。
首先,请检查一下您拥有所有零件!在此处查看并显示在左侧的零件清单中。
还要检查以确保您具有组装所需的工具。
将电动机屏蔽板放置在虎钳或其他电路板支架中,然后将烙铁打开700度。
首先需要使用的两个电阻是 R1 ( 棕色绿色红色金 )和 R2(棕黑色橙色金) 。弯曲电阻,使它们看起来像钉书钉,如这张照片所示。
使用烙铁头,加热几秒钟后,同时将电阻器导线和金属环(焊盘)戳入一点焊料,使其熔化成一个圆锥形。去除焊料,然后去除烙铁。对所有4条导线都执行此操作。
检查您的工作,应该有干净的焊点。
使用对角线将长引线夹在焊点上方
下一个放置三个黄色陶瓷电容器 C4 , C2 和 C6 。陶瓷电容器没有极性,因此您可以“两种方式”使用它们,它们可以正常工作。
将引线弯曲,就像使用电阻器一样。
焊接所有6根电线,然后像使用电阻一样将其剪裁。
接下来是6mm触摸开关 RESET 和电阻网络 RN1 。轻触开关用于复位Arduino,因为一旦打开电机护罩,它就无法到达复位按钮。
电阻器网络用于下拉引脚在马达驱动器芯片上,这样它们就不会在Arduino草图告诉它们之前给马达供电。
触觉开关可以“以任何一种方式”进入。但是,电阻器网络必须以某种方式运行。确保带点的末端位于正确的位置,以使其与电阻网络的丝网印刷图像中的X相同。 (请参见左图)。
将板翻转过来,并焊接电阻网络并进行开关。您不需要修剪线索,因为线索很短。
Adafruit的最新套件带有2个用于L293D电机驱动器的16针插座。它们是可选的,不是操作所必需的。
如果您不熟悉驱动电机(接线错误的电机可能性很高),则应安装这些,以便在L293D损坏时可以
轻松更换它们。
IC必须以正确的方向放置才能正常工作。为了帮助放置,每个芯片的顶部都有一个U形槽口。在电路板上印有芯片轮廓的打印图像,一端有一个U形缺口。确保切屑槽口与图像槽口在同一端。在此PCB中,所有部件都面对相同的方向。
轻轻地插入三个芯片。检查以确保没有任何腿弯曲或折断。
74HC595位于中间,两个L293D位于两侧。
焊接芯片的每个引脚。
L293D电机驱动器芯片的四个“中间”引脚已绑在一起到大的散热器,因此可能最终被焊料“桥接”,如第二幅图所示。
接下来是三个100uF电解电容器 C1 , C3 和 C5 。电解电容器已极化,必须以正确的方向放置,否则可能会弹出!电容器的长脚为正(+)脚,并进入标有+的孔中。此处显示的特写图像表示带孔的是+ 1。
电容器没有颜色编码。主体颜色可以从蓝色到紫色到绿色到黑色不等,因此请务必阅读侧面的值,而不取决于颜色!
仔细检查它们的极性后,焊接并夹三个电容器。
放置两个剩余的47uF电解电容器 C7 和 C8
这些电极也是极化的,因此请确保将长引线插入丝网印刷图像的+孔中。
电容器没有颜色编码。主体颜色可以从蓝色到紫色到绿色到黑色不等,因此请务必阅读侧面的值,而不取决于颜色!
焊接并修剪两个电容器。
下一个是3mm LED,用于指示电机功率。 LED像电容器一样是极化的,长引线是正极(+)引线。
请确保正确放置LED,否则它将不起作用!
焊接并修剪LED引线。
下一次是制作跳线,舵机和arduino接头的时候了。
我们使用一根36针“分离式”接头的针头,将其分开以制成更小的条。您可以使用斜口钳或钳子将其折断。
将36针接头分成2个8针,2个6针,2个3针和1个2针接头。
p》
如果您有NG arduino,则可能需要1个6针接头和1个4针接头,而不是2个6针接头。
2个3针引脚插入左上角的伺服连接中。 2针引脚插入底部中心的PWR跳线中。
此外,放置3个用于电动机和外部电动机电源线的大螺钉端子。如果只收到2位和3位端子块,请将它们滑动在一起,以便有2个5位端子和1个2位端子。
3个标题和三个接线端子中的焊料。
接下来,将8针和6针接头连接到Arduino板。这将确保标题完美对齐。确保未插入Arduino或未为其供电!
将电动机护罩放置在Arduino的顶部,并确保所有插头都对齐。
标题的每个引脚中的焊料。
您已完成!
现在请阅读用户手册。
使用它!
本教程适用于现在古老的V1电动机护罩。您有可能使用的是V2,请查看教程https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino。此教程仅供历史参考,并且仅供以前的客户使用!
Adafruit Motor Shield套件是Arduino的绝佳电机控制器,但要格外小心以确保正确使用。请通读左侧的所有《用户手册》部分,尤其是有关磁带库安装和电源要求的部分!
库安装
本教程适用于现在古老的V1电动机防护罩。您有可能使用的是V2,请查看教程https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino。该教程仅供历史参考,并且仅供先前的客户使用!
首先安装Arduino库
您必须先必须安装 AF_Motor Arduino库,然后才能使用Motor Shield-这将指导Arduino如何与Adafruit Motor Shield对话,但它不是可选!
打开Arduino库管理器:
搜索 Adafruit Motor 库并安装它。确保它是V1电动机屏蔽罩的库。
我们在以下位置也提供了有关Arduino库安装的出色教程:http://learn.adafruit.com/adafruit-all-about-arduino-库安装使用
电源使用
本教程适用于现在比较古老的V1电动机护罩。您有可能使用的是V2,请查看教程https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino。该教程仅供历史参考,并且仅供先前的客户使用!
为直流电动机,电压和电流需求供电电动机需要大量能量,尤其是便宜的电动机,因为它们的效率较低。首先要弄清楚电动机要使用的电压。如果幸运的话,您的电动机带有一些规格。一些小型的业余电动机仅打算以1.5V的电压运行,但6-12V电动机的使用却一样普遍。该屏蔽罩的电机控制器设计为在 4.5V至25V 范围内运行。
MOST 1.5-3V电动机将无法工作
电流要求:要弄清的第二件事是电动机需要多少电流。该套件随附的电机驱动器芯片旨在为每个电机提供高达600 mA的电流,峰值电流为1.2A。请注意,一旦接近1A,您可能会希望在电机驱动器上放一个散热器,否则会出现热故障,从而可能烧坏芯片。
使用SN754410:某些人使用SN754410电机驱动器芯片是因为它与引脚兼容,具有输出二极管,每个电机可提供1A电流,峰值2A电流。在仔细阅读数据表并与TI技术支持和电源工程师进行讨论之后,看来输出二极管仅设计用于ESD保护,并且将其用作反冲保护是一种黑客行为,并且不能保证性能。因此,该套件不随SN754410一起提供,而是使用带有集成反冲保护二极管的L293D。如果您愿意冒险,并且需要额外的流动资金,请随时购买SN754410并更换提供的芯片。
需要更多电源吗?请购买另一组L293D驱动器并将其焊接在板上的顶部(背负式)。瞧,当前功能加倍!您可以在顶部再焊接2个芯片,否则可能不会为您带来很多好处
您不能用9V电池来驱动电动机,因此甚至不浪费时间/电池! 使用大号铅酸或镍氢电池。它还非常建议您设置两个电源(分离电源),一个用于Arduino,另一个用于电机。 99%的“怪异电机问题” 是由于共享电源线上的噪声引起的供应和/或没有足够的供应!
如何设置Arduino + Shield来为电机供电 Servos的电源是与Arduino使用的相同的5V电压。建议使用小型业余伺服器。如果您想要更好的东西,请切断去往伺服连接器上+的走线,并为您自己的5-6V电源接线!
直流电动机由“高压电源”供电,而不是经过调节的5V电源。请勿将电动机电源连接到5V线。除非您确定自己知道自己在做什么,否则这是一个非常非常糟糕的主意!
可以在两个地方获得电动机的“高压电源”。一个是Arduino板上的DC插孔,另一个是屏蔽板上标有 EXT_PWR 的2端子块.Arduino上的DC插孔具有保护二极管,因此您将无法弄乱如果插入错误的电源,情况可能会变得非常糟糕。但是,屏蔽层上的 EXT_PWR端子没有保护二极管(出于相当充分的理由)。请小心不要将其向后插入,否则您将破坏电机护罩和/或Arduino!
这是它的工作方式:
如果您想要一个为Arduino和电机提供单个DC电源,只需将其插入Arduino的DC插孔或屏蔽板上的2针PWR_EXT模块。将电源跳线放在电动机的护罩上。
如果您有Diecimila Arduino,请将Arduino电源跳线设置为EXT。
请注意,如果电池电源无法提供恒定的电源,您可能会遇到Arduino重置问题,但这不是建议您为电机项目供电的方法
如果您想让 Arduino的USB电源关闭,而电机的电源是直流电源,插入USB电缆。然后将电动机电源连接到屏蔽板上的PWR_EXTblock。请勿将跳线放在防护罩上。这是为电机项目供电的建议方法
(如果您有Diecimila Arduino,请不要忘记将Arduino电源跳线设置为USB。如果您有Diecimila,则可以交替执行以下操作:将DC电源插入
如果您要 2个用于Arduino和电机的独立直流电源。请插入Arduino的电源插入DC插孔,然后将电动机电源连接到PWR_EXT块。确保将跳线从电动机护罩上卸下。
如果您有Diecimila Arduino,请将Arduino跳线设置为EXT。这是为电动机项目供电的建议方法
无论哪种方式,如果要使用直流电动机/步进系统,电动机的护罩LED均应点亮,指示电动机功率良好
使用RC伺服系统
本教程适用于现在比较古老的V1电动机防护罩。您有可能使用的是V2,请查看教程https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino。该教程仅供历史参考,并且仅供先前的客户使用!
业余伺服器是进行电动机控制的最简单方法。它们具有3针0.1英寸母头连接,带+ 5V,接地和信号输入。电动机屏蔽罩将16位PWM输出线简单地引出到两个3针头,因此轻松实现插上电源即可使用,因为9V电池可持续使用几分钟以上。
使用板载PWM的好处是它非常精确,并且可以在您可以使用内置的 Servo 库
使用伺服器很简单,请阅读Arduino官方文档以了解如何使用它们,并在IDE中查看示例伺服草图。/p》 Servos的电源来自Arduino的板载5V re直接从Arduino上的USB或DC电源插孔供电的gulator。如果需要外部电源,请在伺服引脚下方(在v1.2板上)切割走线,并直接连接5V或6V直流电源。高级用户可以使用外部电源,因为您可能会由于不正确地连接电源而意外损坏伺服器!
将外部电源接头用于伺服时,请注意接头引脚的底部不要接触Arduino上的金属USB端口外壳。外壳上有一条胶带可以防止短路。
使用步进电机
本教程适用于现在比较古老的V1电动机防护罩。您有可能使用的是V2,请查看教程https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino。该教程仅供历史参考,并且仅供先前的客户使用!
步进电机非常适合(半)精确控制,非常适合许多机器人和CNC项目。该电机护罩最多可支持2个步进电机。对于双极和单极电动机,该库的工作原理相同。
对于单极电动机:要连接步进电机,首先要弄清楚哪些引脚连接到哪个线圈,以及哪个引脚是中心抽头。如果它是5线制电动机,则两个线圈的中心抽头将为1。在线上有很多关于如何反向工程线圈引出线的教程。中心抽头应同时连接到电机屏蔽输出块的GND端子上。那么线圈1应该连接到一个电动机端口(例如M1或M3),线圈2应该连接到另一个电动机端口(M2或M4)。
对于双极型电动机:与单极电动机一样,除了没有5号线接地。代码完全相同。
运行步进器比运行直流电动机要复杂得多,但仍然非常简单
请确保您 #include
使用 AF_Stepper( steps )创建步进电机对象, stepper# )来设置电动机的H桥和闩锁。 步长 表示电机每转多少步。 7.5度/步的电动机具有360/7.5 = 48步。 Stepper# 是它连接到的端口。如果使用的是M1和M2,则为端口1。如果使用的是M3和M4,则为端口2
使用 setSpeed( rpm 》),其中 rpm 是您希望步进电机每分钟转多少转。
然后每次您希望电动机转移动,调用 step( #steps , direction , steptype )过程。 #步骤 是您要执行的步骤。 direction 是 FORWARD 或 BACKWARD ,步长类型是 SINGLE,DOUBLE。交错或 MICROSTEP 。
“单”表示单线圈激活,“双”表示一次激活2个线圈(以获得更高的扭矩),“交错”表示交替进行在单倍和两倍之间切换,以获得两倍的分辨率(但当然是速度的一半)。 “微步进”是一种方法,其中对线圈进行PWM调制以在各步之间产生平滑运动。资源页面中提供了有关这些不同步进方法的优缺点的大量信息。
您可以使用所需的任何步进方法,将其“实时”更改为您可能需要最小的功率,更大的扭矩或
默认情况下,电机在完成步进后将“保持”位置。如果要释放所有线圈以使其自由旋转,请调用 release()
步进命令处于“阻塞”状态,一旦完成,这些命令将返回。
由于步进命令“ block”-每次要移动步进电机时,都必须指示它们。如果您想拥有更多的“后台任务”步进器控件,请查看AccelStepper库(与AFMotor的安装方式类似),其中提供了一些示例,这些示例可同时控制两个步进器,并具有不同的加速度
下载:文件
复制代码
#include
AF_Stepper motor(48, 2);
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println(“Stepper test!”);
motor.setSpeed(10); // 10 rpm
motor.step(100, FORWARD, SINGLE);
motor.release();
delay(1000);
}
void loop() {
motor.step(100, FORWARD, SINGLE);
motor.step(100, BACKWARD, SINGLE);
motor.step(100, FORWARD, DOUBLE);
motor.step(100, BACKWARD, DOUBLE);
motor.step(100, FORWARD, INTERLEAVE);
motor.step(100, BACKWARD, INTERLEAVE);
motor.step(100, FORWARD, MICROSTEP);
motor.step(100, BACKWARD, MICROSTEP);
} #include
AF_Stepper motor(48, 2);
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println(“Stepper test!”);
motor.setSpeed(10); // 10 rpm
motor.step(100, FORWARD, SINGLE);
motor.release();
delay(1000);
}
void loop() {
motor.step(100, FORWARD, SINGLE);
motor.step(100, BACKWARD, SINGLE);
motor.step(100, FORWARD, DOUBLE);
motor.step(100, BACKWARD, DOUBLE);
motor.step(100, FORWARD, INTERLEAVE);
motor.step(100, BACKWARD, INTERLEAVE);
motor.step(100, FORWARD, MICROSTEP);
motor.step(100, BACKWARD, MICROSTEP);
}
使用直流电动机
本教程适用于现在古老的V1电动机防护罩。您有可能使用的是V2,请查看教程https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino。该教程仅供历史参考,并且仅供先前的客户使用!
直流电动机用于各种机器人项目。
电动机护罩可以双向驱动多达4个直流电动机。这意味着它们可以向前和向后驱动。使用高质量的内置PWM,速度也可以以0.5%的增量变化。这意味着速度非常平稳且不会变化!
请注意,H桥芯片不适合驱动超过0.6A的负载或超过1.2A的峰值,因此对于 small 马达。检查数据表中有关电动机的信息,以验证其正常。
要连接电动机,只需将两根导线焊接到端子上,然后将它们连接到 M1,M2,M3, strong》或 M4 。然后在草图中按照以下步骤操作
确保您#include
使用 AF_DCMotor( motor#,频率),以设置电动机的H桥和闩锁。构造函数有两个参数。
第一个是电动机连接到的端口, 1、2、3 或 4 。
频率 是速度控制信号的速度。
对于电动机1和2,您可以选择 MOTOR12_64KHZ , MOTOR12_8KHZ , MOTOR12_2KHZ 或 MOTOR12_1KHZ 。诸如64KHz的高速不会被听见,但是诸如1KHz的低速将消耗更少的功率。电动机3和4只能以1KHz运行,并且将忽略给定的任何设置
然后您可以使用 setSpeed( speed )设置电动机的速度》 速度 的范围是0(停止)到255(全速)。您可以随时设置速度。
要运行电动机,请调用 run( direction ),其中 direction 是 FORWARD , BACKWARD 或 RELEASE 。当然,Arduino实际上并不知道电机是否“前进”。 ‘或’向后‘,因此,如果要更改其认为向前的方式,只需将电动机和屏蔽层之间的两根导线互换即可。
下载:文件
复制代码
#include
AF_DCMotor motor(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println(“Motor test!”);
motor.setSpeed(200); // set the speed to 200/255
}
void loop() {
Serial.print(“tick”);
motor.run(FORWARD); // turn it on going forward
delay(1000);
Serial.print(“tock”);
motor.run(BACKWARD); // the other way
delay(1000);
Serial.print(“tack”);
motor.run(RELEASE); // stopped
delay(1000);
} #include
AF_DCMotor motor(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println(“Motor test!”);
motor.setSpeed(200); // set the speed to 200/255
}
void loop() {
Serial.print(“tick”);
motor.run(FORWARD); // turn it on going forward
delay(1000);
Serial.print(“tock”);
motor.run(BACKWARD); // the other way
delay(1000);
Serial.print(“tack”);
motor.run(RELEASE); // stopped
delay(1000);
}
AF_DCMotor类
本教程适用于现在古老的V1电动机防护罩。您有可能使用的是V2,请查看教程https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino。该教程仅供历史参考,并且仅供先前的客户使用!
AF_DCMotor类可提供速度与Adafruit Motor Shield配合使用时,最多可控制四个直流电动机的方向和方向。要在草图中使用它,必须首先在草图的开头添加以下行:
下载:文件
复制代码
#include #include
AF_DCMotor 电动机名称(端口号,频率)
这是直流电动机的构造函数。为草图中的每个电动机调用一次此构造函数。每个电动机实例的名称必须与下面的示例中的名称不同。
参数:
端口号-选择电机将连接到电机控制器的哪个通道(1-4)
频率-选择PWM频率。如果未指定频率,则默认使用1KHz。
通道1和2的频率为:
MOTOR12_64KHZ
MOTOR12_8KHZ
MOTOR12_2KHZ
MOTOR12_1KHZ
通道3和4的频率为:
MOTOR34_64KHZ
MOTOR34_8KHZ
MOTOR34_1KHZ
示例:
下载:文件
复制代码
AF_DCMotor motor4(4); // define motor on channel 4 with 1KHz default PWM
AF_DCMotor left_motor(1, MOTOR12_64KHZ); // define motor on channel 1 with 64KHz PWM AF_DCMotor motor4(4); // define motor on channel 4 with 1KHz default PWM
AF_DCMotor left_motor(1, MOTOR12_64KHZ); // define motor on channel 1 with 64KHz PWM
注意:较高的频率将产生较小的听觉嗡嗡声,但可能会导致某些电动机的转矩降低。
setSpeed( speed )
设置电动机的速度。
参数:
速度-“速度”的有效值在0到255之间,其中0处于关闭状态,255为全油门。
示例:
注意 : DC电机响应通常不是线性的,因此实际RPM不一定与编程速度成正比。
运行( cmd )
设置电动机的运行模式。
参数:
cmd -电动机所需的运行模式
cmd的有效值为:
FORWARD -向前运行(实际旋转方向取决于电动机接线)
BACKWARD -向后运行(旋转将与正向相反)
释放-停止电动机。这会从电动机上断电,等效于setSpeed(0)。电动机的防护罩没有实现动态破坏,因此电动机可能需要一些时间才能旋转
示例:
下载:文件
复制代码
motor.run(FORWARD);
delay(1000); // run forward for 1 second
motor.run(RELEASE);
delay(100); // ’coast‘ for 1/10 second
motor.run(BACKWARDS); // run in reverse motor.run(FORWARD);
delay(1000); // run forward for 1 second
motor.run(RELEASE);
delay(100); // ’coast‘ for 1/10 second
motor.run(BACKWARDS); // run in reverse
AF_Stepper类
本教程适用于现在古老的V1电动机护罩。您有可能使用的是V2,请查看教程https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino。该教程仅供历史参考,并且仅供先前的客户使用!
AF_Stepper类提供单个与Adafruit Motor Shield配合使用时,最多可对2个步进电机进行多步控制。要在草图中使用它,必须首先在草图的开头添加以下行:
下载:文件
复制代码
#include #include
AF_Stepper steppername ( steps , portnumber ) AF_Stepper构造函数定义了步进电机。为草图中的每个步进电机调用一次。每个步进电机实例必须具有唯一的名称,如下例所示。
参数:
steps -声明步数
num -声明如何将电动机连接到屏蔽层。
“ num”的有效值是1(通道1和2)和2(通道3和4)。
示例:
下载:文件
复制代码
AF_Stepper Stepper1(48, 1); // A 48-step-per-revolution motor on channels 1 & 2
AF_Stepper Stepper2(200, 2); // A 200-step-per-revolution motor on channels 3 & 4 AF_Stepper Stepper1(48, 1); // A 48-step-per-revolution motor on channels 1 & 2
AF_Stepper Stepper2(200, 2); // A 200-step-per-revolution motor on channels 3 & 4
step(步,方向,样式)步进电动机。
参数:
步数-转向的步数
方向-旋转方向( FORWARD 或向后)
样式-步进样式:
“样式”的有效值为:
单个-一个线圈i一次通电。
双重-一次通电两个线圈以获得更大的扭矩。
交错-交替在单打和双打之间创建半步。这样可以使运行更平稳,但是由于额外的半步,速度也降低了一半。
MICROSTEP -相邻的线圈上下倾斜以形成一个每个完整步骤之间的“微步”数量。这样可以实现更好的分辨率和更平滑的旋转,但是会损失扭矩。
注意:步骤是同步命令,直到返回为止所有步骤均已完成。对于两个电动机的同时运动,必须处理两个电动机的步进定时,并使用下面的“ onestep()”函数。
下载:文件
复制代码
Stepper1.step(100, FORWARD, DOUBLE); // 100 steps forward using double coil stepping
Stepper2.step(100, BACKWARD, MICROSTEP); // 100 steps backward using double microstepping Stepper1.step(100, FORWARD, DOUBLE); // 100 steps forward using double coil stepping
Stepper2.step(100, BACKWARD, MICROSTEP); // 100 steps backward using double microstepping
setSpeed( RPMspeed ) 设置电动机的速度
参数:
速度-以RPM为单位的速度
注意:最终的步进速度基于构造函数中的“ steps”参数。如果这与您的电动机的步数不匹配,那么您的实际速度也会关闭。
示例:
下载:文件
复制代码
Stepper1.setSpeed(10); // Set motor 1 speed to 10 rpm
Stepper2.setSpeed(30); // Set motor 2 speed to 30 rpm Stepper1.setSpeed(10); // Set motor 1 speed to 10 rpm
Stepper2.setSpeed(30); // Set motor 2 speed to 30 rpm
》
onestep(方向,步进样式)单步电动机。
参数:
方向-旋转方向( FORWARD 或 BACKWARD )
stepstyle -步进样式:
“ style”的有效值为:
单次-一次通电一个线圈。
DOUBLE -一次通电两个线圈
interleave -在单双之间交替,以在两者之间建立半步。这样可以使运行更平稳,但是由于额外的半步,速度也降低了一半。
MICROSTEP -相邻的线圈上下倾斜以形成一个每个完整步骤之间的“微步”数量。这样可以实现更好的分辨率和更平滑的旋转,但是会损失扭矩。
示例:
下载:文件
复制代码
Stepper1.onestep(FORWARD, DOUBLE); // take one step forward using double coil stepping Stepper1.onestep(FORWARD, DOUBLE); // take one step forward using double coil stepping
release()释放电机上的保持扭矩。这样可以减少热量和电流需求,但电动机不会主动抵抗旋转。
示例:
下载:文件
复制代码
Stepper1.release(); // stop rotation and turn off holding torque. Stepper1.release(); // stop rotation and turn off holding torque.
资源
汽车创意和教程
维基百科上有很多有关步进电机的信息
关于步进电机类型的琼斯
Jason关于对步进电机引线的反向工程
》
下载
本教程适用于现在古老的V1电动机护罩。您有可能使用的是V2,请查看教程https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino。该教程仅供历史参考,并且仅供先前的客户使用!
示意图和布局
您可以获取最新的Schematic Layout文件(来自github的EagleCAD格式。单击顶部顶部的 ZIP下载按钮以下载整个zip。
固件
AccelStepper库,带有AFMotor支持,该库允许进行高级步进控制,包括加速和加速取消和并发的步进控制!您仍然需要上方的AFmotor!
要安装,请单击页面中间的下载,选择下载为 zip 并解压缩该文件夹。
将该文件夹重命名为 AccelStepper (检查是否已重命名)文件夹包含.cpp和.h文件),然后安装到 Arduinosketches/libraries 文件夹中。有关如何使用和安装库的信息,请参见我们的教程!
具有微步进支持的Arduino Stepper/Servo软件库。通过Arduino库管理器安装此库。
打开Arduino库管理器:
搜索 Adafruit Motor Shield 库并安装
责任编辑:wv
-
电动机
+关注
关注
74文章
4101浏览量
96046
发布评论请先 登录
相关推荐
评论