Name: こうへい
    Mail: triangie@da2.so-net.ne.jp
    Date: 2000/01/29(Sat) 22:42
    Host: 210.174.9.108
    Title:qa_[144] アングルセンサーのズレ矯正
    --------------------------------------------------------
    Ryuさんの「Standard Remote Control Car」のリモコンのところに書いてある『アング
    ルセンサーの角度感知のズレをタッチセンサーで矯正する』ことについて質問がありま
    す。
    1、なぜずれるのか。
    2、どうやってそのズレをなおすのか。

    ぼくはRIS暦1ヶ月半くらいの中2生です。まだRISしかもってません。(^ ^;)これから
    いろんなテクを知りたいです。
    Name: mac
    Mail:
    URL: http://www.line.to/mac/MindStorms
    Date: 2000/01/31(Mon) 11:54
    Host: 210.161.82.78
    Title:qa_[149] Re: アングルセンサーのズレ矯正
    --------------------------------------------------------
    > Ryuさんの「Standard Remote Control Car」のリモコンのところに書いてある『アングルセンサーの角度感知のズレをタッチセンサーで矯正する』ことについて質問があります。
    > 1、なぜずれるのか。

    くるとんさんが、すでに大部分説明されましたので、
    この部分の補足です。

    メカの動きをセンスする、ごく普通の角度センサーは、
    インクリメンタルロータリーエンコーダーというのもです。

    これは、中に2個の「タッチセンサー」のようなスイッチが入っていて、
    回転するにつれて、00 01 11 10 00 01 11 10 ....
    と変わります。逆回転させると、00 10 11 01 00 10 11 01 ....
    です。わかりますね。
    変化の仕方で回転方向を察知するのです。

    「今」が正確にわかっても「過去全部」を正確に記録してないと、
    はじめからどれだけ回ったかを示すことができません。
    # これが悲劇の始まり (^^;

    MindStormsの角度センサーも実は同じ原理です。
    でも、ポートは一つだけしか使いたくないんで、
    2つの値を入力する工夫をしないとだめなわけです。
    2つといっても「独立に二つ」ですから、状態は4つです。
    仕方がないので、4種類の電圧にしてアナログ的に入力してます。
    0 1 2 3 0 1 2 3 ...
    0 3 2 1 0 3 2 1 ...

    これは、はっきりいってかなり無謀です。
    工業用に設計された、上記インクリメンタルエンコーダでさえ、
    デジタル式の0,1入力なのに、たまにノイズでずれることがあり、
    対策が要るのです。

    それをアナログでやるのですから、しばしばノイズで状態を読み間違え、
    それが累積していきます。
    でもね。工業用でも誤差対策は要るんです。
    誤差が出るのはむしろ「教育的」な面もないわけじゃありませんね (^^;

    ちなみに、航空、宇宙、軍事等、そういう誤差を許容できない場合は、
    状態を積算するのではなく、物差しを読むように、メモリの数だけ、
    状態が存在するタイプのエンコーダーを使います。
    これはアブソリュートエンコーダーといいます。

    b>Name: こうへい
    Mail: triangie@da2.so-net.ne.jp
    Date: 2000/01/31(Mon) 22:08
    Host: 210.174.9.229
    Title:qa_[151] Re^2: アングルセンサーのズレ矯正
    --------------------------------------------------------
    macさん、くるとんさん、説明ありがとうございました。工業用のセンサーの仕組みま
    で分かっちゃいました(^^)。
    もしナイスな作品ができたら発表してみようと思います。これからもよろしくお願いし
    ます。

    Name: Ryu
    Mail: ryu@mail.hkisl.net
    Date: 2000/02/02(Wed) 01:15
    Host: 152.158.214.65
    Title:qa_[153] Re^3: アングルセンサーのズレ矯正
    --------------------------------------------------------

    おー なんか自分の作品がネタにされているのって
    うれしいです。

    macさんのすばらしい解説と、くるとんさんのすばらしい応援コメントで
    もうなにも付け足すことはないですが、がんばってください〜>こうへいくん

    Name: mac
    Mail:
    URL: http://www.line.to/mac/MindStorms
    Date: 2000/02/02(Wed) 11:05
    Host: 210.161.82.78
    Title:qa_[154] Re^4: アングルセンサーのズレ矯正
    --------------------------------------------------------
    これは質問の答えの続きではなく、角度センサーの「改良」についての、単なる考察で
    す (^^;
    インクリメンタルエンコーダーが、普通の2進数のように、
    00 01 10 11とは変化せず、00 01 11 10 ...と変化するのは、
    同時に1 bit以上変化しないようにしているからで、
    これをグレイコードといいます。

    同時に変化すると、たとえば01 10の境で振動したとき、
    両方がまったく、同時に変化せず、タイミングずれで11や00を読む危険があるからです

    この問題は、2bit以上になっても生じるので、
    前に説明した、アブソリュートエンコーダーも、グレイコードを使います。

    さて、MindStormsの角度センサーは4種類の電圧で、
    4つの状態を伝達しようとしました。
    この前の説明では、状態の番号でシーケンスを示しましたが、
    電圧の大きさ順序で書けば、0 1 3 2 0 1 3 2 ...ですから、
    上記グレイコードをそのままDA変換したものになっています。

    でも、グレイコードの特徴はぜんぜん生かせません。
    1から3への変化では、当然2を通過しますし、
    2から0への変化では1を通過するからです。

    これについては、あぶくさんがタイミングをもとに、
    誤差を回避する方法を考察されたのですが、
    実はほかに、本質的改善があるんです。

    あぶくさんの改良とは違いハードウエアとファームウエアをともに、
    いじらないといけませんから、実現はかなり困難です。

    通常は状態1になっていて正方向に回ったら、
    1 2 1 2 1 2 ...と変化し、
    逆方向に回ったら、1 0 1 0 1 0 ...と、
    変化するようにしたらよかったのです。

    なぜやらなかったのかは、作るのが大変だからだと思います。
    でも、できないわけじゃなく多分誤差もずっと減ります。
    # 誰かやってもらえませんか (^^;