实验现象:步进电机旋转。
理论学习:
28BYJ-48步进电机空载耗电在50mA以下,带64倍减速器,输出力矩比较大,可以驱动重负载,极适合开发板使用。注意:带有64倍减速器的步进电机,与不带减速器的步进电机相比,转速显得较慢,为方便观察,可在输出轴处粘上一片小纸板。其中红色线为VCC,其余4个为4个相位。
使用ULN2003达林顿驱动芯片驱动步进电机,板载4个LED,可以指示相位状态。
步进电机相位控制,如果选择相位A,单片机给驱动板BJ1引脚高电平,其他BJ2/BJ3/BJ4引脚低电平,达林顿管对应引脚输出电平会翻转,达林顿管输出低电平时候配合VCC,可以驱动A相位。
程序代码:
#include <Arduino.h>
#define A1 2 //引脚命名
#define B1 3
#define C1 4
#define D1 5
void setup()
{
pinMode(A1,OUTPUT); //设置引脚为输出引脚
pinMode(B1,OUTPUT);
pinMode(C1,OUTPUT);
pinMode(D1,OUTPUT);
}
void loop()
{
Phase_A(); //设置A相位
delay(10); //改变延时可改变旋转速度
Phase_B(); //设置B相位
delay(10);
Phase_C(); //设置C相位
delay(10);
Phase_D(); //设置D相位
delay(10);
}
void Phase_A()
{
digitalWrite(A1,HIGH); //A1引脚高电平
digitalWrite(B1,LOW);
digitalWrite(C1,LOW);
digitalWrite(D1,LOW);
}
void Phase_B()
{
digitalWrite(A1,LOW);
digitalWrite(B1,HIGH); //B1引脚高电平
digitalWrite(C1,LOW);
digitalWrite(D1,LOW);
}
void Phase_C()
{
digitalWrite(A1,LOW);
digitalWrite(B1,LOW);
digitalWrite(C1,HIGH); //C1引脚高电平
digitalWrite(D1,LOW);
}
void Phase_D()
{
digitalWrite(A1,LOW);
digitalWrite(B1,LOW);
digitalWrite(C1,LOW);
digitalWrite(D1,HIGH); //D1引脚高电平
}