もよいめも

不定期更新ものづくりブログ

【Arduino】Arduinoでステッピングモーターを回してみた

今回はステッピングモーターを入手したのでArduinoで制御してみようと思います。

モータードライバー

Arduino単体では制御できないのでモータードライバー↓をポチりました。

5個もいらないですがまあしょうがないです。
ちなみに制御できるステッピングモーターは2相4線の物オンリーなのでご注意ください。
また、今回使ったステッピングモーターは1ステップ1.8度で一回転200ステップのものを使いました。

つなぎ方

テスターでステッピングモーターの線を調べて内部でつながっている物同士を
モータードライバーのそれぞれ右左につなげます。
f:id:moyoi:20190519114446j:plain

そして以下の通りにAdruinoに接続します。
A-1B - D8
A-1A - D9
GND - GND
VCC - VIN
B-1B - D10
B-1A - D11

動かす

Arduino IDEには初めからステッピングモーターを制御するライブラリが入っているのでそれを使います
使うプログラムは以下↓の通りです。
f:id:moyoi:20190516082104p:plain


このプログラムをマイコンに書き込むと0.5 秒ごとにステッピングモーターが少し回転します。

このプログラムをもとに、必要な角度までステッピングモーターを回すプログラムを作りました。

#include <Stepper.h>//ライブラリをインクルード

Stepper stepper(200, 8, 9, 10, 11); //(モーターのステップ数、ピン1、ピン2、ピン3、ピン4)

void setup() {
}

void stepperMotor(int d, int s) {//関数を作成
  int k = map(d, -360, 360, -200, 200);
  if (k < 0) {
    for (k; k <= 0; k++) {
      stepper.step(-1);
      delay(s);
    }
  } else {
    for (k; k >= 0; k--) {
      stepper.step(1);
      delay(s);
    }
  }
}

void loop() {
  stepperMotor(360,10);//360度まで1ms秒ずつ1.8度動かす(何度回すか、何msごとに1ステップ動かすか)
  delay(1000);
  stepperMotor(-360,10);//-360度まで1ms秒ずつ-1.8度動かす(ちなみにスピードを2ms未満にすると回らないので注意)
  delay(1000);
}

動作の様子↓

Arduinoでステッピングモータを動かす
すごくうるさいです。もしかしたら何か間違っているのかも…
あとドライバーがかなり熱くなるのでヒートシンク等をつけたほうがいいかもしれませんね。

ステッピングモーターは何となく難しそうで手を付けていませんでしたが、実際にやってみると意外とすんなりできてしまいました。
何事も挑戦が大切ですね。