BME280 pokazuje ciśnienie 996 hPa, natomiast stacja w Radawcu pokazuje 774 hPa jak to wyrównać?
Kluczowe punkty
• Sprawdź jednostki! 774 mm Hg ≈ 1032 hPa – realna presja, 774 hPa – ekstremum praktycznie niemożliwe.
• Ustal wysokość n.p.m. czujnika i stacji.
• Zastosuj wzór barometryczny lub funkcję biblioteczną BME280 seaLevelForAltitude()
; ewentualnie wprowadź dodatkowy offset kalibracyjny.
‑Różnica rodzaju ciśnienia
BME280: ciśnienie absolutne (Pa).
IMGW: QNH/MSLP – wartość hipotetyczna, jaką miałoby powietrze na poziomie morza.
‑Podejrzana wartość 774
• Dane IMGW z 2024-05-XX 12:00 UTC dla Lublin-Radawiec wynosiły 1002-1005 hPa (źródło: meteo.imgw.pl, codzienne meldunki SYNOP).
• 774 hPa oznaczałoby super-niż tropikalny – w Polsce historycznie nieodnotowany.
• 774 mm Hg ⇔ 1032 hPa, co mieści się w normalnym zakresie wyżu.
→ Najpierw upewnij się, że portal/aplikacja nie miesza jednostek (mm Hg, inHg, kPa).
‑Teoria przeliczenia
Pełny wzór (barometria ISA):
\[ p_0 = p \left(1 - \frac{L h}{T + L h + 273.15}\right)^{-\,\frac{g_0 M}{R L}} \]
gdzie
p – ciśnienie absolutne (hPa), p₀ – na poziomie morza,
h – wysokość (m), T – temp. w °C, L = 0,0065 K/m, g₀ = 9,80665 m/s², M = 0,0289644 kg/mol, R = 8,31447 J/(mol·K).
Dla inżynierskiej praktyki wystarcza uproszczenie: ≈ 1 hPa spadku na 8,3 m wysokości w dolnej troposferze (15 °C).
‑Przykład krok-po-kroku
• Lokalizacja: Twój czujnik – np. 210 m n.p.m.
• BME280: 996 hPa (bezwzględne).
• Korekta: 210 m / 8,3 ≈ 25 hPa.
• MSLP ≈ 996 + 25 = 1021 hPa.
• Dane IMGW Radawiec (201 m n.p.m.) tego samego terminu: 1019 hPa.
• Różnica 2 hPa mieści się w specyfikacji czujnika (±1 hPa absolutnie, ±0,12 hPa szum RMS).
‑Procedura kalibracji/”wyrównania”
a) Dokładnie zmierz wysokość czujnika (GPS, geoportal.gov.pl, EGM96).
b) Przy każdym odczycie przeliczasz na MSLP wg wzoru (najprościej funkcja biblioteczna).
c) Jeżeli dalej masz stały błąd > ±3 hPa, wprowadź offset kalibracyjny:
pressureCorrected = pressureSeaLevel + calibOffset;
pressureSeaLevel
oraz automatyczną kompensację temperaturową. float altitude = 210.0; // [m] – poprawna wysokość miejsca montażu
float pressure_hPa = bme.readPressure() / 100.0F;
float temperature_C = bme.readTemperature();
float seaLevel = pressure_hPa /
pow(1.0 - (0.0065 * altitude) /
(temperature_C + 0.0065 * altitude + 273.15), 5.257);
const float calibOffset = -2.0; // ustalony eksperymentalnie
float seaLevelCal = seaLevel + calibOffset;
Różnica nie wynika z błędu BME280, lecz z porównywania ciśnienia absolutnego z morskim lub – najpewniej – z pomyłki jednostek w danych Radawca. Zweryfikuj, że „774” to 774 mm Hg, przelicz swój odczyt na poziom morza (lub na wysokość stacji) używając dokładnej wysokości i temperatury, a następnie – jeśli potrzeba – dodaj drobny offset kalibracyjny. Po tych krokach wskazania zbiegną się do ±1-3 hPa, czyli w granicach specyfikacji czujnika.