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

2020年1月7日

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

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

合わせて、モータドライバを新たな TA7291P にして挑戦しましょう。

モータードライバを変える理由は単純なものです。即ち、前回と同じモータドライバでは面白くないからです。

スポンサーリンク

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

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

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

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

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

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

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

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

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

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

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

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

実際の配線

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

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

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

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

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

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


プログラムの準備

今回のプログラムですが、上記データシートにありますが、利用するピン番号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)

プログラム実行

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

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

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

start
回転
stop
逆回転
stop

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

動画を見てください。

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

モーター制御からリモコン操作に至る過程の記事です。他の記事もぜひ、ご覧ください。

スポンサーリンク
この記事を書いた人

60爺

60路を越え、RaspberryPi と出会い、その関係でブログ開設(2017/2~)となりました。始めてみると、コツコツやるのが性に合ってしまい、漢字の記事から家の補修・将棋・windows10関係・別名・言い方などジャンルを拡大して今に至ってます。まだまだ、元気なので新たな話題を見つけて皆様に提供できればと思っています。「プロフィールはこちら