サーボTower Pro SG90の制御角度について



  • A angle=90
    B angle=90-60
    C angle=90+60
    の場合
    AからBの移動絶対角度=60°
    AからCの移動絶対角度=60°
    となることを期待しているのですが、実際の移動絶対角度はBとCで
    異なるような気がします。(目視)

    サーボ側の問題かもしれませんがobnizの仕組み上、何か関係する事は
    ないでしょうか?


  • administrators

    @Google-Homer さん

    目視で見た場合,どれ位ずれているように見えますか?

    obnizはサーボモーターに対して,50Hzにて0.5ms(0度)〜2.4ms(180度)のパルスを出力します.これがサーボモーターの設定とずれている可能性があります.

    もし使われているのがTowerProのSG90でしたら,データシート上では
    obnizの設定とサーボモーターの設定は一致しているようです.
    http://akizukidenshi.com/download/ds/towerpro/SG90_a.pdf


  • administrators

    タイトルでサーボモータの型番書いてありましたね…
    失礼しました



  • 下記プログラムの実行結果の動画を送りたいのですが、方法わかりません。
    ここで添付できますか?

      FRservo.angle(82);
      await obniz.wait(3000); 
    
      for ( step=1; step<5 ; step++ ){
        
        FRservo.angle(82+80);
        await obniz.wait(1000);
        
        FRservo.angle(82-80);
        await obniz.wait(1000);       
      }

  • administrators

    すみません,今は動画をアップロードする機能はついていないので,
    外部ストレージサービスを利用いただければと思います.

    下記のようなストレージサービスがあります.

    もしくは,twitter, facebook, email等で送っていただければ,こちらで頂いたファイルをサーバーにアップロードして貼り付けます.
    twitter : @obniz_io
    facebook : https://www.facebook.com/obniz.io/
    email : info@obniz.io



  • 下記に動画上げました。
    https://youtu.be/tosQQZFzQYA


  • administrators

    @Google-Homer さん

    動画ありがとうございます.
    弊社でも対象のサーボを購入中ですので,ついたら試してみます.

    SG90のドキュメントを確認しましたが,角度精度についてはとくに保証されていませんでした.一般的にこのタイプのサーボモーターは簡易的な作りになっており,角度の精度はそれほどないようです.
    角度精度が必要な場合は,補正をするか,他のサーボを使うことをおすすめします.



  • ありがとうございました。個体の問題だったようで、交換したら解消しました。但し、時間経過とともに他の個体もずれて来た気がしますので、ご指摘のように、そもそもそんなに精密ではない物のようですね。


 

Recent Projects

  • @nak435 ありがとうございます。
    接続は3.3vのgnd以外同じでした。
    エラーはそのせいかもしれませんが、しかし電気的にはgndを繋がない場合3.3vとしてうまく供給できないはずなのでそこが不思議です。

    教えていただいたプログラムの部分を修正して試してみたいと思います。
    また少し時間がかかりそうなのですが、早めに試したいと思います。

    引き続きよろしくお願い致します。

    read more
  • @Yuki-Sato さん、
    まずは、ピン接続だけ確認してください。

    i2cエラーは、私の方でもう少し調べてみます。

    read more
  • @Yuki-Sato さん

    vccに3.3v、それ以外はobnizの1-5まで直接接続で合っていますでしょうか。

    その通りで合ってます。Flick Hatはいつもそれで動かしていますし、お借りしたLargeもその接続で動作しました。(その後、6-7も接続してLEDの確認もしましたが)

    まったく動かない訳ではないようなので、接続の問題ではない気もしますが、前回のときより前進しているでしょうか? 同じでしょうか?
    ただ、私の場合は、書き込み(i2c.write)がエラーになった記憶が無いです(忘れているだけ?)

    3.3vは外から取っていると思いますが、外からのgndはどうしていますか?
    私の場合は外からのgndを接続するとうまく動作しなかったので、外からは3.3vの1線だけ接続しています。(私の知識では、gndと対でなければ+3.3Vにならないと思うのですが、接続してしまうとなぜか動きませんでした。)

    ↑ここまでで佐藤さんと私でpin接続が同じであれば、FlickHat.jsのstart()内の2個所のi2c.writeを削除して試してもらえませんか? このwriteは無くても動作しますので。もしくは下記2行が不要かも知れません。writeを残して、この2行を削除して試していただけますか。

    73 await this.polling(); 74 await this.obniz.wait(200);

    追伸;

    また、まれですが26バイトの読み取りに失敗することもあります。

    これは同じでエラーになることがあります。どこかの制御に問題があるのでしょうか?

    read more
  • @nak435 こんにちは。

    flick-demo.htmlを使って動作確認しています。
    接続の確認なのですが、vccに3.3v、それ以外はobnizの1-5まで直接接続で合っていますでしょうか。

    なかなかうまく通信できないでいます。
    エラーが出ず何度かpollingできることもあるのですが、どこかのタイミングでエラーとなってしまいます。

    最初の段階は比較的うまくいって、132バイトを受信できています。

    [Log] Obniz: {"i2c0":{"mode":"master","address":66,"data":[132,0,0,131,170,99,128,230,19,100,21,32,49,46,51,46,49,52,59,112,58,72,105,108,108,115,116,97,114,86,48,49,59,120,58,32,32,32,32,32,32,32,32,59,68,83,80,58,73,68,57,48,48,48,114,50,57,54,51,59,105,58,66,59,102,58,50,50,53,48,48,59,110,77,115,103,59,115,58,82,101,108,95,49,95,51,95,112,114,101,114,49,55,56,52,58,78,77,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,85,170,144,101,32,32,128,15,255,255,255,255,225,242,0,0]}} (logger.min.js, line 1)

    ただ、その後に以下のような書き込みを行うところで書き込めずエラーとなることが多いです。

    [Log] Obniz: send: [{"i2c0":{"address":66,"data":[16,0,0,162,161,0,0,0,31,0,0,0,255,255,255,255]}}] (logger.min.js, line 1)

    また、まれですが26バイトの読み取りに失敗することもあります。

    接続方法が違うか、Flick Largeだと良くないのかなと思っています。
    接続方法について、合っているか教えていただけますでしょうか。よろしくお願い致します。

    read more