Arduinoでステップモーターを動かす!(28BYJ-48)
今日の記事はArduinoでステップモーターを動かす例をご紹介します。
Arduinoで3Dプリンターを作るものも多くて、その中でもArduinoでステップモーターを制御するのが普通になっています。
ステップモーターと言っても様々な種類があります。
今回使うのは、下記のステップモーターです。
目次
ステップモーター:28BYJ-48
5個セットで購入しましたので、プラスチックのケースに入っています。
安価の代わりに、粗悪な作りではなく、綺麗な状態です。
型番を記載しています。28BYJ-48
回転部とコネクタ
早速ハードウェアの接続をみてみましょう
このステップモーター(28BYJ-48)は購入時、ステップモーターのドライバーの付いていますので
まず、ステップモーターのコネクタをそのままステップモーターのドライバーに接続して利用することになります。
ステップモーターのドライバーは個別包装になっています。
接続
ステップモーターのドライバーIN1 –> ArduinoのD8
ステップモーターのドライバーIN2 –> ArduinoのD9
ステップモーターのドライバーIN3 –> ArduinoのD10
ステップモーターのドライバーIN4 –> ArduinoのD11
ステップモーターのドライバーVCC –> Arduinoの5V
ステップモーターのドライバーGnd –> ArduinoのGND
ステップモータとステップモータードライバーはそのままコネクタで接続します。
ソフトウェア
ソフトウェアはこちらとなります。
/* BYJ48 簡単なテストプログラム */ #define IN1 8 #define IN2 9 #define IN3 10 #define IN4 11 const int NBSTEPS = 4096; const int STEPTIME = 900; int Step = 0; boolean Clockwise = true; int arrayDefault[4] = {LOW, LOW, LOW, LOW}; int stepsMatrix[8][4] = { {LOW, LOW, LOW, HIGH}, {LOW, LOW, HIGH, HIGH}, {LOW, LOW, HIGH, LOW}, {LOW, HIGH, HIGH, LOW}, {LOW, HIGH, LOW, LOW}, {HIGH, HIGH, LOW, LOW}, {HIGH, LOW, LOW, LOW}, {HIGH, LOW, LOW, HIGH}, }; unsigned long lastTime; unsigned long time; void setup() { Serial.begin(9600); Serial.println("スタート..."); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); } void loop() { unsigned long currentMicros; int stepsLeft = NBSTEPS; time = 0; while (stepsLeft > 0) { currentMicros = micros(); if (currentMicros - lastTime >= STEPTIME) { stepper(); time += micros() - lastTime; lastTime = micros(); stepsLeft--; } } Serial.println(time); Serial.println("停止"); delay(1000); //回転方向切り替え Clockwise = !Clockwise; stepsLeft = NBSTEPS; } void writeStep(int outArray[4]) { for (int i = 0; i < 4; i++) { digitalWrite(IN1 + i, outArray[i]); } } void stepper() { if ((Step >= 0) && (Step < 8)) { writeStep(stepsMatrix[Step]); } else { writeStep(arrayDefault); } setDirection(); } void setDirection() { (Clockwise) ? (Step++) : (Step--); if (Step > 7) { Step = 0; } else if (Step < 0) { Step = 7; } }
動作確認
プログラムをArduinoにアップロード実行すると
ステップモーターが左右交替で回転します。
今回驚いたのは、このステップモーターが小型でとても静かなところです。
最初は、回転してもほとんど音がしませんから、「あれ?動かない」と勘違いするぐらいでした。笑。
これから、ステップモーターを複数組み合わせて組んでいけば
3Dプリンターなど、たくさんの応用が作れそうです。
私も徐々に知識が蓄積できましたら、次のステップにより複雑なものを作ってみたいと思います。
[amazonjs asin=”B06XCSCD8T” locale=”JP” title=”Longruner 5個セット arduino用 電圧DC 5V ステッピングモーター+28BYJ-48 ULN2003ドライバテストモジュールボード 電作キット LK67″]
[amazonjs asin=”B0044X2E5S” locale=”JP” title=”【永久保証付き】Arduino Uno”]
[amazonjs asin=”B06Y5TBNQX” locale=”JP” title=”ELEGOO UNO R3 ボード ATmega328P ATMEGA16U2 +USBケーブル Arduino用”]