LabVIEWとBME280で温度・湿度・気圧測定

Bosch社の BME280 センサを使って、LabVIEWとMCP2221Aを組み合わせて温度・湿度・気圧を測定してみた。MCP2221Aの代わりに CP2112を使う場合には Vectorでドライバが配布されている(プログラムを参考にさせて頂きました)。

関連記事:MCP2221Aを使ってLabVIEWで I2C通信

あらかじめやっておくこと

LabVIEW Home Bundleの入手とインストール。

BME280モジュールの入手。
秋月電子ス イッチサイエンスス トロベリーリナックスなどで入手可能。

MCP2221Aインターフェースボードの入手。
https://www.marutsu.co.jp/pc/i/1360420/

回路を組む。
VDD(VIN), GND, SCL, SDA の4つを繋ぐだけなので簡単。
回路の電圧は3.3Vにする。
インターフェースボード上でプルアップがされているので追加の抵抗はいらない。
(Aliexpressで購入したBME280モジュールを使ったが、こちらでもプルアップされてるみたい)

MCP2221AをLabVIEWで使えるようにしておく。
関連記事:MCP2221Aを使ってLabVIEW でI2C通信


MCP2221Aインターフェースボード


メーカー:みんなのラボ http://wakanyan.net/index.html

購入先:マルツオンライン https://www.marutsu.co.jp/pc/i/1360420/

紹介記事はこちら

プログラミング


↓クリックで拡大。長いよ。

測定画面。温度、相対湿度、気圧が表示される。

プログラムは大きく分けると
        writeReg(測定条件を書き込む)
        readTrim(補正値を読み込む)
        readData(測定と補正計算)
の3つ。

Get Connected Devices
        MCP2221AがPCに接続されている数を調べる。MCP2221AのVID(04D8)とPID(00DD)を指定する。

Open By Index
        MCP2221AのVID(04D8)とPID(00DD)を指定してICを使い始める。

I2c Write ✕3
        BME280のアドレスは0x76。
        " T " をつないで7bitのアドレス(0x76)を8bitに変換している。
        測定条件を書き込む
        0xF2(ctrl_hum)に 1 (0b001)
        0xF4(ctrl_meas)に5bitずらして1、2bitずらして1、そして3  (0b00100111)
        0xF5(config)に5bitずらして3、2bitずらして0、そして0  (0b01100000)
  ↓は BME280 データシート より引用。
       

I2c Write, I2c Read ✕3
  BME280がそれぞれに持つ固有の補正値を読み出す。
  0x88から24バイト、0xA1から1バイト、E1から7バイトを読み出し、
  これらを合わせて、T1~T3, P1~P9, H1~H6 を得る。
  ↓は BME280 データシート より引用。
    

I2c Write, I2c Read
        温度・湿度・気圧を測定する。
        0xF7から8バイト読み出して、pres_raw(気圧), temp_raw(温度), hum_raw(湿度) を得る。
        temp_raw, T1~T3 から温度と t_fine を求める。
        hum_raw, t_fine, H1~H6 から湿度を求める。
        pres_raw,  t_fine, P1~P9 から気圧を求める。

  計算方法には何種類かあり、用途によって使い分ける。
    ・APIを使用する(推奨)
    ・32bit符号付き整数で計算
    ・圧力のみ64bit、他は32bit符号付き整数で計算
    ・倍精度浮動小数点で計算(PCアプリケーション用)
  今回はPC(LabVIEW)を使うので高精度の倍精度浮動小数点で計算する。
  BME280 データシート 8. Appendix A(p.49)の計算式をLabVIEWにコピペして、
  doubleをfloat64(LabVIEW の倍精度浮動小数点)に直す。

  
   ↓
  

Close
        ループが終了したら最後に終了処理を行う。


ダウンロード


MCP2221A_BME280.vi  (上で書いたもの)



memo


参考にさせて頂きました。
http://www.ne.jp/asahi/shared/o-family/ElecRoom/AVRMCOM/BME280/BME280test.html
http://toolsbox.biz/product/LVBME280/index.html