気圧高度計

製作:2015年7月~11月
執筆:2015年11月7日
全景 自動車の長時間の運転や高速道路のような自由に休憩できない道路では、疲労や目の錯覚で水平感覚が狂いやすく、ふと気が付くと速度が落ちていることがあります。 速度が遅いなぁと思いつつアクセルを踏んでも加速が緩慢で、頂上付近に差し掛かったところで思ったよりも急な坂を上っていたんだと気付くこともあります。 今回は主に自動車で使用するための高度計を製作しました。

坂道を判断するためになぜ高度計なのか?

計器 坂道を判断するなら傾斜計じゃないのか?と思うでしょうが、勾配の角度はごく浅く、結構急な6%の坂でも角度は3.4度しかありません。 飛行機の場合は機首上げ10度のように大きく変動しますが、道路の場合は路面からの振動も加わるのであまり理想的ではありませんし、センサの置き場所の水平取りも大変です。

飛行機には自分の姿勢を確認する水平儀の他に、気圧の変化で動作する高度計と昇降計があります。 昇降計とはその瞬間の上昇・降下の度合いを示す計器で、1分間に高度が何フィート変化するかを知ることができます。 つまり高度を一定間隔で測定し、前回からの差分を求めると上昇降下が分かることになります。

使用した高度センサ MPL3115A2

MPL3115A2 高度を測定するにはGPSを使う方法もありますが、トンネル等の電波の届かない場所では役に立ちませんので気圧を計測するタイプを使います。 このセンサの内部では気圧から高度へ計算が行われ、結果が1秒ごとに固定小数点で1/16メートル(0.0625m)単位で出力されます。 同時に前回計測してからの差分値も取得できるので、結果をそのまま昇降計として使えます。 気圧高度計で重要になる高度計規正値の入力も可能で、あらかじめ規正値をセットしておくと自動的に高度へ反映してくれます。 ちなみにMPL115A2という気圧センサもありますが、あれは気圧測定しかできないので高度変換のプログラムを自分で実装しないと使えません。

ハードウエア

メインの処理には毎度おなじみのPIC 16F88を3Vのリチウム電池(CR123A)で駆動します。 高度センサはI2Cで通信しますが、16F88にはマスターI2Cの機能が無いためソフトウエア制御になります。 I2Cのプルアップ抵抗は省電力のために高めの10kΩとしていますが、問題なく動作しています。
表示部にはNokia5510の84×48ドット白黒液晶を使い、数値表示やグラフで連続的な変化を表示できるようにしています。 この液晶はPICのハードウエアSPIで制御します。

画面操作にはプッシュスイッチ付きロータリーエンコーダを使いました。 このプルアップ抵抗も極力高い抵抗値を選び、チャタリング防止のためにシュミットトリガのポートに入れています。 PICの割り込みピンに入っているのでPICをスリープにした時にウェイクアップさせることが可能ですが、スリープ中の電流消費を防ぐためロータリーエンコーダがプルダウンにならない位置でスリープに入るようにしました。

ソフトウエア

ソースリスト Ver.0.62

高度計

高度は1秒間隔で計測し、0.1m単位か1ft単位で表示します。小さなサブ文字で両方の単位の表示も可能。昇降計は0.01m/秒単位か1ft/分単位の数値と、左側のバーグラフで視覚的に表示させます。 下に表示されている"30.24in"というのは気圧高度計の規正値です。気圧を計測しているので、周囲の気圧が高い時は高度は低く、気圧が低い時は高度は高く指示してしまいます。 そのため、現在いるエリアの基準気圧をセットすることで同じ高度が表示されるように補正します。規正値はロータリーエンコーダを使ってhPaと水銀柱インチのどちらでも設定が可能。

高度グラフモードでは現在高度とともに過去60計測分のグラフが表示されます。設定画面でドット間の計測間隔が設定可能で、最大60分のグラフが表示できます。 実際の走行では瞬間的な数値を表示する昇降計よりもグラフの方が使い勝手がよく、なんだかさっきから変だなぁという具合の変化を確認するのに非常に便利です。 右の写真では1ドット3秒間隔で3分間の表示になっています。

気圧計

この高度センサには気圧と気温を出力する機能も備わっています。 気圧はhPaと水銀柱インチを表示できるので、ここに表示されている数値を高度計の高度計規正値に利用するとゼロメートルを指示してくれます。 気温は摂氏と華氏の両方を表示しますが、日本では華氏があっても馴染みが無いのでほとんど役に立たないですね。

過去のグラフは最大96時間まで計測間隔を延ばせるので、お天気の傾向メーターとして使うこともできます。

設定画面

設定画面ではスリープに入ったりEEPROMに保存されている単位やグラフ設定の変更機能があります。 一度設定したら二度と変更しないようなパラメータもあって無駄なプログラムだなぁと思うのですが、いろいろ変更できる方が楽しいんです。 Sleepと表示されている項目はロータリーエンコーダの位置によって"スリープ"と"測定画面に戻る"のどちらかが表示され、スリープ中の電力消費を抑えるようになっています。

グラフを使いやすくする工夫

オフセット表示 グラフ表示は最新のものが一番右に表示され、左向けに流れていきます。 画面の上下限の内側4ドットに閾値を設けておき、そこを超える値が計測された場合は、グラフ全体をオフセットさせて常に最新の値を適切な範囲に表示させるようにしています。 もし閾値を設けずに上下限付近の値をふらついていた場合、特に下限では全くグラフが表示されずとても見にくくなってしまいます。

また、無いと意外に困るのがY軸のガイド数値です。 グラフのエリアを広げたくて横幅いっぱいまでグラフを描画してた時期もあったのですが、雰囲気だけのグラフになってしまいがちで実際にどれくらい上下しているのかさっぱりわかりません。 この辺りを盛り込む事で見栄えがぐっと良くなりました。

使ってみて分かった事

トンネル内の挙動

製作過程で苦労した点