これまで、マイクロビットで「DCモーター」や「サーボモーター」の制御を行ってきました。
今回は「ステッピングモーター」を動かしてみたいと思います。
「ステッピングモーター」は、パルス信号を入力するたびに、一定の角度(ステップ)ずつ回転させることができるモーターです。パルスの数で回転角度を正確に制御できるため、高精度な位置決めが可能です。
今回は、安価で5V駆動が可能な、電子工作向きのこちらのステッピングモーターを使います。
この「28BYJ-48」は、2048回のパルス入力で1回転するようです。また、1秒間に最大500〜1000回のパルスを入力することができます。つまり、最大で15RPM(4秒で1回転)程度で回転させることができるようです。
なお、ステッピングモーターは電流消費が大きいため、マイクロビットからの出力信号を、直接ステッピングモーターにつなぐことはできません。そのため、マイクロビットの出力信号を一旦「ドライバIC」に入力し、その「ドライバIC」の出力をステッピングモーターに供給する必要があります。
「ドライバIC」は、入力信号の論理(HighまたはLow)そのままで、ドライバビリティが大きい(大電流を供給できる)信号を出力する回路です。今回購入したステッピングモーターには、ドライバIC「ULN2003」ボードもセットになっています。
まずは部品同士を接続します。
マイクロビットの小さい端子から信号を取り出すために、今回は「KEYESTUDIOモータードライバー拡張ボード for BBC micro:bit(KS4033)」を使っています。
マイクロビットを「KS4033」に差し込み、「KS4033」の「13」「14」「15」「16」端子を、「ULN2003」ボードの「IN1」「IN2」「IN3」「IN4」にそれぞれつなぎます。
「ULN2003」ボードのコネクタに「28BYJ-48」を接続します。
「単三型Ni-MH電池×4本」の「+」「-」を、「KS4033」の「VM」「G」端子、「ULN2003」ボードの「+」「-」端子にそれぞれ供給します。
プログラムは以下のとおりです。

A, Bボタンを同時に押している間、ステッピングモーターが回転します。また、ボタンを押すたびに回転方向が切り替わります。
Aボタン、Bボタンを押すことで、回転スピードを変更できます。スピードは「0〜20」の範囲で変更します。実際には、パルス信号を出力するたびに「21 – 設定スピード」の待ち時間を挿入しています。設定したスピードはマイクロビットのLEDマトリクスにグラフ表示しています。
動かしてみました。
いい感じに動いていますが、回転速度が非常に遅いです。
MakeCodeブロックエディタでは、出力できるパルスの速度が遅いようで、この程度の速度が限界のようです(他のプログラミング環境を使えば、同じマイクロビットでももう少し高速に回すことができそうですが)。
なお、私がマイクロビットの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
初心者向けから、比較的高度なものまで、さまざまな情報が記載されているだけでなく、子供向けの作例も多数掲載されていますので、「プログラミング教育」のための題材さがしなどにもおすすめです。

