サーボモーターへの連続指令



  • 下記のwaitを300以下にするとサーボが動作しなくなります。
    同一サーボへ指令出す場合、最低限必要なwait時間とかありますか?

    $('#front').click(function () {

      obniz.display.clear();
      obniz.display.print("Front");
    
      var x = 30;
      var f = 30;
      var b = 0;
      var FLmove_front = 180-x-b;
      var FLmove_back = 0+x+b;    
      var FRmove_front = 0+x+b;
      var FRmove_back = 180-x-b;
      var BLmove_front = 180-x-f;
      var BLmove_back = 0+x+f;      
      var BRmove_front = 0+x+f;
      var BRmove_back = 180-x-f;   
    
      obniz.repeat(async function () {    
        BRservo.angle(BRmove_front); 
        BLservo.angle(BLmove_back); 
        FRservo.angle(FRmove_back);  
        FLservo.angle(FLmove_front);
        await obniz.wait(300);
        
        BRservo.angle(BRmove_back);
        BLservo.angle(BLmove_front);  
        FRservo.angle(FRmove_front);  
        FLservo.angle(FLmove_back);             
        await obniz.wait(300);
        
     },10);
    

    });



  • @Google-Homer さん

    弊社で持っているSG510では300msのwaitで動作しましたが,
    サーボモーターによっては激しい動きをしようとして過電流になっているのかもしれません.
    もしくはサーボモーターの応答性が悪い可能性もあります.

    よろしければ型番教えていただけないでしょうか.



  • Tower Pro SG90です。よろしくお願いします。



  • 遅くなりました.

    SG90ですが,ドキュメントに下記の記載があります.
    Operating speed: 0.12 sec/60degree(4.8v)

    コード上はMAX120度まで変化するようですので,最低でも240msは間隔を開ける必要があります.
    PCとobniz間の通信ラグがあることを考慮すると,250ms程度間隔を開けておくことをおすすめします.



  • ありがとうございます。サーボ仕様にもとずいたwaitが必須なのですね。その後色々試した結果、自分の環境でSG90が確実に動作する最低値は320msでした。


Log in to reply
 

SUGGESTED TOPICS