goo blog サービス終了のお知らせ 

Re: The history of "M&Y"

Team "M&Y" and "花鳥風月"
the soliloquy of the father
毎日更新!

NXTねた その117 モーターMの謎

2014-06-04 | NXTねた

インタラクティブサーボモーターMを使ってみました。

サーボモーターっていうくらいだから、回転数を指定すれば正確に回転して止まる・・・

こう考えますよね。


では、まず

RotateMotor(OUT_B,60,90);

を実行してみると・・・明らかに90度以上回転して止まります。

プログラムの意味を考えると、4回実行すると、ちょうど一回転して最初の位置で止まるハズなのでが・・・

1回転と45度くらいの位置で止まります。(そうすると、一回の回転では100度位なんですかね)


同様に、逆回転させても・・・

RotateMotor(OUT_B,60,-90);

やっぱり、どう見ても90度を越えて止まります。

う~ん、何で!?


じゃあ、

  RotateMotor(OUT_B,60,90);
  RotateMotor(OUT_B,60,-90);

このプログラムで、90度右回転、すぐに90度左回転すれば・・・元に戻るだろう・・・

やってみると・・・戻りません。

元の位置を越えて止まります。


う~ん、NXCがEV3を(正式)サポートしていないので、EV3と同時にリリースされたモーターMをサポートしていないということなんでしょうか!?


このプログラムを何度も繰り返すと、スタート位置がどんどんズレてきます。


ちょっと、感覚的な調査ではなく、きちんと計測してみます。

まず、最初の位置(角度)は「0」

  RotateMotor(OUT_B,60,90);
を実行した後の角度は「104」・・・何で104!?

さらに、

  RotateMotor(OUT_B,60,-90);

を実行した後の角度は「-13」・・・何で -13!?


これは、全くサーボモーターとして、制御が効いていないのでしょうか!?

ということで、「使い物にならん」と、まとめようかと思ったのですが、もうちょっとやってみます。

  RotateMotor(OUT_B,60,90);

  RotateMotor(OUT_B,60,-90);

をループで何回か繰り返してみます。

すると・・・104度と -13度を往復します。

段々とズレていくかと思ったのですが・・・違っています。

で・・・ここまで、実験して、何となく

104=90+14

-13=0-13

ということで、指定した角度から13度~14度ズレているのではないかと思いつきました。


じゃあ、右に90度回転させるためには・・・と

  RotateMotor(OUT_B,60,76);

を実行してみると・・・はいっ・・・90度回転して止まりました。(なるほど)

逆回転して0度で止めるためには・・・と

  RotateMotor(OUT_B,60,-76);

を続けて実行してみると・・・


ダメです。0度を越えて、-13度で止まります。

う~ん


じゃあ・・・

  RotateMotor(OUT_B,60,76);

  RotateMotor(OUT_B,60,-63);

を実行してみると・・・

これでやっと、90度右回転して、そのあとに90度左回転してスタートした位置で止まります。

やっと、意図した動作ができるようになったのですが・・・

何で、このプログラムでそうなるのかが、よく分かりません。(汗)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする