![]()
17.モーター制御 (2021.11.12)
大分後回しにしてしまいましたが、いよいよDCモーター制御です。動力を扱うのはコンピューターの醍醐味で、私がRasPiを始めたのも正にこれが本命。自動運転につながる技術の一環として、まずはモーターを動かすところから始めたいと思います。参考書ではモータードライバに東芝製のTB62112FNGを使用していますが、同じドライバICを実装した基板(K-11219/秋月電子)を入手したので、これで実験をすることにしました。このICは2チャンネルのドライバを内蔵しているので、2個のDCモーターを制御できます。双方向回転に加えて速度変更もでき、2個のモーターで車輪を回し、1個のフリー車輪を加えて三輪車とすれば、RasPiで自在に走行させることができます。
今回は作業の簡略化のため、市販の二輪駆動(三輪)のベースキットを使います。駆動用モーターは左右に各1基あり、回転方向は右側が正転(CW)、左側が逆転(CCW)で前進します。直進させるためには、プログラムを組む際に左右逆回転させるように注意しなければなりません。配線でどうとでもなるのですが、同じモーターユニットをそのまま使用する方針で進めるためです。DCモーターのパルス変動はサーボモーター程シビアでは無いので、ソフトウェアPWMを利用することにします。RasPiからは全ての制御ピンを出力で扱います。写真は実験に使用する二輪駆動車です。センサー類等のモーター制御実験に無関係の部品(これらはキットとは無関係)を色々装備していますが、いずれ自動運転を実現するための準備です。今回のモーター実験が済んだら、新たな企画の「5.Arduino & PIC」で続ける予定です。
<RasPiとの接続>
_STBY: GPIO26(37ピン)
●右車輪(CH1)
PWMA: GPIO18(12ピン)
AIN1: GPIO12(34ピン)
BIN1: GPIO16(36ピン)
●左車輪(CH2)
PWMB: GPIO19(35ピン)
BIN1: GPIO20(38ピン)
BIN1: GPIO21(40ピン)
モーター制御はテキスト本を参考にし、基本を学習するためにシーケンスで簡単な動作実験をしてみます。停止→前進(加速→3秒最高速→減速)→停止→右回転(半速)→停止→左回転(半速)→停止→後退(加速→3秒最高速→減速)→停止(5秒)を実行します。減速と加速は短時間でスムーズに動くように調整しました。想定通り動けば、スタート位置に戻る計画です。回転速度は各モーターへのDutyで決まるので、加速・減速では0~100%の間で変化させています。モーターのバラツキによって直進が困難な場合は、左右のモーターのDutyを調整する必要があるかもしれません。まずは左右調整無しで試してみましょう。
走行プログラムサンプル
準備中・・・
![]()