亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

双极步进电机库

组件和用品

Arduino UNO
× 1
Texas Instruments 双 H 桥电机驱动器 L293D
× 1

应用和在线服务

Arduino IDE

关于这个项目

以前,我为单极型步进电机提供了一个 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、方向、转数、旋转角度
无预览(仅限下载)。

示意图

该电路驱动和控制双极步进电机的转速、方向、旋转角度、转数

制造工艺

  1. 磁阻电机
  2. 步进电机
  3. 集成驱动器简化了步进电机设计
  4. 传感器遥测 2.0.1
  5. Raspoulette 原型
  6. 自主神经哨兵炮塔
  7. Swiper - 自动 Tinder/Bumble Swiper
  8. SmartWay
  9. 由串行对话控制的基于步进的旋转支架
  10. 伺服电机和步进电机之间的灰色地带
  11. 什么是直线电机?
  12. 什么是伺服电机?