作成者:Jeremy Purcell、最終更新:Scott Larson(2016年1月6日)
特長
- 静電容量の変化を周波数に反映するために555タイマを使用
- マイクロコントローラの入力をサンプリングして周波数を判定
はじめに
静電容量を出力として利用するセンサは数多く存在し、その静電容量を簡単に測定する方法は有用です。本アプリケーションノートでは、湿度センサの静電容量出力を周波数に変換する方法を解説します。この周波数をマイクロコントローラで監視し、あらかじめプログラムした閾値に基づいて出力を制御します。
測定方法
このセンサの静電容量は、周囲環境の相対湿度に応じて変化します。この静電容量の変化は湿度に対して非線形です。静電容量と湿度の関係を示す伝達関数は、各センサの仕様書で定義されています。
静電容量の測定にはいくつかの方法があり、それぞれに利点と欠点があります。最も単純なのは静電容量を直接測定する方法ですが、小さな静電容量を扱う場合には極めて高精度なタイミングソースが必要になります。別の方法としては、リラクゼーションオシレータを使う方法がありますが、これは比較的高価です。本アプリケーションノートでは、第3の方法として、独立したタイマとカウンタを使用する方法を取り上げます。この方法はより多くの部品が必要ですが、精密なタイミング部品を必要としないため、最終的には低コストです。
この手法の中心となるのが555タイマです。555タイマはセンサの静電容量を用いて矩形波を生成します。基準周波数は、指定した相対湿度におけるセンサの静電容量に対応するように選定します。555タイマとセンサが許容する周波数仕様を十分に満たしている限り、この周波数は任意に設定できます。矩形波の周期は式(1)で求めます。
(1)

Cは、センサの公称静電容量(規定された湿度レベルにおける値)です。式(2)および式(3)を用いて、デューティサイクルが50%に近くなるようにR1およびR2を計算します。
(2)
![]()
(3)
![]()
例えば、Humirelの HS1101 湿度センサは、55% RHにおいて180pFの静電容量を持ちます。基準周波数として6.5kHzを選択すると、周期は154µs、tlowは75.4µs、R2は604kΩになります。R1を求めると、抵抗値は25kΩになります。
図1に、555タイマの接続方法を示しています。5番ピンに接続した抵抗は、温度変化を補償するためのものです(推奨値についてはメーカーのデータシートを参照してください)。また、短絡保護のため、出力には1kΩの抵抗を直列に接続しています。
図1. 555タイマ回路
マイクロコントローラは、555タイマの出力周波数を監視して相対湿度を判定します。マイクロコントローラのタイマの1つをクリアし、入力ピンのローからハイへの遷移回数をカウントするように設定します。1秒後には、タイマのカウント値は入力矩形波の周波数を表し、その周波数は具体的な相対湿度に対応します。湿度は、センサの伝達関数(またはルックアップテーブル)を用いて算出することも、既知の閾値と単純に比較することもできます。
応用例
以下の例では、大型のヒュミドール(葉巻保管庫)の加湿を制御します。本装置は相対湿度を監視し、周囲環境を加湿するためにファンを駆動します。ファンは加湿を行うため、水源の近くに配置されています。コード内であらかじめ設定した閾値により、ファンを動作させる相対湿度レベルを設定します。測定終了から次の測定までの間、本装置はスリープモードに戻ります。
この回路では、内部4MHzクロックを使用する PIC12F683 、Texas Instrumentsの TLC555 、およびHumirelの HS1101 湿度センサを使用しています。HS1101 は静電容量型センサであり、0%~100%の相対湿度範囲で動作します。ソースコード(C言語で記述)は追加情報のZIPファイルに収録されています。回路を図2に示します。完全な部品表は付録に掲載しています。
図2. ヒュミドールの回路例
前述のように、Humirelの HS1101 湿度センサの静電容量は、55% RHで180pFです。基準周波数を6.5kHzとすると、R2は604kΩ、R1は25kΩとなります。標準抵抗値を使用する場合、それぞれR2は604kΩ、R1は25.5kΩとなります。
PIC12F は、555タイマの出力周波数を測定します。Timer0は入力キャプチャーモードで構成され、プリスケーラを32に設定することで周波数分解能を低くしています(この例では1/32)。これにより、サンプル期間中にLowからHighへの遷移回数がTimer0の8ビットレジスタでオーバーフローすることを防止します。分解能を低くすると湿度計算の精度誤差は生じますが、算出される湿度は実際の湿度に対して±2.5%以内となり、この用途には十分な精度です。誤差およびヒステリシスの例を図3に示します。
図3. 誤差とヒステリシスのイメージ図
測定した周波数を既知の閾値と比較し、その結果に応じて出力を設定します。(この例では、厳密な湿度値を求める必要がないため、センサの伝達関数を使用して正確な湿度を算出していません。)
その後、デバイスはスリープモードへ移行します。同じ入力信号によって内部のスリープタイマであるTimer1がインクリメントされます。Timer1 がオーバーフローすると、マイクロコントローラはウェイクアップし、Timer0 をクリアして周波数測定を繰り返します。スリープ間隔は湿度レベルに依存します(たとえば、湿度が高いほどスリープ間隔は短くなります)。
マイクロコントローラはNチャンネルMOSFETを制御して、ファンのオン/オフを切り替えます。制御回路とファンは共通の電源を使用しているため、ファンの突入電流によって電源電圧が低下し、マイクロコントローラがリセットされることがあります。この問題を対策するには、ファンの近くに大容量コンデンサを配置し、ファン起動時の電流を補います。あるいは、ソフトスタート方式を用いても同様の効果が得られます。
まとめ
本アプリケーションノートでは、静電容量型湿度センサをインターフェースする方法の一例を紹介しました。555タイマは静電容量を周波数へ変換します。マイクロコントローラは、一定期間の入力パルス数をカウントすることで周波数を求めます。その結果をあらかじめ定義した周波数の閾値と比較し、出力を適切に制御します。
追加情報
DKAN0007A_src.zip DKAN0007A_src.zip(2.7 KB)
555タイマ関連書籍
Berlin, Howard M. 555 Timer Applications Source Book. Sams Publishing, 1979.
Jung, Walter G. IC Timer Cookbook. Sams Publishing, 1983.
付録:部品表
| 参照番号 | DigiKey品番 | 商品概要 | メーカー品番 |
|---|---|---|---|
| U1 | 296-1857-5-ND | 555 timer | TLC555CP |
| U2 | PIC12F683-I/P-ND | Microcontroller | PIC12F683-I/P |
| C_HS | HS1101-ND | Humidity sensor | HS1101 |
| C2 | 493-1095-ND | Cap 0.1uF 50v elect | UVR1H0R1MDD |
| C3 | P12923-ND | Cap 47uF 25v elect | EEU-FM1E470 |
| C4 | 493-1333-ND | Cap 1uF 50v elect | UVZ1H010MDD |
| Q1 | ZVN4206A-ND | MOSFET N-channel | ZVN4206A |
| R1 | 25.5KXBK-ND | Res 25.5kΩ 1/4w | MFR-25FBF-25K5 |
| R2 | 604KXBK-ND | Res 604kΩ 1/4w | MFR-25FBF-604K |
| R3 | 909KXBK-ND | Res 909kΩ 1/4w | MFR-25FBF-909K |
| R4 | 1.00KXBK-ND | Res 1kΩ 1/4w | MFR-25FBF-1K00 |
| R5 | 100KXBK-ND | Res 100kΩ 1/4w | MFR-25FBF-100K |
| R6 | ERO-S2PHF3320-ND | Res 332Ω 1/4w | ERO-S2PHF3320 |
| D1 | 404-1106-ND | LED red 3mm | EFR3863X |
| X1 | 277-1273-ND | 2pos term block 0.1” | 1725656 |
質問/コメント
ご質問やご意見がございましたら、DigiKeyのTechForumへお寄せください。


