Translate

ページ

2015年5月1日金曜日

結露モニタ プロトタイプ(BME280とHDC1000使用)

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
      SDA
      3
      /
      VSS (GND)
      6
      SCL


  • LEDは通常のLED(OSNG3133A, OSNR3133A)。電流制限抵抗3.9kΩ (3.3kΩ可)


配線図など

  • パーツリスト
    • 屋内(想定)モジュール
      #
      モジュール
      製品名称
      購入先
      備考
      1
      mbed
      mbed HRM1017
      スイッチサイエンス

      2
      I2C温湿度センサ
      HDC1000使用
      温湿度センサーモジュール
      秋月電気通商
      I2Cのプルアップ抵抗搭載
      3
      LED1
      OSNG3133A
      秋月電気通商

      4
      LED2
      OSDR3133A
      秋月電気通商

      5
      抵抗
      3.3kΩ
      秋月電気通商
      HRM1017GPIO電流制限0.5mA用に調整
      LEDは定格よりはかなり低い電流値で使用
      6
      抵抗
      3.3kΩ
      秋月電気通商
      同上
      7
      RJ45
      LANコネクタ
      DIP化キット
      秋月電気通商

    • 屋外(想定)モジュール
      #
      モジュール
      製品名称
      購入先
      備考
      1
      I2C温湿度・気圧センサ
      BME280搭載 温湿度・
      気圧センサモジュール
      スイッチサイエンス
      I2Cのプルアップ抵抗未搭載
      2
      抵抗
      10kΩ
      秋月電気通商
      I2Cのプルアップ用
      3
      抵抗
      10kΩ
      秋月電気通商
      同上
      4
      RJ45
      LANコネクタ
      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 hPa
    Humidity Ratio [g/kg] : In 11.79 Out 11.49
    Due Point Temperature [degC] : In 16.40 Out 16.81
    9.70 degC to Condensation at Outside
    8.08 degC to Condensation at Inside
    9.29 degC to Condensation at Window Inside
    8.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 件のコメント:

コメントを投稿