admin 管理员组

文章数量: 1086019


2024年4月27日发(作者:量化交易指标公式源码)

Arduino和L298N控制步进电机

看了别人的程序,却不能让步进电机正常运转,经过查找原因,发现是接线问题,根

据两相四线步进电机的四拍工作方式,其各相通电顺序为:(A-AB-B-BA’-A’-

A’B’-B’-B’A)。接线方式别的资料都有,可以去找,我是分别接到8、9(一相),

10、11(另一相),这样程序需要进行适当修改。当然,我仅仅是为了测试步进电机好坏,

可以看到速度的变化。如果实际运行,还要完善程序。程序中(digitalWrite(Pin2, LOW);

digitalWrite(Pin3, HIGH);)定义为A;( digitalWrite(Pin0, LOW); digitalWrite(Pin1,

HIGH);)定义为B,A’和B’相反就可以。程序如下(程序修改于网上找到的程序):

int Pin0 = 8;

int Pin1 = 9;

int Pin2 = 10;

int Pin3 = 11;

int _step =0 ;

boolean dir = false;//正反转

int stepperSpeed = 1;//电机转速,1ms一步

void setup()

{

pinMode(Pin0, OUTPUT);

pinMode(Pin1, OUTPUT);

pinMode(Pin2, OUTPUT);

pinMode(Pin3, OUTPUT);

}

void loop()

{

switch(_step){

case 0:

stepperSpeed++;

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, HIGH);//32A

break;

case 1:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, HIGH);//10B

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, HIGH);

break;

case 2:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, HIGH);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

case 3:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, HIGH);

digitalWrite(Pin2, HIGH);

digitalWrite(Pin3, LOW);

break;

case 4:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, HIGH);

digitalWrite(Pin3, LOW);

break;

case 5:

digitalWrite(Pin0, HIGH);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, HIGH);

digitalWrite(Pin3, LOW);

break;

case 6:

digitalWrite(Pin0, HIGH);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

case 7:

digitalWrite(Pin0, HIGH);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, HIGH);

break;

default:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

}

if(dir){

_step++;

}else{

_step--;

}

if(_step>7){

_step=0;

}

if(_step<0){

_step=7;

}

delay(stepperSpeed);

}


本文标签: 程序 电机 接线 步进 方式