Ein Magnetometer ist ein Sensor, der die Stärke des Erdmagnetfelds misst, um die Himmelsrichtungen zu bestimmen. In mobilen Geräten fungiert er als digitaler Kompass und bietet bei richtiger Kalibrierung eine Genauigkeit von bis zu 1–2 Grad. Laut Bosch Sensortec Application Note, 2024 verbrauchen moderne MEMS-Magnetometer nur 0.5–2 mA und passen in ein 1.5×1.5×0.7 mm Gehäuse.
Wichtige Erkenntnisse
Ein Magnetometer in einem mobilen Gerät ist ein dreiachsiger Magnetfeldsensor basierend auf dem Hall-Effekt. Er misst die Projektionen des magnetischen Induktionsvektors auf die X-, Y- und Z-Achse. In Kombination mit einem Beschleunigungsmesser bestimmt das Magnetometer den Azimut — den Winkel zwischen der Nordrichtung und der Telefonachse.
Moderne Smartphones verwenden MEMS-Magnetometer basierend auf dem anisotropen magnetoresistiven Effekt (AMR) und dem Hall-Effekt. AMR-Sensoren (AKM-Serie von Asahi Kasei Microdevices) bieten eine Empfindlichkeit von 0.15 µT/LSB und einen Bereich von ±1200 µT — genug, um das Erdfeld (25–65 µT) zu messen.
| Parameter | Wert |
|---|---|
| Technologie | AMR / Hall-Effekt |
| Bereich | ±1200 — ±1300 µT |
| Stromverbrauch | 0.5–2 mA |
| Größe | 1.5×1.5×0.7 mm |
| Empfindlichkeit | 0.15 µT/LSB |
Ohne einen digitalen Kompass können Navigations-Apps die Bewegungsrichtung nicht bestimmen. Google Maps verwendet das Magnetometer, um die Kartenausrichtung relativ zur Blickrichtung des Benutzers anzuzeigen. Wenn der Sensor ausfällt, zeigt die App nur den Standort auf der Karte ohne den blauen Richtungspfeil an.
Der Hall-Effekt ist ein physikalisches Phänomen, bei dem an den Kanten einer leitenden Platte eine Potenzialdifferenz entsteht, wenn sie einem Magnetfeld ausgesetzt wird. MEMS-Magnetometer verwenden Dünnschichtstrukturen aus Permalloy (NiFe), deren Widerstand sich unter dem Einfluss eines externen Magnetfelds (AMR-Effekt) ändert.
Jeder der drei Kanäle (X, Y, Z) besteht aus vier Magnetowiderständen, die in einer Wheatstone-Brücke geschaltet sind. Das Magnetfeld ändert den Widerstand der Widerstände um 2–3%, was von einem Differenzverstärker in Spannung umgewandelt wird. Ein integrierter 16-Bit-ADC digitalisiert das Signal mit einer Frequenz von bis zu 100 Hz.
Zur Messung der vertikalen Feldkomponente wird ein integrierter Magnetfeldkonzentrator (IMC) verwendet. Dies ist eine Dünnschichtstruktur aus NiFe, die das horizontale Feld in die vertikale Ebene ablenkt, sodass eine einzelne AMR-Brücke alle drei Achsen messen kann.
Das Magnetometer bestimmt die Orientierung relativ zum Erdmagnetfeld (absolute Referenz), während ein Gyroskop nur die Winkeländerung (relative Daten) misst. Das Gyroskop liefert auf kurzen Intervallen genaue Daten, akkumuliert jedoch Driftfehler. Das Magnetometer drifftet nicht, ist aber anfällig für magnetische Störungen.
Android kombiniert Daten von drei Sensoren über SensorManager.getRotationMatrix. Das Magnetometer wird verwendet, um die Gyroskopdrift über lange Intervalle zu korrigieren. Ohne Magnetometer akkumuliert das Gyroskop in 5 Minuten einen Fehler von 10–20 Grad. Laut Google ARCore (2024) erreicht der Fusionsalgorithmus mit Magnetometer eine Genauigkeit von 1–3 Grad.
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 im Bogenmaß
Hard Iron — ein permanentes Magnetfeld, das durch ferromagnetische Materialien im Telefon erzeugt wird: Lautsprechermagnete, Vibrationsmotor, Metallrahmen. Hard-Iron-Verzerrung tritt als konstanter Offset (Bias) entlang jeder Achse auf. Soft Iron — eine Änderung der Feldrichtung, verursacht durch magnetisch permeable Materialien, die die Feldlinien verzerren.
Das Standard-Kalibrierungsverfahren für Magnetometer ist das Drehen des Telefons in einer Acht. Während des Vorgangs zeichnet der Sensor Punkte im dreidimensionalen Raum auf. Ohne Verzerrungen liegen die Punkte auf einer Kugel mit einem Radius von 25–65 µT. Hard Iron verschiebt den Kugelmittelpunkt, Soft Iron verwandelt sie in ein Ellipsoid. Der Kalibrierungsalgorithmus berechnet Offset- und Skalierungsparameter.
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
)
}
Der Entwickler kann eine eigene Magnetometer-Kalibrierung implementieren, indem er Daten während der Bewegung des Geräts sammelt. Der Ellipsoid-Fitting-Algorithmus findet Hard-Iron- und Soft-Iron-Parameter, indem er die Summe der quadrierten Abweichungen von der Kugel minimiert. Die Bibliothek Apache Commons Math bietet eine Implementierung der nichtlinearen kleinsten Quadrate (Levenberg-Marquardt) für diese Aufgabe — die Genauigkeit nach der Software-Kalibrierung erreicht 0.5 Grad.
Zur Minimierung von Hard Iron platzieren Hersteller das Magnetometer im oberen Teil des Telefons, fern von Lautsprecher und Vibrationsmotor. Apple-Ingenieure verwendeten im iPhone 16 Pro Max (2024) eine Permalloy-Folienabschirmung für das Magnetometer, wodurch der Lautsprechereinfluss um das Vierfache reduziert wurde. Das Samsung Galaxy S24 Ultra verwendet eine zusätzliche Kompensationsschaltung, die den Lautsprecherstrom in Echtzeit misst, um das induzierte Feld zu subtrahieren. Hüllen mit magnetischen Halterungen (z. B. in Auto-Haltern) erzeugen starke Verzerrungen — nach der Verwendung kann das Magnetometer bis zur erneuten Kalibrierung die falsche Richtung anzeigen.
Android bietet zwei Sensoren: TYPE_MAGNETIC_FIELD (kalibrierte Daten in µT) und TYPE_MAGNETIC_FIELD_UNCALIBRATED (Rohdaten mit Verzerrungsschätzung). Für Navigations-Apps wird die Verwendung des kalibrierten Sensors empfohlen — das System wendet automatisch die integrierte Kalibrierung basierend auf der letzten Acht-Bewegung an.
SENSOR_DELAY_NORMAL (200 ms) ist für einen Kompass ausreichend, SENSOR_DELAY_FASTEST (0 ms) — nur für spezielle Forschungsanwendungen. Nach dem Empfang der Werte können Sie diese über getRotationMatrix + getOrientation in Azimut umwandeln. Es ist wichtig, die Sensorgenauigkeit über event.accuracy zu überprüfen — SENSOR_STATUS_UNRELIABLE bedeutet, dass eine Kalibrierung erforderlich ist.
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)
}
}
Das Magnetometer wird nicht nur für den Kompass verwendet. AR-Anwendungen, einschließlich Pokemon GO, verwenden das Magnetometer, um die Kameraausrichtung relativ zur realen Welt zu bestimmen. Ohne Magnetometer wechselt ARCore in den Screen-Axis-Modus — die Ausrichtung wird nur durch das Gyroskop bestimmt, was die Genauigkeit verringert.
In Fahrzeugnavigationssystemen basierend auf Android Auto wird das Magnetometer verwendet, um die Bewegungsrichtung zu bestimmen, wenn das GPS-Signal in Tunneln und dichten Stadtgebieten verloren geht. In Kombination mit Odometriedaten von den Autorädern (über OBD-II) ermöglicht das Magnetometer eine fortgesetzte Navigation für bis zu 5 Minuten ohne GPS mit einer Positionierungsgenauigkeit von 10–20 Metern. Laut Google Maps Engineering Blog (2024) reduziert der hybride Algorithmus den Routenverlust in Stadtcanyons um 40%.
Navigations-Apps verwenden das Magnetometer zur Bestimmung des Bewegungsazimuts — des Winkels zwischen Norden und der aktuellen Ausrichtung des Benutzers. In Google Maps werden Magnetometerdaten mit dem GPS-Track und dem Bewegungshistorien kombiniert, um den blauen Richtungspfeil anzuzeigen. Wenn das GPS-Signal verloren geht (in Tunneln, Unterführungen), bleibt das Magnetometer die einzige Orientierungsinformationsquelle.
Die neue Generation von 3-Achs-Magnetometern mit integriertem ASIC (BMM350 von Bosch, 2024) verbraucht nur 0.35 mA und unterstützt bis zu 200 Hz. Die Entwicklung von Quantenmagnetometern und NV-Zentren in Diamant für mobile Geräte hat das Laborstadium noch nicht verlassen. Es wird erwartet, dass die Genauigkeit mobiler Magnetometer bis 2028 0.01 µT erreichen wird.
Häufig gestellte Fragen
Zeichnen Sie eine Acht mit dem Telefon in der Luft — dies ist die Standardgeste zur Kalibrierung des digitalen Kompasses. Wenn der Kompass immer noch falsch anzeigt, überprüfen Sie die Hülle: Magnetische Halterungen und Metallelemente erzeugen starke Hard-Iron-Verzerrungen.
Hauptgründe: Magnetische Störungen durch Telefonlautsprecher und Vibrationsmotor, fehlende Kalibrierung nach dem Wechsel der Hülle, Einfluss naher Metallgegenstände. In Innenräumen mit Stahlbetonkonstruktionen wird das Magnetfeld besonders stark verzerrt.
Ja, Metalldetektor-Apps verwenden das eingebaute Magnetometer zur Erkennung von Magnetfeldanomalien. Die Erkennungstiefe überschreitet jedoch 10–20 cm nicht, und das Gerät unterscheidet nicht zwischen Metalltypen — es ist eher ein Bildungswerkzeug.
TYPE_MAGNETIC_FIELD gibt Daten nach der Kalibrierung durch das System zurück. TYPE_MAGNETIC_FIELD_UNCALIBRATED liefert Rohwerte plus eine Bias-Schätzung, sodass der Entwickler seine eigene Kalibrierung anwenden kann.
Verwenden Sie SensorManager.getRotationMatrix mit Beschleunigungsmesser- und Magnetometerdaten, dann getOrientation — das erste Array-Element (Azimut) wird in Radiant angegeben. Zur Anzeige des Kompasses konvertieren Sie in Grad: Math.toDegrees(azimuth).
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch