ラズベリーパイにサーボモータとDCモーターを接続して、Pythonで、個々に動かしてたのですが、DCモータを動かすと、サーボモータが連動して動いてしまうのです(0度を維持しようと動く)。
(サーボモータを動かしても、DCモータは動かない)
こういった現象ってありえるのでしょうか。(何かしらの故障?)
また、回避する方法ってありますでしょうか?
以下は、DCモーターを動かすPythonスクリプトです。(サーボモータを操作する記述は、まったくないのに、反応している(0度を維持しようと動く))
python
1# -*- coding: utf-8 -*- 2import time 3import RPi.GPIO as GPIO 4 5time.sleep(2) 6 7print 'テスト開始' 8 9# GPIOの基本的な設定 10GPIO.setwarnings(False) 11GPIO.setmode(GPIO.BOARD) 12 13GPIO.setup(8, GPIO.OUT) 14GPIO.setup(10, GPIO.OUT) 15GPIO.setup(12, GPIO.OUT) 16 17pwmR = GPIO.PWM(12, 50) 18pwmR.start(0) 19 20print '正転' 21pwmR.ChangeDutyCycle(0) 22GPIO.output(8, 1) 23GPIO.output(10, 0) 24 25print ' 30' 26pwmR.ChangeDutyCycle(30) 27time.sleep(2) 28print ' 60' 29pwmR.ChangeDutyCycle(60) 30time.sleep(2) 31print ' 100' 32pwmR.ChangeDutyCycle(100) 33time.sleep(2) 34 35print 'ストップ' 36GPIO.output(8, 0) 37GPIO.output(10, 0) 38 39time.sleep(2) 40 41print '逆転' 42pwmR.ChangeDutyCycle(0) 43GPIO.output(8, 0) 44GPIO.output(10, 1) 45 46print ' 30' 47pwmR.ChangeDutyCycle(30) 48time.sleep(2) 49print ' 60' 50pwmR.ChangeDutyCycle(60) 51time.sleep(2) 52print ' 100' 53pwmR.ChangeDutyCycle(100) 54time.sleep(2) 55 56print 'ブレーキ' 57GPIO.output(8, 1) 58GPIO.output(10, 1) 59time.sleep(1) 60 61# GPIO後処理 62GPIO.output(8, 0) 63GPIO.output(10, 0) 64pwmR.stop() 65 66GPIO.cleanup() 67time.sleep(1) 68 69print 'テスト終了'
以下で回路の説明をします。
モータドライバは以下のように接続。
TA7291Pの1ピン:GND
TA7291Pの2ピン:DCモータと接続
TA7291Pの3ピン:未使用
TA7291Pの4ピン:ラズベリーパイGPIO18と接続
TA7291Pの5ピン:ラズベリーパイGPIO14と接続
TA7291Pの6ピン:ラズベリーパイGPIO15と接続
TA7291Pの7ピン:電源(モバイルバッテリー)の+と接続
TA7291Pの8ピン:電源(モバイルバッテリー)の+と接続
TA7291Pの9ピン:未使用
TA7291Pの10ピン:DCモータと接続
サーボモータは以下のように接続。
茶コネクタ:GND
赤コネクタ:電源(モバイルバッテリー)の+と接続
黄コネクタ:ラズベリーパイGPIO21と接続
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/07 02:10
2017/08/09 17:09
2017/08/09 23:55