双极步进电机库
组件和用品
| × | 1 | ||||
| × | 1 |
应用和在线服务
|
关于这个项目
以前,我为单极型步进电机提供了一个 Arduino 库。完美控制单极步进电机的速度、方向、转数、电机角度等所有参数。但它仅适用于单极型步进电机。众所周知,步进电机也可能是双极型的。但是这个库不能控制双极型步进电机。所以我决定开发另一个arduino库来控制双极型步进电机
所以,在这里我在 Arduino 中展示了所有双极型步进电机的双极步进电机库。该库有 9 种不同的功能,可用于根据要求旋转和控制电机。该库是根据工业运动控制设计的 要求。以下是该库的一些功能
1.控制任何双极步进电机
2.控制电机旋转方向
3. 精确控制电机转数,如1、2、3、4、.....
4. 以 95% 的准确度以 RPM 准确控制电机速度
5. 以 80-100% 的准确度将电机准确旋转至所需角度 0 – 360o
6.兼容所有arduino板
这里给出了所有库函数的简要说明。之后给出了一些示例,解释了如何使用该库来控制电机。还提供了一个视频,展示了这些示例的演示。最后建议电路采用L293D芯片——广泛用作直流电机和双极步进电机的H桥驱动器。
要在您的 arduino 草图中使用此库,只需复制 bi_polar_Stepper 文件夹进入arduino库文件夹的根目录,如C:\arduino-1.6.7\libraries
库函数说明:
1) bi_polar_Stepper(intpin1, int pin2, int pin3, int pin4) - 这将在带有步进电机驱动器引脚的 arduino 草图中创建一个 bi_polar_Stepper 实例。意味着必须指定用于驱动步进电机的arduino板引脚
2) set_step_per_rev(intsteps)- 此功能将设置步进电机完成 1 转所需的步数。意味着它将设置电机的步距角(步长分辨率)。必须输入电机步距角才能精确控制
3) set_RPM(int rpm) – 此功能将以RPM为单位设置电机速度,电机将以所选速度旋转,精度高达95%
4) rotate_CW() - 此功能将开始顺时针旋转电机。要使电机连续顺时针旋转,必须在连续循环中使用此功能
5) rotate_CCW() - 此功能将开始逆时针旋转电机。要使电机逆时针连续旋转,必须在连续循环中使用此功能
6) rotate(int dir)- 此功能将按照选定的方向旋转电机。如果方向为1,则电机将顺时针旋转,反之亦然
7) rotate_one_rev(intdir)- 此功能将使电机沿选定方向精确旋转 1 圈
8) rotate_n_rev(int dir, intnum)- 此功能将在选定的方向上旋转电机所需的转数
9) rotate_x_deg(int deg) – 此功能将旋转电机以 80 –100% 的角度精度在任一方向上从 0 – 360o 旋转所需的角度
示例:
1) 以 60 RPM 的速度向任意方向连续旋转电机
/*此程序将连续旋转双极步进电机
* 1.8 度步距角(200 步/转),转速为 60 RPM
* 由 Ashutosh Bhatt 于 16 年 12 月 12 日创建
*/
#include
#define steps 200 // 根据电机改变这个步骤
bi_polar_Stepper my_step_motor(8, 9, 10, 11);
int rpm =60;
无效设置()
{
// 把你的设置代码放在这里,运行一次:
Serial.begin(9600);
Serial.println("双极步进电机库测试程序");
my_step_motor.set_step_per_rev(steps);
my_step_motor.set_RPM(rpm);
Serial.println("电机顺时针旋转");
}
空循环()
{
my_step_motor.rotate_CW();
}
2) 电机连续顺时针旋转一圈,逆时针旋转一圈
/*此程序将旋转双极步进电机
* 1.8 度步距角(200 步/转)
* 顺时针旋转一圈(CW)和一圈
* 逆时针 (CCW) 以 30 RPM 持续
* 由 Ashutosh Bhatt 于 16 年 12 月 12 日创建
*/
#include
#define 步骤 200
bi_polar_Stepper my_step_motor(8, 9, 10, 11);
int rpm =30;
无效设置()
{
// 把你的设置代码放在这里,运行一次:
Serial.begin(9600);
Serial.println("Ashutosh Bhatt 创建的双极步进电机库测试程序");
my_step_motor.set_step_per_rev(steps);
my_step_motor.set_RPM(rpm);
}
空循环()
{
Serial.println("电机顺时针旋转");
my_step_motor.rotate_one_rev(1);
延迟(1000);
Serial.println("电机逆时针旋转");
my_step_motor.rotate_one_rev(0);
延迟(1000);
}
3) 以 100 RPM 顺时针方向旋转电机,并以 50 RPM 逆时针方向连续旋转
/*这个程序将首先旋转双极步进电机
* 1.8 度步距角(200 步/转)
* 顺时针(CW)以 100 RPM 转 2 圈,然后
* 逆时针 (CCW) 以 50 RPM 转 2 圈
*不断
* 由 Ashutosh Bhatt 于 16 年 12 月 12 日创建
*/
#include
#define 步骤 200
bi_polar_Stepper my_step_motor(2, 3, 4, 5);
输入我;
无效设置()
{
Serial.begin(9600);
Serial.println("Ashutosh Bhatt 创建的双极步进电机库测试程序");
my_step_motor.set_step_per_rev(steps);
}
空循环()
{
my_step_motor.set_RPM(100);
for(i=0;i<100;i++) my_step_motor.rotate(1);
延迟(2000);
my_step_motor.set_RPM(50);
for(i=0;i<100;i++) my_step_motor.rotate(0);
延迟(2000);
}
4) 电机以 20 RPM 顺时针旋转 4 圈,以 10 RPM 连续逆时针旋转 2 圈
/*这个程序将首先旋转双极步进电机
* 1.8 度步距角(200 步/转)
* 以 20 RPM 顺时针 (CW) 转 4 圈,然后
* 2 圈逆时针 (CCW) 以 10 RPM
*不断
* 由 Ashutosh Bhatt 于 16 年 12 月 12 日创建
*/
#include
#define 步骤 200
bi_polar_Stepper my_step_motor(2, 3, 4, 5);
输入我;
无效设置()
{
Serial.begin(9600);
Serial.println("Ashutosh Bhatt 创建的单极步进电机库测试程序");
my_step_motor.set_step_per_rev(steps);
}
空循环()
{
my_step_motor.set_RPM(20);
my_step_motor.rotate_n_rev(1, 4);
延迟(2000);
my_step_motor.set_RPM(10);
my_step_motor.rotate_n_rev(0, 2);
延迟(2000);
}
5) 以 30 RPM 的速度连续旋转电机 90o 和逆时针 90o
/*这个程序将旋转双极电机
* 以 1.8 度步距角(200 步/转)在 30 RPM 到
* 90 度 CW 和 90 度 CCW 连续
* 由 Ashutosh Bhatt 于 16 年 10 月 22 日创建
*/
#include
#define motor_steps 200
bi_polar_Stepper my_step_motor(8, 9, 10, 11);
int rpm =30;
无效设置()
{
// 把你的设置代码放在这里,运行一次:
Serial.begin(9600);
Serial.println("双极步进电机库测试程序");
my_step_motor.set_step_per_rev(motor_steps);
my_step_motor.set_RPM(rpm);
Serial.println("电机前后旋转90度");
}
空循环()
{
my_step_motor.rotate_x_deg(90);
延迟(2000);
my_step_motor.rotate_x_deg(270);
延迟(2000);
}
注意:-如果步进电机的额定电流和电压更高,那么我们可以使用 L298 芯片或一组 4 个独立的达林顿晶体管(如 TIP122、TIP142 等)代替 L293D 芯片来驱动步进电机。
给定的库和示例程序以及上述电路通过以下步进电机进行测试
1) 2 相双极电机,5V,100 RPM (MAX),200 步/转(1.8o 步距角)
2) 2 相双极电机,5V,60 RPM (MAX),200 步/转(1.8o 步距角)
代码
- 用于双极步进电机的 Arduino 库
用于双极步进电机的 Arduino 库 C/C++
该库以 95% 的准确度控制所有类型的双极步进电机的 RPM、方向、转数、旋转角度无预览(仅限下载)。
示意图
该电路驱动和控制双极步进电机的转速、方向、旋转角度、转数制造工艺