次の図を見てください。
赤の波形がAコイル、青の波形がBコイルとします。波形が山の部分でコイルのA-1からA-2に電流が流れ、波形の谷の部分ではA-2からA-1に電流が流れるとします。Bコイルも同様です。この図を参考に、AコイルとBコイルの山谷が交互に来るよう、プログラムを書き換えてみました。
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
}
void loop() {
digitalWrite(3,LOW);
digitalWrite(2, HIGH);
delay(5);
digitalWrite(5,LOW);
digitalWrite(4, HIGH);
delay(5);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
delay(5);
digitalWrite(4, LOW);
digitalWrite(5,HIGH);
delay(5);
}
いかがですか。よりスムーズに回転するようになったと思います。
ただ、このプログラムではモーターが回転し続けるだけなので、筆者のように直動装置を駆動している場合は、移動するテーブルが端まで行きつくと強制的にモーターを停止させて、モーターについているノブを回してまた元の位置まで戻してやる必要があります。
これでは何度も実験したり、調整する場合などは大変です。そこでスイッチを1つ追加して、スイッチを押しているときは逆回転、またスイッチを押していないときには正回転するようにプログラムを改造してみます。スイッチはGPIOの6番ピンに付けることにします。スイッチが閉じるとGPIOの6番がグランドに落ちるように配線します。
ステッピングモーターの制御
PWMを使ったサーボモーターの制御
PWMでマブチモーターを制御する
困ったら読みたいマブチモーター制御のTips
マブチモーターのノイズ対策
マブチモーターをArduinoで制御するCopyright © ITmedia, Inc. All Rights Reserved.
組み込み開発の記事ランキング
コーナーリンク