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);
}
版权声明:本文标题:Arduino和L298N控制步进电机 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1714209267a669908.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论