Pressure Sensor

大型の台風18号と19号が連続で発生して、それに合わせたわけでは無いと思うが秋月電子通商で大気圧センサをDIP基板化したモジュールが発売されたので、台風19号の上陸前に入手して試してみた。

インターフェースはI2CとSPIが選択可能で、Raspberry Piでは不要だがI2C使用時はジャンパーでプルアップ抵抗も有効にできる。LEDも載っていて通電すると光るのだが、これは不要な気がする。コマンドからの応答が無い時に、通電してないのか他の要因なのかが識別できる程度のメリットしか無い。まあこのモジュールをそのまま製品に使う事は無いだろうし、ブレッドボードで実験するだけなら消費電力が僅かに増えるのも気にはならないだろう。

使用方法はデータシートに記載されている通り、最初にパワーダウンモードから復帰させてあとは24ビットのデータを3つのレジスタから読み出せば良い。読み出した値を4096で割ったものが気圧(ヘクトパスカル)になる。

プログラムは以下の通り

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import quick2wire.i2c as i2c
import time
import sys

LPS25H = 0x5c

def i2c_read(addr, reg):
    with i2c.I2CMaster() as bus:
        data = bus.transaction(
                    i2c.writing_bytes(addr, reg),
                    i2c.reading(addr, 1))
        return data[0][0]

def i2c_write(addr, reg, data):
    with i2c.I2CMaster() as bus:
        bus.transaction(i2c.writing_bytes(addr, reg, data))

def get_press(addr):
    xl = i2c_read(addr, 0x28)
    l  = i2c_read(addr, 0x29)
    h  = i2c_read(addr, 0x2A)
    p = h >> 16 | l >> 8 | xl
    return round(p / 4096, 1)

def get_temp(addr):
    l = i2c_read(addr, 0x2B)
    h = i2c_read(addr, 0x2C)
    t = h >> 8 | l
    if t & 0x8000:
        t = -((t - 1) ^ 0xFFFF)
    return round(42.5 + (t / 480.0), 2)

if __name__ == '__main__':
    whoami = i2c_read(LPS25H, 0x0F)
    if whoami != 0xbd:
        print('device incorrect.')
        sys.exit()
    i2c_write(LPS25H, 0x20, 0x90)
    time.sleep(1)
    try:
        while True:
            pha = get_press(LPS25H)
            print(pha, "hPa")
            temp = get_temp(LPS25H)
            print(temp, "C")
            time.sleep(1)
    except KeyboardInterrupt:
        print('\nbreak')            

実際に台風19号が関東上空を通過している時にこのプログラムを動かして見ていると、グングン気圧が下がっていったのが面白かった。気象庁が一時間おきに発表している東京都の計測データと照らし合わせると1hPa程度低い値になっていたが、これは観測地点の差によるものだろう。

ちなみにこのモジュール内には温度センサも内蔵されていて、同時に読み出してみるとADT7410を使用した温度センサモジュールよりも0.5℃ほど低い値を示した。正確な温度計が無いのでどちらが正しいのかは分からないのだが、大気圧センサに内蔵されている温度センサは気圧の補正用途で、あまり精度は高くないらしい。温度センサの値はだいたいの目安程度に考えたほうが良いだろう。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中