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 東芝

前へ

人が侵入したらアクションを起こす その4 人の動きを映像化

次へ

Stepperライブラリでモータを動かす その2 複数個