以前、壊れたプリンタからとっておいたステッピングモータ(EM-483)があったので、今回、Pololu社製モータドライバを使いarduinoUNOで動かしてみた。図1に実態配線図を示す。(動画は、ボードへはUSBにて給電している。)
使用部品
1.バイポーラステッピングモータ(EM-483 データシート持たず、、、)
2.ArduinoUNO
3.電解コンデンサ(100μF)
4.ステッピングモータドライバ(Pololu A4988)
A4988について
右上より時計回り
VMOT:ステッピングモータ供給電源(8V-35V)
GND:ステッピングモータ供給電源GND
2A~1B:ステッピングモータ端子
VDD:ボード電源(3.3Vまたは5V)
GND:ボードGND
DIR:モータの回転方向(High・Low)
STEP:パルスを与えると回転する(Full stepに設定したとき200stepで一回転する)
SLEEP・RESET:短絡しておく
MS1~MS3:各PinのHigh・Low状態によって、stepサイズを変更できる。
MS1 | MS2 | MS3 | Microstep Resolution |
---|---|---|---|
Low | Low | Low | Full step |
High | Low | Low | Half step |
Low | High | Low | Quarter step |
High | High | Low | Eighth step |
High | High | High | Sixteenth step |
今回は、MS2のみHighなのでQuarter step。Full stepの4倍。つまり800stepで一回転する。
ENA:Enable端子。Low状態で動作する。
図1)Fritzingによる実態配線図
ソースリスト
int x;
void setup() {
pinMode(6,OUTPUT); // Enable → Arduinoの6番ピンへ
pinMode(5,OUTPUT); // Step → Arduinoの5番ピンへ
pinMode(4,OUTPUT); // Dir → Arduinoの4番ピンへ
digitalWrite(6,LOW); // Set Enable low → Low状態でEnable
}
void loop() {
digitalWrite(4,HIGH); // Set Dir High → 回転方向をセット
for(x = 0; x < 200; x++) // 括弧内を200回実行
{
digitalWrite(5,HIGH); // 5番ピンをHigh状態へ
delayMicroseconds(500); // 500ms待って
digitalWrite(5,LOW); // 5番ピンをLow状態へ
delayMicroseconds(500); // 500ms待って
}
delay(1000); // 1秒待つ
digitalWrite(4,Low); // Set Dir Low → 回転方向を反対方向へセット
for(x = 0; x < 200; x++) // 括弧内を200回実行
{
digitalWrite(5,HIGH); // 5番ピンをHigh状態へ
delayMicroseconds(500); // 500ms待って
digitalWrite(5,LOW); // 5番ピンをLow状態へ
delayMicroseconds(500); // 500ms待って
}
delay(1000); // 1秒待つ
}
delayやdelayMicrosecondsの値をいろいろ変えて試してみてください。
以下のサイトを参考にさせていただきました。
ソースはほとんど同じです。
参考1:pololu社サイト
参考2:Fritzing A4988 single stepper test