HDC1000を使った温度計・湿度計の製作

※HDC1000も1年半程度で湿度が高く測定されるようになりました。顛末は、「温度・湿度センサーの経年劣化について」に示します。(2017-04-28)

 「DHT22を使った温度計・湿度計の製作」で使用した温度・湿度センターのDHT22(RHT03)は、1年以上使用すると湿度が高めに測定されるという不具合がありました。過去2回、センサーを交換していますが、今回のセンサーも2年目にして湿度が高めに測定されるようになりました。センサーそのものの不具合の可能性もありますが、使い方がよくない可能性もあります。

 DHT22(およびその互換品)は、秋月電子でも取り扱いが始まったので入手には不便しませんが、1年程度で故障する可能性のある部品なので使用はあきらめます。これまで使用した温度・湿度センサーではセンシリオン社のSHT11が良いのですが、値段はそれなりにします。秋月電子では、DHT22よりも格安センサーとしてテキサス社のHDC1000というセンサーの取り扱いがあるので調達してみました。

 ブレッドボードで開発しますが、もとは「SHT11を使った温度計・湿度計の製作」と同じ回路でセンサーをHDC1000に交換したものです。SHT11は変則的なI2Cによるシリアル通信でしたが、HDC1000は、まともなI2Cで通信できます ・・・・が、

 HDC1000のアドレスが0x40(7ビット)とあるので、少しはまりました。オシロスコープでシリアル通信をモニタすると通信が正常に行えていないことがわかったので、アドレスをいろいろと試して正常動作までこぎつけました。

 回路図です。SHT11を使用したものと同じ回路で、3桁7セグメントLED2個をダイナミック点灯させます。LEDの電流制限抵抗は330Ωなので、1桁全点灯した場合は、8個のLEDに合計120mA程度の電流をAVRから供給します。かなりの電流ですが仕様では問題ありません。

HDC1000 温度計・湿度計回路図

 実装図も過去のものを使いまわします。基板は秋月電子の大きなユニバーサル基板です。

 部品実装した基板の裏表です。HDC1000は、他の部品から影響を受けないように横に飛び出すように取り付けました。電源コネクタ近くの大きなLED(キャップをかぶせてあります)は、3色LEDです。温度と湿度から不快指数を計算し、指数75以上の暑いときは赤色、指数60~75で快適を示す緑色、指数60以下の寒いときはを青色で表示するようにしました。(回路図には記載してありません)

 SHT11を使用したものと比較してみました。エアコンを使用せずにやっているので暑い室内ですが、温度、湿度とも測定値に大きな差は見られません。「不快」を示す赤いLEDも正常に点灯しました。^^;

 ケースも、これまでの温度計・湿度計で使用しているものと同じ100円ショップのフォトスタンドです。壁にかけて使用するのですが、周りがオープンなので測定に支障がありません。

 使用したプログラムのソースリストです。メイン関数とI2C関連のソースです。I2Cのライブラリは、ネットを参考にしたものですが、参照先がわからなくなったのでCopyrightなしです。ATMEL StudioとGCCで作成してあります。Arduino(アルドゥイーノ)を使用した製作例は、ネットに数多くあるのですが、素のAVRを使用したものはあまり見られないので参考までに載せときます。
 HDC1000からの読み込みは2秒間隔としています。間隔が短いと自身の発熱で温度が高めに出るようですが、2秒とそれ以上では、差は見られませんでした。(実装は、回路図とIOポートの接続が異なっているので注意が必要です。このプログラムは、実装図の接続を前提としています。)


※I2Cのライブラリでストップコンディション呼び出し時にHDC1000が無反応になることが稀に発生することがわかりました。原因はよくわかっていませんが、とりあえずストップコンディションでTWSTOビットの変化を待つことをやめて対処しています。(2015-08-06)

アイコン

adc1000_temp_hum.c 3.99 KB 16 downloads

...
アイコン

i2c.c 1.18 KB 15 downloads

...
アイコン

i2c.h 0.46 KB 15 downloads

...

2件のピンバック

コメントは現在停止中です。