月刊I/O 2022年5月号『Raspberry Piで作る電子工作』に記事を掲載して頂きました!

【Arduino入門編㉕】ステッピングモーターを動かしその基礎を理解する!(28BYJ-48 & ULN2003)

Arduinoを使った電子工作で何か動くものを作ろうと考えると、モーターの制御方法を学ぶ必要があります。
そしてモーターと言ってもDCモーターやサーボモーター、ステッピングモーターなどいろいろとあります。

これまでArduino入門編記事としてサーボモーターやDCモーターの制御方法とその作例をご紹介してきました。
サーボモーターを使えば制御する信号のパルス幅を変えることにより回転する角度を指定することが出来ました。
ロボットアームの関節部分にサーボモーターを使いその動く角度を指定してアーム全体を自在に動かしたり出来ます。

【電子工作/Arduino】3Dプリントパーツで作るロボットアームに挑戦!その①

また、正確に各脚の関節部分を連動して動かし歩行する4足歩行ロボットなんかも作ってみました。

Arduinoで動かす4足歩行ロボット製作ノート!Arduino学習に便利なロボくんなので使って下さい!【STLデータ公開】

そしてDCモーターを使えば、モーターの正転・逆転・回転スピードを制御する事ができるのでこのようなロボットカーの制御も出来ます。

【電子工作】3Dプリントパーツ・Arduinoで動かすスマートカー(ロボットカー)製作ノート!

そして今回はArduinoを使ってステッピングモーターを制御して動かしてみたいと思います。
ステッピングモーターは複数のコイルにパルス(信号)を送り、一定の角度ごとに回転するモーターとなります。
このステッピングモーターの回転数はパルスにより制御する事が出来るため速度制御や正確な位置決めなどが出来るモーターとなります。

上記でご紹介したDCモーターでは、一般的に電流を流すとモーター軸が回転し印加する電圧の強弱により回転スピードを変え極性により正回転・逆回転を制御します。

【Arduino入門編㉒】ArduinoでDCモーターを制御する。【L298Nデュアルモータードライバ】

また、サーボモーターではPWM制御によるパルス幅を変えることによって動く角度を指定し制御しました。(0~180度や360度)

【Arduino入門編⑧】サーボモーターを動かしてみる。PWM制御についていの解説です!

ステッピングモーターは制御するパルス信号によって回転角度や回転速度を制御することが出来るモーターとなります。
そのため精度の高い位置決めなどをする事ができます。

ステッピングモーターは、大きくユニポーラ型(単極性)のものとバイポーラ型(双極性)のものに分類できます。
今回は電子工作用途でよく使われArduinoスターターキットなどにも付属しているユニポーラ型のステッピングモーターとなる『28BYJ-48』とモータードライバ『ULN2003A』という定番の組み合わせで、Arduinoを使ったステッピングモーターの制御方法やその動作原理を理解することを目的に話を進めていきたいと思います。

Arduinoには便利なライブラリが多数あります。
Arduino IDE標準で用意されているStepperライブラリなどを使えば比較的簡単にステッピングモーターを動かすことが出来ます。

今回はArduino入門編記事としてステッピングモーターの動作原理なども踏まえご紹介していきたいと思います。
ステッピングモーターの基本的な動作原理や励磁方式など雰囲気がつかめれば、今後電子工作で使う様々なタイプのステッピンモーターにも対応しやすくなるかと思います。

Arduinoでステッピングモーターを動かしてみる![28BYJ-48]

ステッピングモーターとは?

ステッピングモーターはその名のごとくモーターの一種となりますが、これまでご紹介してきたサーボモーターやDCモーターなどとは違い回転を正確に制御する事が出来るモーターとなります。

簡単にそれぞれのモーターの特徴をまとめてみます。

各モーターの特徴
  • DCモーター
    電力を加えることにより回転するモーターで、加える電圧の大きさでスピードを変え流れる電流の向き(極性)により正回転や逆回転が出来るモーター(電磁石による回転)
  • サーボモーター
    制御するパルス(PWM信号)により指定した角度(0~180度または360度)に回転
    (DCモーターで回転させフィードバック制御で指定角度まで動かす)
  •  ステッピングモーター
    制御する信号によりモーターを制限なく正確に回転させることが出来る

今回使う28BYJ-48ステッピングモーターは比較的簡単な回路構成で動かすことが出来るステッピングモーターとなるので電子工作での製作物やArduino学習用としては最適です!

そしてステッピングモーターにはいろんな種類のモーターがあります。
例えばこちらはバイポーラ型(名称の詳細は後述します)のステッピングモーターとなります。
トルクが高く、そして正確に回転角度や回転速度を制御出来ることから3DプリンタやCNC機械などで使われているステッピングモーターとなります。

3DプリンタではX軸・Y軸・Z軸・そしてエクストルーダー部分を動かすのに各1つずつ使われ、プリントヘッドを正確に動かすことにより造形を可能にしています。

ステッピングモーターの分類

ステッピングモーターには、PM型・VR型・HB型の3種類があります。
そしてステッピングモーター内部にあるコイルへの電流の流し方の違いによりユニポーラ型(単極性)のものとバイポーラ型(双極性)のものに分類出来ます。

ユニポーラ型(単極性)

1つの巻線に対して一定方向の電流しか流さないタイプのステッピングモーターをユニポーラ型と呼びます。
バイポーラ型のステッピングモーターに比べそれほどトルクは高くないですが、安価で入手する事が出来るのでArduinoを使った電子工作用途でよく使われるものとなります。

今回、28BYJ-48というユニポーラ型のステッピングモーターを使い話を進めていきます。
電子工作用途でよく使われる定番的なステッピングモーターとなり、Arduinoスターターキットにも付属しているものなので動作原理や制御方法を学ぶのには最適です。

5V駆動の小型なステッピングモーターとなります。
3Dプリンタなどに使われているバイポーラ型のものと比べるとこんな感じ。
かなり小さいですね!
バイポーラ型のものと比べるとそれほどトルクは高く出来ませんが、電子工作用途では便利に使える場面は多いと思います。

こちらは以前3Dプリントパーツで作った歯車時計となります。

ステッピングモーターは正確に回転数を制御出来ることからその駆動用モーターとして使いました。

秒針に連動した歯車を1分間に1回転させることにより、ギアの組み合わせで分針・時針を動かしています。
興味ある方はぜひ作ってみて下さい!

3Dプリンタでシンプルな歯車時計を作ってみた!【STLデータ公開】

バイポーラ型(双極性)

対してバイポーラ型のステッピングモーターは、1つの巻線に対して双方向へ電流を流すタイプとなります。
バイポーラ型のものはユニポーラ型と比べトルクを高く維持する事が出来るので3DプリンタやCNCなどにも使われていますが高価なものとなります。

今回はステッピングモーターの基礎として比較的簡単に制御出来るユニポーラ型のステッピングモーターを使いその動作原理や制御方法を理解することを目的に話を進めていきます。

28BYJ-48 ステッピングモーター

こちらが今回使う28BYJ-48という2相ユニポーラ型のステッピングモーターとなり、ArduinoやRaspberry Piなどを使った電子工作用途でよく使われるものとなります。

そしてステッピングモーターの駆動にはモータードライバが必要となってきます。
「ULN2003A」という制御チップを搭載したドライバボードとセット販売されていることが多くAmazonなどでも容易に入手する事ができます。
またArduinoスターターキットにも付属しているものとなり、動作原理や制御方法などを理解するのに最適です。

28BYJ-48ステッピングモーターに付いているコネクタをULN2003Aドライバボードに差し込むだけで結線ができるので比較的簡単に扱うことが出来ます。

28BYJ-48ステッピングモーターには内部にギアが複数枚内蔵されています。
そのギア比は1/64となっています。
つまり内部のローター(回転子)が64回転すると外部に出ている軸が1回転するということになります。(後述します)
ギアで減速しているので比較的ゆっくりとした動きをするモーターとなりますが、5V駆動としてはそこそこのトルクがあります。
動きは非常にゆっくりと動き、無負荷時の最高回転数は4秒で1回転(1分間で15回転)となっています。

項目内容
型名28BYJ-48
相数2相ユニポーラ(4相)
定格電圧5V
ギア比64:1(1/64)
ステップ角5.625度
出力軸1回転のステップ数2048(2相励磁)
周波数100Hz
結線5線式
※2相励磁で無負荷時の最高回転数は4秒で1回転

28BYJ-48ステッピングモーター 内部の配線

28BYJ-48ステッピングモーターが内部でどのように結線されているか簡単に見ておきましょう。

28BYJ-48ステッピングモーターには、ピンクオレンジの計5本のケーブルが付いています。
各ケーブルはコネクタ形状になっていてULN2003ドライバボードに挿し込むだけで接続出来るようになっています。
このセットで使えばドライバボードの入力端子(IN1~IN4)をArduinoのデジタルピンに接続すれば制御出来るようになります。

ステッピングモーター内部のコイル(電磁石)はこのように繋がっています。

参考 ユニポーラ ステッピングモーター 28BYJ-48秋月電子通商

接続図を見ると分かるように赤色のケーブルは共通となり各コイルに繋がっています。
つまり、この赤端子をVcc(5V)またはGNDとし各色(青・ピンク・オレンジ・黄)のHIGH/LOWでその部分のコイルをON/OFFします。

例えば次の項目でご紹介する1相励磁方式で動かす場合を考えてみると、赤端子をGNDにした場合、青→ピンク→黄→オレンジを順番にONする事により中心の軸を回転させることが出来るということになります。

ステッピングモーターの駆動にはモータードライバが必要!

ステッピングモーターは内部にあるコイルに電流を流すことによりその磁力で軸を回転させているモーターとなります。

そしてその駆動には比較的大きな電力が必要となってくるので、Arduinoなどのマイコンボードの出力だけでは電力不足となります。
DCモーターの制御でもそうでしたが、ステッピングモーターを動かすにはモータードライバと呼ばれるものが必要となってきます。
トランジスタなどによる電流増幅によりステッピングモーターの駆動に必要な電力を作り出すものとなります。

今回使っている28BYJ-48 ステッピングモーターには、それを制御&電力供給するためのULN2003Aと呼ばれるチップが搭載されたドライバボードが付属しているものが多く、これを使ってステッピングモーターを制御させます。
こちらも定番的なモータードライバとなり、28BYJ-48ステッピングモーターとセットで販売されていることが多いものとなります。

ステッピングモーターを動かすためのドライバは他にもいろいろとあります。
そしてArduinoには機能を拡張するシールドと呼ばれる拡張ボードがありますが、モータードライバシールドなんかを使ってもステッピングモーターを動かすことが出来ます。

ULN2003ドライバボード

こちらが28BYJ-48ステッピングモーターとセットで使う(付属している)ULN2003ドライバボードとなります。
各部の役割はこのようになっています。

IN1~IN4をArduinoのデジタルピンと接続しステッピングモーターの動きを制御します。
28BYJ-48ステッピングモーターとの接続は、モーター出力端子に挿すだけなので簡単です。
計5本のピンをステッピングモーターと接続します。
モーター出力端子の横には出力端子の状態を確認できるLEDが付いています。
そして外部電源からの供給を行う電源端子は左がGND、右がVccとなっておりステッピングモーターの駆動に必要な5Vを供給します。

モーターへの出力端子は入力側端子と対になっています。
IN1→青、IN2→ピンク、IN3→黄、IN4→オレンジという関係です。
右端の赤ケーブルは共通となりVcc(5V)となっています。

励磁方式

ステッピングモーターを制御する際に重要となる項目に励磁方式というものがあります。
ステッピングモーターの励磁方式には、1相励磁2相励磁1-2相励磁の3種類があります

こちらはステッピングモーターの仕組みを分かりやすくするために簡単な図で書いたものとなります。
中央に磁石があり、そのまわりをコイルが覆っています。
DCモーターの場合、電磁石(コイル)のまわりを磁石で覆っているので少し回転させる構造が異なっています。

ステッピングモーターが回転する仕組みは、まわりにあるコイルの1つをONにする事により中央の磁石がその方向に引っ張られ回転するというものとなります。

コイルを順番にONさせていくことにより中央の磁石(ローター)が回っていきます。
ONさせるコイルの順番を変えれば逆回転させる事もできます。

そしてステッピングモーターを動かす方法として3種類の励磁方式があります。
励磁という言葉が出てきますが、これはコイルに電流を流して磁化させるという意味です。
コイルに電流を流すと磁化し電磁石として作用するようになります。
これを利用してコイル1つずつ順番に励磁して回転させる方式を1相励磁と呼びます。

また2つのコイルを同時に磁化させ動かす方式が2相励磁と呼ばれるものとなります。
さらに1-2相励磁方式もあり、ステッピングモーターの制御方法にはこの3つの励磁方式があります。

1相励磁(4ステップが1つの動作)

まず1相励磁です。
先程出てきた図のように1つのコイルに電流を流し磁化(励磁)させ、それを順番に繰り返すことにより中央のローターを回転させる方式となります。
一番シンプルで分かりやすいステッピングモーターの制御方法となります。

表で表すとこのようになります。
4つのコイルを順番にONさせ励磁し回転させます。

STEPコイル①コイル②コイル③コイル④
1ON
2ON
3ON
4ON
1相励磁の特徴
  • 電流(パルス)を順番に与えて制御する方式
  • 制御が簡単
  • 安定性に欠ける
  • トルクは弱いが省電力

2相励磁(4ステップが1つの動作)

次に2相励磁です。
2相励磁の場合、2つのコイルを同時にONする事により回転させる方式となります。
1相励磁と比べ2つずつコイルをONする事により回転させているので、その分1相励磁と比べ回転するトルクは高くなり安定しますが、コイルを2つ同時にONさせているので消費電力が増えます。

STEPコイル①コイル②コイル③コイル④
1ONON
2ONON
3ONON
4ONON
2相励磁の特徴
  • 同時に2相ごとにパルスを与え励磁させ回転させる方式
  • 回転のトルクが高く動きが滑らか
  • 1相励磁と比べて動作が安定している
  • 消費電力が1相励磁と比べ増える

1-2相励磁(8ステップで1つの動作)

1相励磁と2相励磁を交互に繰り返す励磁方式が1-2相励磁となります。
コイルを1つ励磁→コイルを2つ励磁→コイルを1つ励磁・・・・これを繰り返します。
これにより1相励磁と2相励磁に比べ回転する角度を細かく制御する事ができるようになります。

STEPコイル①コイル②コイル③コイル④
1ON
2ONON
3ON
4ONON
5ON
6ONON
7ON
8ONON
1-2相励磁の特徴
  • 1相励磁・2相励磁を繰り返し回転させる方式
  • 1相励磁・2相励磁の動作角が半分となり、モーターの回転制御を細かく行うことが出来る

1相励磁で動かしてみる(ライブラリなし)

それでは実際にステッピングモーターを動かしてみたいと思います。
Arduinoにはステッピングモーターを動かすための『Stepperライブラリ』などがありますが、ステッピングモーターの仕組みを理解する場合ライブラリを使わない方が分かりやすいと思います。
まずはライブラリを使わないスケッチを使い1相励磁方式によりステッピングモーターを動かしてみたいと思います。

先述のように1相励磁では1つずつ順番にコイルを励磁させることにより動かす方式です。
ULN2003ドライバボードの入力側と出力側の端子はそれぞれ対応しています。
ステッピングモーターのプラグの色(青・ピンク・黄・オレンジ)がArduino側に接続する制御ピン(IN1~IN4)に対応しているのでこの順番にONしてあげれば回転させることが出来ます。

MEMO
赤プラグはCommon(共通)となっており、電源端子(5V)からモーター駆動の電力を供給しています!
STEPピンクオレンジ
1ON
2ON
3ON
4ON

Arduinoとの接続はこのようになります。
分かりやすいように、青・ピンク・黄・オレンジの順にArduinoのD2~D5へ順番に接続しました。

ステッピングモーターの駆動には大きな電力(流れる電流)が必要となってきます。
28BYJ-48は小型のステッピングモーターなので1-2個程度ならArduinoの5V出力端子からでも動きましたが、基本的にモーター駆動用の電源は外部電源を使うのが望ましくなります。
電池ボックスやこのようなブレッドボード用電源を使いうのがいいと思います。

今回安定化電源で5Vを作りULN2003ドライバボードの電源(5V/GND)に繋いで動かしました。
電子工作では安定化電源を持っていると非常に便利となります。

【電子工作】直流安定化電源『Wanptek DPS3010U』レビュー!電子工作用途では十分な性能で便利に使えます!

スケッチはデジタルピンの出力を順番にHIGH/LOWにさせていく簡単なものを作ってみました。

1相励磁方式なので順番にコイルをONさせ励磁させていくことにより動かします。
デジタルピンのHIGH/LOWを順番に繰り返すだけなので簡単ですね!(変数timの値を変えると回転スピードが変わります)

非常にゆっくりとした動きですが、1相励磁方式で動かすことが出来ました。

Arduinoのデジタルピンの使い方についてはこちらの記事も参考にして下さい!

【Arduino入門編②】複数のLEDを点滅(Lチカ)させてみる!デジタル出力の解説その②

これでステッピングモーターの動作原理の雰囲気は伝わったかと思います。
4つのパルスを順番にON/OFFさせる最も簡単な制御方法となりますが、回転トルクが弱いので実際のところ制御方法としてはあまり使用されないと思います。

2相励磁で動かしてみる(ライブラリなし)

接続は上記と同じで、デジタルピンのON/OFFにより2相励磁で動かしてみます。
2相励磁は2つのコイルをONにして動かす方式でした。

動作はこのようになります。

STEPピンクオレンジ
1ONON
2ONON
3ONON
4ONON
デジタルピンのON/OFFの組み合わせの違いだけなので簡単ですね!

1-2相励磁(ライブラリなし)

同様に1-2相励磁ではこのようになります。
1相励磁・2相励磁と違うのは1回の動作が8ステップとなっている点です。

STEPピンクオレンジ
1ON
2ONON
3ON
4ONON
5ON
6ONON
7ON
8ONON

ステップ角とステップ数について!

ステッピングモーターの動作原理や3つの励磁方式による制御方法について理解できたかと思います。
しかしデジタルピンのON/OFFだけでは正確に回転速度や回転角度などを調節するのが大変となります。

そこでArduinoにはステッピングモーターを制御するためのライブラリがいくつかあるので、それを使いステッピングモーターを上手く制御してみたいと思います。
Arduino IDE標準ライブラリとなる「Stepperライブラリ」を使った方がそのような制御は簡単となります。
その前にもう少しステッピングモーターの基礎知識としてステップ数などについて見ておきます。

ステッピングモーターは内部のコイルに電流を流し励磁する事により磁化された中央のローターが回転します。
先程の例のようにON/OFFのパルス信号で制御しています。
そして1パルスあたりの動作角度のことを「ステップ角(基準ステップ角)」と呼ばれています。
このステップ角が小さければより細かい動きをさせることが出来るということですね。

28BYJ-48ステッピングモーターはステップ角が5.625度となっています。
このステップ角で動作しているので厳密に言うとカクカクとした動きをしているということです。

ステッピングモーターを扱う上でこの「ステップ角」や「ステップ数」も重要となってきます。
今回使っている28BYJ-48ではデータシートを見ると、ステップ角:5.625°と書かれてます。(1-2相励磁)

参考 28BYJ-48 DatasheetDigiKey

次の項目でStepperライブラリを使い回転速度やステップ数を指定して動かしてみようと考えていますが、上記項目が分かれば簡単に動かすことは出来ます。

簡単にステップ数やステップ角についても見ておきます。
28BYJ-48には1相につき8本のクローポールがあります。(構造的な話なので詳しくは割愛します)
4相では8×4=32となり、1相励磁・2相励磁では回転軸(ローター)が32ヵ所移動することにより1回転することになります。
つまり32ステップで1回転ですね。
1-2相励磁ではその倍の64ステップとなります。

32ステップまたは64ステップで1回転(360°)するので、1ステップでは360°/32ステップ=11.25°(1相励磁・2相励磁の場合)
360°/64ステップ=5.625°(1-2相励磁の場合)ということになります。

1-2相励磁の方が1ステップで細かい角度での制御が出来るということになりますね。
上記データシートを見ると「Stride Angle:5.625°/64」と書かれた部分です。

そしてこれは内部のローターが回転する時の角度となるので、実際にはステッピングモーターの外部に出ている軸(出力軸)が動く角度が必要となってきます。

28BYJ-48のギア比は1/64となっておりデータシートにも書かれています。
つまり内部のローターが64回転すると外に出ている出力軸が1回転するという減速ギアが内部に入っているということです。
調べてみると内部のギア構成はこのようになっているようです。

そして内部のローターが1相励磁・2相励磁では32ステップで1回転するので出力軸を1回転させるには、

32×64(ギヤ比)=2048ステップ(フルステップ)

同様に1-2相励磁では

64ステップ×64(ギヤ比)=4096ステップ(ハーフステップ)

ということになります。

それでは1ステップで出力軸が動く角度を計算すると1相励磁・2相励磁では、

360°/2048ステップ=0.175°(1ステップ)

1−2相励磁では、

360°/4096ステップ=0.087°(1ステップ)

となります。

1相励磁・2相励磁では1ステップで出力軸を0.175°、1−2相励磁では1ステップで0.087°の角度での制御が出来るということになります。

少し話が難しくなってきましたが、ステッピングモーターを制御する際にこの「ステップ数」や「ステップ角」は非常に重要な項目となります
Arduino入門編記事としては雰囲気をつかめていればいいと思います。

28BYJ-48は電子工作などの用途でよく使われるステッピングモーターで、製品サイトなどにもステップ数やステップ角など必要な項目が書かれているので、あとはライブラリを使って動かせば簡単に制御出来ます。

以下は、秋月電子通商さんの28BYJ-48製品ページのリンクとなります。
28BYJ-48の主な仕様にもう1度目を通し、今度はライブラリを使って動かしてみましょう。

参考 ユニポーラ ステッピングモーター 28BYJ-48秋月電子通商

ライブラリを使って使動かしてみる(2相励磁)

ArduinoのデジタルピンのHIGH/LOWの組み合わせで、1相励磁・2相励磁・1−2相励磁方式でステッピングモーターを動かすことが出来ました。
その動作原理や制御方法の基本的な部分が理解できたかと思います。

それでは次にライブラリを使って動かしてみたいと思います。
Arduinoにはステッピングモーターを制御するための便利なライブラリがいくつかあります。
標準ライブラリとなる『Stepperライブラリ』を使って動かしてみたいと思います。

ここまで長々と書いてきましたが、ここからが本題と言ってもいいかもしれません。
Arduinoはライブラリを使用することによりあまり難しいことを考えなくても動作させることが出来るので便利となります。
しかしこれまでご紹介してきたステッピングモーターの動作原理等を理解しておけば他のステッピングモーターを制御する際などにも役立つと思います。

MEMO
Stepperライブラリを使用するとその制御方式は2相励磁となります。

接続は先程と同じ回路を使用します。
こちらがスケッチとなります。
時計回りに360°回転し、反時計回りに180°回転する動作を繰り返します。

スケッチ解説

Stepperライブラリで使う基本関数がこちらとなります。

  1. オブジェクトの生成
    Stepper オブジェクト名(1回転あたりのステップ数,ピン番号1,ピン番号2,ピン番号3,ピン番号4)
  2. 1分あたりの回転数を設定
    オブジェクト名.setSpeed(1分間の回転数rpm)
  3. モーターを回転させる
    オブジェクト名.step(回転させるステップ数)

①オブジェクトの生成

スケッチ内で使うモーター名とステッピングモーターに繋ぐArduinoのピン番号を指定します
28BYJ-48の2相励磁の場合の1回転あたりのステップ数は2048となります。
ここで注意したいのがライブラリの仕様なのかピン番号は励磁順ではないので注意が必要です。

MEMO
「Stepper_28BYJ_48」ライブラリを使用するとデジタルピンの設定は変更されていました。(回転速度は固定されます)

②1分あたりの回転数を設定

ステッピングモーターの1分あたりの回転速度(rpm)を指定します。
28BYJ-48は、無負荷時の最高回転数は4秒で1回転となるので1分あたり15回転あたりが最高となります。
回転速度はこのモーターの最大値となる15rpmで今回動かしています。

③モーターを回転させる

ステップ数を指定してステッピングモーターを回転させます。
負の値を入れると逆回転になります。
28BYJ-48では1回転(360度)のステップ数は2相励磁の場合2048となるので、2048を指定して1回転させ、-1024を指定して反時計回りに180°動かしています。

電流の制限
指定角度まで動かすと一旦全てのデジタルピンをLOWに落としモーターへの電流を止め発熱を防ぎます。

ライブラリを使うことにより、回転速度やステップ数の指定により比較的簡単にステッピングモーターを動かすことが出来ました。

冒頭でご紹介した歯車時計では秒針を1分間に1回転させる目的でこのステッピングモーターを使いましたが、このような簡単なスケッチで出来ます。

複数のステッピングモーターの制御は可能か?

Stepperライブラリを使うとモーターの回転速度とステップ数を指定することにより簡単にステッピングモーターを動かすことが出来ました。
それでは複数台のステッピングモーターを動かしたい場合はどうなるか?

Stepperライブラリは複数台のステッピングモーターを動かすことには対応していますが、同時に動かせるモーターは1台だけの仕様のようです。
試しにもう1台モーターを追加して動かしてみました。
デジタルピンD8~11を使っています。

複数台の制御には対応してますが、1度に動かせるモーターは1台だけのようです。
1台のモーターの回転が終わると次のモーターが動き出す・・・このような動作になるようですね。

ステッピングモーターを制御するためのライブラリはいろいろとあるようですが、28BYJ-48専用ライブラリとなる「Stepper_28BYJ_48」を使っても同様に同時に動くのは1台だけのようです。

「Unistep2」というライブラリを使うとこのように複数台のステッピングモーターを同時に動かすことが出来ました。
興味がある方は試してみて下さい!

シールドを使っても制御が出来る!

28BYJ-48ステッピングモーターはULN2003ドライバボードとセットで販売されていることが多く、接続方法もプラグに挿すだけなので便利に使えます。
そしてライブラリを使用することにより比較的簡単に動かすことも出来ました。

ドライバボードも様々なものが販売されています。
そしてArduinoには機能を拡張出来る便利な『シールド』と呼ばれる拡張ボードが多数あります。
モータードライバが搭載されたシールドを使うことによりステッピングモーターを動かすことも出来ます。

よく使われるものでモーターシールドがあります。
こちらは手元にあったL293D モータードライバシールドとなります。
4台までのDCモーターの制御や2台のステッピングモーター、2台のサーボモーターなど複数のモーターを組み合わせて使える便利なシールドとなります。

【Arduino】L293Dモータードライバシールドを使ってみる!ステッピングモーター/DCモーター/サーボモーター、複数のモーターを動かす事ができる便利なシールドです!

また以前DCモーターの制御で使ったL298Nもステッピングモーターの制御にも使えるようですね。

【Arduino入門編㉒】ArduinoでDCモーターを制御する。【L298Nデュアルモータードライバ】

今回ご紹介したステッピングモーターの基本的な制御方法が分かれば、このようなものを使い応用も出来るので電子工作として作れるものの幅が広がります。
Arduinoってほんと便利なマイコンボードです!

固定ブラケットを作ってみました

今回ご紹介してきた28BYJ-48ステッピングモーターとULN2003ドライバボードはセットで使われることが多く、電子工作用途やArduinoの学習用としてよく使われるステッピングモーターになります。(Arduinoスターターキットにも1つ付属しています)

モーターからのプラグをドライバボードに挿すだけで使えるので便利なんですが、テスト動作させる場合などボードや長い配線が邪魔になります。
先程のように複数台繋げてテストする場合など非常に面倒なことになります。

そんな事で28BYJ-48とドライバボードを一体でマウントできるブラケットを作ってみました。
テスト動作させるのに便利に使えるかと思います。

3Dプリントパーツのデータを公開しているので興味ある方は使ってみて下さい!

【電子工作】小型ステッピングモーター(28BYJ-48)とドライバボード(ULN2003)をマウントできるブラケットを作ってみました。テスト環境で便利に使えます!【STLデータ公開】

今回のポイント

今回のポイント
  • ステッピングモーターの駆動にはドライバ(チップまたはそれが搭載されたボード)が必要となる!
  • ステッピングモーターの制御方法には、1相励磁・2相励磁・1-2相励磁の3つの制御方法がある!
  • ステッピングモーターの動作には、ステップ数・ステップ角が重要となってくる

今回使ったアイテム

28BYJ-48 & ULN2003

ArduinoやRaspberry Piなどのマイコンボードを使った電子工作用途でよく使われる小型ステッピングモーター(28BYJ-48)とドライバボード(ULN2003)のセットです。
Arduinoスターターキットにも付属しているもので、ステッピングモーターの動作原理や基礎知識を学習するのに最適なモーターだと思います。

Arduino UNO

Arduinoはオープンソースのハードウェアなので正規品以外にも互換品が多数販売されています。
互換品でも正規品と比べて特に問題なく使用でき安価なためArduino学習用としていいと思います。

Elegoo製のArduinoボードは、互換ボードの中でも非常にクオリティーが高いのでおすすめです!

【ELEGOO Arduino Uno】Arduino完全互換ボードの中ではダントツのクオリティーですね!

Arduino スターターキット

これからArduino学習を進めていくにあたりArduino UNO(互換品)やブレッドボード、ジャンパーピンなどがセットになったスターターキットが販売されています。

私はGeekcreit製のスターターキットを使っていますが、ELEGOO製のものは国内Amazonなどでも購入可能で人気があるようです。(セット内容はほぼ同じです!)

そしてELEGOOのサイトからスターターキット用サンプルスケッチのダウンロードも可能です。(Geekcreitのキットでも使えます)

参考 チュートリアルダウンロードELEGOO

基本的にこれからこのセットで出来るものから紹介していこうと考えていますが、かなり多くのことが出来ます。
電子工作を始めるにはまずブレッドボードやジャンパーピン、メインとなるArduino UNOやサーボ、LEDなどの基本的なパーツがないと実際に動かすことが出来ませんが、個々にパーツを購入して回路を組んでとなるとかなりの手間がかかります。

スターターキットがあればArduinoの初歩的なことはかなりの数こなすことが出来るのでオススメです!
そこからスキルアップに伴い個別でセンサーなど必要なものを増やしていくのがいいと思います。

最後に!

今回はArduinoやRaspberry Piなどを使った電子工作用途でよく使われる28BYJ-48使い、ステッピングモーターの動作原理など基本的なことをご紹介しました。

記事内でご紹介した歯車時計を作っている時にステッピングモーターについていろいろと勉強していましたが、それから半年ほど経ちある程度理解できてきたのでArduino入門編記事としてまとめてみました。

しかしながらステッピングモーターに関してはこの1記事だけではご紹介しきれず、そして電子工作用途で3Dプリンタを導入しその制御などを見ているとまだまだ学ぶことは非常に多く・・・またいろいろとご紹介できればと思います。

コメントを残す