工業プロセスの自動化には、ほとんどの場合、センサーを活用する。こうした用途に使用されるセンサーには、例えばアンモニアガスの検知器や温度センサーなどのような抵抗性の素子が多く用いられる。この種のセンサーでは、検知の対象とするものの変化に伴って抵抗値が変化する。その変化の様子は一般に非線形である。センサーの抵抗成分がとる値は、1mΩのレベルから10MΩのレベルまで広い範囲にわたる。本稿では、このようなセンサーにおける抵抗値の変化を計測するための回路を紹介する(図1)。
この回路では、8端子のマイクロコントローラIC1「ATtiny13」(米Atmel社製)を用いて抵抗値を計測する。同コントローラは、1.8V〜5.5Vの電源電圧で動作する。この回路では、IC1を使って構成した無安定マルチバイブレータを発振回路として使用する。図2に示したのがその等価回路である。この発振回路は安定状態を持たず、2つの準安定状態の間で発振を持続する。発振周波数は外部に接続する抵抗(すなわち、センサー)の値によって決まり、抵抗値が大きくなると周波数は低くなる。逆に言えば、この発振周波数を計測すれば、接続されている抵抗の値を求めることが可能である。
図1において、抵抗R1が計測の対象とするセンサーに相当する。R1は、マイクロコントローラの汎用I/O端子であるPB1とPB2の間に接続する(実際には、任意の2本の汎用I/O端子の間に接続してかまわない)。その上で、R1の一端ともう1本の汎用I/O端子であるPB0との間に容量値が既知のコンデンサC1を接続する。
この回路の動作は、図2の等価回路を見たほうが理解しやすい。初期状態では、PB0はハイ、PB1はローとなり、PB2はハイの状態となる。この結果、コンデンサC1がR1×C1の時定数で充電されるのだが、初期状態ではコンデンサC1は放電状態にあるので、PB2はハイになる。その後、コンデンサの充電が進むと、抵抗両端の電圧の差が小さくなり、最終的にはPB2がローに変化する。これに対応して、PB1はハイに、PB0はローに変化する。続いて、コンデンサC1の放電が始まる。放電が進むに従って抵抗両端の電圧の差が大きくなり、最終的にはPB2がハイになる。これに対応して、PB1がローに、PB0がハイに遷移する。
この過程の繰り返しが起きる周波数を計測することで、抵抗値を求めることができる。この周波数fは、PB0の毎秒当たりの遷移回数の1/2に相当する。R1とfの関係は、定数kを用いてR1=k/fと表すことができる。
ATtiny13はUART(Universal Asynchronous Receiver Transmitter)機能を備えていない。そこで、抵抗値の計算用プログラムに加え、ソフトウエアUART用のプログラムも用意した。いずれも、http://www.ednjapan.com/img/file/di090401.zipからダウンロードできる。
Copyright © ITmedia, Inc. All Rights Reserved.