気圧センサMPL115A1

気圧センサMPL115A1をArduinoに繋いで気圧を測ってみました。

MPL115A1 SPI接続気圧センサモジュール


気圧センサに加えて、補償用の温度センサが入っています。*1 精度は"kPa accuracy"とのことなので、10hPaくらいは誤差範囲ってことでしょうか? (あまり精度よくない… BMP085の方が良かったかも。)


SPI接続のMPL115A1のほか、I2C接続のMPL115A2もありますが、インターフェースが違うだけで中身は同じようです。


書いたプログラム(Arduino用ライブラリ+気圧取得のサンプル)はこちら。ライブラリになってるので、~Documents/Arduino/libraries に放り込んで使います。
接続pinはサンプルの冒頭にあります。(SPIライブラリを使っているため、11〜13番ピンは固定、8,9はライブラリ初期化時に変えられます。)


実行画面はこんな感じ。hPa単位で値が表示されます。誤差結構あるような…


以下、ライブラリを書きつつ調べたりしたこと。

データシートを見てもSPIで値を取る方法が載ってなかったんですが、他所で見つけたサンプルプログラムを眺めたところ、

  • 読み込み時:(データシート中のアドレス×2) | 0x80 を送信→データ受信
  • 書き込み時:(データシート中のアドレス×2) & 0x7f を送信→データ送信

で良いようです。


ちなみにアドレス:$0から2byteが気圧センサのADC値(10bit)、アドレス:$2から2byteが温度センサのADC値(10bit)ですが、読み込み前にアドレス:$12に0を書き込んで計測を開始し、3msほど待つ必要があります。


補償に使う定数値(6つ)もセンサ内に格納されてるので、起動時に読み出しておき、計算に使っています。(浮動小数点なので結構分かりにくい。。)

*1:補償のための計算式はデータシートに載ってます。温度の単位は謎。