Magnetométer okostelefonokban — mi ez, típusai és működési elve

Szerző: IT Sectr Megjelenés: 2026-03-22 Olvasási idő: 10 perc

A magnetométer egy érzékelő, amely a Föld mágneses terének erősségét méri a világtájak meghatározásához. Mobil eszközökben digitális iránytűként működik, megfelelő kalibrálással 1–2 fokos pontosságot biztosítva. A Bosch Sensortec Application Note, 2024 szerint a modern MEMS-magnetométerek mindössze 0,5–2 mA-t fogyasztanak és elférnek egy 1,5×1,5×0,7 mm-es házban.

Főbb pontok

  • Magnetométer — Hall-érzékelő, amely ±1300 µT tartományban méri a mágneses teret három tengelyen.
  • Digitális iránytű magnetométer alapján kalibrálást igényel — enélkül a hiba eléri a 30–40 fokot.
  • Android API a Sensor.TYPE_MAGNETIC_FIELD segítségével biztosít hozzáférést az adatokhoz mikroteslában (µT).
  • Sensor Fusion a magnetométert giroszkóppal és gyorsulásmérővel egyesíti a pontos tájolás érdekében.
  • Hard Iron és Soft Iron — a ház fémje és a telefon hangszórói által okozott mágneses torzítások típusai.

Mi a magnetométer az okostelefonban

A magnetométer egy mobil eszközben egy háromtengelyű mágneses tér érzékelő, amely a Hall-effektuson alapul. Méri a mágneses indukciós vektor vetületeit az X, Y és Z tengelyeken. Gyorsulásmérővel kombinálva a magnetométer lehetővé teszi az azimut — az északi irány és a telefon tengelye közötti szög — meghatározását.

A magnetométerek típusai mobil eszközökben

A modern okostelefonokban anizotróp magnetorezisztív hatáson (AMR) és Hall-effektuson alapuló MEMS-magnetométereket használnak. Az AMR-érzékelők (AKM sorozat az Asahi Kasei Microdevices-től) 0,15 µT/LSB érzékenységet és ±1200 µT tartományt biztosítanak — ez elegendő a Föld terének (25–65 µT) méréséhez.

ParaméterÉrték
TechnológiaAMR / Hall-effektus
Tartomány±1200 — ±1300 µT
Fogyasztás0,5–2 mA
Méret1,5×1,5×0,7 mm
Érzékenység0,15 µT/LSB

Miért fontos a magnetométer az okostelefon számára

Digitális iránytű nélkül a navigációs alkalmazások nem tudják meghatározni a mozgás irányát. A Google Maps a magnetométert használja a térkép tájolásának megjelenítéséhez a felhasználó nézési irányához képest. Az érzékelő meghibásodása esetén az alkalmazás csak a pozíciót mutatja a térképen, kék iránynyíl nélkül.

Hogyan működik a Hall-érzékelő

A Hall-effektus egy fizikai jelenség, amikor potenciálkülönbség keletkezik egy vezető lemez szélein mágneses tér hatására. A MEMS-magnetométerekben permalloy (NiFe) vékonyréteg-szerkezeteket használnak, amelyek ellenállása külső mágneses tér hatására változik (AMR-effektus).

Az AMR-érzékelő szerkezete

A három csatorna (X, Y, Z) mindegyike négy magnetorezisztorból áll, amelyek Wheatstone-hídba vannak kötve. A mágneses tér 2–3%-kal változtatja meg az ellenállások értékét, amit egy differenciálerősítő feszültséggé alakít. Egy beépített 16 bites ADC digitalizálja a jelet akár 100 Hz-es frekvenciával.

Mérés a Z tengelyen

A tér vertikális összetevőjének méréséhez integrált mágneses fluxus koncentrátort (IMC — Integrated Magnetic Concentrator) használnak. Ez egy NiFe vékonyréteg-szerkezet, amely a vízszintes teret függőleges síkba tereli, lehetővé téve egyetlen AMR-híd számára mindhárom tengely mérését.

Miben különbözik a magnetométer a giroszkóptól

A magnetométer a Föld mágneses teréhez viszonyítva határozza meg a tájolást (abszolút referencia), míg a giroszkóp csak a szögváltozást méri (relatív adatok). A giroszkóp rövid időközönként pontos adatokat ad, de drift hibát halmoz fel. A magnetométer nem driftel, de érzékeny a mágneses interferenciára.

Sensor Fusion magnetométerrel

Az Android három érzékelő adatait a SensorManager.getRotationMatrix segítségével egyesíti. A magnetométert a giroszkóp driftjének korrigálására használják hosszú időközönként. Magnetométer nélkül a giroszkóp 5 perc alatt 10–20 fokos hibát halmoz fel. A Google ARCore (2024) szerint a fusion algoritmus magnetométer jelenlétében 1–3 fokos pontosságot ér el.

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 radiánban

Mágneses torzítások: Hard Iron és Soft Iron

Hard Iron — a telefon belsejében lévő ferromágneses anyagok által létrehozott állandó mágneses tér: hangszóró mágnesek, vibrációs motor, fém keret. A Hard Iron torzítás állandó eltolódásként (bias) jelenik meg minden tengelyen. Soft Iron — a térirány megváltozása mágnesesen vezető anyagok miatt, amelyek torzítják a térvonalak alakját.

Kalibrációs algoritmus

A magnetométer szabványos kalibrációs eljárása a telefon nyolcas alakban történő forgatása (figure-8 pattern). A folyamat során az érzékelő pontokat rögzít a háromdimenziós térben. Torzítás nélkül a pontok egy 25–65 µT sugarú gömbön helyezkednek el. A Hard Iron eltolja a gömb középpontját, a Soft Iron ellipszoiddé alakítja. A kalibrációs algoritmus kiszámítja az eltolási és skálázási paramétereket.

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
    )
}

Szoftveres torzításkorrekció

A fejlesztő saját magnetométer kalibrációt implementálhat az eszköz mozgása során gyűjtött adatokkal. Az ellipszoid illesztési (ellipsoid fitting) algoritmus megtalálja a Hard Iron és Soft Iron paramétereket a gömbtől való eltérések négyzetösszegének minimalizálásával. Az Apache Commons Math könyvtár biztosítja a nemlineáris legkisebb négyzetek módszerének (Levenberg-Marquardt) implementációját erre a feladatra — a szoftveres kalibráció utáni pontosság eléri a 0,5 fokot.

Javaslatok az interferencia kiküszöbölésére

A Hard Iron minimalizálásához a gyártók a magnetométert a telefon felső részébe helyezik, távol a hangszórótól és a vibrációs motortól. Az Apple mérnökei az iPhone 16 Pro Max-ben (2024) a magnetométer permalloy fóliával történő árnyékolását alkalmazták, ami 4-szer csökkentette a hangszóró hatását. A Samsung Galaxy S24 Ultra-ban egy kiegészítő kompenzációs áramkört használnak, amely valós időben méri a hangszóró áramát az indukált tér kivonásához. A mágneses rögzítős tokok (pl. autós tartókban) erős torzításokat okoznak — használat után a magnetométer az újrakalibrálásig rossz irányt mutathat.

Programozott hozzáférés a magnetométerhez Androidban

Az Android két érzékelőt biztosít: TYPE_MAGNETIC_FIELD (kalibrált adatok µT-ban) és TYPE_MAGNETIC_FIELD_UNCALIBRATED (nyers adatok torzításbecsléssel). Navigációs alkalmazásokhoz a kalibrált érzékelő használata javasolt — a rendszer automatikusan alkalmazza a beépített kalibrációt az utolsó nyolcas mozgás alapján.

Regisztráció és feldolgozás

A SENSOR_DELAY_NORMAL késleltetés (200 ms) elegendő az iránytűhöz, a SENSOR_DELAY_FASTEST (0 ms) — csak speciális kutatási alkalmazásokhoz. Az értékek beérkezése után azok átszámíthatók azimuttá a getRotationMatrix + getOrientation segítségével. Fontos ellenőrizni az érzékelő pontosságát az event.accuracy segítségével — a SENSOR_STATUS_UNRELIABLE érték kalibrálás szükségességét jelzi.

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)
    }
}

A magnetométer alkalmazása mobil alkalmazásokban

A magnetométert nem csak iránytűhöz használják. Az AR alkalmazások, beleértve a Pokemon GO-t, a magnetométert használják a kamera valós világhoz viszonyított tájolásának meghatározásához. Magnetométer hiányában az ARCore Screen Axis módba vált — a tájolást csak a giroszkóp határozza meg, ami csökkenti a pontosságot.

  • Navigáció — az azimut meghatározása a Google Maps, Yandex.Maps, MAPS.ME alkalmazásokban. Az iránytű pontossága közvetlenül befolyásolja az útvonal minőségét.
  • Fémdetektorok — a fémtárgyak keresésére szolgáló alkalmazások a magnetométert használják a mágneses tér anomáliáinak észlelésére.
  • Geofizika és oktatás — a mágneses tér mérése oktatási projektekhez. Az érzékelő lehetővé teszi a Föld mágneses terének tanulmányozását iskolákban.
  • VR és 360°-os videó — a fej tájolását VR-headsetekben a magnetométer korrigálja a giroszkóp driftjének kompenzálására.

Magnetométer az autós navigációban

Az Android Auto-alapú autós navigációs rendszerekben a magnetométert a mozgás irányának meghatározására használják GPS-jel elvesztésekor alagutakban és sűrű városi beépítésben. A jármű kerekeiről származó odometriai adatokkal (OBD-II-n keresztül) kombinálva a magnetométer lehetővé teszi a navigáció folytatását akár 5 percig GPS nélkül, 10–20 méteres pozícionálási pontossággal. A Google Maps Engineering Blog (2024) szerint a hibrid algoritmus 40%-kal csökkenti az útvonalvesztés arányát városi kanyonokban.

Magnetométer a navigációs alkalmazásokban

A navigációs alkalmazások a magnetométert használják a mozgás azimutjának — az északi irány és a felhasználó aktuális iránya közötti szög — meghatározásához. A Google Maps-ben a magnetométer adatai GPS-trackkel és mozgástörténettel kombinálódnak a kék iránynyíl megjelenítéséhez. GPS-jel elvesztésekor (alagutakban, földalatti átjárókban) a magnetométer marad az egyetlen tájékozódási információforrás.

A magnetométerek jövője

Az integrált ASIC-kel ellátott új generációs 3 tengelyes magnetométerek (BMM350 a Bosch-tól, 2024) mindössze 0,35 mA-t fogyasztanak és akár 200 Hz-es frekvenciát támogatnak. A kvantum-magnetométerek és a gyémánt NV-centrumok fejlesztése mobil eszközökhöz még nem hagyta el a laboratóriumi kísérletek fázisát. Várhatóan 2028-ra a mobil magnetométerek pontossága eléri a 0,01 µT-t.

Gyakran Ismételt Kérdések

Hogyan kalibráljam a magnetométert a telefonon?

Rajzoljon egy nyolcast a telefonnal a levegőben — ez a szabványos mozdulat a digitális iránytű kalibrálásához. Ha az iránytű továbbra is pontatlanul mutat, ellenőrizze a tokot: a mágneses rögzítők és fém elemek erős Hard Iron torzítást okoznak.

Miért mutat pontatlanul a telefon iránytűje?

Fő okok: mágneses interferencia a telefon hangszóróiból és vibrációs motorjából, kalibrálás hiánya tokcsere után, közeli fémtárgyak hatása. Vasbeton szerkezetű helyiségekben a mágneses tér különösen erősen torzul.

Használható a telefon fémdetektorként?

Igen, a fémdetektor alkalmazások a beépített magnetométert használják a mágneses tér anomáliáinak észlelésére. Az észlelési mélység azonban nem haladja meg a 10–20 cm-t, és a készülék nem különbözteti meg a fémtípusokat — ez inkább oktatási eszköz.

Mi a különbség a TYPE_MAGNETIC_FIELD és a TYPE_MAGNETIC_FIELD_UNCALIBRATED között?

A TYPE_MAGNETIC_FIELD a rendszer által alkalmazott kalibrálás utáni adatokat ad vissza. A TYPE_MAGNETIC_FIELD_UNCALIBRATED nyers értékeket plusz eltolásbecslést (bias) ad, lehetővé téve a fejlesztő számára saját kalibrálás alkalmazását.

Hogyan kapok azimutot a magnetométer adataiból?

Használja a SensorManager.getRotationMatrix függvényt a gyorsulásmérő és magnetométer adataival, majd a getOrientation-t — a tömb első eleme (azimut) radiánban lesz. Az iránytű megjelenítéséhez konvertálja fokokká: Math.toDegrees(azimuth).

Összefoglalás

  • Magnetométer — háromtengelyű mágneses tér érzékelő, amely digitális iránytűként működik mobil eszközökben.
  • AMR technológia a Hall-effektus alapján lehetővé teszi a Föld terének mérését 0,15 µT/LSB pontossággal.
  • Hard Iron és Soft Iron — a telefon alkatrészei által okozott mágneses torzítások, amelyek nyolcas mozdulattal történő kalibrálást igényelnek.
  • Android API TYPE_MAGNETIC_FIELD és TYPE_MAGNETIC_FIELD_UNCALIBRATED adatokat biztosít µT-ban.
  • Sensor Fusion egyesíti a magnetométert giroszkóppal és gyorsulásmérővel a pontos (1–3 fokos) tájoláshoz.
  • Alkalmazások közé tartozik a navigáció, AR alkalmazások, fémdetektorok és giroszkóp drift korrekció VR-ban.
  • Modern érzékelők 0,35 mA-tól fogyasztanak 200 Hz-es frekvencián, 1,5×1,5 mm méretben.

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.

Projekt megbeszélése

Olvassa el is