mbed祭 2015@初夏の東銀座用資料
mbed祭 2015@初夏の東銀座で展示した、
「mbed HRM1017+BME280使用 結露モニタと LANケーブル利用I2C延長」
の資料です。
用意したプレゼンテーション資料です。うまく映せずすいませんでした。
別途用意していた配布資料+回路図です。
HRM1017用のコードは以下で公開しております。
以下、投稿当時の内容
スイッチサイエンス社から、BME280という温湿度気圧センサーが発売されました。
また、秋月で購入したHDC100という温湿度センサーを持っています。
これらを利用して、結露に関する情報を得られるモニタのプロトタイプを作ってみました。
概要
- mbedマイコン (最終的にBLEで情報を飛ばしたいと思っているので、mbed HRM1017を使っていますが、現段階では使っていないので他のmbedでも動くと思います。)
- 屋内用センサ: 秋月で購入したHDC1000 (温湿度センサ)
- 屋外用センサ: スイッチサイエンス社で購入したBME280(温湿度+大気圧センサ)
- プルアップ抵抗 10kΩ
- LANコネクタDIP化キット:秋月で購入したK-05404
- LANケーブル:LD-GPT/WH70 (7m Cat6対応ケーブル)
- カテゴリー6ケーブル(Wikipedia)参照
- T568B結線の半分(4本)を使っています。ピン番号ケーブル色信号名称1白/橙VDD (+3.3V)2橙SDA3白/緑VSS (GND)6緑SCL
- LEDは通常のLED(OSNG3133A, OSNR3133A)。電流制限抵抗3.9kΩ (3.3kΩ可)
配線図など
- パーツリスト
- 屋内(想定)モジュール#モジュール製品名称購入先備考1mbedmbed HRM1017スイッチサイエンス2I2C温湿度センサHDC1000使用温湿度センサーモジュール秋月電気通商I2Cのプルアップ抵抗搭載3LED1OSNG3133A秋月電気通商4LED2OSDR3133A秋月電気通商5抵抗3.3kΩ秋月電気通商HRM1017のGPIO電流制限0.5mA用に調整LEDは定格よりはかなり低い電流値で使用6抵抗3.3kΩ秋月電気通商同上7RJ45LANコネクタDIP化キット秋月電気通商
- 屋外(想定)モジュール#モジュール製品名称購入先備考1I2C温湿度・気圧センサBME280搭載 温湿度・気圧センサモジュールスイッチサイエンスI2Cのプルアップ抵抗未搭載2抵抗10kΩ秋月電気通商I2Cのプルアップ用3抵抗10kΩ秋月電気通商同上4RJ45LANコネクタDIP化キット秋月電気通商
- 実体配線図など
プログラム
今回使ったプログラムはmbed上に公開しました。https://developer.mbed.org/users/takafuminaka/code/Condensation_Monitor/
- 起動後10秒間、LED1(緑)とLED2(赤)を点灯させ、消灯します。
- 10秒周期で2つのセンサーの値を読み取ります。
- 結露を検知すると、LED2(赤)が点灯します。コンソール出力が有効な場合はそちらにメッセージを出します。(後述)
- 結露が近いと判断する(結露までの温度差がwarn_wid(℃)を下回る)と、LED1(緑)が点灯します。コンソール出力が有効な場合はそちらにメッセージを出します。(後述)
- warn_widは20℃と大きく設定しています。実運用では2~3℃に設定すると良いです。
- コンソール出力はmain.cppの”#define NEED_CONSOLE_OUTPUT 1”をコメントアウトすると抑制出来ます。
- コンソールをPC側で表示させない場合は抑制しないとmbed側の動作が停止すると思います。
- コンソール出力について
- 出力例In: 24.90 degC, 60.85 % Out: 26.10 degC, 55.20 %, 1011.04 hPaHumidity Ratio [g/kg] : In 11.79 Out 11.49Due Point Temperature [degC] : In 16.40 Out 16.819.70 degC to Condensation at Outside8.08 degC to Condensation at Inside9.29 degC to Condensation at Window Inside8.49 degC to Condensation at Window Outside
- 1行目に室内センサーの温度と湿度、室外センサーの温度、湿度、気圧が表示されます。
- 2行目に屋内外の絶対湿度が[g/kg]単位で表示されます。
- 結露対策のために換気をしても良いかどうかの目安となります。
例えば、屋内の湿度が高い場合に、屋外の絶対湿度が屋内よりも低ければ、換気をするだけで湿度が低下します。
逆に屋外の絶対湿度が屋内よりも高い場合は、湿分を取り込むことになるので換気をすると屋内の湿度が上がります。 - 3行目に屋内外の露点が表示されます。
- 4行目以降は警告あるいは注意表示です。
- 上記の例は、後何度下がると何が起こるかが表示されています。
- 最初の行は屋外の温度と露点を比較し、あと何度で結露するかを表示
- 次の行は屋内の温度と露点を比較し、あと何度で結露するかを表示
- 次の行は屋外の温度と屋内の露点を比較し、あと何度屋外が冷えると窓が結露するかを表示
- 次の行は屋内の温度と屋外の露点を比較し、あと何度屋内が冷えると窓が結露するかを表示
- もし、露点を下回った場合は結露が発生したとみなし、” Condensation at XXX”あるいは” Condensation at Window XXX”の様にメッセージを出します。
理屈
温湿度が分かれば、露点が計算できます。
さらに気圧が分かれば、絶対湿度が計算できます。
室内外の計測情報を活用すると、結露しているのかどうか、あるいは、あと何度で結露するのかが分かります。
今回のプログラムでは、ここやここの式を利用して計算しています。
LANケーブルによるI2C延長について
シリアル拡張ICサンプルブックやI2C仕様書等を参考に考察と実験を行い、上記ケーブルを使いました。ツイストペアケーブルを使ったバス延長はI2C仕様書p.60に説明があります。
そこで、Cat6の15mケーブルを借りてきて試したところ、3.4Mhz(設定値ベース)で通信可能でした。
プロの方いわく、「シングルエンドの信号なんで,インピーダンスの低い線とペアで扱うことにより良好な結果が得られる」のだそうです。
- Cat5e 15mのケーブルでも成功(100kHz設定)
- Cat6 15mのケーブル3本を延長コネクタで接続(つまり45m!!)しても成功(100kHz設定)
結局限界は今回は分からずじまいでした。私の用途では、十分すぎる性能です。
本当は、数mでうまく動かなくなり、サンプルブック付属のバッファICで延長するという計画だったのですが、無くても動くという、思わぬうれしい誤算でした。
(2015-05-19追記)
Labtoolで取得したI2Cバスの様子です。
アナログ波形はずいぶん歪んでいるようです。
また、I2Cの周波数指定はうまく効いていなかったようで、100kHz動作です。
0 件のコメント:
コメントを投稿