Magnetometr v chytrých telefonech — co to je, typy a princip fungování

Autor: IT Sectr Publikováno: 2026-03-22 Doba čtení: 10 min

Magnetometr je senzor, který měří intenzitu magnetického pole Země pro určení světových stran. V mobilních zařízeních funguje jako digitální kompas a při správné kalibraci poskytuje přesnost až 1–2 stupně. Podle Bosch Sensortec Application Note, 2024 spotřebovávají moderní MEMS-magnetometry pouze 0,5–2 mA a vejdou se do pouzdra o rozměrech 1,5×1,5×0,7 mm.

Hlavní body

  • Magnetometr — Hallův senzor měřící magnetické pole na třech osách s rozsahem ±1300 µT.
  • Digitální kompas založený na magnetometru vyžaduje kalibraci — bez ní chyba dosahuje 30–40 stupňů.
  • Android API používá Sensor.TYPE_MAGNETIC_FIELD pro přístup k datům v mikroteslách (µT).
  • Sensor Fusion spojuje magnetometr s gyroskopem a akcelerometrem pro přesnou orientaci.
  • Hard Iron a Soft Iron — typy magnetických zkreslení způsobené kovem pouzdra a reproduktory smartphonu.

Co je magnetometr v chytrém telefonu

Magnetometr v mobilním zařízení je tříosý senzor magnetického pole založený na Hallově jevu. Měří projekce vektoru magnetické indukce na osy X, Y a Z. V kombinaci s akcelerometrem umožňuje magnetometr určit azimut — úhel mezi směrem na sever a osou telefonu.

Typy magnetometrů v mobilních zařízeních

V moderních chytrých telefonech se používají MEMS-magnetometry založené na anizotropním magnetorezistivním jevu (AMR) a Hallově jevu. AMR senzory (řada AKM od Asahi Kasei Microdevices) poskytují citlivost 0,15 µT/LSB a rozsah ±1200 µT — to stačí pro měření zemského pole (25–65 µT).

ParametrHodnota
TechnologieAMR / Hallův jev
Rozsah±1200 — ±1300 µT
Spotřeba0,5–2 mA
Velikost1,5×1,5×0,7 mm
Citlivost0,15 µT/LSB

Proč je magnetometr důležitý pro chytrý telefon

Bez digitálního kompasu nemohou navigační aplikace určit směr pohybu. Mapy Google používají magnetometr k zobrazení orientace mapy vzhledem ke směru pohledu uživatele. Při výpadku senzoru aplikace zobrazuje pouze polohu na mapě bez modré šipky směru.

Jak funguje Hallův senzor

Hallův jev je fyzikální jev vzniku rozdílu potenciálů na okrajích vodivé destičky působením magnetického pole. V MEMS-magnetometrech se používají tenkovrstvé struktury z permalloye (NiFe), jejichž odpor se mění působením vnějšího magnetického pole (AMR jev).

Struktura AMR senzoru

Každý ze tří kanálů (X, Y, Z) se skládá ze čtyř magnetorezistorů zapojených do Wheatstoneova můstku. Magnetické pole mění odpor rezistorů o 2–3%, což je diferenciálním zesilovačem převedeno na napětí. Vestavěný 16bitový ADC digitalizuje signál s frekvencí až 100 Hz.

Měření na ose Z

Pro měření vertikální složky pole se používá integrovaný koncentrátor magnetického toku (IMC — Integrated Magnetic Concentrator). Jedná se o tenkovrstvou strukturu z NiFe, která odklání horizontální pole do vertikální roviny, což umožňuje jedinému AMR můstku měřit všechny tři osy.

Čím se liší magnetometr od gyroskopu

Magnetometr určuje orientaci vzhledem k magnetickému poli Země (absolutní reference), zatímco gyroskop měří pouze změnu úhlu (relativní data). Gyroskop poskytuje přesná data v krátkých intervalech, ale akumuluje chybu driftu. Magnetometr nedriftuje, ale je náchylný k magnetickému rušení.

Sensor Fusion s magnetometrem

Android spojuje data tří senzorů prostřednictvím SensorManager.getRotationMatrix. Magnetometr se používá pro korekci driftu gyroskopu v dlouhých intervalech. Bez magnetometru gyroskop za 5 minut akumuluje chybu 10–20 stupňů. Podle Google ARCore (2024) dosahuje fusion algoritmus přesnosti 1–3 stupňů při přítomnosti magnetometru.

kotlin
val accelerometerReading = FloatArray(3)
val magnetometerReading = FloatArray(3)
val rotationMatrix = FloatArray(9)
val orientationAngles = FloatArray(3)

SensorManager.getRotationMatrix(
    rotationMatrix, null,
    accelerometerReading,
    magnetometerReading
)
SensorManager.getOrientation(
    rotationMatrix, orientationAngles
)
// orientationAngles[0] — azimut v radiánech

Magnetická zkreslení: Hard Iron a Soft Iron

Hard Iron — konstantní magnetické pole vytvářené feromagnetickými materiály uvnitř telefonu: magnety reproduktorů, vibračním motorkem, kovovým rámem pouzdra. Zkreslení Hard Iron se projevuje jako konstantní posun (bias) na každé ose. Soft Iron — změna směru pole způsobená magneticky vodivými materiály, které deformují tvar siločar.

Algoritmus kalibrace

Standardní postup kalibrace magnetometru spočívá v otáčení telefonu do osmičky (figure-8 pattern). Během procesu senzor zaznamenává body v trojrozměrném prostoru. Bez zkreslení leží body na kouli o poloměru 25–65 µT. Hard Iron posouvá střed koule, Soft Iron ji mění na elipsoid. Kalibrační algoritmus vypočítá parametry posunu a škálování.

kotlin
data class CalibrationParams(
    val biasX: Float,
    val biasY: Float,
    val biasZ: Float,
    val scaleX: Float,
    val scaleY: Float,
    val scaleZ: Float
)

fun applySoftIronCorrection(
    raw: FloatArray, p: CalibrationParams
): FloatArray {
    return floatArrayOf(
        (raw[0] - p.biasX) * p.scaleX,
        (raw[1] - p.biasY) * p.scaleY,
        (raw[2] - p.biasZ) * p.scaleZ
    )
}

Programová korekce zkreslení

Vývojář může implementovat vlastní kalibraci magnetometru sběrem dat během pohybu zařízení. Algoritmus proložení elipsoidu (ellipsoid fitting) nachází parametry Hard Iron a Soft Iron minimalizací součtu čtverců odchylek od koule. Knihovna Apache Commons Math poskytuje implementaci nelineární metody nejmenších čtverců (Levenberg-Marquardt) pro tento úkol — přesnost po programové kalibraci dosahuje 0,5 stupně.

Doporučení pro odstranění rušení

Pro minimalizaci Hard Iron umisťují výrobci magnetometr do horní části telefonu, daleko od reproduktoru a vibračního motorku. Inženýři Apple v iPhone 16 Pro Max (2024) použili stínění magnetometru permalloyovou fólií, což snížilo vliv reproduktoru 4krát. V Samsung Galaxy S24 Ultra se používá přídavný kompenzační obvod měřící proud v reproduktoru v reálném čase pro odečtení indukovaného pole. Pouzdra s magnetickými úchytkami (například v autodržácích) vytvářejí silná zkreslení — po použití může magnetometr ukazovat špatný směr až do opětovné kalibrace.

Programový přístup k magnetometru v Androidu

Android poskytuje dva senzory: TYPE_MAGNETIC_FIELD (kalibrovaná data v µT) a TYPE_MAGNETIC_FIELD_UNCALIBRATED (surová data s odhadem zkreslení). Pro navigační aplikace se doporučuje používat kalibrovaný senzor — systém automaticky aplikuje vestavěnou kalibraci na základě posledního pohybu osmičkou.

Registrace a zpracování

Zpoždění SENSOR_DELAY_NORMAL (200 ms) je pro kompas dostačující, SENSOR_DELAY_FASTEST (0 ms) — pouze pro speciální výzkumné aplikace. Po obdržení hodnot je lze převést na azimut pomocí getRotationMatrix + getOrientation. Je důležité kontrolovat přesnost senzoru pomocí event.accuracy — hodnota SENSOR_STATUS_UNRELIABLE znamená nutnost kalibrace.

kotlin
override fun onSensorChanged(event: SensorEvent) {
    if (event.sensor.type == Sensor.TYPE_MAGNETIC_FIELD) {
        val accuracy = event.accuracy
        if (accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE) {
            showCalibrationHint()
            return
        }
        System.arraycopy(event.values, 0,
            magnetometerReading, 0, 3)
    }
}

Využití magnetometru v mobilních aplikacích

Magnetometr se používá nejen pro kompas. AR aplikace, včetně Pokemon GO, používají magnetometr k určení orientace kamery vůči reálnému světu. Při absenci magnetometru přepíná ARCore do režimu Screen Axis — orientace je určována pouze gyroskopem, což snižuje přesnost.

  • Navigace — určení azimutu pohybu v Mapách Google, Yandex.Maps, MAPS.ME. Přesnost kompasu přímo ovlivňuje kvalitu trasy.
  • Detektory kovů — aplikace pro vyhledávání kovových předmětů používají magnetometr k detekci anomálií magnetického pole.
  • Geofyzika a vzdělávání — měření magnetického pole pro vzdělávací projekty. Senzor umožňuje studium magnetického pole Země ve školách.
  • VR a 360° video — orientace hlavy v náhlavních soupravách VR je korigována magnetometrem pro kompenzaci driftu gyroskopu.

Magnetometr v automobilové navigaci

V automobilových navigačních systémech založených na Android Auto se magnetometr používá k určení směru jízdy při ztrátě signálu GPS v tunelech a husté městské zástavbě. V kombinaci s daty z odometrie kol vozidla (získanými přes OBD-II) umožňuje magnetometr pokračovat v navigaci až 5 minut bez GPS s přesností určení polohy 10–20 metrů. Podle Google Maps Engineering Blog (2024) snižuje hybridní algoritmus procento ztráty trasy v městských kaňonech o 40%.

Magnetometr v navigačních aplikacích

Navigační aplikace používají magnetometr k určení azimutu pohybu — úhlu mezi směrem na sever a aktuálním kursem uživatele. V Mapách Google jsou data magnetometru kombinována s GPS stopou a historií pohybů pro zobrazení modré šipky směru. Při ztrátě signálu GPS (v tunelech, podchodech) zůstává magnetometr jediným zdrojem informací o orientaci.

Budoucnost magnetometrů

Nová generace 3osých magnetometrů s integrovaným ASIC (BMM350 od Bosch, 2024) spotřebovává pouze 0,35 mA a podporuje frekvenci až 200 Hz. Vývoj kvantových magnetometrů a NV center v diamantu pro mobilní zařízení zatím nevyšel z fáze laboratorních experimentů. Očekává se, že do roku 2028 dosáhne přesnost mobilních magnetometrů 0,01 µT.

Často kladené otázky

Jak zkalibrovat magnetometr v telefonu?

Nakreslete telefonem ve vzduchu osmičku — to je standardní pohyb pro kalibraci digitálního kompasu. Pokud kompas stále ukazuje nepřesně, zkontrolujte pouzdro: magnetické úchytky a kovové prvky vytvářejí silná zkreslení Hard Iron.

Proč kompas v telefonu ukazuje nepřesně?

Hlavní příčiny: magnetické rušení od reproduktorů a vibračního motorku telefonu, chybějící kalibrace po výměně pouzdra, vliv blízkých kovových předmětů. V místnostech s železobetonovými konstrukcemi je magnetické pole zkresleno obzvláště silně.

Lze telefon použít jako detektor kovů?

Ano, aplikace detektoru kovů používají vestavěný magnetometr k detekci anomálií magnetického pole. Hloubka detekce však nepřesahuje 10–20 cm a zařízení nerozlišuje typy kovů — jedná se spíše o vzdělávací nástroj.

Jaký je rozdíl mezi TYPE_MAGNETIC_FIELD a TYPE_MAGNETIC_FIELD_UNCALIBRATED?

TYPE_MAGNETIC_FIELD vrací data po kalibraci provedené systémem. TYPE_MAGNETIC_FIELD_UNCALIBRATED poskytuje surové hodnoty plus odhad posunu (bias), což umožňuje vývojáři aplikovat vlastní kalibraci.

Jak získat azimut z dat magnetometru?

Použijte SensorManager.getRotationMatrix s daty akcelerometru a magnetometru, poté getOrientation — první prvek pole (azimut) bude v radiánech. Pro zobrazení kompasu převeďte na stupně: Math.toDegrees(azimuth).

Shrnutí

  • Magnetometr — tříosý senzor magnetického pole fungující jako digitální kompas v mobilních zařízeních.
  • AMR technologie založená na Hallově jevu umožňuje měření zemského pole s přesností 0,15 µT/LSB.
  • Hard Iron a Soft Iron — magnetická zkreslení způsobená součástkami telefonu vyžadující kalibraci pohybem osmičky.
  • Android API poskytuje TYPE_MAGNETIC_FIELD a TYPE_MAGNETIC_FIELD_UNCALIBRATED s daty v µT.
  • Sensor Fusion spojuje magnetometr s gyroskopem a akcelerometrem pro přesnou (1–3 stupně) orientaci.
  • Použití zahrnuje navigaci, AR aplikace, detektory kovů a korekci driftu gyroskopu ve VR.
  • Moderní senzory spotřebovávají od 0,35 mA při frekvenci 200 Hz a velikosti 1,5×1,5 mm.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také