In a certain project, I need to calculate the altitude of the current location given the current location temperature and current location pressure. T... ...
基本概念
標準大氣壓:表示氣壓的單位,習慣上常用水銀柱高度。例如,一個標準大氣壓等於760毫米高的水銀柱的重量,它相當於一平方釐米面積上承受1.0336公斤重的大氣壓力。由於各國所用的重量和長度單位不同,因而氣壓單位也不統一,這不便於對全球的氣壓進行比較分析。因此,國際上統一規定用"百帕"作為氣壓單位。
經過換算:一個標準大氣壓=1.013×105帕。
1個標準大氣壓=760mm水銀(汞柱)柱高。
海拔(Elevation),是指地面某個地點高出海平面的垂直距離。是某地與海平面的高度差,通常以平均海平面做標準來計算。海拔的起點叫海拔零點或水準零點,是某一濱海地點的平均海水面。它是根據當地測潮站的多年記錄,把海水面的位置加以平均而得出的。
大氣壓與海拔高度的關係是:高度增加,大氣壓減小;在3000M範圍內,每升高12M,大氣壓減小1mmHg,大約133Pa。
大氣對浸在它裡面的物體產生的壓強叫大氣壓強,簡稱大氣壓或氣壓。 1654年格裡克在德國馬德堡作了著名的馬德堡半球實驗,有力地證明瞭大氣壓強的存在,這讓人們對大氣壓有了深刻的認識。然而早在1643年,義大利科學家托里拆利就在一根1米長的細玻璃管中註滿水銀(汞)倒置在盛有水銀的水槽中,發現玻璃管中的水銀大約下降到760毫米高度後就不再下降了。這760毫米刻度之上的空間無空氣進入,是真空。托里拆利據此推斷大氣的壓強就等於水銀柱產生的壓強,這就是著名的托里拆利實驗。標準大氣壓為:1.013×10^5Pa(帕斯卡),等於760mmhg(毫米汞(水銀)柱)
顯而易見的是可以通過大氣壓推算海拔高度,有趣的是,這個簡單的內容居然在國內的網站上很難搜索。有英文資料,鏈接在此。閑話不說,請看公式
1. hypsometr ic 公式
/// <summary> /// Hypsometric演算法計算海拔高度 /// </summary> /// <param name="CurrentPressure">當前大氣壓</param> /// <param name="CurrentTemperature">當前溫度</param> /// <returns></returns> public decimal Hypsometric(decimal CurrentPressure,decimal CurrentTemperature) { return (decimal)(Math.Pow(Convert.ToDouble(101.325M / CurrentPressure), Convert.ToDouble(1 / 5.257M)) - 1) * (CurrentTemperature + 273.15M) / 0.0065M; }
2. barometric 公式
/// <summary> /// Barometric 演算法計算海拔高度 /// </summary> /// <param name="CurrentPressure">當前大氣壓</param> /// <returns></returns> public decimal Barometric(decimal CurrentPressure) { return 44330 * (1 - (decimal)Math.Pow(Convert.ToDouble(CurrentPressure / 101.325M), Convert.ToDouble(1 / 5.255M))); }
3. 測試
使用MS5611讀取數據,大約1分鐘,數據繪圖如下:
兩者大約相差15米,兩者走勢幾乎重合。經過計算,藍色線(不使用溫度)的方差為 0.6437,橙色線(使用溫度)的方差為 0.6828。
參考資料:
https://physics.stackexchange.com/questions/333475/how-to-calculate-altitude-from-current-temperature-and-pressure
https://keisan.casio.com/exec/system/1224585971
— 完 —
本文來自博客園,作者:古道輕風,轉載請註明原文鏈接:https://www.cnblogs.com/88223100/p/Calculate-altitude-based-on-temperature-and-air-pressure.html