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

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

ただいまの
回答率

87.78%

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

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 696

score 8

環境

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サーボと何が違のか、また何を直せば動くようになるのか、ご教授ください。

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

テストコード

import RPi.GPIO as GPIO             #GPIO用のモジュールをインポート
import time                         #時間制御用のモジュールをインポート
import sys                          #sysモジュールをインポート

#ポート番号の定義
Servo_pin = 18                      #変数"Servo_pin"に18を格納

#GPIOの設定
GPIO.setmode(GPIO.BCM)              #GPIOのモードを"GPIO.BCM"に設定
GPIO.setup(Servo_pin, GPIO.OUT)     #GPIO18を出力モードに設定

#PWMの設定
#サーボモータS3003の周波数は50[Hz]
Servo = GPIO.PWM(Servo_pin, 70)     #GPIO.PWM(ポート番号, 周波数[Hz])

Servo.start(0)                      #Servo.start(デューティ比[0-100%])

#角度からデューティ比を求める関数
def servo_angle(angle):
    duty = 3.5 + (16.0 - 3.5) * (angle + 90) / 180   #角度からデューティ比を求める
    Servo.ChangeDutyCycle(duty)     #デューティ比を変更
    time.sleep(0.3)                 #0.3秒間待つ

#while文で無限ループ
#サーボモータの角度をデューティ比で制御
#Servo.ChangeDutyCycle(デューティ比[0-100%])
while True:
    try:
        servo_angle(20)               #サーボモータ 20
        print("20")
        servo_angle(0)               #サーボモータ 0
        print("0")
        servo_angle(20)               #サーボモータ 20°
        print("20")
        servo_angle(0)                 #サーボモータ  0°
        print("0")
        servo_angle(20)                #サーボモータ  20°
        print("20")
        servo_angle(0)                #サーボモータ  0°
        print("0")
    except KeyboardInterrupt:          #Ctrl+Cキーが押された
        Servo.stop()                   #サーボモータをストップ
        GPIO.cleanup()                 #GPIOをクリーンアップ
        print("clean")
        sys.exit()                     #プログラムを終了


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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/30 12:33

    回答ありがとうございます。

    >動かないサーボは壊れていないでしょうか。
    サーボテスターは持ち合わせておりませんが、ラズパイにサーボモータを接続するとき、S3003は一瞬「ビッ」と動作します。S3103は微動だにしません...

    >インターバルを長くしてみてはどうでしょうか。
    早速試してみます!と言いたいところですが、今日は少し無理そうです...
    申し訳ございません。
    明日、試しご報告させていただきます。

    キャンセル

  • 2020/07/31 22:14

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

    キャンセル

0

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

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

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

など考えられます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/30 12:26

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

    キャンセル

  • 2020/07/31 22:14

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

    キャンセル

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

  • ただいまの回答率 87.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る