マイクロビットでDCモータを動かしてみます。
DCモータの詳細に触れる前に今回使用するものを挙げておきます。
マイクロビット × 1
GeekServo 9G Motor-Red × 1
GeekServo 9G Motor-Red — スイッチサイエンス
micro:bit用小型モータドライバ × 1
micro:bit用小型モータドライバ — スイッチサイエンス
単三電池2本 スイッチ付き電池ボックス × 1
単三電池2本 スイッチ付き電池ボックス — スイッチサイエンス
ジャンパワイヤ(オス〜オス) × 2
単三電池 × 2
MakeCodeで270°サーボモータを動かしてみようでサーボモータを動かす時にマイクロビットに直接繋ぎましたが、DCモータをサーボモータのように動かす時はモータドライバを介して接続する必要があります。
モータドライバを自作するのは難しいので今回は、
Kitronik製のマイクロビット用のモータドライバを使用します。
micro:bit用小型モータドライバ — スイッチサイエンス
最初にDCモータの単純な動作から見ていきます。
DCモータは2つの配線に繋ぐことになっていまして、一つはプラス極でもう一つはマイナス極になります。
赤と黒の線がありますが、どちら一方にプラス極を繋いでも、もう一方がマイナス極になれば問題なく動作します。
今回のモータドライバにはDCモータにマイコンの制御ではない繋ぎ方を行う事ができますので、最初にDCモータが動作する事を確認します。
上の写真のようにモータドライバに電池ボックスを繋ぎ、電池ボックスに単三電池を入れます。
モータドライバの左側にあるREDの箇所に電池ボックスの赤いワイヤを繋ぎ、BLKの箇所に黒いワイヤを繋ぎます。
電池ボックスを繋いだ箇所のすぐ近くに − + − の表記がある箇所がありますので、ここにDCモータを繋いでみます。
DCモータの赤いワイヤを + に、黒いワイヤを − に繋ぎます。
電池ボックスにあるスイッチをONにすると、
上の動画のように時計回りで回り始めます。
電池ボックスのスイッチをOFFにして、
DCモータとモータドライバの繋ぎ方をDCモータの黒いワイヤを + に、赤いワイヤを − に繋ぎ変えてみて、電池ボックスのスイッチをONにすると、
半時計回りで回り始めます。
DCモータをモータドライバに繋いでみます。
MOTOR1の箇所のP12に赤いワイヤ、P8に黒いワイヤを繋ぎます。
P12はモータを右回り、P8は左回りに関与するGPIOピンになります。
上記内容を考慮して、マイクロビットのAボタンを押した時に右回り、Bボタンを押した時に左回りに回転させるコードを作成してみます。
from microbit import * while True: if button_a.is_pressed(): pin12.write_digital(1) pin8.write_digital(0) elif button_b.is_pressed(): pin12.write_digital(0) pin8.write_digital(1)
DCモータにHIGHを送信するとモータは回転し、LOWにするとモータは停止します。
上記コードをマイクロビットにフラッシングし、
電池ボックスのスイッチとモータドライバのスイッチをONにして、各ボタンを押してみると、
意図通りの動作になりました。
DCモータの回転速度を遅くしたい場合は、
pin12.write_digital(1)
の箇所を
pin12.write_analog(512)
のようにアナログ値(PWM)で指定すれば良いです。
アナログ値は 0 〜 1023までの値で指定できます。
追記
今回紹介しましたモータドライバはDCモータを二個接続できますが、四個のDCモータを接続したい場合は、Kitronik製のロボティクスボードがおすすめです。
micro:bit用 Robotics Board — スイッチサイエンス