マイクロビットとモータドライバでDCモータを動かしてみよう


マイクロビットで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までの値で指定できます。

MakeCodeでLEDの明るさを徐々に変えてみよう


追記

今回紹介しましたモータドライバはDCモータを二個接続できますが、四個のDCモータを接続したい場合は、Kitronik製のロボティクスボードがおすすめです。

micro:bit用 Robotics Board — スイッチサイエンス