今日の記事は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用”]