GR-ADZUKIでステッピングモーターを動かす

スポンサーリンク

はじめに

がじぇるねGR-ADZUKIを使ってステッピングモーターを動かす方法を紹介します。
DCモーターとサーボモーターを動かし方はこちら

ハードの準備

以下を使用して動作確認を行いました。

  • GR-ADZUKI (0.9〜5.5V)
  • ステッピングモーター 28BYJ-48 (5V)
  • ULN2003ドライバボード (5〜12V)
  • リチウムイオンバッテリー (3.7V)

ステッピングモーターの電源は、当初GR-ADZUKIボードの電源と別系統にしようかと思っていましたが、モーター1つであればサーボモーター用電源端子からの供給で駆動できたので、単一の電源構成にしました。
電池はリチウムイオンバッテリーを使いましたが、乾電池を使用したり、モバイルバッテリーを使ってUSB端子から供給することもできます。
リチウムイオンバッテリーは3.7Vですが、GR-ADZUKIボードの昇圧回路により、サーボモーター用の電源供給用端子からは5Vが出るようになっています。
以下が回路図です。

電池からの供給の場合、電源端子付近にあるスライドスイッチをVATT側に、USB端子から電源供給したりプログラムの書き換えをする場合はUSB側に倒す必要がありますのでご注意ください。
もう一方のスライドスイッチはSketch側に倒しておきます。

プログラムの作成

GR-ADZUKIのプログラムは、IDE for GRを使用してC言語で記述します。

#include <Stepper.h>

#define MOTOR_1   (12)   // blue
#define MOTOR_2   (13)   // pink
#define MOTOR_3   (11)   // yellow
#define MOTOR_4   (10)   // orange

#define MOTOR_STEPS (2048)

// ライブラリが想定している配線が異なるので2番、3番を入れ替える
Stepper myStepper(MOTOR_STEPS, MOTOR_1, MOTOR_3, MOTOR_2, MOTOR_4);

void setup() {
  myStepper.setSpeed(10);
}

void loop() {
  myStepper.step(512);
  myStepper.step(-512);
  stopMotor();
  delay(5000);
}

void stopMotor() {
  digitalWrite(MOTOR_1, LOW);
  digitalWrite(MOTOR_2, LOW);
  digitalWrite(MOTOR_3, LOW);
  digitalWrite(MOTOR_4, LOW);
}

setup()関数内で回転スピードを設定し、loop()関数内に動作を記述します。
「90度右回し」→「90度左回し」→「5秒待つ」を繰り返すプログラムとしました。
このページにあるのと同様にステッピングモーター28BYJ-48を使う場合は、MOTOR_2とMOTOR_3を入れ替えることでモーターを意図どおり動かすことができました。
プログラムを書いたら、メニューの「ファイル」から「名前をつけて保存」または「保存」で保存します。

動作確認

GR-ADZUKIボード上にある2つのスライドスイッチの状態が、SketchおよびUSBになっていることを確認し、USBケーブルでパソコンとGR-ADZUKIをつなぎます。
IDE for GRの右矢印のボタン

を押すとコンパイル、書き込み、リセットが実行されます。
問題なければ、今度はGR-ADZUKIのスイッチをUSB→BATTに切り替え、バッテリーをつなぎます。下の動画のように動作すれば成功です。

GR-ADZUKIでステッピングモーターを動かす

参考ページ

タイトルとURLをコピーしました