Magnetometer in smartphones — wat is het, typen en werkingsprincipe

Auteur: IT Sectr Gepubliceerd: 2026-03-22 Leestijd: 10 min

Een magnetometer is een sensor die de sterkte van het aardmagnetisch veld meet om de windstreken te bepalen. In mobiele apparaten werkt het als een digitaal kompas en biedt het een nauwkeurigheid tot 1–2 graden bij correcte kalibratie. Volgens Bosch Sensortec Application Note, 2024 verbruiken moderne MEMS-magnetometers slechts 0,5–2 mA en passen ze in een behuizing van 1,5×1,5×0,7 mm.

Belangrijkste punten

  • Magnetometer — Hall-sensor die het magnetisch veld op drie assen meet met een bereik van ±1300 µT.
  • Digitaal kompas op basis van een magnetometer vereist kalibratie — zonder bereikt de fout 30–40 graden.
  • Android API gebruikt Sensor.TYPE_MAGNETIC_FIELD voor toegang tot gegevens in microtesla (µT).
  • Sensor Fusion combineert de magnetometer met gyroscoop en accelerometer voor nauwkeurige oriëntatie.
  • Hard Iron en Soft Iron — soorten magnetische verstoringen veroorzaakt door het metaal van de behuizing en luidsprekers van de smartphone.

Wat is een magnetometer in een smartphone

Een magnetometer in een mobiel apparaat is een drieassige magnetische veldsensor gebaseerd op het Hall-effect. Het meet de projecties van de magnetische inductievector op de X-, Y- en Z-assen. In combinatie met een accelerometer maakt de magnetometer het mogelijk om het azimut te bepalen — de hoek tussen de noordrichting en de as van de telefoon.

Typen magnetometers in mobiele apparaten

In moderne smartphones worden MEMS-magnetometers gebruikt op basis van het anisotrope magnetoresistieve effect (AMR) en het Hall-effect. AMR-sensoren (AKM-serie van Asahi Kasei Microdevices) bieden een gevoeligheid van 0,15 µT/LSB en een bereik van ±1200 µT — voldoende voor het meten van het aardveld (25–65 µT).

ParameterWaarde
TechnologieAMR / Hall-effect
Bereik±1200 — ±1300 µT
Stroomverbruik0,5–2 mA
Afmeting1,5×1,5×0,7 mm
Gevoeligheid0,15 µT/LSB

Waarom is de magnetometer belangrijk voor een smartphone

Zonder digitaal kompas kunnen navigatie-apps de bewegingsrichting niet bepalen. Google Maps gebruikt de magnetometer om de oriëntatie van de kaart ten opzichte van de kijkrichting van de gebruiker weer te geven. Bij sensoruitval toont de app alleen de positie op de kaart zonder de blauwe richtingspijl.

Hoe werkt de Hall-sensor

Het Hall-effect is een natuurkundig verschijnsel waarbij een potentiaalverschil ontstaat aan de randen van een geleidende plaat onder invloed van een magnetisch veld. In MEMS-magnetometers worden dunne-filmstructuren van permalloy (NiFe) gebruikt, waarvan de weerstand verandert onder invloed van een extern magnetisch veld (AMR-effect).

Structuur van de AMR-sensor

Elk van de drie kanalen (X, Y, Z) bestaat uit vier magnetoweerstanden die zijn aangesloten in een Wheatstone-brug. Het magnetisch veld verandert de weerstand van de weerstanden met 2–3%, wat door een differentiaalversterker wordt omgezet in spanning. Een ingebouwde 16-bits ADC digitaliseert het signaal met een frequentie tot 100 Hz.

Meting op de Z-as

Voor het meten van de verticale component van het veld wordt een geïntegreerde magnetische fluxconcentrator (IMC — Integrated Magnetic Concentrator) gebruikt. Dit is een dunne-filmstructuur van NiFe die het horizontale veld naar het verticale vlak afbuigt, waardoor een enkele AMR-brug alle drie de assen kan meten.

Verschil tussen magnetometer en gyroscoop

Een magnetometer bepaalt de oriëntatie ten opzichte van het aardmagnetisch veld (absolute referentie), terwijl een gyroscoop alleen de hoekverandering meet (relatieve gegevens). De gyroscoop geeft nauwkeurige gegevens op korte intervallen, maar hoopt fouten door drift op. De magnetometer drif niet, maar is gevoelig voor magnetische interferentie.

Sensor Fusion met magnetometer

Android combineert gegevens van drie sensoren via SensorManager.getRotationMatrix. De magnetometer wordt gebruikt voor correctie van gyroscoopdrift op lange intervallen. Zonder magnetometer hoopt de gyroscoop in 5 minuten een fout van 10–20 graden op. Volgens Google ARCore (2024) bereikt het fusion-algoritme een nauwkeurigheid van 1–3 graden met een magnetometer.

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 in radialen

Magnetische verstoringen: Hard Iron en Soft Iron

Hard Iron — constant magnetisch veld gecreëerd door ferromagnetische materialen in de telefoon: luidsprekermagneten, trilmotor, metalen frame van de behuizing. Hard Iron-verstoring manifesteert zich als een constante verschuiving (bias) op elke as. Soft Iron — verandering van de veldrichting door magnetisch geleidende materialen die de vorm van de veldlijnen verstoren.

Kalibratie-algoritme

De standaard kalibratieprocedure voor een magnetometer is het draaien van de telefoon in een achtvorm (figure-8 pattern). Tijdens dit proces registreert de sensor punten in de driedimensionale ruimte. Zonder verstoringen liggen de punten op een bol met een straal van 25–65 µT. Hard Iron verplaatst het middelpunt van de bol, Soft Iron verandert het in een ellipsoïde. Het kalibratie-algoritme berekent de verschuivings- en schaalparameters.

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

Softwarematige correctie van verstoringen

Een ontwikkelaar kan zijn eigen magnetometerkalibratie implementeren door gegevens te verzamelen tijdens beweging van het apparaat. Het ellipsoïde-fitting-algoritme (ellipsoid fitting) vindt de Hard Iron- en Soft Iron-parameters door de som van kwadraten van afwijkingen van de bol te minimaliseren. De Apache Commons Math-bibliotheek biedt een implementatie van de niet-lineaire kleinste-kwadratenmethode (Levenberg-Marquardt) voor deze taak — de nauwkeurigheid na softwarematige kalibratie bereikt 0,5 graad.

Aanbevelingen voor het elimineren van storingen

Om Hard Iron te minimaliseren plaatsen fabrikanten de magnetometer in het bovenste deel van de telefoon, ver weg van de luidspreker en trilmotor. Apple-ingenieurs pasten in de iPhone 16 Pro Max (2024) afscherming van de magnetometer met permalloy-folie toe, waardoor de invloed van de luidspreker 4 keer werd verminderd. In de Samsung Galaxy S24 Ultra wordt een extra compensatiecircuit gebruikt dat de stroom in de luidspreker in realtime meet om het geïnduceerde veld weg te trekken. Hoesjes met magnetische bevestigingen (bijvoorbeeld in autohouders) creëren sterke verstoringen — na gebruik kan de magnetometer een verkeerde richting aangeven tot herkalibratie.

Programmatische toegang tot magnetometer in Android

Android biedt twee sensoren: TYPE_MAGNETIC_FIELD (gekalibreerde gegevens in µT) en TYPE_MAGNETIC_FIELD_UNCALIBRATED (ruwe gegevens met schatting van verstoring). Voor navigatie-apps wordt het gebruik van de gekalibreerde sensor aanbevolen — het systeem past automatisch de ingebouwde kalibratie toe op basis van de laatste achtbeweging.

Registratie en verwerking

Vertraging SENSOR_DELAY_NORMAL (200 ms) is voldoende voor een kompas, SENSOR_DELAY_FASTEST (0 ms) — alleen voor speciale onderzoeksapps. Na het ontvangen van waarden kunnen deze worden omgezet in azimut via getRotationMatrix + getOrientation. Het is belangrijk om de nauwkeurigheid van de sensor te controleren via event.accuracy — de waarde SENSOR_STATUS_UNRELIABLE betekent dat kalibratie nodig is.

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

Toepassing van magnetometer in mobiele apps

De magnetometer wordt niet alleen voor het kompas gebruikt. AR-apps, waaronder Pokemon GO, gebruiken de magnetometer om de oriëntatie van de camera ten opzichte van de echte wereld te bepalen. Bij afwezigheid van een magnetometer schakelt ARCore over naar de Screen Axis-modus — de oriëntatie wordt alleen door de gyroscoop bepaald, wat de nauwkeurigheid vermindert.

  • Navigatie — bepaling van het azimut in Google Maps, Yandex.Maps, MAPS.ME. De nauwkeurigheid van het kompas heeft direct invloed op de kwaliteit van de route.
  • Metaaldetectoren — apps voor het zoeken van metalen voorwerpen gebruiken de magnetometer voor detectie van anomalieën in het magnetisch veld.
  • Geofysica en onderwijs — meting van het magnetisch veld voor educatieve projecten. De sensor maakt het mogelijk het aardmagnetisch veld op scholen te bestuderen.
  • VR en 360-video — oriëntatie van het hoofd in VR-headsets wordt gecorrigeerd door de magnetometer om gyroscoopdrift te compenseren.

Magnetometer in autonavigatie

In autonavigatiesystemen op basis van Android Auto wordt de magnetometer gebruikt om de rijrichting te bepalen bij verlies van GPS-signaal in tunnels en dichte stedelijke bebouwing. In combinatie met odometriegegevens van de wielen van het voertuig (verkregen via OBD-II) maakt de magnetometer het mogelijk om tot 5 minuten zonder GPS te navigeren met een positioneringsnauwkeurigheid van 10–20 meter. Volgens Google Maps Engineering Blog (2024) vermindert het hybride algoritme het percentage routerverlies in stedelijke canyons met 40%.

Magnetometer in navigatie-apps

Navigatie-apps gebruiken de magnetometer voor het bepalen van het azimut — de hoek tussen de noordrichting en de huidige koers van de gebruiker. In Google Maps worden magnetometergegevens gecombineerd met GPS-track en bewegingsgeschiedenis om de blauwe richtingspijl weer te geven. Bij verlies van GPS-signaal (in tunnels, onderdoorgangen) blijft de magnetometer de enige bron van oriëntatie-informatie.

Toekomst van magnetometers

De nieuwe generatie 3-assige magnetometers met geïntegreerde ASIC (BMM350 van Bosch, 2024) verbruikt slechts 0,35 mA en ondersteunt frequenties tot 200 Hz. De ontwikkeling van kwantum-magnetometers en NV-centra in diamant voor mobiele apparaten is nog niet uit de laboratoriumfase gekomen. Naar verwachting zal de nauwkeurigheid van mobiele magnetometers in 2028 0,01 µT bereiken.

Veelgestelde vragen

Hoe kalibreer ik de magnetometer op mijn telefoon?

Teken een acht met de telefoon in de lucht — dit is de standaard beweging voor het kalibreren van een digitaal kompas. Als het kompas nog steeds onjuist aangeeft, controleer dan het hoesje: magnetische bevestigingen en metalen elementen creëren sterke Hard Iron-verstoringen.

Waarom geeft het kompas op de telefoon onjuist aan?

Belangrijkste oorzaken: magnetische interferentie van de luidsprekers en trilmotor van de telefoon, geen kalibratie na het verwisselen van het hoesje, invloed van metalen voorwerpen in de buurt. In ruimtes met gewapend betonconstructies wordt het magnetisch veld bijzonder sterk verstoord.

Kan ik mijn telefoon als metaaldetector gebruiken?

Ja, metaaldetector-apps gebruiken de ingebouwde magnetometer voor detectie van anomalieën in het magnetisch veld. De detectiediepte is echter niet meer dan 10–20 cm en het apparaat maakt geen onderscheid tussen metaalsoorten — het is meer een educatief hulpmiddel.

Wat is het verschil tussen TYPE_MAGNETIC_FIELD en TYPE_MAGNETIC_FIELD_UNCALIBRATED?

TYPE_MAGNETIC_FIELD retourneert gegevens na kalibratie door het systeem. TYPE_MAGNETIC_FIELD_UNCALIBRATED geeft ruwe waarden plus een schatting van de verschuiving (bias), waardoor de ontwikkelaar zijn eigen kalibratie kan toepassen.

Hoe krijg ik het azimut uit magnetometergegevens?

Gebruik SensorManager.getRotationMatrix met accelerometer- en magnetometergegevens, vervolgens getOrientation — het eerste element van de array (azimut) is in radialen. Voor weergave van het kompas converteert u naar graden: Math.toDegrees(azimuth).

Samenvatting

  • Magnetometer — drieassige magnetische veldsensor die fungeert als digitaal kompas in mobiele apparaten.
  • AMR-technologie gebaseerd op het Hall-effect maakt meting van het aardveld mogelijk met een nauwkeurigheid van 0,15 µT/LSB.
  • Hard Iron en Soft Iron — magnetische verstoringen veroorzaakt door telefooncomponenten die kalibratie met een achtbeweging vereisen.
  • Android API biedt TYPE_MAGNETIC_FIELD en TYPE_MAGNETIC_FIELD_UNCALIBRATED met gegevens in µT.
  • Sensor Fusion combineert magnetometer met gyroscoop en accelerometer voor nauwkeurige (1–3 graden) oriëntatie.
  • Toepassingen omvatten navigatie, AR-apps, metaaldetectoren en correctie van gyroscoopdrift in VR.
  • Moderne sensoren verbruiken vanaf 0,35 mA bij 200 Hz en hebben een afmeting van 1,5×1,5 mm.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook