【树莓派入门】(八)| 树莓派 A4988 驱动42步进电机

hushuo
发布于 2020-12-31 13:50
浏览
0收藏

 在树莓派入门(三)里面我介绍了如何驱动步进电机,当时驱动的步进电机是那种比较简单精度不是那么高的电机,今天我们驱动的是比较复杂的步进电机。当然,这里我还是以arduino为例,但是会给出树莓派的代码

【树莓派入门】(八)| 树莓派 A4988 驱动42步进电机-鸿蒙开发者社区 这个画图软件叫(fritzing)只能进行绘图,不能进行仿真。

其中MS1 , MS2 , MS3 跳线说明:(例子里是低电平,悬空或接地线,使用全步进模式)分别是全步进,1/2步进,1/4步进,1/8步进,1/16步进模式。

步进电机走一步是1.8度,一圈就是200步。例如使用1/16步进,则需要走3200步才等于一圈。

上图中的那三根悬空的就是MS1,MS2,MS3。

【树莓派入门】(八)| 树莓派 A4988 驱动42步进电机-鸿蒙开发者社区下图是A4988的图,有的可能是绿色的,但是都无所谓。

【树莓派入门】(八)| 树莓派 A4988 驱动42步进电机-鸿蒙开发者社区下面我给出arduino的代码,看起来还是挺简单的,感兴趣的同学可以再去网上查查更多的资料。

int x;
 void setup()
{
  pinMode(6,OUTPUT); // Enable
  pinMode(5,OUTPUT); // Step
  pinMode(4,OUTPUT); // Dir
  digitalWrite(6,LOW); // Set Enable low
}
 

void loop()
{
  digitalWrite(4,HIGH); // Set Dir high
  
  for(x = 0; x < 200; x++) // Loop 200 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
  
  digitalWrite(4,LOW); // Set Dir low
  
  for(x = 0; x < 200; 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
}

接下来给出树莓派的代码

#include <stdio.h>
#include <wiringPi.h>

void init();
void loop();
int main()
{
  init();
  loop();
  
  return 0;
}
 
void init()
{
  wiringPiSetup();
  pinMode(6,OUTPUT); // Enable
  pinMode(5,OUTPUT); // Step
  pinMode(4,OUTPUT); // Dir
  digitalWrite(6,LOW); // Set Enable low
}
 
 
void loop()
{
  
  digitalWrite(4,HIGH); // Set Dir high
  
  for(x = 0; x < 200; x++) // Loop 200 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
  
  digitalWrite(4,LOW); // Set Dir low
  
  for(x = 0; x < 200; 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
}

树莓派的代码和arduino的代码很像吧,确实如此,值得注意的就是,树莓派的那几个引脚是我随便写的,你们实验的时候要注意看看你们用的是几号引脚,不要一股脑跟着我写了。

收藏
回复
举报
回复
    相关推荐