2017-07-05 21 views
1

パイソンとラズベリーパイを使ってサーボモータをゆっくりと所望の角度に到達させる方法は? 私はこれを試しましたが、それはすべての条件で動作していないようです。ラズベリーパイによるサーボモータの速度制御

p = GPIO.PWM(7,50) 
    p.start(7.5) 
    def servo(angl) : 
     try : 
       angle_end = angl 
       for i in range (1,100) : 
        angle_step_to_end = (i *angle_end)/100 
        duty_cycle =(((12.5-2.5)/(180-0) * angle_step_to_end)+2.5 
        p.ChangeDutyCycle(duty_cycle) 
     except KeyboardInterrupt : 
          p.stop() 
          GPIO.cleanup() 

もっとリアルなのですか?

答えて

0

典型的なホビーサーボは、指示された位置までできるだけ早く回転するように設計されています。ゆっくりとした動きを得るには、命令された位置をゆっくりと変化させる必要があります。多くの手作業による計算をせずに、あなたのコードはそうしているようです。

典型的な値は、20 ms(7.5%)ごとに1.5ミリ秒程度のパルスで、サーボをその弧の中心に「センタリング」します。極端な値に移動するには、典型的な値は一方の極値では1.0ミリ秒、他方の極値では2.0ミリ秒です。

7.5を見ていると、私は単純にp.ChangeDutyCycle()と呼んでください(あなたが望むように滑らかに)5.0%と10.0%の間で変化する値をとることを提案します。もちろん、趣味サーボの開ループ制御は、通常、非常に安価なポテンショメータによって制御され、超精密制御は実際には達成できません。

関連する問題