Bosch社BME280 をLabVIEW環境で使用したい

I2CデバイスをLabVIEWからアクセスしたいと思うことは多々あります。一般にはNI-845xというデバイスを使用してアクセスする方が多いと思いますが、如何せん高価です。解析に使用するならまだしも。。。。

そこで、安価なデバイスとしてサンハヤト社のMM-CP2112を使用してI2Cデバイスにアクセスできるようにしました。参照LV-CP2112

実際に動作確認をすべく、I2CデバイスのターゲットとしてBosch社のBME280を採用しました。
https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280_DS001-11.pdf

chipのまま使用するのは大変です。上記のようにブレッドボードに差し込んで使用する事として、ストロベリーリナックス製のモジュールを購入し動作確認をしています。
https://strawberry-linux.com/catalog/items?code=12280
ただ、残念なことにストロベリーリナックス社はBME280のサポートは余り良くなくて、サンプルプログラムを提供していません。実際のところ、難解な演算をしないと実ディメンジョンのデータになりません。Bosch社の提供するデータシートにサンプルプログラムが載っていますので、それを元にコードすることになります。


VITreeは以下のようになっています。


オブジェクト自体はベクター殿のストレージをお借りしています。

URL

出来る事は、


実際にExampleを実行した例を挙げておきます。

BME280は基本的にスレーブアドレスは2つ、$EC($76)か$EE($77)です。()内7bit表記。CP2112は8bit表記が一般です。
Config($F5)でスタンバイ時間、IIRフィルタ、3線SPI有効無効を設定できます。
Ctrl_meas($F4)で温度測定有効/無効、気圧測定有効/無効、測定モードの設定が出来ます。
($F2)で湿度測定の有効/無効が設定できます。
Status($F3)でステータス確認が出来ます。
このExampleでは計測前に補正データを取得して、計測を開始し、取得データを補正して実ディメンジョンのデータを求めグラフ化しています。
温度データを湿度・気圧値の演算に使用するため、温度取得は絶対必要です。
演算を整数のまま実行するか、浮動小数点演算するか選択できるようにしています。オンタイムで変更可能です。
温度値で0.1℃程度の差が出ます。
レジスタマップを一覧できるExampleを用意しています。実行中のレジスタマップを一覧モニタするような事も可能です。