雑誌無償購読申込み 最新号 バックナンバー 広告資料請求 EDN Japanについて お問合せ
雑誌無償購読申し込み
メールニュースレター登録
登録内容変更
アナログ IC/ディスクリート
電源/電池/コントローラー
PLD / メモリー
組み込みシステム
コンピュータ&ボード
EDA/IP/CAE/ソフトウェア
電子部品
計測器
ディスプレイ
デジタル家電
通信・ネットワーク
カーエレクトロニクス/産業機器
EDN Japan 記事検索
検索方法の詳細
雑誌無償購読申込み ニュースレター登録 この記事に対する感想/ご意見
designideas
2003年7月号
キーボードを低コストで実現するアイデア

ジャンジャック・テブナン 仏トムソン・プラズマ社
Jean-Jacques Thevenin Thomson Plasma

 マイコンを使うアプリケーションの多くは、キーボードを利用する。比較的強力なマイコンを使うアプリケーションであれば、いくつかの空いている入出力(I/O)ピン、もしくは未使用のA-D変換器入力を用いることで、簡単にキーボードを接続できる。ところがマイコンの空いているI/Oピンが少なく、さらにチップ上にA-D変換器がない場合は問題になる。こうした問題は、高性能なキーボードを必要とする場合を除けば、図1の回路を使うことで解決できる。
Advertisement

 動作の様子を以下で説明する。システムが初期化されると、I/Oピンは出力状態になり、論理を「0」に設定する。従って図1のコンデンサーCが放電される。キーボードの状態読み出しは、次のステップで行う。 
1.I/O(出力)ピンの状態を論理「1」、すなわちVOUTにする。
2.コンデンサーCは、論理「1」(VOUT)と抵抗RS、そのほかの抵抗で決まる電圧VCまで充電される。なおデフォルトで、I/O出力を論理「1」に設定しても構わない。この場合はステップ1、2を省略できる。この分、ルーチンは早く進む。今回の回路設計では論理「0」を使って、キーボードの状態を読み出さないときは接続線が不活性になるようにした。
3.I/Oピンが入力状態になる。
4.TMAXの期間にマイコンがI/Oピンの入力をチェックし、論理「0」にリセットされるか、どうかを調べる。
5.TMAXの期間後でもI/Oピンの入力が論理「1」のままであれば、どのキーも押されていないことになる。
6.TMAXの期間内にI/Oピンの入力が論理「0」にリセットされた場合は、それまでに費やした時間を測定し、この時間を使って押されたキーを特定する。
7.I/Oピンは再度出力状態になり、論理「0」にリセットされてコンデンサーCを放電する。
 この方法の動作は方程式で記述できる。まず条件を仮定する。論理「1」のときI/Oピンの出力電圧はVOUT。論理「0」と論理「1」のしきい値電圧はVTH。RXは並列に接続したRAとRB、そのほかの抵抗の合成抵抗とする。
 図2には、図1の回路のタイミング・ダイアグラムを示す。時間TXは、(1)式で求められる。このときRXがRXMINに比べて無視できない大きさであれば、TXは(2)式で求められる(ただしマイコンのRINPUTはRXに比べてはるかに大きいとする)。(2)式より、RXの条件は(3)式のようになる。ここでRAとRB、そのほかの抵抗がR-2Rのネットワークを構成していると、RMINは近似的にRA/2に等しくなることに注意されたい。RSは、マイコンからの電流を制限する役目を果たす。その値は、VOUTMIN/IOUTMAX以上に設定する必要がある。RSを入れると、コンデンサーCの充放電に約5RSCの遅延時間が発生する。
 以下に4つのキーで構成した小さなキーボードの設計例を示す。マイコンのIOUTMAXをVOUT=5Vのときに25mAとすると、RSMIN≧200Ωと求まる。ここではRS=220Ωとした。RAとRB、RC、RDには、RSを無視できるほど大きな値を選んだ。すなわち1kΩと2.2kΩ、3.9kΩ、8.2kΩである。ただしRSの影響は無視できるものの、マイコンの入力抵抗の影響は考慮する必要がある。
 VCとVTH、すなわち2つの測定点間の時間は約2μsである(リスト1)。従って、1バイト分の最大期間TMAXは512μsになる(キーが押されない場合)。このためRXMAX(=RD=8.2kΩ)のときのTXは、最大期間TMAXよりも短くなければならない。VTHを最小1.5Vとすると、TXは(4)式のようになる。

;**********************************************************************
;
; LISTING 1 - THE DURATION BETWEEN TWO MEASUREMENTS
;
; メNovel idea implements low-cost keyboard,モ EDN, April 3, 2002, pg 69
;
;**********************************************************************
/*
* Function : LittleKb_Scan with 1 I/O
*
* Description : scans the Little Keyboard
*
* Return value : 0 if not any touch is pushed
* else a value between 1 and 255
*
* Note : by default, KB_IO is an output
* and its exit is set to 0 (see Note 1)
*/
BYTE LittleKb_Scan (void)
{
BYTE bRet = 0;
// beginning …
KB_IO = 1; // sets I/O (out) to 1 (see Note 1)
Delay_us(55); // waits for 55us (see Note 1)
KB_IO_Input(); // KB_IO is an input
do
{
bRet++; // counter ++
if(KB_IO == 0) // checks I/O (input)
break;
} while (bRet != 0); // the loop lasts 2us
KB_IO = 0; // resets I/O to 0 (see Note 1)
KB_IO_Output(); // KB_IO is an Output
// and discharges C
return bRet; // ... end
}

従って、CMAXは(5)式になる。
 CMAX<53nF (5)
ここでコンデンサーCの静電容量に47nFを選択すると、このコンデンサーの充電に5×220Ω×47nF=52μsの遅延が発生する。すなわち測定時には、この遅延時間を見込んでおく必要がある。
 図3に、I/Oピンにおける波形と、さまざまなキーの押し方を行った場合の反応を示す。C=47μF、VCC=5Vで、30msごとにキーボードの状態を読み出す際の消費電力は約0.04mWである。実用上無視できる値だ。高精度や高速を求めないアプリケーションには、この方法を採用できる
雑誌無償購読申込み ニュースレター登録 この記事に対する感想/ご意見
Reed Electronics Group
Electronic BUSINESS Japan | Design News Japan | Semiconductor INTERNATIONAL | DETAIL JAPAN
EDN Japanについて | 広告掲載について | サイトマップ | お問合せ
 Copyright (C) 2000-2006 Reed Business Infomation Japan K.K. 
個人情報に関する方針 | 著作権・リンクについて | 会社情報