気圧センサBMP180モジュール(下図、およびリンク参照)を使用して、計測した気圧から標高を概算するアプリケーションを作って行きたいと思います。
よく、「高い山の上では空気が薄くなる」と言いますね?その通りに息苦しく感じたことがあるのではないでしょうか?高い山の上では気圧が低いため、酸素量も少なくなっているからです。
もっと身近な所でも実感した事があるとも推察します。例えば、高層ビルへエレベータで上ると、耳が痛くなったり違和感を感じたりします。これも、急速に上昇することで周囲の気圧が下がり、体内との気圧差で違和感を感じるのです。
一般に、標高が高いと気圧が下がります。
気圧と標高との間の関係が判ると、BMP180モジュールで測定した気圧値から、現地点の標高などを知ることができるはずです。気圧と標高の関係を調べてみましょう。
気圧と標高の関係式を検索する(別ウインドウが開きます)
カシオの計算ページが見つかると思います。今回はカシオの計算ページから、以下の関係式を使わせてもらいます。
気圧と標高の関係式:
経験的(実験的)に得られた式と言うより、物理的な計算で導いた式みたいです。ですので、0.0065や5.257などの定数は、他の物理定数に由来しています。
実は、BMP180データシートにも、似た様な式が掲載されていました。ただそちらは、T≒15℃に固定された式となっていました。BMP180を使うと、気圧Pだけではなく気温Tも測定できるのに、何で固定したのだろ?不可思議です。と言う事で、上で検索した関係式を採用しました。
気象庁が発表する気圧は、標高0mに換算した気圧です。これを基準地点の気圧P0に設定すると、BMP180で測定した気圧Pから求めた標高差hは、現在地点の標高と一致します。
※「標高」は東京湾の平均海面を0mとする高さの指標。「海抜」は付近の平均海面を0mとする高さの指標。と、言う事で、厳密には異なる指標だけど、「ほぼ同じ指標」として取り扱われることも多い模様。本ページでは標高に統一。
気象庁が発表する、標高0m換算の気圧が1気圧=1,013.25hPaだった時、富士山🗻の山頂ではどのくらいの気圧なのでしょうか?
思っていたより「低い気圧だな」、と言うのが感想です。過去の台風の統計データでも、930〜980[hPa]程度なので、富士山山頂の気圧は台風より、もっとずっと低い気圧でした。つまるところ気圧の変化は、気象影響よりも標高影響の方が支配的だと考えられます。
Pとhの関係式をグラフ化して見ると以下図となります。
ここで、ふと思いました、「スカイツリー634mって、高尾山の山頂より高いんだぁ」。
ちなみに、スカイツリーが建っている辺りの地面の標高は6m前後みたいです(※)。スカイツリーの高さ+6mが、標高ということですね。いずれにしても高尾山山頂よりも高い標高に達している電波塔なんです。
※逆に、これまた低いなぁ〜。この付近には、標高がマイナスな地域も見かけました。東京湾の平均海面より低い所もあるんですね。
筆者が大学時代によく使っていて、慣れ親しんだ圧力単位はTorr(トル)=mmHg(ミリメートルマーキュリ)でした。
従って、1気圧=760mmHg=760Torrです。
大学生だった頃、Torrと言う単位を何に使っていたか?と言うと:
Torrという単位はSI(※)では無いのだけど、そう言えば、原子レベルの長さを表すのにÅ(オングストローム)と言う単位も使っていたし、当時(筆者が現役時代)の大学では、SIの浸透は遅れていたっけ(1−_−)(遠い目)。SIに於ける気圧の単位はPa(パスカル)なので、今時の大学生はPaなのだろな……。
※SIは国際単位系の略称、フランス語由来。珍しく、英語由来ではない。言われてみると米国は、頑なに、インチ、フィート、マイル、ガロン、バレル、オンス、ポンド、華氏、等と非SIだものね。
日本の気象予報も、昔はmbar(ミリバール)と言う単位を使っていたのですが、数10年前にSIであるhPaに変更となりました(1992/12/01〜)。
1気圧=1,035.25mbar=1,035.25hPaです。
実は、mbar=hPaなので、当時の気象予報では単位が変わっただけで、数値自体は同じでした。お陰で、すんなりと切り替えて受け入れられた記憶があります。
日本は、基本的にSIな国です。
一部、非SIな習慣が残っていますが、基本的にはSIで決着しています。
※理科学者たる者(筆者の様な技術者(エンジニア)含む)、広く主張を展開する為に共通言語で議論するのが基本。その一環として、物理量の単位はSIであるべき。
最初の関係式に戻ると、
と、読み解くことができます。この特徴を使って、以下の様な用途に使用可能なアプリケーションが作成できます。
高い建物でエレベータなどを使って、比較的短い時間で移動した場合、ある程度高い精度で高度を推測できるかもしれませんね。トレッキングで低山に登る時、「どのくらいの高さまで登って来たのか?後どのくらい残っているのか?」概算することもできるでしょう。
しかし例えば、電車やバスなどで山岳地帯へ旅行するなど、基準点P0と測定点P間の移動に時間がかかる場合には、いくつか問題が発生します。
等、多数の誤差要因が考えられるのです。全てが影響すると、恐らく±数100m程度の誤差は出るのではないでしょうか??イヤ、個人的印象で根拠はありませんが……。逆に、直近の気象庁発表気圧データを調べて利用するなど、誤差影響を最小化する努力をすると、精度良く標高を推定できるかもしれません。
そんな誤差の影響を認知した上で使用可能なアプリケーションである事は頭に入れておいて下さい。
以前、BMP180モジュールをArduino UNOで読み取った時(「#31-1 気圧の測定」)、東京の気圧値と、BMP180モジュールで測定した気圧値を比較したグラフがありました(下図、再掲)。
既に取得してあった上図データを使い、ここまでの考察結果を机上検証しておこうと思います。
机上検証:
何よりも、気象庁発表の気圧と相関のある気圧を測定できていた事が良く解るグラフでした。これなら、想定した通りの性能を期待できます。次回、ソフトウェア設計から実験まで一気に駆け抜けます。