i2cセンサーのLPS25Hを使用して温度と気圧を測定しました。
データシートによると圧力センサーはMEMSで出来ているようです。
データシート
www.st.com
http://www.st.com/ja/mems-and-sensors/lps25h.html
Raspberry Pi との接続は、以下のようにRaspberry pi 側 4箇所
(VDD:電源、SCL:クロック、SDA:通信、GND )
デバイス側6箇所でした。
(上記に加えて、CS:i2cモード選択,SDO:デバイスアドレス選択)
ジャンパーワイヤーで接続すると抜けやすくて大変でした。
(ワイヤーが途中で抜けて、プログラムのエラーの原因が一時不明になった。)
プルアップはRaspberry Pi の内部で行われているので、不要です。
接続の回路図です。

次にプログラミングです。Pythonで作成しました。
通常のユーザーだとi2cのアクセス権限がない場合(未設定の場合)があります。
ユーザーグループにi2cを加えて下さい。
smbus の関数についてはなかなか理解ができず苦戦しました。
この接続の場合はデータのアドレスは0x5dになります。
大まかな流れとしては、
①通信確認(WHO_AM_I)としてレジスタアドレス0x0Fから0xBDを読み込む。
②モード切り替えのためレジスタアドレス0x20へ0x90を書き込む。
③レジスタから8bitデータを読み込む×5
④読み込んだデータを結合して気圧は24bit、温度は16bitのデータにする。(シフトして論理和で結合する。)
⑤補正の計算する。気圧:Pout(hPa) = PRESS_OUT / 4096、気温:T(°C) = 42.5 + (TEMP_OUT / 480)
⑥出力する。
作ったプログラムは以下です。




コメント