TAMIYAのロボット工作キットをラズパイで制御する!準備編

1.新ドライバ使用の回路を作る

(1) ロボット工作キット制御の準備

モータードライバNJM2070D2(ラズパイでリモコンタンク製作準備!モーター制御成功!)を使用したリモコン戦車が無事稼働しました。

そこで、調子に乗った60爺いは、今度は、こいつをラズパイで制御してみようと試みました。

TAMIYAのカム・プログラム・ロボットです。

合わせて、モータドライバを新たな TA7291P にして挑戦します。何故かといえば、単純に前回と同じモータドライバでは面白くないからです。

回路は、前回と同様ブレッドボード上に展開します。

今回も前回と同様に、ロボを組み立てる前に、ラズパイを使用し、モータドライバを使用したプログラムを作成し、モーターが動くことを確認するところから始めました。

前の記事で使用したモータードライバ(NJM2070D2)は、ひとつで2個のモータ制御をすることが出来ました。

しかし、今回使うモータードライバ(TA7291P)は、ひとつで1個のモーターしか制御できません。ですから、2つのモータードライバを使うことになります。

但し、テストでは、ひとつ使用して動くことを確かめれば十分です。

配線はデータシートに従って実施します。

(2) モータへのジャンパワイヤ接続

使用するモータは、上記タミヤ CAM-PROGRAM ROBOT に付属のモーターです。モーターが2つ同梱されています。

モーターにはリード線がはんだ付けされています。このままでは、ブレッドボード上で使用しにくいため、ジャンパ線を追加ではんだ付けしました。

これで、ブレッドボードにセットするのに問題はなくなりました。

(3) 実際の配線

ラズパイは、リモコン戦車でも使用した raspberrypi zero WH を使います。小さくて、戦車やロボに搭載するのに重宝します。

まずは、モーター稼働試験のため、一つのモータードライバで配線を行います。

上述の通り、ブレッドボードを用いて作り上げます。ジャンパーワイヤのオス-メスとオス-オスを使用します。

実際の配線はこんな風になりました。

今回、配線してモーターの起動をしたんですが、最初は全くモーターが動かず焦りました。

しかし、上に置いたデータシートに従って配線を見直すことで無事モーターが動きました。

2.プログラムの準備

今回のプログラムですが、上記データシートにありますが、利用するピン番号8,10,12番を使用します。PWM制御用のピンは12番です。

以下にモーターの稼働の順序を示します。

  • GPIOを指定(プログラムはピン番号指定になっています)
  • ピン番号を指定
  • PWMの設定
  • モーターを5秒間動作
  • モーターを停止
  • モーターを先ほどの逆に5秒間動作
  • モーターを停止

プログラムは次のようになります。

# -*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO

pin_1 = 8
pin_2 = 10
pin_3 = 12

time.sleep(3)
print "start"
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD) #ピン番号指定

GPIO.setup(pin_1, GPIO.OUT) #ピン番号8(GPIO14)を設定
GPIO.setup(pin_2, GPIO.OUT) #ピン番号10(GPIO15)を設定
GPIO.setup(pin_3, GPIO.OUT) #ピン番号12(GPIO18)を設定

pwmR = GPIO.PWM(pin_3, 50)
pwmR.start(0)

print "回転"

pwmR.ChangeDutyCycle(0) #回転させる
GPIO.output(pin_1, 1)
GPIO.output(pin_2, 0)

pwmR.ChangeDutyCycle(30)
time.sleep(5)  #

print "stop"

GPIO.output(pin_1, 0)  #ストップ
GPIO.output(pin_2, 0)
time.sleep(3)

print "逆回転"

pwmR.ChangeDutyCycle(0) #逆回転させる
GPIO.output(pin_1, 0)
GPIO.output(pin_2, 1)

pwmR.ChangeDutyCycle(30)
time.sleep(5)  #

print "stop"

GPIO.output(pin_1, 0)  #ストップ
GPIO.output(pin_2, 0)
time.sleep(3)

pwmR.stop()

GPIO.cleanup()
time.sleep(1)

3.プログラム実行

さて、それでは動かしてみましょう。

pi@raspberrypi:~/motor $ python motor_t.py

実行すると、埋め込んだ print 文が出力されます。

start
回転
stop
逆回転
stop

上記「回転」でモーターが右に回り、「逆回転」でモーターが左向きに回るのが確認できます。

動画を見てください。

これで、CAM-PROGRAM ROBOT を動かす準備は整いました。