펌웨어디자인(Firmware Design)

로터리엔코더

arirangled 2010. 6. 6. 03:08

 

 

           로터리엔코더 rot_enc.c

 


 ロータリーエンコーダの実験をしました。正回転、逆回転でパルスを出し、これをカウントすることによって回転角(回転位置)を調べることが本来の使い方だと思うのですが、電子レンジの時間設定のように数値を決めるだけにも使われています。タイマーの時間設定やPWM制御の値設定に使えるのではないかと思い実験してみました。
 右がエンコーダの拡大写真です。実験中は多回転が楽なように臨時のクランクを付けています。ALPSの製品でEC16B24102の様です。デジットで150円でした。クリックなしで1回転で24のパルスを出します。お店で幾種類かをまとめた規格表をくれましたので、その中から品番を推定しました。
チャタリングを防ぐために、1msごとにエンコーダを読みに行きます。後でデータシートをよく見るとチャタリングのmaxは3msと書いてありました。実験の目的が数値設定だけで、LEDで見えること、手で回転してみてチャタリングが分からなかったのでこれでよしとします(角度測定ではダメでしょう)。

上の図はエンコーダの波形です。A,B端子はonになるとC端子と導通し、0Vになります。offの時はIO端子をソフトウエアプルアップしているので、5Vになります。1サイクルで4つの状態が存在し、A端子をLSBとする2ビットを10進表記すると 0→1→3→2→0・・・と変化します(CWの時)。ここで2と3を入れ替えると 0→1→2→3→0 となり、1増える(または3減る)と正回転(CW)、1減る(または3増える)と逆回転であることが分かります。 2と3の入れ替えはif文で安易にごまかしています(ごめん)。エンコーダの扱いはChaNさんのページで勉強しました(感謝)。
回路図  プログラム

ゼロを決めるために、逆回転で0になるとそれ以上はデクリメントしないことにしています。1回転で 4×24=96 のカウントをします。ややデリケートです。クランクを付けると、2~300くらいの数値設定なら実用になりそうです(それ以上は回すことを辛抱せねばなりません)。
秋月で購入したもう一つのエンコーダはクリック付きでした。1サイクルの4相の内、1カ所しかクリックがないので実際には4飛びにカウントがアップします。これでは使いにくいので途中の計算で4で割り、4分の1のカウントをすることになります。1回転24カウントになります。デリケートなカウントアップが無い替わりに2回転しても48しかカウントできません。数値が小さいときは使いやすいかもしてません。
角度を測定するなら、クリックなしにすべきでしょう。360÷96=3.75度の精度で測定できます。


rot_enc.c
0.0MB
반응형

'펌웨어디자인(Firmware Design)' 카테고리의 다른 글

PC와의 통신실험  (0) 2010.06.06
Ni-MH電池充電器  (0) 2010.06.06
LM35DZ LCD온도계  (0) 2010.06.06
전자프로젝트  (0) 2010.05.26
Touch Sensor  (0) 2010.05.06