路之遥电子网

注册

 

发新话题 回复该主题

Arduino与A4988驱动42步进电机 [复制链接]

1#
实验目的:Arduino与A4988驱动42步进电机


材料如下:

Arduino uno *1
A4988            *1
42步进电机    *1
面包板            *1
9V外接电源    *1
导线               若干

step 1:接线

关于接线更详细的相关资料:http://fritzing.org/projects/a4988-single-stepper-test/

[p=null, 0, left]MS1 , MS2 , MS3 跳线说明:(例子里是低电平,悬空或接地线,使用全步进模式)[/p][p=null, 0, left]分别是全步进,1/2步进,1/4步进,1/8步进,1/16步进模式。[/p][p=null, 0, left]步进电机走一步是1.8度,一圈就是200步。例如使用1/16步进,则需要走3200步才等于一圈。[/p][p=null, 0, left]
[/p]
int x;  void setup()  {    Serial.begin(9600);  pinMode(5,OUTPUT); // Step    pinMode(4,OUTPUT); // Dir  }  void loop()  {    char ch = Serial.read();switch(ch){  case 'a': fwd();  break;  case 'b': bwd();  break;}}void fwd(){  digitalWrite(4,HIGH); // Set Dir high    for(x = 0; x < 3200; x++) // Loop 200 times      {      digitalWrite(100,HIGH); // Output high        delayMicroseconds(800); // Wait 1/2 a ms        digitalWrite(100,LOW); // Output low        delayMicroseconds(800); // Wait 1/2 a ms      } delay(1000); // pause one second  }void bwd(){digitalWrite(4,LOW); // Set Dir low    for(x = 0; x < 3200; x++) // Loop 2000 times      {        digitalWrite(5,HIGH); // Output high        delayMicroseconds(800); // Wait 1/2 a ms        digitalWrite(5,LOW); // Output low        delayMicroseconds(800); // Wait 1/2 a ms      }delay(1000); // pause one second  }  


[p=null, 0, left]ps后记学习:[/p]
[p=null, 0, left]*脚6(-en) 低电平为启动电机(enable),貌似也可以不接,试过一样能运行.但如果要控制电机的启动关闭还是要用上[/p][p=null, 0, left]*脚4(-dir) 用高低电平控制方向.[/p][p=null, 0, left]*脚5(-step) 用高低电平驱动电机转动.注意中间间隔等待的微秒值,如果太快会导致电机有声响不转动.[/p]
分享 转发
TOP
发新话题 回复该主题