Stepperライブラリでモータを動かす その1 1個だけ
ステッピング・モータNEMA17を専用ドライバで動かしました。ここでは、Arduino IDEに含まれるStepperライブラリを利用します。モータはアマゾンやebayで入手しやすい28-BYJ48です。小型とはいえ駆動電流は100mAほど必要です。Arduino UNOから直接駆動はできないため、定番の電流増幅ドライバULN2003Aを使います。1回路当たり500mAの電流を流せます。
●ステッピング・モータ28-BYJ48の主なスペック
- 動作電圧;5V
- 駆動方法;ユニポーラ2相
- ステップ角;5.625°
内部の配線とケーブルの色
●接続
Arduino UNOとULN2003Aボードとの接続です。UARTの0、1番ピンを避けて、2から5番ピンを使いました。ULN2003ボードとは5ピンのコネクタを挿すだけです。モータの電源は、Arduinoからではなく別途エネループ4本(約5V)を使いました。
Arduino UNOのピン番号とモータのコイルの関係です。
●スケッチ
ライブラリにあるスケッチStepper One Revolutionのピンを変更します。ほかはデフォルトのままです。
#include <Stepper.h>
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
Stepper myStepper0(stepsPerRevolution, 2,3,4,5);
void setup() {
// set the speed at 60 rpm:
myStepper0.setSpeed(60);
// initialize the serial port:
Serial.begin(9600);
}
void loop() {
// step one revolution in one direction:
Serial.println("clockwise");
myStepper0.step(stepsPerRevolution);
delay(500);
// step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper0.step(-stepsPerRevolution);
delay(500);
}
信号を見ます。DIO0-DIO3がA相、DIO1-DIO3がB相になります。フルステップの2相励磁のタイミングです。
A相とB相のペアになるように信号を入れ替えました。
●もう一つのドライバ
ライブラリを28BYJで検索すると、いくつかのドライバが見つかります。
モータ名そのままのライブラリ名が付いたSTEPPER_28BYJ_48を導入します。サンプルのstepper_28YJ_exampleを読み込みます。
スケッチの隣にあるタブに接続図が載っています。といっても、具体的に何番が何ピンかは不明です。2から5番ピンを使いました。
スケッチです。A0もしくはA1ピンをGNDにつなぐと回転方向が変わります。
#include "Stepper_28BYJ_48.h"
// Circuit : https://github.com/thomasfredericks/Stepper_28BYJ_48/blob/master/examples/stepper_28BYJ_example/stepper_28BYJ_example.png
int switch_1_pin = A0;
int switch_2_pin = A1;
Stepper_28BYJ_48 stepper0(5,4,3,2);
void setup() {
pinMode(switch_1_pin,INPUT_PULLUP);
}
void loop() {
if ( digitalRead(switch_1_pin) == LOW ) {
stepper0.step(-2);
}
if ( digitalRead(switch_2_pin) == LOW ) {
stepper0.step(2);
}
}
タイミングを見ます。ハーフ・ステップの1-2相励磁のようです。
(※1)ステッピング・モータの参考URL 東芝