|
SENSIRION社からSHT-11という温度湿度をデジタル出力するセンサが20ドルぐらいで売られています。表面実装なのですが、ディップ端子への変換基板おまけ付きでストロベリーリナックスから通信販売されています。ちょっとお値段張りますが、温度も相対湿度も簡単に取得できるので、試しに使ってみることにしました。表示は同じくストロベリーリナックスから買ったi2cインターフェイス液晶へ出してみました。 PICは1.8V~5.5V対応の8PチップPIC12F1822を使います。PIC12F1822にはi2cインターフェイス用MSSP回路が入っており、今回の用途にぴったりです。 このセンサはi2cみたいだがちょっと違うインターフェイスプロトコルになっています。使い方ノウハウがエレキジャックのWEBで説明されていましたので参考にさせていただきました。WSNAKの中尾さんが書かれています。 |
SHT-11制御はクロックとデータの2本です。PORTA4,5を割り当て、ソフト制御でビットを上げ下げします。速度的には問題ないので、命令によりビットレベルを変化させる方式で対応可能です。 PIC12F1822のMSSPでi2cマスター動作を行います。信号ピンはデフォールトでPCLがRA1でピン番6、PDAがRA2でピン番5となります。RA0は動作確認用LED接続、RA3はMCLRで使うことにします。 i2c接続LCDのアドレスは0x7Cです。
|
ブレッドボード接続時で回路を組み上げます。i2c接続でストロベリーリナックス社のi2c液晶をつなぎます。次のような回路図となりました。 |
プログラムはMPLAB IDE V8..92のもとでHiTECH C V9.83コンパイラを使い開発しました。MAINプログラム、i2c接続LCD用の関数、そのヘッダ、mssp制御関数、そのヘッダからなっています。MSSP利用のi2cマスター関数、およびそのヘッダファイルは同機能MSSP搭載の新四ケタシリーズ(たとえばPIC16F1823とか1827)で使いまわしてきております。 *05/14/2014 バグ修正 マイナス表示の修正 プログラム作成にあたり、国内、国外の各種ブログやWEBを参考にしました。先駆者の皆様の努力に感謝いたします。 標準関数の印刷フォーマッタ―sprintf()が結構容量を取るようです。プログラムメモリーは96%まで消費してしまいました。 |
デバッグ途中でSHT-11とのつなぎがうまくいっているのか心配になりました。デジタルオシロで信号を観測してみましたら、次のようになりました。 |
いつものようにニッスイ2本で動かしています。LCDのコントラストがちょっと悪いですが、アクリルケースにでも入れれば、卓上の温度湿度計としては実用的に使えそうです。 |
試作にあたり、国内、国外の各種ブログやWEBを参考にしました。先駆者の皆様の情報提供に感謝いたします。 また無償の開発システムを提供しているMICROCHIP社にもお世話になります。回路図は水魚堂が提供するBSchを使いました。 本件内容に関しては趣味などの非商用利用を前提に試作しております。また、動作や性能を保証するものではありません。自己責任で参考になさってください。著作権に触れるような引用やコピーはお断り申し上げます。
|