Az okostelefonban lévő barométer egy MEMS érzékelő, amely a légnyomást méri a magasság meghatározása és az időjárás előrejelzése céljából. A modern barométerek 300 és 1100 hPa közötti nyomástartományt rögzítenek 1 hPa pontossággal, ami 1 méternél kisebb magasságmeghatározási hibának felel meg. A Bosch Sensortec BMP580, 2024 adatai szerint a modern nyomásérzékelők abszolút pontossága ±0,5 hPa, ami lehetővé teszi a magasság 0,4 méteres pontossággal történő meghatározását.
Lényeges pontok
Barométer a mobiltelefonban egy miniatür abszolút nyomásérzékelő, MEMS technológián (Micro-Electro-Mechanical Systems) alapulva. Légnyomást mér hektopascálban (hPa), ami egyenértékű a millibárral. Az első tömeggyártott okostelefon barométerrel — Samsung Galaxy Note 2 (2012) — elindította az érzékelő zászlóshajó eszközökbe történő integrálásának trendjét.
A piac vezetői a Bosch Sensortec (BMP sorozat) és az STMicroelectronics (LPS sorozat). Egy tipikus BMP580 érzékelő mérete 2,0×2,0×0,7 mm, áramfelvétele 1,3 µA alacsony fogyasztású módban, tartománya 300–1250 hPa. A relatív pontosság ±0,08 hPa, ami lehetővé teszi 0,7 méteres magasságváltozás rögzítését. A BMP580 adatlapja (2024) szerint a zajszint nem haladja meg a 0,2 Pa-t.
| Paraméter | Érték |
|---|---|
| Tartomány | 300–1250 hPa |
| Abszolút pontosság | ±0,5 hPa |
| Relatív pontosság | ±0,08 hPa |
| Áramfelvétel | 1,3 µA (alacsony fogyasztás) |
| Méret | 2,0×2,0×0,7 mm |
| Interfész | I²C / SPI |
A fő funkció — a magasság pontosítása a navigációban. Az USA-ban a Szövetségi Kommunikációs Bizottság (FCC) 2015 óta javasolja az okostelefonok barométerrel történő felszerelését a helymeghatározás pontosságának javítása érdekében vészhívások (911) esetén — a függőleges pontosság életeket ment a többszintes épületekben.
A MEMS barométer magjában egy szilícium membrán található, 1–3 mikron vastagsággal, amely a légnyomás hatására meghajlik. A membrán egy vákuum üreggel — referencianyomással — van integrálva. A hajlás méréséhez kapacitív vagy piezorezisztív módszert használnak.
Kapacitív érzékelőkben (Bosch BMP) a membrán a kondenzátor mozgó elektródájaként szolgál. Nyomásváltozáskor a membrán és a rögzített elektróda közötti rés 0,1–1 nm-rel változik, ami 5–50 fF kapacitásváltozást okoz. A C/V átalakító áramkör (capacitance-to-voltage) a jelet 24 bites ADC számára elegendő szintre erősíti.
A MEMS barométerek beépített hőmérséklet-érzékelőt tartalmaznak, mivel a gáznyomás közvetlenül függ a hőmérséklettől a P = ρRT törvény szerint. Kompenzáció nélkül 1 °C hőmérsékletváltozás 0,1 hPa hibát okoz — ami 0,8 méter magasságnak felel meg. A modern érzékelők az OTP (One-Time Programmable) memóriában tárolt kalibrációs együtthatókat használják digitális korrekcióra -40 és +85 °C közötti tartományban.
GPS műholdas jelek trilaterációja alapján határozza meg a magasságot — a függőleges hiba 10–30 méter a műholdak geometriája és ionoszférikus késleltetések miatt. Barométer 0,5–1 méter pontossággal ad magasságot a barometrikus képlet szerint. Korlátozott égboltlátású szcenáriókban (városi kanyonok, belső terek) a GPS elérhetetlen lehet — a barométer mindig működik.
A magasság a következő képlettel számítható: h = (T₀ / L) × (1 − (P / P₀)^(R×L / g)), ahol T₀ — hőmérséklet tengerszinten, L — hőmérséklet-gradiens, P — mért nyomás, P₀ — nyomás tengerszinten. Leegyszerűsítve: 1 hPa nyomásváltozás kis magasságokon kb. 8,4 méternek felel meg. A pontos számításhoz meteorológiai állomások P₀-ra vonatkozó adatai szükségesek.
A modern navigációs rendszerek (Google Maps, Yandex Maps) hibrid algoritmust használnak: a GPS 15 méter hibával ad abszolút magasságot, a barométer relatív változást 0,5 méter pontossággal. A Kalman-szűrő egyesíti mindkét jelet, valós idejű magasságot adva 1–3 méter pontossággal.
data class BaroReading(
val pressure: Float,
val altitude: Float
)
private val P0_SEA_LEVEL = 1013.25f
fun calculateAltitude(pressure: Float): Float {
return SensorManager.getAltitude(
P0_SEA_LEVEL, pressure
)
}
fun calibratePressure(
gpsAltitude: Float, baroPressure: Float
): Float {
// P0 kalibrálása GPS magasság alapján
val expectedPressure = P0_SEA_LEVEL *
Math.pow(1f - (0.0065f * gpsAltitude) / 288.15f, 5.255f)
.toFloat()
return P0_SEA_LEVEL * baroPressure / expectedPressure
}
Az Android Sensor.TYPE_PRESSURE segítségével biztosít hozzáférést a barométerhez. Az adatok hektopascálban (hPa) érkeznek, ami egyenértékű a millibárral. A tipikus érték tengerszinten kb. 1013,25 hPa. Az érzékelő az Environmental Sensors kategóriába tartozik — nem igényel felhasználói kalibrálást, és az inicializálást követően azonnal működik.
A barométer nem igényel magas lekérdezési frekvenciát — a SENSOR_DELAY_UI (67 ms) vagy a SENSOR_DELAY_NORMAL (200 ms) teljesen elegendő. A légnyomás lassan változik, maximum 0,5–1 hPa óránként időjárás-változáskor vagy 1–2 hPa percenként liftben történő mozgáskor. A túlzott frekvencia csak az akkumulátort meríti.
class BarometerActivity : AppCompatActivity() {
private val sensorManager by lazy {
getSystemService(SENSOR_SERVICE) as SensorManager
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val barometer = sensorManager
.getDefaultSensor(Sensor.TYPE_PRESSURE)
barometer?.let { sensor ->
sensorManager.registerListener(
this, sensor,
SensorManager.SENSOR_DELAY_NORMAL
)
}
}
override fun onSensorChanged(event: SensorEvent) {
val pressure = event.values[0]
val altitude = SensorManager
.getAltitude(1013.25f, pressure)
updateUI(pressure, altitude)
}
}
Nem minden Android-eszköz rendelkezik barométerrel — az érzékelő hiányzik az olcsó modellekből és sok középkategóriás eszközből. Használat előtt ellenőrizni kell a meglétét a PackageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_BAROMETER) vagy a sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE) segítségével — a null visszatérés az érzékelő hiányát jelenti.
A barométer széles körben használatos — a meteorológiától a sporttrackerekig és a beltéri navigációig. A WeatherPro applikáció a barométer adatait használja 24 órás nyomásgrafikon készítéséhez, ami lehetővé teszi az időjárás változásának 6–12 órával előre történő előrejelzését akár 80%-os pontossággal.
Időjárás-változáskor a légnyomás 1–3 hPa-t változik 6–12 óra alatt. Az anticiklon (magas nyomású terület) 1020–1040 hPa értékeket ad, a ciklon (alacsony nyomás) — 970–1010 hPa. Ezeket a változásokat figyelembe kell venni a magasság kiszámításakor: ha tegnap a tengerszinti nyomás 1013 hPa volt, ma pedig 1025 hPa, a magasságmeghatározás hibája P₀ korrekció nélkül kb. mínusz 100 méter lesz. A modern navigációs applikációk a P₀ referencianyomást interneten keresztül szerzik be a legközelebbi meteorológiai állomásról.
Bevásárlóközpontokban és repülőtereken a barométert annak meghatározására használják, hogy a felhasználó melyik emeleten tartózkodik. A tipikus épület emeletei közötti nyomáskülönbség (emeletmagasság 3–4 méter) 0,35–0,5 hPa — ez elegendő a megbízható meghatározáshoz. A barométer és a Wi-Fi trilateráció kombinálásával a beltéri navigáció 5 méter pontossággal határozza meg a helyet.
Új generációs vízálló barométerek (Infineon DPS368, 2024) akár 10 méteres merülést is kibírnak, és ±0,05 hPa pontossággal rendelkeznek. A MEMS technológia fejlődése közelíti a barométereket a kvarc etalonok pontosságához — várhatóan 2027-re a tipikus hiba ±0,2 hPa-ra csökken.
Gyakran ismételt kérdések
Ellenőrizheti a Google Play-ből származó Sensor Test applikációval. Barométer minden flagship Samsung Galaxy S és Note (S3-tól kezdve), Google Pixel (összes modell), iPhone 6 és újabb készülékben található. Az olcsó modellekből az érzékelő általában hiányzik.
A barometrikus képlet szerint: a légnyomás a magassággal csökken. Tengerszinten a nyomás 1013,25 hPa, 500 méter magasságban — kb. 955 hPa. Minden 8,4 méter emelkedés kb. 1 hPa-val csökkenti a nyomást. A pontossághoz a legközelebbi meteorológiai állomás szerinti kalibrálás szükséges.
Igen, időjárás-állomás alkalmazásokban. Hirtelen nyomáscsökkenés 3–5 hPa 3 óra alatt közeledő ciklont és romló időjárást jelez. A nyomás emelkedése javulás jele. A pontos előrejelzéshez azonban meteorológiai szolgálatok adatai szükségesek.
Nem — a kalibrálás automatikusan történik. A gyártók a gyárban programozzák be a kalibrációs együtthatókat. Ha azonban 1000+ méterrel a tengerszint felett él, érdemes beállítani a referencianyomást a navigációs alkalmazásban a pontosság növelése érdekében.
A SENSOR_DELAY_NORMAL (200 ms) optimális — a légnyomás lassan változik. A liftben történő mozgás követéséhez 200 ms elegendő. A túlzott frekvencia (FASTEST) nem nyújt előnyt, de 20–30%-kal növeli az energiafogyasztást.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is