*

気圧センサを使ってみた-RaspberryPi/pigpioでMPL115A1

公開日: : C++, C言語, pigpio, RaspberryPi, 開発, 電子工作

どもです。
前回は、DHT11をRaspberryPi/pigpioで使用、温度を測定してみました。
今回は、同じ環境(RaspberryPi/pigpio)で大気圧センサーであるPL115A1を使用してみます。

1.開発環境

本エントリの内容は、下記の環境で作業を行いました。
PC本体:
OS:Windows10 Pro (バージョン:1903)
CPU:Intel Core i7-8700
メモリ:16GB

開発環境:
Eclipse Version:2019-06(4.12.0)
Build id:20190614-1200
RaspberryPi クロスコンパイラ:raspberry-gcc8.3.0

RaspberryPi:
ライブラリ:pigpio -v 71

2.配線

まず、ブレッドボード上の配線です。
配線図は、下記の通りです。
MPL115A1_raspi
MPL115A1との通信方法は、SPI通信になります。
なので、RaspberryPiもそのためのピンをしています。

3.使い方

MPL115A1では、大気圧を直接取得できません。
大気圧を取得するためには、必要な係数と値を取得して計算します。
ここでは、係数と値の取得方法について書いていきます。

3.1.MPL115A1との通信

MPL115A1からの値は、SPI通信で取得します。
このとき、通信方法としては「半二重」になります。
一応コードを示しておきます。

上記spiWrite()で送信しているcommandの値はメンドクサイここで書くと量が多くなってしまうので、MPL115A1のデータシートを参照して下さい。

3.2.係数の取得

大気圧を取得するために必要な係数は、a0、b1、b2、およびc12の3つがあります。
データシートによれば、各係数のフォーマットは、
a0→S12.3
b1→S2.13
b2→S1.14
となっています。
全て16bitの値です。
c12ついては、少し異なっています。
即ち、取得データのうち13bitがデータになり、その値は小数点第10位以下の値になります。
また13bitの範囲は、16bitの内の下記の範囲になります。
MPL115A1_bit_order
データシートに明記はされていませんが、最上位MSBの最上位ビットを符号ビットとしています。
係数の取得と変換のコードは、下記の通りです。

3.3.値の取得

大気圧を算出するために参照する値は、大気圧の値と温度の値になっています。
それぞれの値のサイズは、10bitです。
受信した2バイトのデータのうち、上位10bitの値を使用します。
実際に値を取得、抜き出す実装は下記になります。

3.4.大気圧の計算

これまで取得した値を使用して、大気圧を算出します。
算出は、下記の順番で実施します。
1.圧力補正を算出
2.大気圧を算出

それぞれの値は、下記の計算式で算出します。

  • 圧力補正

image009

  • 圧力補正

image011

この計算の実装は、下記になります。

上記関数の戻り値が、kPa単位の大気圧になります。

4.まとめ

今回は、MPL115A1からRaspberryPiで大気圧を取得する方法について記載しました。
このセンサー、データシートには明記されていませんが、実は気温も取得できるようです。
今回のエントリでは省略していますが、分かったら教えてください。

ではっ!

ex.公開しています

今回のエントリで作成したコードや資料は、GitHubで公開しています。
本エントリに記載したコードは、必要な個所のみとなっています。
全てのコードは、上記リンクから参照してください。

関連記事

source_trail_eye_catch

Sourcetrailを試してみました

どもです。 つい最近、ソースコードの解析に役に立ちそうなツールを見つけたので、ここで少し紹介をしま

記事を読む

toppers

C言語でEV3開発(18)-モードの遷移の設計-コマンド通信処理の準備

 どもです。  今回は、前回紹介したEv3とBluetoothで通信する機能を

記事を読む

think_about_utest

単体テストの効率化を考える(4)-スタブの引数(ダブルポインタ)

どもです。 「単体テストの効率化について考える」の4回目です。 1回目から3回目まではコチラ

記事を読む

think_about_utest

VisualStudioで実行した単体テストの結果の出力(1)-ファイルへの出力

どもです。 最近、VisualStudio/C#でよく開発しています。 その際に、当然ですが

記事を読む

Arduino_Logo

1台のarduinno nanoで割込みとSPIの同時使用

どもです。 先日手に入れたArduino nano(中華)で遊んでいます。 今回、この1台のAr

記事を読む

no image

C言語でEV3開発(4)

どもです。 今回のエントリーは、前回のエントリー内容/EclipseでEV3の実行ファイルをビルド

記事を読む

ADT7310_DHT11_eye_catch

温度センサの出力値の比較

どもです。 今回は、センサーの性能、測定結果を比較してみたので、それについて書きます。 1.

記事を読む

no image

C言語でEV3開発(10)-opOUTPUT_CLEAR_COUNTコマンド

どもです。 前回のエントリーのラストで、「モーターを動かすコマンド」と書きましたが、今回紹介するコ

記事を読む

think_about_utest

VisualStudioで実行した単体テストの結果の出力(2)-出力ファイルの読める化

どもです。 前回の続きです。 前回は、VisualStudio/C#での単体テストの効率

記事を読む

c_sharp_eye_catch

外部からMariaDbにアクセスする(1)-データベースの設定

どもです。 今回は、Linux上のMariaDbにWindowsからアクセスしてデータを取得で

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

arduino_relay_switch_002_ae_g5v_drv_eye_catch
Arduinoでリレースイッチ(2)-AE-G5V-DRV

どもです。 前回の記事では、「フォトカプラリレー」を使用したLチ

tlp222af_001_eye_catch
Arduinoでリレースイッチ(1)-TLP222AF

どもです。 つい先日、やっとのことでリレースイッチを手に入れるこ

c_sharp_eye_catch
外部からMariaDbにアクセスする(2)-C#からMariaDbにアクセスする。

どもです。 前回のエントリで、外部からMariaDbにアクセスす

c_sharp_eye_catch
外部からMariaDbにアクセスする(1)-データベースの設定

どもです。 今回は、Linux上のMariaDbにWindows

think_about_utest
middle_unit
最小…よりも(ほんの)少し大きいテストフレームワーク

どもです。 今回は、単体テストのフレームワークについて書きます。

→もっと見る

PAGE TOP ↑