<紙>さんLOG

「パソコンヲタクの雑記帳」
 PC/Linux系/物理・化学で遊んでいます。
思いついたことを綴っています。

ロータリースイッチの入力

2008年08月05日 | PIC・マイコン
昨日までの累計アクセス数=5,690。 ご訪問頂き、ありがとうございます。    日記@BlogRanking
お引き立て頂き、「60代~日記@BlogRanking」で上位になれています。ありがとう御座います。
やっと、アクセス数(IP)の累計で2千を超えました。

さて、ロータリースイッチ(SW)といっても、例えば1回路8接点のようなものではなく、
正確にはエンコードSWのことです。
例えば0~7の8通りの状態を3ビットで表現するようなSWのことです。

純粋なロータリーSWの値の読み取りでは8ビット必要ですね。
で、エンコードSWの状態をPICで読み取る場合、下図左のようにデジタルで入力すると3ビット必要となる。
しかし、AD変換機能のあるPICで、右のようにアナログ入力にすると1ビットでできる。



共通側に 22kohm を繋ぎ、1、2、4 側にそれぞれ 10kohm、22kohm、47kohm を繋ぐとすると、

1~7の場合の合成抵抗値は、
1:10-----10.00kohm
2:22-----22.00kohm
3:(22,10) -- 6.88kohm
4:47-----47.00kohm
5:(47,10) -- 8.25kohm
6:(47,22) --14.99kohm
7:(47,22,10)- 6.00kohm  となり、

これと共通部分の 22kohm との電圧分割比は、
0:1.000
1:0.313
2:0.500
3:0.238
4:0.681
5:0.273
6:0.405
7:0.214 となる。

PICのAD変換機能は10ビット以上あるが、8ビットで考えると
0:255
1: 80
2:128
3: 61
4:174
5: 70
6:103
7: 55  である。

これを並べ替えると
0:255
4:174
2:128
6:103
1:80
5:70
3:61
7:55  となり、
差の最小は3の場合と7の場合の差6である。

測定誤差は高々1(一定な電圧環境であれば8ビット分解能では誤差は無い?)であるから、
判定値を中間の値
58、65、75、92、115、151、224
とすれば、十分識別できることになる。

<紙>は、この方式で、電源ON又はRESET直後に値0~7を読み取り、
8種類のプログラムを起動するようなものを作ってみた。OK。メデタシメデタシ。

なお、エンコードSWには2種類あって、正論理のものと負論理のものがある。
この話しは、正論理(?)のものかな。


お手数をおかけしますが、2クリック(投票を)して頂けるとうれしいです。 ⇒ 日記@BlogRanking