ロボットカーの車輪を動かしてみよう
1 モータードライバ8833について
2 PWMOutputDeviceとは?
3 実際にロボットカーを動かしてみよう!
4 ロボットカーの動きを確認しよう
5 ティーチングの基礎

ロボット講座の8回目です。前回までに、キャスターの組み立て、RaspberryPiと電源回路の接続、ホールセンサーの取り付け、タイヤ回りの組み立て、単3電池ボックス・充電式バッテリーの取り付け、モータドライブの取り付け・配線を行い、シャーシにそれぞれを固定してロボットカーを大体組み上げることができました。

今回の完成形は左のとおりです。超音波センサーや光センサーの接続が残っていますが、ほぼ完成に近づいたと言えるでしょう。今回は、モータを配線し、ロボットカーを動かしてみます。モータードライバー8833の仕組みやPWMによってロボットカーも動きを制御する方法について学びました。
1 モータードライバ8833について


ロボットカーの制御のために8833というモータードライバICを使用します。ブレッドボードへの取り付けやRaspberryPiとの配線は前回行っています。今回は、最初にその動作について学びました。仕組みが分かれば、プログラムの一つ一つが理解できるようになります。

8833ドライバにはAIN1・AIN2に信号(0または1)を入力することで、上の表のように左の回路内部のスイッチがON・OFFして、モータを正転・逆転・停止・ブレーキします。
2 PWMOutputDeviceとは?
Pythonのgpiozeroライブラリにはモーターを制御するために、PWMOutputDevice、Motor、PWMMotor、DualMotor、DualPWMMotorなどのクラスが用意されています。このうち、PWMOutputDeviceを使ってモーターをコントロールします。LED制御の時と同じように、デューティ比を変えることで、LEDの点灯制御のようにモーターの回転をコントロールし、前進、後退、右折、左折、さらにこれらの速さも変えることができます。


モータドライブのAO1~BO2はブレッドボード上の4連端子に接続されています。AO1・AO2で左モーターをコントロール、BO1・BO2で右モーターをコントロールします。モーターに乾電池をつないで、ロボットカーが前進する方向に回っていることを確認して、それぞれのプラス線(赤とは限らない)をAO1・BO1が接続されている端子につなぎます。

3・4 実際にロボットカーを動かしてみよう!・ロボットカーの動きを確認しよう
モータドライバーテストのPythonプログラムをダウンロードして実行してみます。このプログラムでは、キーボードのQ、W、E、A、S、Z、Xにそれぞれ前進、微速前進、後退、微速左折、微速右折、左回転、右回転となるようにデューティ比を設定して出力するようにしてあります。リターンキーで停止します。このプログラムを使って、実際にロボットカーを動かしてみました。


前進なのに左右に曲がってしまう場合は、ギアにグリスを塗ってみます。それでも曲がる場合は、曲がらないようにデューティ比を設定します。
全員ロボットカーを動かせるようになりました。配線はOKです。まだセンサーの取り付けが残っていますが、ロボットカーの制御にみんなたどり着けました。
5 ティーチングの基礎
概ね動作が良好になったら、ティーチングに挑戦しました。工場などで使われている産業用ロボット、例えば、組み立てに使われるスカラロボットをはじめ、搬送や塗装などのロボットは、あらかじめ、動き方や作業内容を学習させています。これをティーチングと呼びます。

ロボットカーの押しボタンスイッチを押したら、プログラムが動くようにして、キーボードの入力を不要にします。あとは、moveとsleepの繰り返し、moveのデューティー比を工夫し、左図のように思った通りの動きをさせます。
みんな夢中です。デューティ比を変更したり、moveを追加したり。なかなか思った通りには行かないようでしたが、カラーコーンをもらって、自宅でも挑戦してくるようです。