多くの場合、電子機器には、ユーザーが何らかの条件を設定するための入力機構が必要になる。そうした入力機構の典型的な例としては、プッシュボタンやポテンショメータ、タッチスクリーンなどがある。その一方で、システム全体のコストを最小限にしたいという観点から、制御用のICとして、低価格のマイクロコントローラやFPGA、PLDしか使用できないケースも多い。ところが、こうしたデバイスは外部インターフェース機能に制限があることに加え、入力機構からの信号をデジタル化するために必要なA-Dコンバータを備えていないことが多い。そのため、このようなケースでは、ユーザー入力機構を設けるために何らかの工夫が必要となる。本稿では、そうした安価なロジックデバイスのプログラマブルI/O端子の1つに、簡易的なA-Dコンバータを付加する方法を紹介する。以下、ロジックデバイスとしては米Xilinx社のCPLD「XC9500XL」を利用することを前提として説明を行う。
図1に、本稿で紹介する手法の概要を示した。この手法では、ポテンショメータ(可変抵抗)R1を介してコンデンサC1を充電し、その充電電圧が所定値に達するまでの時間を計測する。計測の前にはコンデンサを0Vに放電させておくのだが、時間計測の機能と放電の機能の両方を、ロジックデバイスの1本のI/O端子を制御することで実現する。
まず、コンデンサの放電時にはI/O端子を出力端子として設定し、ポテンショメータ側の端子電圧を強制的に0Vに落とす。一方、コンデンサの充電時には、I/O端子を入力端子として設定する。このときI/O端子の入力部の状態は、ハイインピーダンスとなる。充電はポテンショメータを介して進み、その開始とともにCPLDのカウンタの動作が始まる。このカウンタの動作は、コンデンサC1の電圧がI/O端子の入力閾(しきい)値電圧VTHに達すると停止する。そのときのカウント値を充電時間に対応付けることができる。カウント値CTVALUE、充電時間T、クロック周波数fCLK、ポテンショメータの抵抗値R、コンデンサの容量値C、閾値VTHは、以下の2式で表される関係となる。
これら2式から、以下の式が得られる。
ここで、コンデンサの容量、閾値、クロック周波数が全動作温度範囲に対して十分に一定であると仮定する。そうすると、充電時間はポテンショメータの抵抗値に比例することになる。
写真1は、図1を基に製作した試作品の外観である。CPLDの回路設計にはVHDLを使用した。I/O端子は、初めにコンデンサが放電するように設定する。使用したCPLDでは、短絡時の出力電流が±10mAに制限されているので、コンデンサが完全に放電されるよう短絡の状態を十分長い時間保持しなければならない。完全に放電するのに必要な最小時間tDISCは、コンデンサの値C、短絡電流ISHORT、放電電圧(ここでは閾値VTHに相当する電圧を放電すると仮定する)から、次式によって求めることができる。
放電に要する時間は、別のカウンタでチェックして確保する。放電が完了したら、I/O端子を入力端子として設定する。それにより、コンデンサがポテンショメータを介して充電され、内部のカウンタがカウントを始める。コンデンサの電圧が閾値に到達すると、カウント動作は停止する。
試作品では、コンデンサの値を22nFとし、10kΩのポテンショメータと直列に1kΩの抵抗を接続する構成とした。また、CPLDに入力するクロックの周波数は1.8432MHzに設定した。閾値は電源電圧3.3Vの場合で1.5Vである。以上の条件で、前掲のCTVALUEの式から計算されるカウント値はRが1kΩ〜11kΩで25から270の範囲となり、ほぼ8ビットに相当する。そこで、8ビットのカウント値255までが8個のLEDで表示されるようにした。コンデンサの充電時、放電時の電圧波形は、図2に示したようなものとなる。
脚注
※1…Eggers, Torsten, and Thomas Schmidt, "AN10187 Low-cost A/D-Conversion with Philips LPC Microcontrollers," Philips Semiconductors, Oct 4, 2002
※2…"Using an I/O Port Pin as an A/D Converter Input," Holtek, http://www.holtek.com.tw/english/tech/appnote/uc/pdf/ha0128e.pdf
※3…"AVR400: Low Cost A/D Converter," Atmel, http://www.atmel.com/dyn/resources/prod_documents/doc0942.pdf
※4…Quiring, Keith, "Implementing An Ultralow-Power Thermostat With Slope A/D Conversion," Texas Instruments, Jan 2006
※5…"CoolRunner-II Low Cost, Low Power Thermometer for Embedded Designs," Xilinx, Nov 29, 2004
Copyright © ITmedia, Inc. All Rights Reserved.