风筝
发表于: 2017-1-23 16:55:23 | 显示全部楼层

all_connected.JPG

目前为止,我还没有真正深入了解过电机,特别是步进电机。 最近我在计划一个项目,需要相对精确的电机控制,所以可能会使用到步进电机,但很快就意识到我首先应该更多地了解这些。 本篇文章主要介绍我到目前为止学到的东西。


什么是步进电机?

步进电机是一种离散步进运动的电磁装置。 它有几个线圈,组成“相位”,当每相依次通电时驱动电机。 这种方式其中一个巨大的好处是,步进电机可以实现非常精确的定位和/或速度控制,因此它们广泛用于高精度的应用,如打印机。


单极和双极

步进电机有两种不同类型:单极和双极。 它们之间的主要区别是它们的绕组排列,其影响每个是如何控制的。

单极

这种类型的步进电机由一个带有中心抽头的单绕组组成。 根据期望磁场的方向,绕组的每个部分接通,因为这样,磁极可以反转而不用切换电流的方向。 中心抽头比较常见,虽然在两相单极步进电机上通常有6个引线(每相3个),两个公共端可以在内部连接在一起,也就是说只有五根引线。

双极

与单极步进电机不同,双极步进电机每相只有一个单绕组,没有抽头。 为了反转磁极,绕组中的电流需要反转,这意味着双极步进电机驱动通常更加复杂并且通常需要H桥排列。 由于没有公共端,每相有两个引线,典型的两相电机会有四根引线。 尽管双极电机通常驱动更加复杂,但它们确实具有它们的优点,因为更好使用的绕组,双极电机比同重量的单极电机更强大。 这是因为单极步进电机在相同空间中有两倍的导线量,并且在任何一个时间只能使用其一半,这意味着单极电机仅有约50%的效率。

单极和双极步进电机有几种不同的绕组排列,如下所示。

winding_arrangements.jpg


Arduino电机扩展板

Arduino电机扩展板采用L298双全桥驱动器,允许驱动一个步进电机或两个直流电机。 使用该扩展板,可以单独控制速度和方向。 使用该扩展板可以将电机直接连接到Arduino开发板,而不需要使用Arduino时通常需要的面包板或任何其他的电路板。


使用的电机

这个项目我决定使用的电机是Cliff Electronics的单极双极、单极步进电机,这是一个五引线单极步进电机,但如果你忽略了公共引线,可以视为一个双极步进电机。

my_motor.JPG


由于这个电机需要一个12V电源,我不得不分开的扩展板和Arduino Uno开发板的电源线,以避免任何可能的损坏,如Arduino马达扩展板的网页上的建议。 因为电源线必须分开,我不能再使用12V电源直接插入Arduino,所以这也必须修改。 它必须分开,以便它可以为Arduino和Arduino电机扩展板上的6路螺丝端子供电。 为了做到这一点,我从插座切掉约四英寸,然后再使用相同长度的镀锡线,将这些焊接在一起连接到插头的电缆的其余部分。

psu.JPG

跳转到指定楼层
风筝
发表于: 2017-2-15 10:39:53 | 显示全部楼层

确定电机的线圈

我选择的电机的制造商数据手册实际上已经告诉我哪根电线是哪根,从数据手册中我知道蓝线和黄线形成一个线圈,粉红色线和橙色线形成另一个线圈,而红线是两个线圈的公共端。 我将一个线圈连接到电机扩展板上的通道A,另一个线圈连接到电机扩展板上的通道B,同时不连接公共端。 我可以忽略红线,因为这是两个线圈的抽头点。如果我将电机作为一个单极步进电机,我只会这样进行连接。

6_way_header.JPG


如果数据手册没有说明哪根线是属于哪个线圈,则很容易确定,使用万用表设置为欧姆。 线圈的一部分将显示电阻,线圈的抽头线将是整个电阻的一半,因此确保检查其他线,使得中心抽头不被混淆为终端。 如果存在零电阻,则表示这是两个单独的线圈。


驱动电机

因为我已经将电机按照需要的方式进行了连接,下一步是找到可以使用电机扩展板工作的代码,所以我有一个粗略的想法从哪里开始。我在Instructables Arduino Motor Shield教程中找到了一些代码,允许我旋转我的电机。 该段代码工作的很好,但我真正想做的是在所使用的框架中包括Stepper.h库,这个例子没有使用这个。 使用官方库是驱动电机最好的方式,所以我寻找另一个例子,然后我在一个Arduino论坛找到一个。 在该框架中,电机会在一个方向旋转360度,然后在相反方向旋转360度。

origonal_code.png


在这个框架中,我需要指定使用的电机每转的步数 - 但首先我必须确定这一点。 制造商的数据表规定了电机的5.625和11.25度增量,所以我用它来确定每转的步数 - 为此,我们需要将360除以角度。 由于这个电机也是齿轮传动,齿轮比为1:64,我们需要将转速乘以齿轮比。 像这样:

360 / 11.25×64 = 2048

360 / 5.625×64 = 4096


开始时,我在代码中使用了每转4098步,假设电机的角度为5.625度,但是当我这样做时,逆时针完成了两次完整的旋转,然后顺时针旋转了两周。 很明显这里我假设了错误的角度; 因为它做了两个旋转,因为5.625是11的一半,当在分子中使用它时将提供两倍大的结果,因此做两个完整的旋转。 我将每转的步数改为2048,这时电机顺时针旋转一圈,然后逆时针旋转一圈。 我也把电机的速度从两个改为五个,当设置为两个时电机似乎移动的太慢。

modified_origonal_code.png


然后我看了一下Stepper库的源代码,看到这里没有任何代码来控制制动引脚。 该示例包括控制制动引脚的代码,将其定义为输出并将其设置为逻辑低电平的原因,是防止其浮动的预防措施。


我觉得我已经学到了很多关于步进电机的知识,这是非常有趣的,可以了解它们如何工作,以及各种绕组安排如何影响他们的操作。 我真的很高兴能够在未来的项目中使用到它们。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-6 07:55 , Processed in 0.047418 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表