モーターと言うと、ミニ四駆やラジコンを連想してしまいます。
ラジコンを考えますと、前輪はハンドル操作で右や左に向く、かつ、後輪は前や後ろへの推進力を生む…と。この時、前輪については、決められた角度へ向ける必要がありますので、サーボモーターの役割なのだろうと考えます。
では、後輪をどのように制御するかですが、正転逆転の制御が出来れば良いわけです。
これを簡単に実現してくれる電材「TA7291P」を扱ってみたいと思います。
TA7291P
後輪の正転逆転の制御に、東芝製のモータードライバを利用します。
さすが国内企業、安くて良い物を作ってますよね。
ただ、実際に配線しますと結構複雑です…。
…どこにTA7291Pあるの…? 状態です。(ブレッドボードに刺さってますよ)
このTA7291P(黒いプレートに足が10本)ですが、片側だけ印字されていて、
印字された側が見える状態で、左側から、
1.9番ピン(GND)と電池のマイナス
2.モーターの片側へ
3.使いません
4.電池のプラス
5.13番ピン(GPIO-27)
6.15番ピン(GPIO-22)
7.2番ピン(GPIO-5V電源)
8.電池のプラス(安全の為1k抵抗を入れてます)
9.使用しません
10.モーターの反対側へ
の順に回路を構築しましょう。
外部電源の利用
電池3本なら、4.5vなので、Raspberryの5v電源でイケそう…。
この発想は、地味に危険です。理論上は、電源としては使えるはずなのですが、モーターは回転の初動時に、想定以上の電力を要する事から、過電流がraspberryに流れてしまい、Raspberry本体が壊れる可能性を高めます。
その為、外部電源(電池等)の利用が一般的です。
稼働までの準備
プログラムを作成しましょう
vi t7291.py
import RPi.GPIO as GPIO
import sys
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
GPIO.output(27, GPIO.LOW) # 初期値:停止
GPIO.output(22, GPIO.LOW)
try:
while True:
GPIO.output(27, GPIO.HIGH) # 正転
GPIO.output(22, GPIO.LOW)
time.sleep(2)
GPIO.output(27, GPIO.LOW) # 逆転
GPIO.output(22, GPIO.HIGH)
time.sleep(2)
GPIO.output(27, GPIO.LOW) # 停止
GPIO.output(22, GPIO.LOW)
time.sleep(2)
except KeyboardInterrupt: # CTRL+Cで終了
pass
GPIO.cleanup()
プログラムの準備が終わったら、実行してみましょう
python t7291.py
モーターが正常に動作すれば完了です。
お疲れさまでした~
蛇足
ラジコンを実際に組み立てる事を想定しますと、操作画面をWEBでRaspberry内に用意して、スマホのデザリングでRaspberryを接続して、スマホからラジコン操作…が、理論上は可能と思います。
子供の工作、もしくは、大人の玩具や自己満足としては、これで十分とおもいますが、レース用に真剣な機能を構築したい場合、どうしても反応速度が遅れるので、少し難しい気がします。そのようなケースには、シングルボードコンピュータより、マイコンを選択すべきなのでしょうね…。