Arduino基础入门篇26—步进电机
步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角),多用于雕刻机、3D打印机等需要精确控制的设备。本篇使用ULN2003驱动五线四相减速步进电机。
1. 步进电机介绍
-
步进电机每次能转动的最小角度叫做步距角。
-
每当步进电机接收到一个驱动信号后,步进电机将按照一定的方向转动一个固定的角度。
-
通过控制脉冲的个数来精确的控制步进电机的角位移量,通过控制脉冲的频率来控制电机转动的速度及加速度,从而达到调速的目的。
-
步进电机按照相数不同分为单相、双相、多相三种,励磁方式分为1相励磁方式和2相励磁方式。
-
本篇使用的步进电机型号为28BYJ-48,1相励磁方式驱动,通过给ABCD四相依次通电来实现转自不停转动。
2. ULN2003驱动介绍
由于Arduino开发板的通用IO驱动能力有限,有些外设不能直接使用IO进行驱动,需要借助一些驱动电路间接控制大功率器件。ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中,可直接驱动继电器等负载。
ULN2003内部结构3. 实验材料
-
Uno R3开发板
-
配套USB数据线
-
面包板连接线
-
ULN2003驱动板
-
步进电机
4. 实验步骤
1. 根据原理图搭建电路。
ULN2003驱动板上IN1、IN2、IN3、IN4分别连接UNO开发板的数字引脚2,3,4,5;驱动板电源输入+、-引脚分别连接UNO开发板的5V、GND。
驱动板实验原理图如下图所示:
实验原理图实物连接图如下图所示:
实物连接图2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。
1/*2 * Stepper_Motor
3 * 步进电机驱动,实现正反转
4 */
5void setup() {
6 // put your setup code here, to run once:
7 for (int i = 2; i < 6; i++) {
8 pinMode(i, OUTPUT);
9 }
10}
11
12void clockwise(int num)
13{
14 for (int count = 0; count < num; count++)
15 {
16 for (int i = 2; i < 6; i++)
17 {
18 digitalWrite(i, HIGH);
19 delay(3);
20 digitalWrite(i, LOW);
21 }
22 }
23}
24
25void anticlockwise(int num)
26{
27 for (int count = 0; count < num; count++)
28 {
29 for (int i = 5; i > 1; i--)
30 {
31 digitalWrite(i, HIGH);
32 delay(3);
33 digitalWrite(i, LOW);
34 }
35 }
36}
37
38void loop() {
39 // put your main code here, to run repeatedly:
40 clockwise(512);
41 delay(10);
42 anticlockwise(512);
43}
3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。
程序下载5. 实验现象
步进电机顺时针、逆时针交替旋转。
实验现象6. 实验分析
程序通过ABCD四相通电顺序实现步进电机正反转控制。步进电机旋转一周,程序中循环次数为什么是512次呢?这是根据我们使用的步进电机参数计算而来的:
-
步进电机电压5V,步距角5.625,减速比1:64
-
计算A-B-C-D通电一次转动的角度5.625X2X4/64=0.703125 (2是表示1相励磁方式每步是2倍的步距角,4表示走了4步, 64指电机减速比)
-
转动360度循环ABCD通电的次数360/0.7031=512
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com