連載
» 2016年09月09日 07時00分 公開

Arduinoで学ぶ基礎からのモーター制御:基礎からのマイコンモーター制御(10):マイコン1つで複数モーターを操る、制御モジュール「A4988」を学ぶ (4/4)

[今岡通博,MONOist]
前のページへ 1|2|3|4       

 次のリストはArduinoのプログラムです。

void setup() {
  pinMode(3,OUTPUT); 
  pinMode(4,OUTPUT);
}
void loop() {
  digitalWrite(4,HIGH); 
  for(int x = 0; x < 400; x++) {
    digitalWrite(3,HIGH); 
    delay(2); 
    digitalWrite(3,LOW); 
    delay(2); 
  }
  delay(1000); 
  
  digitalWrite(4,LOW); 
  for(int x = 0; x < 400; x++) {
    digitalWrite(3,HIGH);
    delay(2);
    digitalWrite(3,LOW);
    delay(2);
  }
  delay(1000);
}
List1

 setup関数内でGPIOの3番ピンと4番ピンを出力に設定、3番ピンをSTEP、4番ピンをDIR制御用に使います。

 loop関数内ではまず4番ピンをHIGHにします。これによりステッピングモーターの回転方向を決定します。次のforループで400回STEPに対してON/OFFを送ります。このときdelay関数でONを2ミリ秒、そのあとOFFを2ミリ秒の時間で波形を生成します。このdelayで設定する時間によりステッピングモーターの回転速度が決まります。

 筆者が使っているステッピングモーターは1回のステップで1.8度回転しますので、軸が一回転するのに200ステップを要します。1ステップを送るのにONの2ミリ秒とOFFの2ミリ秒の計4ミリ秒必要ですので、1回転するのに4ミリ秒×200ステップとなり、0.8秒となります。RPM(1分間の回転数)に換算すると75RPMということになります。

 Delayの時間を小さくすると回転数は増します。400回転ですからちょうど2回転します。ここで1秒間の時間を空けます。今度はDIRを0にしますので、先ほどとは逆回転となります。先ほどと同様に400回ステップを送ります。今度は逆に2回転します。そして1秒時、間を空けてこれらの動作を繰り返します。

 次の図はこれらの実験中の写真です。

photo

おわりに

 今回はA4988というバイポーラ型ステッピングモーター用ドライバモジュールを使いました。1つのステッピングモーターあたりArduinoからの2本の信号線しか使いませんので、1つのArduinoで3〜4台のステッピングモーターを制御できそうですね。

 実際にオープンソース系の3Dプリンタなどでは1つのArduinoと複数のA4988を組み合わせたシステムが多く存在します。次回はオープンソース系の3DプリンタやCNC制御ソフトを使って、ステッピングモーターを制御してみたいと思います。お楽しみに。

前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.