Raspberry Pi 3 とモータードライバー「TA7291」を使用してモーター制御に挑戦してみました。
試験的に、モーター電源に電池じゃなくてUSB電源を使用しています。
将来的にはラジコンを作ってみようと思っております。作れるかな?
車体に載せることを考慮して、ブレッドボードは小型のものを使用しました。
使用したもの
使用したもの(小物)
- モータードライバー TA7291P
- ブレッドボード用マイクロBメスUSBコネクタDIP化キット
- USBケーブル(Aオス-マイクロBオス)
- ミニブレッドボード
- ジャンパコード多数(オス-オス、オス-メス)
モータードライバー7291P
DCモーターを制御するコントローラみたいなもの。
面倒くさい回路を一つのチップに実装してくれている。(…と考えています)
(詳細は秋月さんのWebサイトからデータシートPDFを参照)
電源
電源として使用するのは電池が一般的ですが、今回はUSBモバイルバッテリーを使用してみました。
普通の電池だと6V出力するのに4本必要(@1.5V)で、スペース的にも重量的にも問題になります。
充電池を使用するとなると、6V出力するのに5本必要になっていまいます。(@1.2V)
リチウム電池を使用すれば問題解決できそうですが、取り扱い注意らしくコワイので、
パッケージ化されているモバイルバッテリーを使用しました。
(過充電とかショートでわりと簡単に膨張&爆発するらしい・・・)
今回使用したものは 5V 2.1A でスペックとしては十分です。多分。
ブレッドボード側にはUSBから電源を取れるように『DIP化キット』というものが必要になります。
これをブレッドボードに実装することで、電池の呪縛から介抱されるのです。
回路図
fritzingにも挑戦。
こんな感じになりました。※素人製である点に注意
ん、ああ、おっしゃらないで。
初めて作ったんです。 勘弁してください。
ソース
Python使用。
PWMで少しずつ出力を上げながら、「正転→ストップ→逆転→ブレーキ」するサンプルです。
実行する前に回路を確認してね!
ラズパイが壊れたり、モーターから煙が出たり、上司の家が吹き飛んだりするかもしれません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# -*- coding: utf-8 -*- import time import RPi.GPIO as GPIO time.sleep(2) print 'テスト開始' # GPIOの基本的な設定 GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(8, GPIO.OUT) GPIO.setup(10, GPIO.OUT) GPIO.setup(12, GPIO.OUT) pwmR = GPIO.PWM(12, 50) pwmR.start(0) print '正転' pwmR.ChangeDutyCycle(0) GPIO.output(8, 1) GPIO.output(10, 0) print ' 30' pwmR.ChangeDutyCycle(30) time.sleep(2) print ' 60' pwmR.ChangeDutyCycle(60) time.sleep(2) print ' 100' pwmR.ChangeDutyCycle(100) time.sleep(2) print 'ストップ' GPIO.output(8, 0) GPIO.output(10, 0) time.sleep(2) print '逆転' pwmR.ChangeDutyCycle(0) GPIO.output(8, 0) GPIO.output(10, 1) print ' 30' pwmR.ChangeDutyCycle(30) time.sleep(2) print ' 60' pwmR.ChangeDutyCycle(60) time.sleep(2) print ' 100' pwmR.ChangeDutyCycle(100) time.sleep(2) print 'ブレーキ' GPIO.output(8, 1) GPIO.output(10, 1) time.sleep(1) # GPIO後処理 GPIO.output(8, 0) GPIO.output(10, 0) pwmR.stop() GPIO.cleanup() time.sleep(1) print 'テスト終了' |
コレを適当なファイル名で保存して、Raspberry Pi 3 上で実行します。
実行権限をつけるのを忘れずに・・・。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
pi@raspberrypi:~ $ python ./piagogo.py テスト開始 正転 30 60 100 ストップ 逆転 30 60 100 ブレーキ テスト終了 |
動かしてみる
問題が・・・
↑の動画を観るとわかりますが、モーターの出力がフニャフニャです。
これでは満足に動かないでしょう。
これは多分、USB DIP化キットのヒューズの働き?で、0.1Aしか流れてないようです。
0.5Aは流れてほしいんですけどね・・・。 対策を検討中。
続く?
次は『サーボモーターを使ってステアリング』予定。
ピンバック: Raspberry Pi と マイクロサーボSG-90 | manspace