🤖

ステッピングモーターの使い方

2023/01/25に公開

特徴

  • サーボと違って何周もできる
  • 正確な角度で止まれる

用途

  • 家電
  • 自動販売機
  • 改札
  • ATM
  • 生産ライン
  • ロボット
  • パチスロ機

部品

https://www.amazon.co.jp/dp/B07LBRNZB6

https://akizukidenshi.com/catalog/g/gP-13256/

https://akizukidenshi.com/catalog/g/gI-15239/

出力軸1回転のステップ数:2048(2相励磁)

この値を覚えておく。

名称と役割

名称 どこ? 何をする?
28BYJ-48 モーターの部分 任意の方向に回転する
ULN2003 ICの部分 モーターの制御を簡単にする

最初は上のICが基板になっていてモーターを繋げやすくなっているタイプを買った方がよさそう。個別に購入することもできるけどICの使い方を理解していない自分にはハードルが高い。

配線

モジュール側 Arduino Uno 側 別のところから
IN1 D11
IN2 D10
IN3 D9
IN4 D8
電源(+) 5 V
電源(-) GND

Arduino の基板から電気を供給すると Arduino がぶっこわれるらしい(未検証)。

ライブラリ

http://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=259

Arduino IDE に最初から入っている。

コード

#include <Stepper.h>

Stepper sm(2048, 8, 10, 9, 11);

void setup() {
  sm.setSpeed(17);
}

void loop() {
  sm.step((float)2048 * +90 / 360);
  sm.step((float)2048 * -45 / 360);
  delay(1000 * 0.2);
}

90度進んで45度下がるを繰り返す。一周が2048なので90度回転するには 2048 * 90 / 360 とする。マイナスなら反対に進む。ライブラリのおかげでとても簡単だった。

2048 の値はどこから来た?

出力軸1回転のステップ数:2048(2相励磁)

28BYJ-48 の仕様より。

回転スピードについて

setSpeed で調整できる。ELEGOO のマニュアルには 0〜17 と書いてあった。18にしても動いたがたまに空転してしまう。それより大きくすると空転が頻発した。逆に0でも動かなかった。Arduino のサンプルには 30 とあったがそれだと 28BYJ-48 は動かない。ステッピングモーターの種類ごとに適正値が異なるようだ。

動作原理

https://ja.wikipedia.org/wiki/ステッピングモーター

さっぱりわからないがたしかにArduinoとは4つの線で繋がっている。

Discussion