ーーーグレイコード(1)---
縁あって,X9C,AD5220というデジタルポテンショメーター
を弄る機会に恵まれました。
存在は,たまに見かけて知っていましたが,スピンドルの
DCモーターのコントロールもなんとかできました。
そこで,同じような原理で,自作してみようかなと思いたち
ました。
構想として,ロータリーエンコーダーや,タクトスイッチ等で
アップ・ダウンができること。
7セグLEDかLCDでモニターできること等,できればいいなと
思ってます。
そこで,いろいろ調べ始めました。手始めに,
ロータリーエンコーターをあたりました。
以前,自作のMPGを作成した時に,ちょっと,調べたのですが
調べるといくつか分からないことがでてきました。
まず目にとまったのが◯月の,
http://akizukidenshi.com/catalog/g/gK-00083/
の取説の記事で,
現在の値をf(t1),一つ前の値をf(t0)とし,記号”<”を
左ビットシフト,”+”を ex-or をそれぞれ表すものとし
て,
D=f(t0<1)+f(t1)
という回転判別式を定義します。
(1)時計回りの場合
入力系列が 00,01,11,10・・・・・・であるので,
D0=(00<1)+01=01
D1=(01<1)+11=01
D2=(11<1)+10=00
D3=(10<1)+00=00
の記述があり,演算結果の2ビットめを見ると,回転方向
を判別できると記載がありました。
ここで,なぜ,シフトするのか,なぜ,ex-orをするのか,
釈然としませんでした。
いろいろHPをあさりましたが,どうやら,グレイコードに
関係がありそうだということが諸兄のHPで分かりました。
ロータリー・エンコーダの使い方
ロータリーエンコーダの使い方
等を見て,シフトやex-or グレイコードに関係する
ということがなんとなく分かりました。
グレイコードについて,調べて見ます。
AGENT: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
猛牛ロックさん,こんばんは。
書き込み並びに情報ありがとうございます。
使う予定は,インクリメンタル,秋月の安い物の予定です。
当初,割り込みとDFFを使おうかなと考えました。
以前,これで,MPG関連のもの作ったので。
ただ,秋月のものにあった記載が気になって,調べ始めた次第です。
AGENT: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
グレイコードの事は知りませんでした。
でも使う予定なのはインクリメントタイプですよね?
それなら、ChaNさんのが役に立ちます。
基本的には、片側の相が変化(↑又は↓)の瞬間にもう一方を読めば回転方向は判ります。
つまり、片側の↑で、外部割り込みをかけて、もう一方を読んでHIGHなら正転、LOWなら反転、みたいな
感じなのですけど、それで通用するのはチャタリングの無い光学式のやつです。
機械式のおもちゃエンコーダはより難しいです。
私も最初は上記のように割り込みでやったと思います。で、取得後にはチャタリング対策として、短時間
時間をおいてから再取得させるようなやり方だったと思います。
でもそれだと高速回転だったりすると結構きついです。
ChaNさんの方法だと、チャタリング対策が既に入っているので、簡単かつ正確に読み取れます。
最近のものは、(例えば、疑似手パなども)殆どこの手法を使っています。
※簡単に言えば、両相の変化を2回分(前回と今回)とって、あるパターンなら正転、反転とするものです。