まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

ロータリーエンコーダ

アナログ入力によるロータリーエンコーダの読み出し

※抵抗の値に誤りがあったので図を修正

 ロータリーエンコーダ実験の続き。
 ロータリーエンコーダを扱うには2本のGPIOが必要だが、アナログ入力1本でもできるんじゃないかとやってみた。ロータリーエンコーダの端子A,B,Cのうち、導通状態になるのはA-C,B-C,およびA,BとC。これらの組み合わせで図のようにRa,Rb,Rcを組み合わせると次のようになる。

解放: V
A-C: Ra/(Ra+Rc)V
B-C: Rb/(Rb+Rc)V
A,B-C: (Ra//Rb)/((Ra//Rb)+Rc)V ※Ra//Rbは並列つなぎの値

ロータリーエンコーダfix

Rcは1kでAinをプルアップ、Ra=10k,Rb=4.7k。

これらをArduino UnoのADC分解能1023〜0に当てはめると
解放:1023
A-C:930.9
B-C:844.4
A,B-C:780.0
これを4bit分の分解能にすると(÷64)
解放:15
A-C:14
B-C:13
A,B-C:12
まあこうなるように抵抗値を決めたわけだが。

Arduino Uno/Arduino IDE 1.0.6でテストした。
https://gist.github.com/houmei/3625551d7013cbd2bff2159a96ebc4b3

時計回り: 15→14→12→13→15→...
反時計回り: 15→13→12→14→15→...

2016Arot

 実験の結果、チャタリングが発生してないように見えるのだがどうだろうね?この辺はもうちょっと調べる。
 Arduino Leonardo(ATMega 32U4)系だとアナログ入力はA0〜A11までの12本が使えるのでたくさん繋げそうなんだがそんなにロータリーエンコーダは持っていないのであった。以下で手配。

SODIAL(R)10個入り12ミリメートルキースイッチロータリーエンコーダスイッチSODIAL(R)10個入り12ミリメートルキースイッチロータリーエンコーダスイッチ

SODIAL(R)
売り上げランキング : 30350

Amazonで詳しく見る
by G-Tools

ロータリーエンコーダ実験

 半年くらいまえにちょっとやってうまくいかず放置していたロータリーエンコーダの実験、うまくできたので整理。

環境:MacOSX 10.10 / Arduino IDE 1.0.6 / Seeeduino Lite(Arduino Leonardo互換)

ロータリーエンコーダはA相とB相の状態を見て回転方向を調べる。C端子はGND、AとBは10KΩでプルアップすることになっているが、ピンのプルアップ設定でよい。

2014rot1

コードは以下を参考に少し変えた。A相の変化で割り込みを使ってBの変化を読み方向を決める方式。
Leonardo系はpin2の割り込み番号がUNO系の0と違って1なので注意。

ロータリーエンコーダーを使ってみる(忘れないページ)
arduinoでロータリーエンコーダを使う (創ったり投げたり。)

https://gist.github.com/houmei/6524d5254652c7460a6e

私の環境では大量のテキストを連続してArduino IDEのシリアルモニタに送るとArduino IDEが応答なしになってしまう現象があった。なので、適当にdelay()を入れ、数値も変化した場合のみ送ることにした。
元のソースでは回転方向を'R'、'L'でいったん記録し、続くif文で++または--している。'R'を+1、'L'を-1にして続きでそのまま加算してやれば簡単になると思って改変したら'R'方向(ClockWise)の動きが渋くなってしまった。なんでプラス方向だけスッポ抜けることがあるのか不明だが調査保留とした。

追記:
Arduino IDE1.0.6の最新ファームを純正Arduino Leonardoに書き込んで実験→再現。Arduino UNOでも再現。

 さて以前やったときなぜうまくいかなかったか。ひとつはロータリーエンコーダの理解不足でカチカチと動かした時にA相B相の状態が固定になると思っていた。しかしクリックできる所で止まるとA,BともCとの接続はOFFになる。
 もうひとつはロータリーエンコーダによる端子配列の違い。

 これは上からC,B,Aの順。秋月電子のキットから流用したもの。
2014rot2

 これは上からB,C,Aの順。どこで買ったか忘れた。最近見かけるLED内蔵の透明な軸のタイプもこれ。
2014rot3

 これを間違って配線すると、片方向にしか回らないという現象が発生する。


記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ