質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

2回答

2550閲覧

Raspberry pi でサーボモータを動かしたい

noooooooob

総合スコア16

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2020/07/29 06:54

###環境
raspberry pi 3
python 3.7
サーボモーター S3103
https://servodatabase.com/servo/futaba/s3103

###状況
ラズパイでサーボモータ(S3103)を動かしたいのですが、動きません。
他のサーボモータ(S3001)では、動きました。サーボモータ(S3003)のデータシートは下のリンク
です。
http://www.es.co.th/Schemetic/PDF/ET-SERVO-S3003.PDF

S3103サーボについて調べてみても、情報は【環境】に載せたURLについてしか出てきませんでした。
S3003サーボと何が違のか、また何を直せば動くようになるのか、ご教授ください。

最近、電子工作関係に触れたばかりですので無知ですがよろしくお願いします。

テストコード

python

1import RPi.GPIO as GPIO #GPIO用のモジュールをインポート 2import time #時間制御用のモジュールをインポート 3import sys #sysモジュールをインポート 4 5#ポート番号の定義 6Servo_pin = 18 #変数"Servo_pin"に18を格納 7 8#GPIOの設定 9GPIO.setmode(GPIO.BCM) #GPIOのモードを"GPIO.BCM"に設定 10GPIO.setup(Servo_pin, GPIO.OUT) #GPIO18を出力モードに設定 11 12#PWMの設定 13#サーボモータS3003の周波数は50[Hz] 14Servo = GPIO.PWM(Servo_pin, 70) #GPIO.PWM(ポート番号, 周波数[Hz]) 15 16Servo.start(0) #Servo.start(デューティ比[0-100%]) 17 18#角度からデューティ比を求める関数 19def servo_angle(angle): 20 duty = 3.5 + (16.0 - 3.5) * (angle + 90) / 180 #角度からデューティ比を求める 21 Servo.ChangeDutyCycle(duty) #デューティ比を変更 22 time.sleep(0.3) #0.3秒間待つ 23 24#while文で無限ループ 25#サーボモータの角度をデューティ比で制御 26#Servo.ChangeDutyCycle(デューティ比[0-100%]) 27while True: 28 try: 29 servo_angle(20) #サーボモータ 20 30 print("20") 31 servo_angle(0) #サーボモータ 0 32 print("0") 33 servo_angle(20) #サーボモータ 20° 34 print("20") 35 servo_angle(0) #サーボモータ 0° 36 print("0") 37 servo_angle(20) #サーボモータ 20° 38 print("20") 39 servo_angle(0) #サーボモータ 0° 40 print("0") 41 except KeyboardInterrupt: #Ctrl+Cキーが押された 42 Servo.stop() #サーボモータをストップ 43 GPIO.cleanup() #GPIOをクリーンアップ 44 print("clean") 45 sys.exit() #プログラムを終了

どちらのサーボで実行しても、エラーは出ず、print()内の文字が出力されます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

プログラムだけ見ると周波数が70Hzに設定されているのが気になります。
S3103のことはよく知りませんが、ハイスピードモデル以外の双葉のサーボは
基本的に50Hzで動くはずです。

また、プログラム以外の要因として、

  • 回路結線あるいはサーボ本体に問題がある
  • 信号は正しいがサーボ駆動用電源が貧弱でモータを回せていない
  • ラズパイは 3.3V 出力、サーボパルスは 3V 以上必要なため、高負荷で出力が落ちたり途中に抵抗があったりして電圧が足りていない
  • サーボの回転範囲外のデューティ比で回そうとしている

など考えられます。

投稿2020/07/29 17:51

plageoj

総合スコア65

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noooooooob

2020/07/30 03:26

回答ありがとうございます。 早速確認してみます!と言いたいところですが、今日は少し無理そうです... 申し訳ございません。 明日、確認しご報告させていただきます。
noooooooob

2020/07/31 13:14

お待たせいたしました。 原因はサーボモータの故障のようでした、新しく同じサーボモータを購入し使用したところ上手く動きました。 今回はご親切な回答をありがとうございました。
guest

0

ベストアンサー

基本的にサーボに与える信号はどのようなサーボでも同じなので、S3001で動くのであれば、S3103でも動くはずです。

  • 動かないサーボは壊れていないでしょうか。
    サーボテスターなど、対象のラズパイ以外で動作確認してみてください。
    少なくとも、接続して電源が通じたときになんらかの動作音がするはずです。
  • インターバルを長くしてみてはどうでしょうか。
    現状だと、0.1秒保持ですが、ちょっと短かすぎる気がします。1秒程度にのばしてみるとどうでしょうか。

投稿2020/07/29 14:00

TakaiY

総合スコア12765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noooooooob

2020/07/30 03:33

回答ありがとうございます。 >動かないサーボは壊れていないでしょうか。 サーボテスターは持ち合わせておりませんが、ラズパイにサーボモータを接続するとき、S3003は一瞬「ビッ」と動作します。S3103は微動だにしません... >インターバルを長くしてみてはどうでしょうか。 早速試してみます!と言いたいところですが、今日は少し無理そうです... 申し訳ございません。 明日、試しご報告させていただきます。
noooooooob

2020/07/31 13:14

お待たせいたしました。 原因はサーボモータの故障のようでした、新しく同じサーボモータを購入し使用したところ上手く動きました。 今回はご親切な回答をありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問