根据温度、气压计算海拔高度
基本概念
标准大气压:表示气压的单位,习惯上常用水银柱高度。例如,一个标准大气压等于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