ラズパイとモータードライバを使って、モーターを回してみる。
モータードライバを使うのは初めてだ・・・と言っても、モーター制御が初めて、というわけじゃない。ロボットの時に使ったMaplesyrupは立派なモータードライバユニットだし、何よりもすでにトランジスタでモーターを回した経験がある。だから、「モータードライバ?いまさら・・・」といった感が、ないとは言えない。
とはいえ今回は、ラズパイではじめてモーターを回してみる。ちょっぴりドキドキだ。これまでLEDが限界だったもんね。もしこれでモーター回せたら、ラズパイのスキルがかなり上がったと実感できると思う。
手元には、モータードライバが2つある。TA7291SGという石と、TB66P15Gというやつ。

TA7291SG

TB66P15G
TA7291SGはDCモーター用の定番ICのよう。一方でTB66P15Gはまだ詳しく調べていないが、どうやらステッピングモーターと言う、今まで使ってきたものとはちょっと違うものを動かすものらしい。こっちは後日使うとして、今回はTA7291SGを使おう。
早速、TA7291SGのデータシートを手に入れる。こちらが秋月電子に載っているデータシート。
・・・どうやら、このドライバひとつでモーターをひとつ動かすことができるよう。これはSN754410NEのモーターふたつ制御可能であったのと比べると、ロースペックと言うことになる。パワーも大したことないらしい。ただ、754410と同様、逆回転はできるみたい。
さて、データシートとラズパイのピン配置を元に、配線する。参考までに、配線するときにメモったものも載せておく。



配線ができたら、次にPythonでプログラムを組む。Pythonのコードは以下。エディターnanoで出力した。
import RPi.GPIO as GPIO
from time import sleep
#GPIOのポートを設定
R_VREF=13
R_IN1=19
R_IN2=26
GPIO.setmode(GPIO.BCM)
GPIO.setup([R_VREF,R_IN1,R_IN2],GPIO.OUT)
#モーターを回す
#回転速度を指定
pwm_r = GPIO.PWM(R_VREF,50)
pwm_r.start(100)
try:
while True:
#モーターを停止する
GPIO.output(R_IN1,GPIO.LOW)
GPIO.output(R_IN2,GPIO.LOW)
sleep(3)
#時計回りにモーターを回す
GPIO.output(R_IN1,GPIO.HIGH)
GPIO.output(R_IN2,GPIO.LOW)
sleep(3)
except KeyboardInterrupt:
pass
GPIO.cleanup()
ターミナルのCATコマンドを使って出力したものは以下。

・・・やっぱり3秒休んで3秒回転のループなのね^^;。
では、いよいよ回してみよっか、モーター。
・・・うん、うまくいった。配線後1発でOKだった。さすがモータードライバ(ただし、撮影は6回目・・・)。トランジスタのようにややこしくない!
ところで、気づいたかも知れないが、今回はWindowsのコマンドプロンプトからSSHで接続した後、pyファイルを走らせている。SSHはリモート接続の一種だが、VNCにしてもSSHにしても、こういうラズパイのモニターを使わずにラズパイを動かすことをヘッドレス、と言うようだ。モッサリした動きがなくて、最近はすっかりこっちばかり使っている。CUIばかりだが、否が応でもコマンドを覚えられそうだ。
ラズパイ、おもしろい。もっと使いこなしたい。ラズパイ編では、もう少しマイコン染みたこと(例えばセンサー関連の制御とか)をやろうと思っている。そうすれば、そのワザはロボットにも活かせそうだ。あと、パソコン染みたこと(例えばネットワーク関連)もいずれやる予定。こっちはサーバー系のことに活かせそうだ。どうぞ、お楽しみに。
でわでは~。