如何使用Arduino和Arduino控制步进电机

摘要

步进电机介于传统的DC电机和伺服电机之间。它们的优点是可以精确定位,可以一次向前或向后移动一步,但也可以连续旋转。

在本课程中,您将学习如何使用Arduino和Arduino来控制步进电机。与第15课中DC电机使用的L293D电机控制芯片相同。

成分

要构建本课中描述的项目,您将需要以下部分。

零件数量

5V步进电机1

L293D集成电路

一个

半尺寸面包板

一个

Arduino Uno R3

一个

跳线束

一个

电路板布局

步进电机有五条引线,这次我们用L293D的两半。这意味着面包板上有许多连接。

电机末端有一个5通插座。

我》

请注意,步进电机的红色引线没有连接到任何东西。

Arduino代码

下图使用了一个串行监视器。安装并运行草图后,打开串行监视器并输入many 步骤。尝试将其设置为大约500,这将导致电机旋转大约360度。输入-500,它会反方向返回。

Stepper库包含在较新的Arduino IDE发行版中-您可能需要升级。

下载:文件

复制代码

#包括

int in1Pin=12

int in2Pin=11

int in3Pin=10

int in 4 pin=9;

步进电机(512,in1Pin,in2Pin,in3Pin,in4 pin);

无效设置()

{

pinMode(in1Pin,输出);

pinMode(in2Pin,输出);

pinMode(in3Pin,输出);

pinMode(in4Pin,输出);

//这一行是给莱昂纳多的,它延迟了串行接口

//直到终端窗口打开

而(!连载);

serial . begin(9600);

motor . set speed(20);

}

无效循环()

{

if (Serial.available())

{

int steps=serial . parse int();

motor.step(步骤);

}

}

#包括

int in1Pin=12

int in2Pin=11

int in3Pin=10

int in 4 pin=9;

步进电机(512,in1Pin,in2Pin,in3Pin,in4 pin);

无效设置()

{

pinMode(in1Pin,输出);

pinMode(in2Pin,输出);

pinMode(in3Pin,输出);

pinMode(in4Pin,输出);

//这一行是给莱昂纳多的,它延迟了串行接口

//直到终端窗口打开

而(!连载);

serial . begin(9600);

motor . set speed(20);

}

无效循环()

{

if (Serial.available())

{

int steps=serial . parse int();

motor.step(步骤);

}

}

如你所料,有一个Arduino库支持步进电机。

在踏步机包括库,四个控制引脚in1 到in4 被定义了。

告诉ArduinoStepper哪些引脚连接到电机控制器的库,并使用以下命令:

下载:文件

复制代码

步进电机(768,in1Pin,in2Pin,in3Pin,in4 pin);步进电机(768,in1Pin,in2Pin,in3Pin,in4 pin);

第一个参数是步数电机完成一次旋转所需的时间。电机可以一次移动一步,以实现非常精确的定位。

然后启动串行通信,以便Arduino准备好接收来自串行监视器的命令。

最后,下面的命令设置我们希望步进电机移动的速度,然后我们告诉它旋转多少步。

下载:文件

复制代码

motor . set speed(10);motor . set speed(10);

循环功能很简单。它等待来自SerialMonitor的命令输入,然后使用parseint 将发送的数字文本转换成int。然后,它指示电机旋转步数。

步进电动机

步进电机使用齿形轮和电磁铁将轮微调到步骤曾经。

通过以正确的顺序激励线圈,电动机被驱动。步进电机360度旋转的步数,其实就是齿轮上的齿数。

我们正在使用的电机有48步,但电机还集成了减速齿轮箱:1: 16意味着它需要16 x 48=768步。

在本课程中,我们不不要使用公共红色连接。仅当使用不同类型的驱动电路时才提供这种连接,这不允许每个线圈中的电流反向。每个线圈都有一个中心连接,这意味着你可以在线圈的左侧或右侧通电,并获得反向电流的效果,而无需使用可以反向电流的电路。

如果用L293D有非常好的反向电流,就不需要这个公共连接了,我们可以给每个线圈全方向供电。

其他事情要做。

尝试更改命令来设置步进电机速度:

下载:文件

复制代码

motor . set speed(20);motor . set speed(20);

将草图上传到一个较低的值(如5),注意步进器旋转得更慢。

现在,通过将速度提高到20以上,尝试找到步进器的最大速度。确认一点后,你会发现电机根本不动。这是因为它可以跟不上要求它前进的脉冲流。

尝试断开步进器的橙色和粉色导线。它应该还会转,但是你我会注意到。它之所以弱,是因为它不不要让两个线圈都驱动电机。