メディア

マイコンを利用してセンサー素子の抵抗値を測るDesign Ideas

» 2009年04月01日 00時00分 公開
[Ashish Aggarwal(インドNetaji Subhas技術研究所),EDN]

 工業プロセスの自動化には、ほとんどの場合、センサーを活用する。こうした用途に使用されるセンサーには、例えばアンモニアガスの検知器や温度センサーなどのような抵抗性の素子が多く用いられる。この種のセンサーでは、検知の対象とするものの変化に伴って抵抗値が変化する。その変化の様子は一般に非線形である。センサーの抵抗成分がとる値は、1mΩのレベルから10MΩのレベルまで広い範囲にわたる。本稿では、このようなセンサーにおける抵抗値の変化を計測するための回路を紹介する(図1)。


図1 抵抗値の計測回路 図1 抵抗値の計測回路 この回路では、マイクロコントローラを使って構成した無安定マルチバイブレータを発振回路として利用し、その発振周波数を計測することで抵抗値を求める。

 この回路では、8端子のマイクロコントローラIC1「ATtiny13」(米Atmel社製)を用いて抵抗値を計測する。同コントローラは、1.8V〜5.5Vの電源電圧で動作する。この回路では、IC1を使って構成した無安定マルチバイブレータを発振回路として使用する。図2に示したのがその等価回路である。この発振回路は安定状態を持たず、2つの準安定状態の間で発振を持続する。発振周波数は外部に接続する抵抗(すなわち、センサー)の値によって決まり、抵抗値が大きくなると周波数は低くなる。逆に言えば、この発振周波数を計測すれば、接続されている抵抗の値を求めることが可能である。

図2 図1の発振回路の等価回路 図2 図1の発振回路の等価回路 

 図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.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.