2016年6月30日 星期四

使用easy driver驅動步進馬達


步進馬達的接線顏色可以辨別順序,以常見的6線式步進馬達為例,其引出線包含兩條棕色線為共同點;藍色線和黃色線為同一組線圈;白色線和紅色線為同一組線圈。


我們這個實驗是使用easy driver來驅動步進馬達,easy driver需要外接電源,它可以直接與步進馬達的4條線圈引線(A線圈和B線圈)連線,並且利用輸入時脈來精確的控制步進馬達的轉動。



l  基本實驗

圖片來源: www.elecrow.com



接成電路:
1. STEP 接到Arduino的PIN 9 
2. DIR 接到Arduino的PIN 8 (控制旋轉方向)




void setup() {               
  pinMode(8, OUTPUT);    
  pinMode(9, OUTPUT);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
}

void loop() {
  digitalWrite(9, HIGH);
  delay(3);         
  digitalWrite(9, LOW);
  delay(3);         
}



l  利用開關控制正反轉
圖片摘自 http://www.schmalzhaus.com/EasyDriver/Examples/EasyDriverExamples.html


1. 開關被按下和放開時,步進馬達的旋轉方向相反。

void setup() {               
  pinMode(8, OUTPUT);    
  pinMode(9, OUTPUT);
  pinMode(3,INPUT);
 
  digitalWrite(9, LOW);
}

void loop() {
 if (digitalRead(3)==LOW)
  { digitalWrite(8, HIGH);}
 else
  { digitalWrite(8, LOW);}

  digitalWrite(9, HIGH);
  delay(3);         
  digitalWrite(9, LOW);
  delay(3);      
  }



l  同時控制兩個步進馬達



void setup() {              
  pinMode(8, OUTPUT);   
  pinMode(9, OUTPUT);
  pinMode(6, OUTPUT);   
  pinMode(7, OUTPUT);
}

void loop()
{
  digitalWrite(8, HIGH);
  digitalWrite(6, HIGH);
  for (int i=0;i<1600;i++)
  {
    digitalWrite(9, HIGH);
    digitalWrite(7, HIGH);    
    delayMicroseconds(2000);
    digitalWrite(9, LOW);
    digitalWrite(7, LOW);   
    delayMicroseconds(2000);
  }
 
  digitalWrite(8, LOW);
  digitalWrite(6, LOW);
  for (int i=0;i<1600;i++)
  {
    digitalWrite(9, HIGH);
    digitalWrite(7, HIGH);    
    delayMicroseconds(2000);
    digitalWrite(9, LOW);
    digitalWrite(7, LOW);    
    delayMicroseconds(2000);
  }     
}








3 則留言:

  1. 請問妳可以讓兩個馬達不同轉速嗎

    回覆刪除
  2. 應該是說同時讓2個步進馬達走不同的步數吧...

    回覆刪除
  3. 請問這顆馬達的型號與價格

    回覆刪除

NUMPY的Array介紹與Matplotlib的繪圖功能

NumPy 的 Array 介紹與 Matplotlib 的繪圖功能   1. A rray 的基本運算 :   適用於科學和數學運算的 NumPy 套件中,有一個 Array 的資料結構。 Array 是一個非常類似 list 的序列型態。 但是 Arr...