ステッピングモータをArduinoで動かす①チュートリアル通りに動かす

2022/08/13

Arduino ULN2003A ステッピングモータ

t f B! P L

ステッピングモータをArduinoで動かします。

 目次:

今回の目的

ELEGOOのチュートリアル「ステッパーモーター」(英語版「Stepper Motor」)をチュートリアル通りに動かします。

※チュートリアルの文章(PDF日本語版含む)もスケッチもELEGOOのサイトから無料でダウンロードできました。

Download ⇒「Arduino Kits & ~」⇒「UNO R3 Starter Kits」⇒ 「ELEGOO UNO R3 The Most Complete Starter Kit」 からダウンロードリンクに辿り着けます。


使用する部材

1.ステッピングモータ

チュートリアルでは「ステッパーモーター」の表記、これは英語版の「Stepper Motor」そのままです。日本では「ステッピングモータ」の方が通りが良いので以降そのように呼称します。

ステッピングモータは入力したパルスに同期して動きます。パルスの数だけ角度が進み、そのパルスの入力速度で速度が決まるモータであることから「パルスモータ」とも呼ばれます。

角度・速度を制御する「サーボモータ」に似てるようにも感じますが、あちらは回転を検出してフィードバックかけて制御するのに対して、こちらはフィードバックが不要(オープンループ制御)です。フィードバックが無いため、負荷が大きすぎたりや周波数が高すぎると同期外れ(「脱調」)を起こす点は要注意です。

↓↓↓[参考]サーボモータの記事↓↓↓

「DCサーボモータをArduinoで動かす①とにかく動かす」

「DCサーボモータをArduinoで動かす②制御を探る」


今回使用するステッピングモータです。

(1)表

(2)裏
図1.ステッピングモータ(28BYJ-48)

モータ本体には「STEP MOTOR 28BYJ-48 5V DC」の表記。5本の配線はハウジングにまとめられております。

ネット上で集めた情報やチュートリアル、付属データシートから仕様は次の通り。

・回転子 PM(Permanent Magnet)型

・励磁方式 2相励磁ユニポーラ

・定格電圧 5VDC

・フェーズ 4

・ギア比 64:1(内蔵しているギアで減速している)

・ステップ角 5.625°(=360°/ギア比64)

・周波数 100Hz

・直流抵抗 50Ω±7%


。。。正直言ってよくわかりません。

ステッピングモータ全般の情報は見つかるのですが、今回使う28BYJ-48の構造がわからないことと、後述するスケッチとでどう動かしているのかが分かりません。

これ以上ネット情報を漁っていてもらちがあきません。まずはチュートリアル通りに動かしてみることにしましょう。


2.ステッピングモータドライバ

モータをArduinoで直接動かすには電流が足りませんので、ドライバICに繋いで動かします。

(1)表

(2)裏

図2.ステッピングモータドライバ(ULN2003A)


基板には「ULN2003APG」の刻印ある16ピンDIPパッケージのICがソケットに挿され、LEDと抵抗が各4個に、コンデンサが1個、ピンヘッダ(とジャンパ)、ポストが実装されております。

ULN2003Aは7ch入りダーリントントランジスタアレイであり、モジュールはその内4つのchを使用したバッファを構成しております。各ch出力それぞれにLED×1個と電流制限抵抗×1個を繋げており、IC出力が"L"レベルになると、対応するLEDが点灯する回路になっております。


3.電源モジュール

電源モジュールはDCモータを動かした際にも使ったものです。

↓↓↓電源モジュール↓↓↓

「ドライバIC L293DとDCモータ①チュートリアル通りに動かす」-「3.電源モジュール」


機材接続

家庭用電源100VからACアダプタを電源モジュールへ繋ぎます。

PCのUSBポートに繋いだArduinoと、電源モジュールのラインをドライバモジュールに繋ぎ、ドライバモジュールにステッピングモータのハウジングを挿します。


図3.機器接続


スケッチ

シリアルモニタ部分は省略します。


#include <Stepper.h>    // ライブラリ「Stepper」をインクルード

const int SPR = 2048;    // 変数「SPR」。モータのステップ数を設定

Stepper myStepper(SPR, 8, 10, 9, 11);    // ピン番号指定してmyStepperクラスのインスタンスを生成

void setup() {

  myStepper.setSpeed(15);    // スピード設定 15rpm

}

void loop() {

  myStepper.step(SPR);    // 1回転

  delay(500);    // 0.5秒待ち

  myStepper.step(-SPR);    // 逆1回転

  delay(500);    // 0.5秒待ち

}

動作は順逆の各1回転です。ライブラリ「Stepper」の関数に値を入力設定して動作させます。

変数「SPR」を使って1回転のステップ数を2048と設定しておりますが。。。これは4相×8ステップ(1-2相励磁)×64(ギア比)=2048ステップ/回転となるため?、のようです。ステッピングモータの赤線をGND固定。残り4本に順繰り(前後でオーバーラップあり。A→A&B→B→B&C→C→C&D→D→D&A→A→・・・。8ステップ/回転)で電流を流して、電磁石を動かします。この回転をギアで1/64に減速してモータ軸を回転させているのだとか。

チュートリアルの文面や図でおおよそのイメージは掴めるですが、良くも悪くもどうやってスケッチで動かしているのかいまいちわかりません。わからずに動かせてしまいます。


動作

動作はスケッチの通り。ゆっくりと、じりじりとした音と共にモータが回転します。これだけゆっくりであれば、DCモータの時のような羽根をつけるまでもなく視認できます。

あるいはモータを手にとれば、その振動から動作を実感できます。



図4.動作


所感

一応動かしましたが、ライブラリ頼りです。中身が分からずとも動かせることは便利ですが、このままでは理解が足りなさすぎます。いずれ追加で調べていきたいと思います。

このブログを検索

ブログ アーカイブ

自己紹介

にほんブログ村

QooQ