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

 以前、「PICを使った温度計・湿度計の製作」で作成したものは、パソコンのUSB端子から給電するようにしました。パソコンを使わない所でも、ACアダプタ等から給電して使用できるようにDCコネクタと3端子レギュレータを接続して改造したところ、電源の逆接続をやらかしました。3端子レギュレータや、PICは問題なく動作しますが、どうも湿度が低めに測定されます。
 CHS-UGRを基板から取り外して単体でテストすると実際の湿度の1/3程度の測定値しか得られません。(このときの実際の湿度は60%前後ある。)息を吹きかけたりすると即座に反応して湿度が上がるので完全に故障というわけではありませんが、このままでは正確な湿度がわかりません。

 CHS-UGRは、1個2000円程度と高価なので同じような値段で、温度センサーと湿度センサーが一体化されたSensirion社製のSHT11をストロベリー・リナックスさんから通販で購入しました。

 特殊なパッケージなので、変換基板もサービスで付属しています。思ってたより小さく、センサーそのものは、比較においたTO-92パッケージのトランジスタよりも小型です。精度は、温度で±0.4℃、湿度は±3.0%と高精度です。また分解能も温度が0.01℃、湿度が0.03%と普通に使うのは十分すぎる性能を持っています。

 センサーは、I2Cという規格化されたシリアル通信で温度や湿度のデータを読み出すことができると一部Webサイトに書いてありますが、データシートを読むと”not compatible with I2C interfaces・・・・”とあり、実際I2Cとは異なっています。
 ということで、シリアル通信部分はスクラッチで作る必要があります。でもWebを検索するとエレキジャックさんでかなり前に特集されたようでプロトコルから実際のコーディングまで詳しく解説されています。ただ、PIC用のソースプログラムなので、参考にしながらAVRで使えるように作成しなおしました。

 湿度データの測定コマンドをオシロスコープでキャプチャしました。CH1がDATAでCH2がSCKです。(下半分は、上半分のズーム画面となっています。)
 ”Transmission Start”シーケンスに続いてアドレス”000″(固定)と温度測定コードの”00101″を連続して送出します。

 SHT11から帰ってくる湿度データです。最後の12bitの湿度データと8bitのCRCチェックサムが帰ってきます。

 シリアル通信のプログラミングは、LCDを表示に使ったのですが、実際の製作は、遠距離からの視認性を重視して7セグメントLEDを表示に使用します。この部分のソースプログラムは、「AVRを使った温度計・湿度計の製作」からそのまま持ってきました。

 回路図です。これも以前作ったものを使いまわしています。

 基板の実装図です。これも使いまわせる部分は、そのままにしています。

 製作して、ブレッドボードで作成した時のプログラムで走らせるとLEDの表示が滅茶苦茶になります。ブレッドボードでは、接続の自由度があるため、AVRのポートを順番に使用していたのですが、実装では配線の取り回しの都合上、ポートの順番が異なってしまうためです。AVRライターを接続して正しい表示になるようにデバッグします。

 ケースも以前のものを使いまわします。100円ショップで購入した写真立てです。適当なスペーサーで2枚のプラフレームと基板を固定します。上下左右はオープンなので通気性も十分です。

 無調整で正確な温度と湿度が測定できるので便利です。Webサイトには、測定間隔が早すぎると自身の発熱で温度が高めに測定されるとあります。とりあえず1秒間隔としていますが、500ms間隔でも値は大きく異なりませんでした。SHT11内部でのAD変換等の処理時間があるので温度、湿度を連続して読み出す場合、間隔が短いと正常な通信ができなくなることもあるようです。


 参考までにソースプログラムを示します。7セグメントLEDは、Timer0により約2ms間隔でダイナミック点灯させています。最初は、SHT11との通信タイミングをTimer1の1秒間隔でやってみたのですが、ダイナミック点灯のため多重割り込みを許可するとSHT11との通信が固まってしまう現象が低頻度ながら発生しました。しかたなくメインループの中で1秒のディレイをつかってSHT11と通信するようにしていますが、ブレッドボードの環境では、ごく稀にリセットのタイミングで測定ができなくなることがありました。基板化してから何度もリセットしてみたのですが症状は発生していません。

アイコン

pic_sht11_control.c 5.56 KB 8 downloads

...

1件のピンバック

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