在本文中,我们将学习如何使用操纵杆和Arduino 开发板控制步进电机。在这里,我们将使用Arduino UNO 板和PS2 操纵杆控制步进电机的速度和旋转方向。
我们使用带内部驱动器的单极5V DC 步进电机28BYJ-48。因此,不需要步进电机驱动。相反,我们将使用ULN2003A 达林顿双电机驱动器IC。 PS2操纵杆由两个10k欧姆电位器组成,一个用于X轴,另一个用于Y轴。它还包括一个按钮。但我们将仅使用X 轴来控制步进电机的运动。
所需组件
Arduino UNO开发板
28BYJ-48 5V直流步进电机
ULN2003芯片
PS2 摇杆
5V直流电源
什么是步进电机
步进电机是一种无刷直流电机,它将其整个圆周分成多个相等的步长。然后,只要根据扭矩和大小仔细选择电机的尺寸,就可以命令电机的位置移动并保持在其中一个步骤,而不需要任何位置传感器进行反馈(开环控制器)。速度。
步进电机28-BYJ48连接方法
步进电机28-BYJ48 是一款采用5 引线线圈布置的单极电机。四个线圈必须按特定顺序通电。红线连接到+5V,其余四根线将被拉到地以触发相应的线圈。我们使用Arduino 板按特定顺序为这些线圈通电,并使电机执行所需的步数。
步进电机需要驱动芯片才能运行。原因是控制器需要更高的电流才能运行,但步进电机本身无法从其I/O 引脚提供足够的电流来运行电机。因此,采用ULN2003作为驱动模块,对电流进行放大。
连接图
要使用操纵杆和Arduino 控制步进电机,请如下图所示组装电路。
步数
在将代码上传到Arduino板之前需要进行计步
在Arduino中,我们将按4步顺序操作电机,因此我们需要计算步幅角。
步幅角=5.625
Arduino 步骤序列=4
所需的步骤顺序=8
步距角=5.625*2=11.25
每转步数=360/步距角=360/11.25=每转32 步。
源代码/程序:
#include“Stepper.h”
#定义步骤32
//定义步进电机控制引脚
#定义IN1 7
#定义IN2 6
#定义IN3 5
#定义IN4 4
//初始化步进器库
步进器步进器(STEPS、IN4、IN2、IN3、IN1);
//操纵杆电位器输出连接到Arduino A0
#定义操纵杆A0
无效设置()
{
}
无效循环()
{
//从电位器读取模拟值
int val=AnalogRead(操纵杆);
//如果操纵杆在中间===》停止电机
如果((值》500)(值》523))
{
数字写入(IN1,低);
数字写入(IN2,低);
数字写入(IN3,低);
数字写入(IN4,低);
}
别的
{
//沿第一个方向移动电机
而(val 》=523)
{
//映射5 到500 rpm 之间的速度
int speed_=地图(val, 523, 1023, 5, 500);
//设置电机速度
步进器.setSpeed(speed_);
//移动电机(1步)
步进器.step(1);
val=AnalogRead(操纵杆);
}
//向另一个方向移动电机
同时(值