Метеостанция: от давления к погоде
Урок-практикум: из показаний датчиков давления, температуры и влажности делаем осмысленные погодные величины.
Метеостанция — связка датчиков (давление, температура, влажность), показания которых пересчитываются в производные величины: давление на уровне моря и точку росы.
Сырое давление зависит от высоты, поэтому метеосводки приводят его к уровню моря. А по температуре и влажности считают точку росы — температуру, при которой выпадет конденсат. Соберём оба расчёта.
Приведение давления к уровню моря
Барометрическая формула связывает измеренное давление $p$ на высоте $h$ с приведённым к морю:
$$ p_0 = p \left(1 - \frac{0{,}0065\,h}{T + 0{,}0065\,h + 273{,}15}\right)^{-5{,}257} $$
где $T$ — температура в °C, $h$ — высота в метрах.
def sea_level_pressure(p, h, T=15):
return round(p * (1 - 0.0065*h / (T + 273.15 + 0.0065*h)) ** -5.257, 2)
# на высоте 500 м прибор показал 950 гПа
print(sea_level_pressure(950, 500), "гПа")Вывод:
1007.7 гПа
Точка росы (формула Магнуса)
Точка росы $T_d$ из температуры $T$ и относительной влажности $RH$:
$$ \gamma = \frac{a\,T}{b + T} + \ln\frac{RH}{100}, \qquad T_d = \frac{b\,\gamma}{a - \gamma} $$
с константами $a = 17{,}27$, $b = 237{,}7\,°C$.
import math
def dew_point(T, RH):
a, b = 17.27, 237.7
gamma = (a*T) / (b + T) + math.log(RH / 100)
return round((b*gamma) / (a - gamma), 2)
print("25°C, 60% -> точка росы", dew_point(25, 60), "°C")
print("25°C, 90% -> точка росы", dew_point(25, 90), "°C")Вывод:
25°C, 60% -> точка росы 16.68 °C 25°C, 90% -> точка росы 23.24 °C
Как работает под капотом
Заметьте: ни одна из этих величин не измеряется напрямую — обе вычисляются из нескольких сырых показаний. Это типично для прикладной сенсорики: датчики дают первичные величины, а полезный результат — производный. Перед расчётами показания стоит профильтровать (раздел 5): давление и влажность шумят, и точка росы, считаемая через логарифм, чувствительна к шуму влажности. На реальной станции цепочка такая: сырой код АЦП → калибровка → фильтр → производная величина → отображение.
Частые ошибки
- Показывать сырое давление без приведения к уровню моря — его не сравнить со сводкой.
- Подставлять влажность в процентах туда, где нужна доля (или наоборот).
- Считать точку росы по нефильтрованной влажности — логарифм усилит шум.
Итог
- Полезные погодные величины — производные от нескольких датчиков.
- Давление приводят к уровню моря, точку росы считают по Магнусу.
- Перед расчётом производных величин показания фильтруют.