Renesas Synergy™

FAQ 1006571 : マイコンでのキー・スイッチ入力(その2)

一般にマイコンでキー入力を行なうときにはポートを使用します。しかし、使えるポートの数が少ない場合には、キー入力のためだけにポートを何本も使うことはできません。
そこで、考えられるのがアナログ入力を用いたキー入力です。下図にアナログ入力を用いて4個のキー入力を行なう例を示します。



[考え方]
SW1~SW4のどのスイッチが押されるかで、抵抗分割されてアナログ入力端子(ANIn)に加わる電圧が異なります。その電圧をA/D変換することでどのキーが押されたかを判定できます。

[抵抗値の設定]
それでは使用する抵抗値はどのようにすればよいのでしょうか。このときに第1に決める必要があるのが、「どのような電圧を基準として入力を判定するか」です。例えば、簡単のために、0~0.8VDDを、0.2VDD刻みに分割する場合を考えます。このとき、入力電圧と押されたスイッチの関係は以下のようになります。

0.8VDD以上   どれも押されていない
0.6VDD~0.8VDD   SW4が押された
0.4VDD~0.6VDD   SW3が押された
0.2VDD~0.4VDD   SW2が押された
0    ~0.2VDD   SW1が押された


そこで、この判定値のできるだけ中央になるように0.1VDDのマージンをもたせて、抵抗値を決めていきます。その際にR1を基準(=100)にして考えます。



まず、SW2が押されたときに0.3VDDになるようにR2を決めるとR2=R1*3/7となるので、抵抗のE24系列で近い値は43となります。次にSW3が押されたときに0.5VDDに近くなるR3を決めると、E24系列では56が近い値となります。同様にして求めていくと、R4は0.7VDDから130、R5は0.9VDDから620となります。

  R1を元に求める
R1 100
R2 43
R3 56
R4 130
R5 620

 

コーヒーブレイク

抵抗の値は通常は切りの良い値ではなく、中途半端と思われる値になっています。これは、1~10までを等比級数的に分割した値となっているためです。分割 の仕方として一般的なのは12分割したものがE12系列、24分割したものがE24系列と呼ばれています。E24系列では1.0、1.1、1.2、1.3、1.5、1.6、1.8、2.0、2.2、2.4、2.7、3.0、3.3、3.6、3.9、4.3、4.7、5.1、5.6、6.2、6.8、7.5、8.2、9.1の並びとなります。これらの中、太字で示したものはE12系列にも存在する抵抗値の並びです。


抵抗の比率は以上で決まります。次は絶対値を決定します。その際には、A/Dの変換精度をよくするには、できるだけ小さな値にする必要があります。また、 流れる電流をできるだけ少なくするには大きな値にする必要があります。このような使い方では、A/Dの変換精度はそれほど必要ありませんので、電流を優先 して値をきめることになります。
R1を元に求めた結果にそのままkΩを付けた場合には合計で約1MΩ、となり、待機時(スイッチが押されていない状態)に流れる電流は5V動作でも5μA程度となります。

以上の例では間隔をできるだけ広くとるために、20%刻みに設定しましたが、待機時の電流をできるだけ小さくするにはR5をできるだけ大きくする(押されていないときの電圧を高くする)ことになります。例えば、以下のように設定することを考えます。

どれも押されていない   0.95VDD
SW4が押されたとき   0.3VDD
SW3が押されたとき   0.2VDD
SW2が押されたとき   0.1VDD
SW1が押されたとき   0


ここで、R1を100kΩとした場合には、R2は11kΩ、R3は15kΩ、R4は16kΩ、R5は1.8MΩとなります。合計では約2MΩとなり、待機電流を約半分に改善できます。
このハードの制御プログラムについては「A/Dの簡単な使い方」を参照ください。
これまで説明した回路はキーの優先度が決まっており、二重押しがあった場合でも必ず優先キーとして処理できるものです。(優先度はSW1>SW2>SW3>SW4となります。)
二重押しがないような場合には以下の図に示すような回路も考えられます。この回路では、スイッチが同時には1つしか押されない場合には抵抗の値は独立に設 定できるので計算は楽です。また、スイッチが全く押されていない場合には電流が流れないので、その点でのメリットもあります。

他にご質問がございましたら、リクエストを送信してください