Arduinoでステップモーターを動かす!(28BYJ-48)

はてなブックマーク - Arduinoでステップモーターを動かす!(28BYJ-48)
LINEで送る
Pocket

今日の記事は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プリンターなど、たくさんの応用が作れそうです。

私も徐々に知識が蓄積できましたら、次のステップにより複雑なものを作ってみたいと思います。

はてなブックマーク - Arduinoでステップモーターを動かす!(28BYJ-48)
LINEで送る
Pocket

Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close