Barometern i en smartphone är en MEMS-sensor som mäter atmosfärtryck för att bestämma höjd och väderprognos. Moderna barometrar registrerar tryck i intervallet 300 till 1100 hPa med en noggrannhet på 1 hPa, vilket motsvarar ett höjdbestämningsfel på mindre än 1 meter. Enligt uppgifter från Bosch Sensortec BMP580, 2024 är den absoluta noggrannheten hos moderna trycksensorer ±0,5 hPa, vilket gör det möjligt att bestämma höjd med en noggrannhet på 0,4 meter.
Huvudpunkter
Barometer i en mobiltelefon är en miniatyrsensor för absolut tryck baserad på MEMS-teknik (Micro-Electro-Mechanical Systems). Den mäter atmosfärtryck i hektopascal (hPa), vilket är likvärdigt med millibar. Den första massproducerade smartphonen med barometer — Samsung Galaxy Note 2 (2012) — startade trenden att integrera sensorn i flaggskeppsenheter.
Marknadsledarna är Bosch Sensortec (serie BMP) och STMicroelectronics (serie LPS). En typisk BMP580-sensor har måtten 2,0×2,0×0,7 mm, en strömförbrukning på 1,3 µA i lågeffektsläge och ett område på 300–1250 hPa. Relativ noggrannhet är ±0,08 hPa, vilket gör det möjligt att registrera en höjdförändring på 0,7 meter. Enligt Datasheet BMP580 (2024) överstiger inte brusnivån 0,2 Pa.
| Parameter | Värde |
|---|---|
| Område | 300–1250 hPa |
| Absolut noggrannhet | ±0,5 hPa |
| Relativ noggrannhet | ±0,08 hPa |
| Strömförbrukning | 1,3 µA (låg effekt) |
| Mått | 2,0×2,0×0,7 mm |
| Gränssnitt | I²C / SPI |
Huvudfunktionen — precisering av höjd i navigering. I USA rekommenderar Federal Communications Commission (FCC) sedan 2015 att smartphones utrustas med barometrar för att förbättra noggrannheten vid positionsbestämning vid nödsamtal 911 — vertikal noggrannhet räddar liv i flervåningsbyggnader.
I hjärtat av en MEMS-barometer finns ett kiselmembran med en tjocklek på 1–3 mikrometer som böjs under påverkan av atmosfärtryck. Membranet är integrerat med en vakuumkavitet — referenstrycket. För att mäta avböjningen används en kapacitiv eller piezoresistiv metod.
I kapacitiva sensorer (Bosch BMP) fungerar membranet som en rörlig elektrod i en kondensator. När trycket ändras förändras gapet mellan membranet och den fasta elektroden med 0,1–1 nm, vilket orsakar en kapacitansförändring på 5–50 fF. En C/V-omvandlare (capacitance-to-voltage) förstärker signalen till en nivå som är tillräcklig för en 24-bitars ADC.
MEMS-barometrar innehåller en inbyggd temperatursensor, eftersom gastrycket direkt beror på temperaturen enligt lagen P = ρRT. Utan kompensation orsakar en temperaturförändring på 1 °C ett fel på 0,1 hPa — motsvarande 0,8 meter höjd. Moderna sensorer använder kalibreringskoefficienter lagrade i OTP-minne (One-Time Programmable) för digital korrigering i intervallet -40 till +85 °C.
GPS bestämmer höjd baserat på trilaterering av satellitsignaler — det vertikala felet är 10–30 meter på grund av satelliternas geometri och jonosfäriska fördröjningar. Barometer ger höjd med en noggrannhet på 0,5–1 meter enligt den barometriska formeln. I scenarier med begränsad sikt mot himlen (stadsraviner, inomhus) kan GPS vara otillgänglig — barometern fungerar alltid.
Höjd beräknas med formeln: h = (T₀ / L) × (1 − (P / P₀)^(R×L / g)), där T₀ — temperatur vid havsytan, L — temperaturgradient, P — uppmätt tryck, P₀ — tryck vid havsytan. Förenklat: en tryckförändring på 1 hPa motsvarar cirka 8,4 meter på låga höjder. För exakt beräkning krävs data från väderstationer om P₀.
Moderna navigationssystem (Google Maps, Yandex Maps) använder en hybridalgoritm: GPS ger absolut höjd med ett fel på 15 meter, barometern — relativ förändring med en noggrannhet på 0,5 meter. Kalmanfiltret kombinerar båda signalerna och levererar höjd med en noggrannhet på 1–3 meter i realtid.
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 {
// Kalibrering av P0 baserat på GPS-höjd
val expectedPressure = P0_SEA_LEVEL *
Math.pow(1f - (0.0065f * gpsAltitude) / 288.15f, 5.255f)
.toFloat()
return P0_SEA_LEVEL * baroPressure / expectedPressure
}
Android ger tillgång till barometern via Sensor.TYPE_PRESSURE. Data returneras i hektopascal (hPa), vilket är likvärdigt med millibar. Det typiska värdet vid havsytan är cirka 1013,25 hPa. Sensorn tillhör kategorin Environmental Sensors — den kräver ingen kalibrering av användaren och fungerar omedelbart efter initialisering.
Barometern kräver inte hög pollningsfrekvens — SENSOR_DELAY_UI (67 ms) eller SENSOR_DELAY_NORMAL (200 ms) är helt tillräckliga. Atmosfärtryck förändras långsamt, maximalt 0,5–1 hPa per timme vid väderförändring eller 1–2 hPa per minut vid rörelse i hiss. Överdriven frekvens slösar bara batteri.
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)
}
}
Alla Android-enheter har inte barometer — sensorn saknas i budgetmodeller och många enheter i mellansegmentet. Före användning måste närvaro kontrolleras via PackageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_BAROMETER) eller sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE) — retur av null innebär att sensorn saknas.
Barometern används inom ett brett spektrum av applikationer — från meteorologi till sporttrackers och inomhusnavigering. Appen WeatherPro använder barometerdata för att skapa en 24-timmars tryckgraf, vilket gör det möjligt att förutsäga väderförändringar 6–12 timmar i förväg med en noggrannhet på upp till 80%.
Vid väderförändring förändras atmosfärtrycket med 1–3 hPa på 6–12 timmar. En anticyklon (högtrycksområde) ger värden 1020–1040 hPa, en cyklon (lågtryck) — 970–1010 hPa. Dessa förändringar måste beaktas vid beräkning av höjd: om trycket vid havsytan igår var 1013 hPa och idag 1025 hPa, kommer höjdbestämningsfelet utan korrigering av P₀ att vara cirka minus 100 meter. Moderna navigationsappar hämtar referenstrycket P₀ via internet från närmaste väderstation.
I köpcentrum och flygplatser används barometern för att bestämma vilken våning användaren befinner sig på. Tryckskillnaden mellan våningarna i en typisk byggnad (våningshöjd 3–4 meter) är 0,35–0,5 hPa — tillräckligt för tillförlitlig bestämning. Genom att kombinera barometern med Wi-Fi-trilaterering kan inomhusnavigering bestämma positionen med en noggrannhet på upp till 5 meter.
Den nya generationen vattenresistenta barometrar (Infineon DPS368, 2024) tål nedsänkning till 10 meter och har en noggrannhet på ±0,05 hPa. Utvecklingen av MEMS-teknik för barometrar närmare noggrannheten hos kvartsstandarder — det förväntas att det typiska felet kommer att minska till ±0,2 hPa till 2027.
Vanliga frågor
Du kan kontrollera med appen Sensor Test från Google Play. Barometer finns i alla flaggskeppssmartphones Samsung Galaxy S och Note (från och med S3), Google Pixel (alla modeller), iPhone 6 och nyare. I budgetmodeller saknas sensorn vanligtvis.
Enligt den barometriska formeln: atmosfärtrycket minskar med höjden. Vid havsytan är trycket 1013,25 hPa, på 500 meters höjd — cirka 955 hPa. Varje 8,4 meters stigning minskar trycket med cirka 1 hPa. För noggrannhet krävs kalibrering enligt närmaste väderstation.
Ja, i väderstationsappar. Ett plötsligt tryckfall på 3–5 hPa på 3 timmar indikerar annalkande cyklon och försämrat väder. Stigande tryck är ett tecken på förbättring. För exakt prognos krävs dock data från meteorologiska tjänster.
Nej — kalibrering sker automatiskt. Tillverkarna programmerar kalibreringskoefficienterna i fabriken. Om du dock bor på 1000+ meters höjd över havet, är det värt att ställa in referenstrycket i navigationsappen för ökad noggrannhet.
SENSOR_DELAY_NORMAL (200 ms) är optimalt — atmosfärtryck förändras långsamt. För att spåra rörelse i hiss räcker 200 ms. Överdriven frekvens (FASTEST) ger ingen fördel men ökar energiförbrukningen med 20–30%.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också