WRX micro:bitを車両で使う その24 ステッピングモーターを制御する(ULN2003ドライバ)
前回はDCモーターをTB6612FNGドライバで制御してみましたが、今回はステッピングモーターを「ULN2003ドライバ」を使用して制御してみます。TB6612FNGはmicro:bit用にブレイクアウトボードに搭載された物を購入して使用しましたが、ULN2003は特にmicro:bit用という物ではなく、arduino等でも使用出来る汎用のドライバボードを購入しています。
ステッピングモーターとサーボモーター
ステッピングモーターはパルス信号によって回転角度や回転速度を制御するモーターです。構造はとてもシンプルですが、高精度の位置決め運転が出来ます。ただしサーボモーターの様に現在位置をフィードバックしていないので、脱調が発生した場合は制御側での位置把握が難しくなります(ただし最近はフィードバック機能、脱調レスのステッピングモーターもあります)。
ステッピングモーターは「基本ステップ角度」として、0.72度(5相)または1.8度(2相)があり、パルス信号の制御方法(フルステップ、ハーフステップ等)で1パルスあたりの動作角度、またパルス信号の周波数で速度が決まります。ステップ角度で動作しているので厳密にはカクカクとした動きですが、特に中低速で高トルクが得られます。一方、サーボモーターはステッピングモーターよりも滑らかで高速域までトルクが安定していますが、コストが高くなります。
※上記は一般的なステッピングモーターとサーボモーターの場合です。
上記はオリエンタルモーター株式会社のサイトです。FA機器向けの製品なのでちょっと難しいですが。
購入したステッピングモーター
ArduinoやRaspberryPiでも使用出来る、工作用としては最も多く販売されているステッピングモーターです。様々なブランドから販売されていますが、ステッピングモーターは「28BYJ-48」、ドライバは「ULN2003」という制御チップを搭載したボードです。
28BYJ-48は2相で、ステップ角は5.265度になっています(秋月電子販売ページ)。360度/5.265度=64でモーターのコイル内部は64ステップで1回転ですが、モーター内部に1/64の減速ギヤも含まれているので、さらに64*64=4096ステップ(ハーフステップ)、4096/2=2048ステップ(フルステップ)で実際の出力軸が1回転します。※厳密には1/64ではなく、1/63.68395・・・らしいのですが。
単品セットや5個セット、価格も様々ですが今回は単品で約1,000円の物をAmazonで購入しました。単品セットで300円や5個セットでも2,000円以下という物もありますが、発送元が海外だったり5個あっても使用しないので少々高い気もしますがAmazon発送の物を購入しました。私が購入した物はちゃんと箱に入っていました。
配線
ステッピングモーターはDC5Vで動作します。従ってmicro:bitとは別に5V電源モジュールか、5V電源が使用出来るブレイクアウトボードが必要です。5V電源はドライバボードに接続します。ステッピングモーターは5線式でコネクターが付いているので、ドライバボードに刺すだけです。
micro:bitからはパルス出力線として4本をドライバボードに接続します。従ってmicro:bit本体のみでは接続は出来ず、やはりIOブレイクアウトボードが必要になります。ドライバボードには5V電源以外に「IN1~4」の入力端子があるので、micro:bit側も分かり易く連続した端子を使用すると良いと思います(今回は12~15番にしています)。※micro:bit本体のLEDと重複する端子を使用する場合は、プログラムでLEDを無効にします。
上記の写真ではブレッドボードで中継していますが、メス-メスのジャンパケーブルがあればもっと簡単な形になります。
プログラム
Microsot MakeCodeでは拡張機能の追加で「ULN2003」と検索すると幾つか出てきますが、それほど難しい制御ではないので、拡張機能は使用せずともステッピングモーターは簡単に回転させる事が出来ます。下記は異なる3つの方法でそれぞれAボタンで反時計回り、Bボタンで時計回りに回転する(モーター出力軸側から見て)プログラムです。またモーターの回転時はドライバボードにあるLEDが各パルス入力に伴ってパラパラと点灯します。
ウェーブドライブ(1相励磁)
最も簡単な制御方法で、4つのパルス出力を順番にON-OFFします。上記では1~8の順でONとする出力を〇で表していますが、実際には1~4を繰り返すだけです。ただしウェーブドライブは回転トルクが弱いので、制御方法としてはあまり使用されないと思います。
フルステップ(2相励磁)
2つのパルス出力を1組と見て1-2、2-3、3-4、4-1の順で同時にON-OFFします。ウェーブドライブと同様に実際には1~4の繰り返しですが、モーターに対して同時に2つの磁力が働くので回転トルクが増えています。
上記はgifアニメによるフルステップ時の様子です。分かり易い様に出力軸にクリップを挟んでいますが、減速ギヤが内蔵されている事もあり、micro:bitではこの程度の回転速度です。
※容量の都合上、短時間での繰り返しになっています。
ハーフステップ(1−2相励磁)
パルス出力をウェーブドライブとフルステップを交互に足した様な順でON-OFFします。ウェーブドライブとフルステップに比べて1~8までを繰り返すので、プログラム(時計回りと反時計回りの関数)が倍の長さになっています。また1ステップあたりの回転速度と回転角度は半分になりますが、細かな回転が出来るのでより高精度な位置決めが可能になります。
ハーフステップでは上記gifアニメの通り、回転速度は半分になります。
その他
マイクロステップ
ステッピングモーターの制御方法としては「マイクロステップ」もありますが、マイクロステップは電流も制御して、基本ステップ角度をさらに細かくします。ULN2003では利用出来ません。
micro:bitでの出力時間(周波数)とパルス数(回転角度)
先のプログラム内ではmicro:bitの各出力ON-OFF時間(周波数)を特に意識していません。本来ステッピングモーターはパルス発振器を使って、もっと高速(高周波)のパルス信号で制御します。micro:bitの出力端子では高速でのON-OFFに限界があります(ドライバボード側の入力にも限界はありそうですが)。疑似的に「wait」時間で回転速度の調整が可能ですが、1/64の減速ギヤが入っているので「wait」時間を調整しても正直あまり変化はなく、動作もカクカクとした回転になります。
また今回はボタンを押している間だけ回転させていますが、例えばボタンを1回押したら1回転とする場合は、micro:bitの各出力のON-OFF回数(ステップ数)を4096ステップ(ハーフステップ)や2048ステップ(フルステップ)となる様にします。「ステップ回数」という変数を作って、1ステップ毎に+1とし、4096あるいは2048になったら停止、という感じでしょうか。
このステッピングモーターを使って何か作成しようと考えましたが、回転速度が出ないので思い付きません。ただし出力軸を指で摘まんでいる程度では止められないくらいのトルクはあります。
micro:bit 新バージョン「2.0」について
2020年11月25日より、Micro:bit本体の新バージョン「2.0」が発売になっています。従ってこれまでの古いmicro:bitを使用した記事(~その24)と新しいmicro:bitでは記事内容に相違がある場合があります。ただしこれまでのプログラムは基本的には新しいmicro:bitでも動作し、古いmicro:bitも引き続き使用する事が可能です(ハード的に新たに追加された機能は、拡張ボード等が必要ですが)。
なお新しいmicro:bitについては実際に1つ購入し、micro:bit関連記事「その25」から扱っています。
2022年4月追記
2021年12月にmicro:bit本体のバージョンが「2.2」になるとのアナウンスがありましたが、「2.0」との機能上の違いは無いとされています。
「micro:bit」関連記事
以下は「micro:bit」タグの記事一覧です(投稿順)。現在の記事とこれ以降に投稿した記事も含みます。「その24」までの記事ではmicro:bit本体のバージョン「1.5」を使用しています。
クリックで開きます
- WRX micro:bitを車両で使う その1 micro:bitの購入
- WRX micro:bitを車両で使う その2 Microsot MakeCodeとスマホ用アプリ
- WRX micro:bitを車両で使う その3 micro:bitの仕様と購入したブレイクアウトボード
- WRX micro:bitを車両で使う その4 本体ファームウェアの更新とWebUSB
- WRX micro:bitを車両で使う その5 無線機能の利用
- WRX micro:bitを車両で使う その6 方位センサーの利用
- WRX micro:bitを車両で使う その7 加速度センサーの利用
- WRX micro:bitを車両で使う その8 micro:bitからSIドライブのモード切替
- WRX micro:bitを車両で使う その9 サーボモーターの利用(準備編)
- WRX micro:bitを車両で使う その10 サーボモーターの利用(動作編)
- WRX micro:bitを車両で使う その11 可動式雲台を作る(2軸編)
- WRX micro:bitを車両で使う その12 可動式雲台を作る(1軸編)
- WRX micro:bitを車両で使う その13 連続回転サーボモーターの利用
- WRX micro:bitを車両で使う その14 Bluetoothでスマホから操作(データ受信)を行う
- WRX micro:bitを車両で使う その15 LCDパネル(I2C LCD1602・2004)の利用
- WRX micro:bitを車両で使う その16 シリアル通信(RS232C)を行う
- WRX micro:bitを車両で使う その17 光センサーと温度センサーの利用
- WRX micro:bitを車両で使う その18 LEDのフォントとスクロールスピードを変える
- WRX micro:bitを車両で使う その19 ELM327の車両との通信を確認する
- WRX micro:bitを車両で使う その20 アスキーコード16進数から数値10進数への変換
- WRX micro:bitを車両で使う その21 車両からエンジン回転数を得る
- WRX micro:bitを車両で使う その22 7セグメントLEDの利用(TM1637ドライバ)
- WRX micro:bitを車両で使う その23 DCモーターを制御する(TB6612FNG・DRV8833)
- WRX micro:bitを車両で使う その24 ステッピングモーターを制御する(ULN2003ドライバ)
- WRX micro:bitを車両で使う その25 micro:bit バージョン2.0を購入(2021年12月 v2.2アナウンスあり)
- WRX micro:bitを車両で使う その26 バージョン2.0で追加されたMakeCodeブロック
- WRX micro:bitを車両で使う その27 バージョン2.0の初期状態と追加された機能
- WRX micro:bitを車両で使う その28 新バージョン(v2.0)のI2C通信
- WRX micro:bitを車両で使う その29 環境モニターを作る(気温・気圧・湿度編)
- WRX micro:bitを車両で使う その30 環境モニターを作る(二酸化炭素・有機化合物編)
- WRX micro:bitを車両で使う その31 環境モニターを作る(LCD表示・動作確認編)
- WRX micro:bitを車両で使う その32 環境モニターを作る(RTCモジュール追加編)
- WRX micro:bitを車両で使う その33 環境モニターを作る(ロギングモジュール追加編)
- WRX micro:bitを車両で使う その34 環境モニターを作る(ログデータ記録編)
- WRX micro:bitを車両で使う その35 車内のCO2濃度と換気について
- WRX micro:bitを車両で使う その36 新バージョン(v2.0)でのI2C通信の問題解決
- WRX micro:bitを車両で使う その37 Microsoft MakeCodeの新バージョン(v4)と新機能データロガー
- WRX micro:bitを車両で使う その38 mp3音声ファイルの再生(DFPlayer Mini)
- WRX micro:bitを車両で使う その39 車速パルス信号から速度を計算する
- WRX micro:bitを車両で使う その40 フルカラーLED(WS2812B)でメーターを作る
- WRX micro:bitを車両で使う その41 フルカラーLEDマトリックス(WS2812B)で時計を作る
- WRX micro:bitを車両で使う その42 フルカラーLEDマトリックス(WS2812B)でピクセルアートアニメーションを作る
「micro:bit+プラレール」も始めました。
その他
FA用PLCとELM327を使用した「OBD2」関連の記事は以下の記事から始まります。
注記
-
- このブログ内で書いている内容はあくまで私の利用する製品(アプリ含む)や機器での場合です。他メーカーの製品や機器をはじめ、同じメーカーの製品・機器であってもバージョン違い等の場合もあるので、記事内容の保証や責任を負う事は出来ません。
- 記事内で紹介している製品や、その他の類似製品を購入・利用する場合はそのメーカーや購入先で仕様等を確認し、自己判断と自己責任の下で利用して下さい。
- 記事内で公開しているmicro:bit用プログラムは自由に利用・改変して頂いて構いません。ただし不具合やバグもありますので、プログラムを利用した際の故障や事故等についての保証や責任を負う事は出来ません。自己判断と自己責任の下で利用して下さい。
- micro:bit製品やプログラミング、その他記事内容について個別の問合せや依頼を頂いても回答する事は出来ませんので、予め御了承下さい。
- BBC micro:bitは、micro:bit教育財団の登録商標です。その他のブランド名または製品名は各所有者の商標です。