トップメニューへ

温湿度計(室内外)、と気圧計の製作

完成した温度・湿度・大気圧計。ほぼ5秒ごとに 「Inside」、「 Outside」の温度と湿度を測定します。それに応じて赤と黄色のLEDが
点滅します。表示の「Tp」は「temperature、温度」の略、「Hu」は「Humidity、湿度」の略です。大気圧は外も内も変わりませんので
室内で測定しています。「Area-W」はArea(地域)の W (weather、天候) の略式のつもりです。

温度、湿度、大気圧を表示

送受信機やアンテナなどとは無関係ですが、ちょっとした悪戯のつもりで製作しました。
室内の温湿度・大気圧の2つのセンサーとは「i2c通信」で、室外のデータは「USART通信」でデータのやり取りをします。
主な材料:PIC16F886-2個、4桁20行LCD(SC2004CBWB)、温湿度センサー(AM2321)2個。これは最近、秋月電子で販売されている
AM2322も全く同様に使用できます。) また気圧センサー(LPS25H)1個、i2cバス双方向電圧レベル変換モジュール(PCA9306)1個、
1/10分周器(74HC390)1個。(すべて秋月電子で揃います)

LPS25H, AM2321 を i2c 通信で制御

製作:大気圧センサー LPS25H は裏面の J1 J2 のジャンパーを半田付けしてください。 i2c 通信用のSCL、SDAの10KΩ プルアップ
とします。電圧変換モジュールの「PCA9306」は裏面の4個の1KΩプルアップはパターンを切っておきます。 外部に3.9KΩの
プルアップが付いているので1KΩは不要です。8ピンのDIPを半田付けした後では切りにくいので先に処理しておいてください。
3.3Vの3端子レギュレータはピン配置が5Vの3端子とは異なる場合がありますから注意してください。
AM 2321(温度・湿度センサー) の半田付けは短時間のワンタッチで実行してください。長時間ハンダコテで熱を加えると
センサー機能に悪い影響を与えるようです。
2つのLEDインジケータは室内・室外の測定時に約5秒間隔で点灯します。なくてもいいですが、LCD表示している数値が変化していない
場合システムが正常なのか、停止しているのかわからない場合があります。このインジケータが点滅している限りきちんと計測
していますからシステム管理上もあった方が便利です。外部からの2芯シールドケーブルの引き込みは10m程度までは大丈夫の
ようです。
リセット押ボタンは必ず設置してください。電源オン時、まだセンサーが稼働していない間はLCDの数値表示はまだありません。
数秒経ってからリセットを押してスタートです。また、外部からの2芯ケーブルが外れた場合、あるいはセンサーに誤作動が起こった場合
などは異常な数値が表示されることがあります。このときもリセットをかける必要があります。

室外のAM2321センサー設置場所:必ず雨滴にかからない所、直射日光に当たらないところを探して設置してください。
百葉箱のようなものあるといいのですが、できるだけそれに近い状態になるように。私は屋根の直下、軒下に設置しています。
設置場所が悪いと、湿度や温度が異常値に表示されるだけでなくセンサー自体がいずれ壊れてしまいます。

LPS25Hの使い方

左はこれらのセンサー部分の拡大写真です。
右上のLEDランプが点灯しているのが大気圧センサー「LPS25H」で3.3V仕様です。
(赤色のLEDが付いていますが、このLEDの意味は不明です) このデバイスは
ピン番号が付いているので間違いはないと思いますが、左の電圧変換モジュール
「PCA9306」はピン番号がないので注意です。写真のようにLPS25Hと逆さまになる
ように配置するとSCLとSDAの信号ラインがほほ直付けできます。
(写真を拡大して確認してください。)
1KΩのプルアップ抵抗が4個並んでいる端が1番(左)と8番(右)のピン位置です。
通常は1番ピンの VREF1に3.3Vを、8番のVREF2に5Vをかけます。
その下、黒い四角柱から4本の脚が出ているのが「AM2321」、温湿度センサーです。
ピン間隔が2.54mmピッチではないので少し広げてソケットで差し込んでいます。

動作原理:各々のセンサーとは i2c 通信でデータを受け取ります。室外からの温湿度のデータは一旦 i2c で外部のPICに受け取った
あとにUSARTで室内の PIC にデータを送ります。親機(マスター)は室外からの信号は USART の受信割り込みで、室内のデータは
74HC390 で作った100KHzのクロックを使用した TIMER1 割り込みで処理し、室内・室外とも約5秒間隔で測定し LCD に表示します。
C言語でプログラムした結果をHEXファイルでアップロードします。ICD3 などでインポートしてからPICに書き込みしてください。

ここから PIC16F886 用の HEXファイルをダウンロードしてください。
********* 室外の温湿度を測るAM2321_OUT.ZIP (室外のPIC用)**********************************
********* 室内用LCD表示器をコントロールする AM2321_LPS25H_ROOM.ZIP(お部屋のPIC用)********

ユニバーサル基板に製作しました。ケースに入れる前の写真です。
右上の細長い小さい基板が室外用。本来は数mの2芯シールドケーブルで接続します。
仮接続でセンサーが同じ室内に存在するために表示の数値はほぼ同一です。1〜2%の誤差はデバイス個別のばらつきと思います。
このAM2321とは異なるタイプのアナログ電圧を AD変換して測定するようなセンサーでは校正をいう手続きが必要です。
この校正というセッティングが大変問題で、他に卑近な例を挙げれば、超安定なOCXOでも校正が正確になされないと単なる
「ずれたままの」超安定不正確発振器になりさがってしまいます。
このAM2321にしろLPS25Hにしろ、センサー内にはマイコンが内蔵されており、デバイスそのものの中で計測の手順が終結
しており校正という厄介な仕上げがありません。でこの点では絶対的な「校正原器」がない素人には安心です。
作れば終わりという結果になります。
地方気象台と同じ海抜、同じ地域になるようにセッティングして、データを何日間か比較してみましたが誤差はごくわずかでした。
(気温・湿度とも誤差はそれぞれ、1度C以内・1%以内、また気圧の誤差は2〜3hPaでした。気圧は同じ時刻、同じ地域で測っても
高層ビルや低い山でも、海抜が上がるとすぐに数hPaは変化してしまいます。) 「低気圧が近づいています」とTVで予報が出ると、
気圧センサーの数値が刻々と低くなっていくのがわかります。見ていると面白いものです。

温湿度計のケースに入れる前の写真

ケースに入れた完成時は、室内用のセンサー(AM2321)は後面のパネルから室内の空気に触れるように突き出して設置してください。
大気圧センサー(LPS25H) はそのまま基板上に付けたままです。

温湿度計の内部の写真   後面パネルへ AM2321 を設置する

バックパネルを見ると AM2321 の設置方法と、外部への2芯シールドケーブルの取り出し方が分かるとおもいます。
簡略化のため、電源は外部から9Vを供給しています。いずれ右の空いたスペースに電源を組み込む予定です。

LPS25H単独で、室内の気圧・温度だけを測る場合の設定

AM2321は高価(700円?)で室内外の2個も用意しないといけないし、外部への延長コードの設置にも困難を伴う、また4桁20行
のLCDも1700円で高い。そんな不必要な装置より室内の温度と気圧で十分と言われるOMさん用にプログラムを追加しました。
実はLPS25Hには秋月電子の説明書にも載せていませんがちゃんと温度を測定できるセンサーが装備されています。
おまけではなくなかなか正確な温度測定を行います。LCDも2桁の小さいもの(安い)で簡単に済ませられます。
*******************LPS25H_sole_working.ZIP。****************************
【以下はプログラムに関する記述です。読み飛ばしOK】
前述にはありませんでしたがLPS25Hには大気圧測定センサーの他に、温度を計測するセンサーも内蔵されています。2バイト、
16ビットで構成されるデータですが AM2321と違うところは2の補数でデータが表示されることです。
i2c通信により温度上位8ビットを" << 8 "で8ビット上位にずらし、温度下位の8ビットデータと Or(論理和) を取り温度の合計計算
をします。(この時点で代入演算子の種類により16ビットになったか、32ビットになったか把握しておいてください。)
2の補数なのでここでデータを全ビット反転し1を加えます。
もし、この8ビット温度データを最初に32ビットの int32 などに代入演算している場合は、代入した過程で全て0で埋めた上位
16ビットは反転するとその上位がすべてがffffになってします。データはとんでもない数値になるので、ここで得るべきデータと
0x0000ffff & (data) で論理積を取り、要らない上位ビットをマスクしてください。
最終的にはこうして得られたデータから TEMP = 42.5 - (float 又は double) (算出したデータ)/480; で温度が得られます。
(ややこしいと思う方は出来上がりのHEXファイルをダウンロードしてPICを焼いてください)

実験ボード上の写真しかありませんが、このような表示になります。この2桁16行のLCDは4桁の大きなLCDとは異なり
1番が(5V)、2番が(GND)への接続ですからくれぐれも間違いのないように、番号が
が逆になっていますので注意してください。4桁20行の大きいLCDは1番がアース、2番が5Vです。回路図面はAM2321の部分
を省いてもらえれば、LCDを間違えることなく付け替えればあとは全く同じ回路です。また室外・室内の測定を表示するB0,B1に
付いている赤、黄のLEDも要らないでしょう。