google-site-verification: google3bd66dd162ef54c7.html

アナログ気圧計2号機、気圧センサーLPS25Hの設定

 時計の長針で気圧をアナログ表示させる気圧計作りの話の続き、今回は気圧センサーのLPS25Hを動かすプログラムを作ります。
 以前高度計を作った時にLPS25Hを使ったので、その時のプログラムが流用出来ると思っていたのですが、以前作った物はSPIインターフェイスで動かしていました。今回はI2Cで動かす予定なのでそのままプログラムを流用することは出来ません。また、今回は電池で長期間動かすために消費電流を極限まで少なくなるように設定する必要があります。

 ということで、LPS25HをI2Cバスに接続してテスト開始です。

 ところで、I2Cインターフェイスの部品でトラブルがあった場合まずは、I2Cインターフェイスの問題かデバイス自体の問題か切り分ける必要があります。そこでハードの接続が終わったら最初に、I2Cdetect I2Cdump のプログラムを使ってI2Cバス経由でデバイスと正常に通信出来ているか確認しておくと安心です。ということで、私の作ったプログラムの宣伝でした。

 ともかくI2Cバスが正常に動いていることが確認出来たので、LPS25Hの設定を開始します。

▼プログラムの条件を変えてあれこれテスト
デバッグ中
 ミニオシロ(DSO Shell)でI2Cバスを見ながらプログラムの設定を変えていきました。

 出来るだけ少ない消費電流になるようにLPS25Hを設定します。そのためのポイントは、
1) 待機時はパワーダウン状態にして消費電流を減らす。(これで消費電流は0.5μAになるはず)
2) 上記の条件で動かすためにワンショットモードで使用。
3) アベレージング効果と処理時間のバランスを取る。なお、FIFOは使わない。

 上記の1)、2)項はPDビットとONESHOTビットを使えばOKなはずです。またワンショットの開始と完了確認方法についてはアプリケーションノート AN4450 Application note Hardware and software guidelines for use of LPS25H pressure sensor の4.3 One-shot mode measurement sequence に記載されていた手順で行うことにしました。

 気圧測定のアベレージング回数は8回、32回、128回、512回の4種類が指定出来ますが、各々の設定を行った場合の測定結果のバラツキ(標準偏差)と処理時間の関係を調べると結果は以下のようになりました。なお、標準偏差は測定を200回行った結果から求めたものです。
AVGP1AVGP0アベレージング回数測定結果の標準偏差(hPa)処理時間(ms)
0080.1457.7
01320.08279
101280.046115
115120.0370138
 注:上記の処理時間には測定条件の設定なども含んでいます。

 アベレージング回数を増やすと標準偏差は減りますが、処理時間は増えていて、まあ予想通りの挙動です。ともかくアベレージングはうまく行われているようなので一安心です。

 今回作る気圧計は表示の更新に1秒くらいの時間は必要で、測定(アベレージング)に38msかかってもゴミみたいなものです。ということで、測定ばらつきを少しでも小さくするためにアベレージング回数は最大の512回でいくことにします。

 こう書くと順調に調査が進んだように見えますが、実際には不可解な現象が発生して解決に手間取りました。その現象というのは、繰り返し測定を行っていると突然測定結果がプラス方向に0.5hPa程度ホップするというものです。グラフにすると下記のような現象です。

▼気圧の測定結果が時々上にホップする
気圧測定結果異常
 一度ホップするとしばらく同じ状態が続きます。またこの現象はランダムなタイミングで発生するみたいでした。

 いろいろ調べたのですがこの現象の解決方法は判りませんでした。ひょっとしてこのセンサーの個体の問題かと思って、別の物に組み込んでいたLPS25Hを取り外して試してみると問題は起こりません。

▼LPS25H 右がダメ、左がOK
LPS25H

 センサーが不良なのか、まだ何か設定の問題があるかも知れませんが、解決に時間がかかりそうなので、問題の無い方のセンサーを使うことにしました。これ安易な解決方法なので後で問題が再発しないか一抹の不安がありますが、ともかく先に進むことにします。

 次は消費電流の確認です。

 待機中はLPS25Hをパワーダウンモードに入れているので消費電流は極小になるはずです。データーシートでは 0.5μAになると書かれていますが本当にそうなっているか実測で確認してみました。

▼全体の消費電流
待機時消費電流
 これは5V→3.3VシリーズレギュレーターとCPUのAtmega328P、さらにこの気圧センサ(LPS25H)の消費電流の合計の値です。33.27μAなのでこれなら大丈夫そうです。
 ちなみに大雑把な内訳としては、シリ-ズレギュレータが5μA、CPUが28μA、気圧センサが0.5μA消費しています。

 実はここでもちょっとした落とし穴があって、最初は気圧センサのパワーダウン中の消費電流が6.5μAもありました。データーシートによるとパワーダウン中の消費電流は0.5μAとなっているので10倍以上も多くてちょっと納得がいきません。

 ということで調べてみると、I2Cアドレスの選択ピン(SA0)をLowにすると消費電流が増えることが判りました。たぶんこのピンは内部で抵抗でプルアップされていて、SA0をLOWにすることで電流が流れ続けるのだと思います。
 対策としてSA0をHighにして使ってみると消費電流は仕様通り0.5μAまで減らすことができました。たぶんプルアップ抵抗に無駄な電流が流れなくなったのだと思います。ともかくそんな事情があるので、LPS25HのI2Cアドレスは0x5Dで使うことにしました。
 なお、6.5μAなんてゴミだからケチケチするなと言われそうです。でも一年間では57mAhになり、ボタン電池の容量くらいの電流量に匹敵するのでバカにはなりません。

◆まとめ
 今回の記事は図が無くて文章でゴチャゴチャと書いて判り難くなってしまいました。ともかくこれで気圧センサーの設定方法は判りました。

 あと残るのは電池電圧の検出方法と電池が空になった時の表示をどうするかです。そのあたりの話は次回の記事で触れる予定です。
関連記事

コメントの投稿

管理者にだけ表示を許可する

カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード