次のリストは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); }
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秒時、間を空けてこれらの動作を繰り返します。
次の図はこれらの実験中の写真です。
今回はA4988というバイポーラ型ステッピングモーター用ドライバモジュールを使いました。1つのステッピングモーターあたりArduinoからの2本の信号線しか使いませんので、1つのArduinoで3〜4台のステッピングモーターを制御できそうですね。
実際にオープンソース系の3Dプリンタなどでは1つのArduinoと複数のA4988を組み合わせたシステムが多く存在します。次回はオープンソース系の3DプリンタやCNC制御ソフトを使って、ステッピングモーターを制御してみたいと思います。お楽しみに。(次回へ続く)
Copyright © ITmedia, Inc. All Rights Reserved.