课程目标
了解步进电机的原理和应用,学习步进电机的控制方法,了解步进电机的不同励磁方式。
步进电机:步进电机是将电脉冲信号转换成相应的角位移或线位移的电机。每输入一个脉冲信号,转子就旋转一个角度或向前移动一步。其输出角位移或线位移与输入脉冲数成正比,转速与脉冲频率成正比。简单来说,当步进驱动器接收到脉冲信号时,驱动步进电机按设定的方向旋转固定的角度。
步进电机原理:利用电磁铁原理,给各个线圈绕组通电,利用电磁原理产生磁力,带动中心转子铁芯旋转,从而将脉冲信号转换成直线位移或角位移。
步进电机简介:
步进电机每次能够旋转的最小角度称为步距角。每当步进电机接收到驱动信号时,步进电机就会朝某个方向旋转固定的角度。通过控制脉冲的数量,精确控制步进电机的角位移,通过控制脉冲的频率,控制电机旋转的速度和加速度,从而达到调速的目的。步进电机按相数分为单相、两相和多相三种。励磁方式分为全步励磁和半步励磁。全步励磁分为1相励磁方式和2相励磁方式;半步励磁方式又分为1相励磁方式和2相励磁方式。称为1-2相励磁方式。 **ULN2003电机驱动器: **由于Arduino开发板通用IO驱动能力有限,无法直接使用IO驱动部分外设,需要一些驱动电路来间接控制大功率设备。 ULN2003是大电流驱动阵列,多用于微控制器、智能电表、PLC、数字输出卡等控制电路。可直接驱动继电器等负载。
电路结构
所需材料:
ArduinoUNO*1
28BYJ-48步进电机*1
ULN2003电机驱动模块*1
一些杜邦线
电路连接:
ULN2003驱动板上的IN1、IN2、IN3、IN4分别连接到UNO开发板的数字引脚2、3、4、5;驱动板电源输入+、-引脚分别连接UNO开发板的5V和GND。
编程
练习一:一相励磁方式****控制步进电机正转90再反转90
一相励磁控制方法及特点:每一时刻,步进电机只有一个线圈导通。每发送一个信号,步进电机即可旋转1.8。该方法精度好,功耗低,但输出扭矩最小,振动较大。
一相****励磁顺序表:
以图形方式:
代码方法:
/* 项目名称: 一相励磁控制步进电机正反转90 * 项目时间:2022.03.21 * 项目作者:MRX */void setup() { for (int i=2; i 6; i++) { pinMode(我,输出); }}void 顺时针(int num){ for (int count=0; count num; count++) { for (int i=2; i 6; i++) { digitalWrite(i, HIGH); }延迟(5); digitalWrite(i, 低); } }}void逆时针(int num){ for (int count=0; count num; count++) { for (int i=5; i 1; i--) { digitalWrite(i, HIGH); }延迟(5); digitalWrite(i, 低); } }}void 循环() { 顺时针(130);延迟(1000);逆时针(130); delay(1000);}练习二:两相励磁方法控制步进电机正转90再反转90****
两相励磁控制方法及特点: 在每一时刻,步进电机的两个线圈都导通。每发送一个信号,步进电机即可旋转1.8。这样,输出扭矩最大,振动小。是目前较为常用的控制方法。
两相励磁顺序表:
以图形方式:
代码方法:
/* 项目名称: 两相励磁控制步进电机正反转90 * 项目时间:2022.03.21 * 项目作者:MRX */void setup() { for (int i=2; i 6; i++) { pinMode(我,输出); }}void 顺时针(int num){ for (int count=0; count num; count++) { digitalWrite(2,HIGH);数字写入(3,低);数字写入(4,低);数字写入(5,高);延迟(5);数字写入(2,高);数字写入(3,高);数字写入(4,低);数字写入(5,低);延迟(5);数字写入(2,低);数字写入(3,高);数字写入(4,高);数字写入(5,低);延迟(5);数字写入(2,低);数字写入(3,低);数字写入(4,高);数字写入(5,高);延迟(5); }}void逆时针(int num){ for (int count=0; count num; count++) { digitalWrite(2,HIGH); }数字写入(5,低);数字写入(4,低);数字写入(3,高);延迟(5);数字写入(2,高);数字写入(5,高);数字写入(4,低);数字写入(3,低);延迟(5);数字写入(2,低);数字写入(5,高);数字写入(4,高);数字写入(3,低);延迟(5);数字写入(2,低);数字写入(5,低);数字写入(4,高);数字写入(3,高);延迟(5); }}void 循环() { 顺时针(130);延迟(1000);逆时针(130);延迟(1000);}练习3:一相和两相励磁模式控制步骤输入电机为****
一、两相励磁控制方法及特点:是一相和两相交替导通的方法。每发送一个信号,步进电机即可旋转0.9。该方法分辨率高、运行平稳。也是当今较为常用的控制方法。
两相励磁顺序表:
以图形方式:
代码方法:
/* 项目名称:1-2 相励磁控制步进电机正转* 项目时间:2022.03.21 * 项目作者:MRX */void setup() { for (int i=2; i 6; i++) { pinMode(i, OUTPUT) ); }}void S1(){ digitalWrite(2,高);数字写入(3,低);数字写入(4,低);数字写入(5,低);延迟(5);数字写入(2,高);数字写入(3,高);数字写入(4,低);数字写入(5,低);延迟(5);数字写入(2,低);数字写入(3,高);数字写入(4,低);数字写入(5,低);延迟(5);数字写入(2,低);数字写入(3,高);数字写入(4,高);数字写入(5,低);延迟(5);}无效S2(){digitalWrite(2,低);数字写入(3,低);数字写入(4,高);数字写入(5,低);延迟(5);数字写入(2,低);数字写入(3,低);数字写入(4,高);数字写入(5,高);延迟(5);数字写入(2,低);数字写入(3,低);数字写入(4,低);数字写入(5,高);延迟(5);数字写入(2,高);数字写入(3,低);数字写入(4,低);数字写入(5,高);延迟(5);}无效循环(){ for(int i=1; i=130; i++){ S1(); } S2(); } 延迟(1000);}程序分析:
要求是旋转90。为什么程序的循环次数是130次?这是根据我们使用的步进电机的参数计算出来的:
1、步进电机电压5V,步距角5.625,减速比1:64。
2.计算A-B-C-D旋转一圈的角度5.625
3、ABCD旋转360度得电次数为360/0.7031=512。
4、则ABCD旋转90度得电次数为90/0.7031130。