電子工作するのにSG-90などのサーボモーターはとても使いやすいですが、ある程度のトルク(回す力)が必要な場合に回らないことがあると思います。
また、360度ぐるぐる回したいようなケースでは、DCモーターやローテーションサーボモーターなどを使いますが、これらを正確に指定した角度にするためには、角度を検知する仕組みが必要になり、設計難易度が上がります。
こんなときに活躍するのがステッピングモーターです。
ステッピングモーターは指定した角度の回転を正確に実現でき、追加のセンサーも不要です。
安価なものでも結構トルクがあるので角度を指定して回したい場合に重宝します。
ステッピングモーターは電流消費が大きいため、ステッピングモーター用のドライバボードを経由して動かすことが一般的ですが、
obnizは各端子1Aという大電流を流せるため、ドライバボード無しで直接ステッピングモーターをつないで動かすことができます。
これは他のマイコンボードではできないので、obnizとステッピングモーターは良いコンビだと思います。
本記事の内容は以下の動画に収めていますので、ステッピングモーターが動く様子を動画で見たい方はご覧ください。
使用した部品
obnizに直接つないで動かす場合、5Vのステッピングモーターを選んでください。
項目 | 内容 |
---|---|
obniz board | obniz |
ステッピングモーター | 28BYJ-48 ULN2003ドライバーボード セット |
回路図
obniz公式サイトにある下図を参考にします。
使用したステッピングモーター 28BYJ-48は、common端子があるので、上図の右の接続にします。
データシートから配線の色を確認します。
これらの情報を元に、下図のように接続します。
プログラム
開発者コンソールのリポジトリに進み、新規作成を押してプログラムを作成します。
「左回り」「右回り」それぞれのボタンを押すと2048ステップ回り、ちょうど1回転になります。
<!-- HTML Example --> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script> <script src="https://unpkg.com/obniz@latest/obniz.js"></script> </head> <body> <div id="obniz-debug"></div> <div> <button id="right">左回り</button> <button id="left">右回り</button> </div> <script> var obniz = new Obniz("OBNIZ_ID_HERE"); obniz.onconnect = async function () { // Stepper Motor var motor = obniz.wired("StepperMotor", {a:0, aa:1, b:2, bb:3, common:11}); //var motor = obniz.wired("StepperMotor", {a:0, aa:1, b:2, bb:3}); motor.speed(100); //motor.speed(500); await motor.freeWait(); $("#left").click(async function() { await motor.stepWait(2048); await motor.freeWait(); }); $("#right").click(async function() { await motor.stepWait(-2048); await motor.freeWait(); }); }; </script> </body> </html>
OBNIZ_ID_HEREには、お使いのobniz IDを入れます。
obnizの電源を入れ(USBケーブルをつなぐ)、画面上部の実行ボタンを押して実行します。
motor.speedは100〜500で、うまく回りました。
もし、うまく動かない場合、特にブルブル音がするけれど少ししか回らない、一方向にしか回らないなどの場合は接続ミスが疑われます。
motor.speedは100(低速)にして、モーター配線の色と接続先の対応が間違っていないか、回路図の絵を参考にしながら確認してください。
28BYJ-48以外のモーターを使う場合は、お使いになるモーターのデータシートもご確認ください。
参考:ドライバボードULN2003を使う方法
ULN2003ドライバボード経由で動かすこともできます。
ULN2003とステッピングモーター28BYJ-48は、コネクタでつながるようになっているので、コネクタが入る向きで接続します。
ULN2003の電源端子には安定化電源などから電源供給します。
もしくは、下図のようにobnizから電源供給します。
ドライバボードを使う場合のobnizプログラムは以下です。(obnizからドライバボードの電源供給する場合の例です。)
<!-- HTML Example --> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script> <script src="https://unpkg.com/obniz@latest/obniz.js"></script> </head> <body> <div id="obniz-debug"></div> <div> <button id="right">左回り</button> <button id="left">右回り</button> </div> <script> var obniz = new Obniz("OBNIZ_ID_HERE"); obniz.onconnect = async function () { obniz.io6.output(true); obniz.io9.output(false); // Stepper Motor //var motor = obniz.wired("StepperMotor", {a:0, aa:1, b:2, bb:3, common:11}); var motor = obniz.wired("StepperMotor", {a:0, aa:2, b:1, bb:3}); motor.speed(100); //motor.speed(500); await motor.freeWait(); $("#left").click(async function() { await motor.stepWait(2048); await motor.freeWait(); }); $("#right").click(async function() { await motor.stepWait(-2048); await motor.freeWait(); }); }; </script> </body> </html>
motor.speedは直つなぎのときと同様に100〜500で、うまく回りました。
参考までにドライバボードを経由する方法を紹介しましたが、前述の通り、28BYJ-48を使う場合は直つなぎがおすすめです。
まとめ
obnizにステッピングモーターを直つなぎして動かす方法を紹介しました。
ドライバボードを経由して動かすこともできますが、obnizを使うなら28BYJ-48など5Vのステッピングモーターを直つなぎして使うのがおすすめです。
小さな工作を作る際、マイコンボードの他にステッピングモーター用のドライバボードがあると、場所を取るため小型化が難しくなりますが、obnizならステッピングモーターを直につないで動かせるので、小型化に向いています。
ステッピングモーターを動かすプログラムもかんたんなので、初心者にもおすすめです。
アイディア次第で、さまざまな電子工作に応用できると思います。
書籍紹介
obnizの使い方はもちろんのこと、センサーやモーターを使った電子工作やmicro:bitなど他の機器との接続方法も説明されていて、入門から応用まで幅広い知識が身につきます。
参考文献
- obniz/Parts Library/StepperMotor(https://obniz.com/ja/sdk/parts/StepperMotor/README.md)
- Stepper Motor. 28BYJ-48 Datasheet(https://datasheetspdf.com/pdf/1006817/Kiatronics/28BYJ-48/1)