您当前的位置:首页 > 文章摘抄 > 正文

怎样控制步进电机快慢(怎样控制步进电机)

怎样控制步进电机快慢(怎样控制步进电机)

为什么要用步进电机?

步进电机是一种带有许多内齿的无刷DC电机,通过周围的铜线圈磁性锁定在适当的位置。与无刷电机不同,给步进电源供电的电机不旋转。相反,它锁定到给定输入指定的位置,并顺时针或逆时针转动一小步。

虽然这使得步进电机的驱动更加复杂,但它比无刷DC电机有一个主要优势:它们的角位置可以非常精确地指定。例如,如果您希望电机精确旋转270度,使用普通的DC无刷电机(没有某种形式的反馈)几乎是不可能的,但使用步进电机将会很容易。

步进电机需要多个步进脉冲才能到达你想要的位置。另外,步进电机的线圈一直通电,大大增加了保持力矩,但很难强制其旋转。这些优势解释了为什么步进电机通常用于许多应用,包括数控机床和CD/DVD驱动器。

步进电机分为两个阶段:单极和双极。单极电机包含一个连接所有线圈的公共电源,而双极电机有单独的线圈。

本文只介绍单极电机,因为双极电机需要以不同的方式驱动。

由Digikey提供(原理图)

单极性输入和步进

单极电机通常有五条输入线,两对线控制线圈,第五条线连接到为每个线圈提供的公共抽头。

尽管不同电机的线路颜色不同,但本文中使用的连接如下:

下表显示了如何驱动每个输入来旋转电机。向前移动(即从步骤1到2)使电机顺时针旋转,向后移动使电机逆时针旋转。

表1。电机的旋转状态

步进电机所需的电流可能远远超过微控制器的极限,这就是为什么微控制器绝对不能直接连接到电机。电机还可能产生反电动势,可能损坏I/O口,使用箝位二极管是绝对必要的。

然而,用四个分立晶体管驱动步进电机既浪费又麻烦,这就是为什么必须使用ULN2003步进驱动器IC的原因。这个IC包含七个达林顿晶体管,每个都有二极管保护,可以提供500mA,50V的输出(实际上超过了Arduino Uno可以处理的)。

编码步进电机

步进电机的编码步骤可以通过switch语句和一些I/O位来完成,但是有一个更简单的方法:使用内置的步进器库!

虽然Arduino是一个方便简单的平台,但它的库支持使它成为最好的平台之一。市面上的模块都是通过Arduino库兼容的。对于步进电机,我们可以通过使用步进器库轻松控制,无需对每一步都进行编码。

#包括

#定义步骤_PER_REV 513

//创建我们的步进电机对象

步进电机(STEPS_PER_REV,2,3,4,5);

void setup() {

motor . set speed(10);//电机转速为10转/分

}

无效循环()

{

motor.step(步数每转);//顺时针旋转一整圈

motor . step(STEPS _ PER _ REV/2);//顺时针走半圈

motor . step(-STEPS _ PER _ REV);//逆时针旋转一整圈

}

要使用步进电机库,我们必须首先包括步进电机库头:

#包括

下一步(可选但推荐)是定义电机旋转一整圈的步数。本教程使用的电机有32步,以1:16的比例与减速齿轮相连,所以一次旋转的步数是513。

#定义步骤_PER_REV 513

现在我们已经定义了步数,我们需要创建一个步进电机对象。这个对象被初始化为五个变量:每转的步数和连接到步进电机的四个引脚。

步进电机(STEPS_PER_REV,2,3,4,5);

在设置功能中,我们可以定义速度(单位为RPM)并希望电机旋转。对于本例,我们将RPM设置为10。

void setup() {

motor . set speed(10);//电机转速为10转/分

}

主循环包含转动电机所需的代码。正数表示电机前进的次数相等,负数表示电机反方向旋转。

本例中的三行代码展示了如何使用STEPS_PER_RPM使电机旋转一个已知的量。

马达.步进(步数每转);//顺时针旋转一整圈

马达。步骤(STEPS _ PER _ REV/2);//顺时针走半圈

马达。step(-STEPS _ PER _ REV);//逆时针旋转一整圈

标签:电机步骤线圈


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 魅族mx2配置(魅族mx2是双核还是四核)

下一篇: akg q350(AKG q350怎么样)



推荐阅读