Python
RaspberryPi
raspbian

RasPiでLineTraceを実装する①〜動かすための準備〜

「RasPiでLineTraceを実装する⓪」では,ssh接続およびLEDの点灯とモーター1個のPWM制御を試しました.
「RasPiでLineTraceを実装する①」以降ではとりあえずモーター2個を使って,Macのキーボード操作で前後左右に自由に曲がれるものを作成することが目標です.

準備

ダブルギヤボックス 左右独立4速タイプ
今回は4駆動のラジコンにするので2個必要です.

トラックタイヤ

モバイルバッテリー
軽量のものが良いでしょう.

タミヤ 楽しい工作シリーズ No.157 ユニバーサルプレート 2枚セット
これを1枚だけ使用します.

・電子部品など
→ブレッドボード, ジャンパーピン, TA7291P×2, 電池ボックス×2

・ストロー
簡易的なスペーサーとして使います.

RasPiハードウェアの基本

RasPiで電子回路を操作するには、「GPIO(GeneralPurposelnput/Output)」と呼ばれるインタフェースを利用します。RasPiの左上に付いているピン上の端子がGPIOです. ピンは40本搭載されています. ここから導線で電子回路に接続して、RasPiから操作したり、センサーの情報をRasPiで受け取るなどします.

それぞれのGPIOピンには役割があり, 適当に繋ぐことは出来ません. この画像が一番わかりやすくまとまっていました.

Pythonで書くとき, ピン番号の指定の仕方が2通りあります. 1つは物理番号といい, 画像でいうと「#Pin(BORAD)」と書いてある番号で, もう1つはBroadcomチップに準拠した形式で「#NAME(BCM)」と書いてある番号です. 今回は物理番号で指定します.

制御の知識

制御の知識はこちらを参考にしています.

PWM制御

モーターの速度をいじるには無段階に電圧を変更させる必要があります.
しかし, RasPiはアナログでの出力はできません. そこでPWM:PuIseWidthModulationという制御をします. PWMでは, 0Vと3.3Vを高速で切り替えながら, 擬似的に0Vと3.3V間の電圧を作り出す方式です. 電圧は0Vを出力している時間と3.3Vを出力している時間の割合で決まります. 例えば, 2.2Vと同様な電圧を得たい場合, 3.3Vの時間を2.0Vの時間を1の割合で出力するようにします.
スクリーンショット 2018-09-12 11.43.53.png

*回路的な注意として, PWM制御を行うにはRasPiの一部のピンでしか出来ません.

モーター制御用IC

モーターを制御する場合は、RasPiのGPIO端子に直接つないではいけません.
モーターを駆動させるには, 比較的大きな電流を流す必要があり, 直接GPIOに接続すると電流によりRasPiが故障したり, モーターの雑音で他のセンサーに影響を及ぼしたりと悪影響が出かねません.
そのためモーターを利用する場合は, 「モーター制御用IC」を使用します. モーター制御用ICは、電気を逆流しないようにしたり、雑音を軽減することが可能です.
今回は東芝の「TAA7291P」という素子を利用します. これには10個のピンがあり, 以下のように使用します.

スクリーンショット 2018-09-12 11.49.27.png

TA7291Pの動作

スクリーンショット 2018-09-12 11.51.43.png
基本的にはIN1・IN2のオン・オフで制御し, Vrefの電圧を変更することでモーターの回転数を変更します.
IN1もしくはIN2のどちらかを1にすれば回転(正転・逆転)し, どちらも1にすればブレーキがかかります.
自動車でいうと, 上から順にNeutral, Drive, Reverse, Brakeとなります.

旋回

ラジコンを前後させるのはただ単にDriveとReverseの状態を作り出せば良いので簡単です.
旋回は左右のタイヤの回転に違いを生むことで実現させます.
右旋回であれば右のタイヤは逆転, 左のタイヤは正転させれば良いでしょう.
左旋回であれば右のタイヤは正転, 左のタイヤは逆転させれば良いでしょう.

それでは次回「RasPiでLineTraceを実装する②」では実際にPythonでコードを書いていきましょう!