我們這個實驗是使用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);
}
}
|
請問妳可以讓兩個馬達不同轉速嗎
回覆刪除應該是說同時讓2個步進馬達走不同的步數吧...
回覆刪除請問這顆馬達的型號與價格
回覆刪除