电子说
课程目标
相关知识
步进电机: 步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。简单来说当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度。
步进电机原理: 利用电磁铁原理,各个线圈绕组通电,利用电生磁原理,产生磁力,带动中央转子铁芯转动从而将脉冲信号转换成线位移或角位移。
步进电机介绍:
**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(i, OUTPUT);
}
}
void clockwise(int num)
{
for (int count = 0; count < num; count++)
{
for (int i = 2; i < 6; i++)
{
digitalWrite(i, HIGH);
delay(5);
digitalWrite(i, LOW);
}
}
}
void anticlockwise(int num)
{
for (int count = 0; count < num; count++)
{
for (int i = 5; i > 1; i--)
{
digitalWrite(i, HIGH);
delay(5);
digitalWrite(i, LOW);
}
}
}
void loop() {
clockwise(130);
delay(1000);
anticlockwise(130);
delay(1000);
}
练习二:二相励磁方式控制步进电机正转90°再反转90°****
二相励磁控制方式及特点: 在每一个瞬间,步进电机有两个线圈导通,每送一个信号,步进电机能转1.8°。这种方式,其输出转矩最大,振动较小。是现在较常用的一种控制方式。
二相励磁顺序表:
图形化方式:
代码方式:
/* 项目名称:二相励磁控制步进电机正反转90°
* 项目时间:2022.03.21
* 项目作者:MRX
*/
void setup() {
for (int i = 2; i < 6; i++) {
pinMode(i, OUTPUT);
}
}
void clockwise(int num)
{
for (int count = 0; count < num; count++)
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
delay(5);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
delay(5);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
delay(5);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
delay(5);
}
}
void anticlockwise(int num)
{
for (int count = 0; count < num; count++)
{
digitalWrite(2,HIGH);
digitalWrite(5,LOW);
digitalWrite(4,LOW);
digitalWrite(3,HIGH);
delay(5);
digitalWrite(2,HIGH);
digitalWrite(5,HIGH);
digitalWrite(4,LOW);
digitalWrite(3,LOW);
delay(5);
digitalWrite(2,LOW);
digitalWrite(5,HIGH);
digitalWrite(4,HIGH);
digitalWrite(3,LOW);
delay(5);
digitalWrite(2,LOW);
digitalWrite(5,LOW);
digitalWrite(4,HIGH);
digitalWrite(3,HIGH);
delay(5);
}
}
void loop() {
clockwise(130);
delay(1000);
anticlockwise(130);
delay(1000);
}
练习三:一二相励磁方式控制步进电机正****
一二相励磁控制方式及特点: 为一相和二相交替导通的方式,每送一个信号,步进电机能转0.9°。这种方式,其分辨率高,运转平滑。也是现在较常用的一种控制方式。
二相励磁顺序表:
图形化方式:
代码方式:
/* 项目名称:1-2相励磁控制步进电机正转
* 项目时间:2022.03.21
* 项目作者:MRX
*/
void setup() {
for (int i = 2; i < 6; i++) {
pinMode(i, OUTPUT);
}
}
void S1()
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
delay(5);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
delay(5);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
delay(5);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
delay(5);
}
void S2()
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
delay(5);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
delay(5);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
delay(5);
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
delay(5);
}
void loop() {
for (int i = 1; i <= 130; i++)
{
S1();
S2();
}
delay(1000);
}
程序分析:
需求为旋转90°,在程序中循环次数为什么是130次呢?这是根据我们使用的步进电机参数计算而来的:
1、步进电机电压5V,步距角5.625,减速比1:64。
2、计算A-B-C-D通电一次转动的角度5.625X2X4/64=0.703125 (2是表示1相励磁方 式每步是2倍的步距角,4表示走了4步, 64指电机减速比)。
3、转动360度循环ABCD通电的次数360/0.7031=512。
4、那么转动90度循环ABCD通电的次数90/0.7031≈130。
全部0条评论
快来发表一下你的评论吧 !