エンコーダ:ある形式のデータを一定の規則に基づいて別の形式のデータに変換する装置
メカトロの世界でエンコーダというと、物の位置をデジタル信号に変換するセンサーの事を指すことが多く、その中でも取り合分け回転角度をデジタル信号に変換するロータリーエンコーダを指すことが多いと思います。
ロータリーエンコーダには基準位置からの角度をデジタル信号に変換するアブソリュート型と一定角度動かす毎に信号が出るインクリメンタル型があります。
アブソリュート型エンコーダ
1回転を8分割したエンコーダを考えてみます。
まずはアブソリュート型から
板の色が赤と白で塗り分けてあり、白か赤かを判別できるセンサー(黄色の●)が3つ搭載されたものとします。また、センサからは白:0、赤:1として信号がでてくるものとします。
スタート位置からロータリーエンコーダを1回転させた場合の信号の変化を比較してみます。
内側から色を数字に直すと
0の位置:000
1の位置:001
2の位置:010
3の位置:011
4の位置:100
5の位置:101
6の位置:110
7の位置:111
これで回転を数値に置き換えることができそうですが、実際にはこの方法だとうまくいきません。
たとえば1と2のちょうど境目になっているとき、001か010のどちらかになっていれば良いのですが、切り替わるタイミングは微妙にずれてしまいます。
外側が先に切り替わると000になり、真ん中が先に切り替わると011になります。
0と7の境目だと0~7のすべての信号になってしまう可能性があります。
そこでアブソリュート型エンコーダではグレイコードと呼ばれる配置が使用されます。
グレイコードでは隣り合う番号でセンサ値が変わるのは1ヵ所のみになるように設計されています。
0の位置:000
1の位置:001
2の位置:011
2の位置:010
2の位置:110
2の位置:111
2の位置:101
2の位置:100
例えば1と2の境目では001か011のどちらかにしかならないのでおかしな値が出てくることはなくなります。
これがアブソリュート型のエンコーダです。
センサの出力を見れば今の位置がすぐ分かるのですが、検出角度を細かくしようとすると構造が複雑になります。
例えば1度以下の角度で検出するために1回転を512分割したい場合、センサが9個必要になります。
同心円に9個もセンサを並べようとするとある程度直径が必要になります。
直径を抑えようとすると板を分けて3層構造などにしなければいけません。
構造が複雑なためセンサの価格も高くなります。
これに対してなるべく簡単な構造で作れるのがインクリメンタル型です。
インクリメンタル型エンコーダ
基本的にインクリメンタル型の場合、0と1が交互に並ぶ板を1列分用意するだけです。
インクリメンタル型の場合、板を回転させると0から1へ、1から2へ変化させると回転したことは分かるのですが、何回変化したかをカウントしておかないと0、2、4、6の区別ができません。これがアブソリュート型との決定的な違いです。
このままでは開始位置が全く判別できないので、0の位置だけは検出できるようにZ相と呼ばれる信号を使用する場合もあります。
この図の方法でもう一つ問題になるのは回転した方向が分からない事です。
1から2へ回転してても、1から0へ回転しても色の変化は白→赤で区別がつきません。
1と2の中間付近で1→2→1→2→1→2とガタガタ揺れていた場合、揺れているのか回転しているのかの判別できません。
そこでセンサーを2つ並べて使用します。
0から1へ動かした場合、先にセンサーAが白から赤へ変化し、少し遅れてセンサーBが白から赤へ変化します。
1から2へ動かした場合、先にセンサーAが赤から白へ変化し、少し遅れてセンサーBが赤から白へ変化します。
センサー1つの時は1周で色が8回変化することを検出していましたが、センサーが2つになると1周で16回変化することを検出します。
この場合、出てくる条件は
Bが0の時、Aが0→1と変化した
Aが1の時、Bが0→1と変化した
Bが1の時、Aが1→0と変化した
Aが0の時、Bが1→0と変化した
の4種類です。
反対向きへ回した場合はセンサーBが先に反応することになります。
この場合、出てくる条件は
Aが0の時、Bが0→1と変化した
Bが1の時、Aが0→1と変化した
Aが1の時、Bが1→0と変化した
Bが0の時、Aが1→0と変化した
の4種類です。
これで回転方向の判別ができ、ガタガタ揺れているのか回転しているのかも判別ができます。
実際のインクリメンタル型ロータリーエンコーダは穴の開いた板とフォトインタラプタの組み合わせや、金属製のギアと磁気センサーの組み合わせ等も使用されます。
図の様に白い区間(0)、赤い区間(1)共に4つの場合
1周で1が出てくるのは4回なので、
0→1の変化のみをカウントすると1回転で4になります。
これに加え1→0の変化もカウントすると1回転で8になります。
センサを2つ並べて0→1も1→0も信号を検出すると1回転で16になります。
従って0→1のみをカウントした場合に比べて信号が4倍になり、角度の分解能も4倍になります。
これを
4逓倍(ていばい)と呼びます。
インクリメンタル型だと分解能を細かくしようとした場合、板の間隔を細かくするだけでセンサの数は変わりません。
車輪型移動ロボットのタイヤの回転を検出する場合、地面に対して車輪が滑ってみたり、そもそもタイヤの回転角度は大きな意味を持たず、スタートした時点から何回転したかの方が重要なのでインクリメンタル型が使用されます。