Magnetometr w smartfonach — co to jest, rodzaje i zasada działania

Autor: IT Sectr Opublikowano: 2026-03-22 Czas czytania: 10 min

Magnetometr to czujnik mierzący natężenie pola magnetycznego Ziemi w celu określania kierunków świata. W urządzeniach mobilnych działa jak cyfrowy kompas, zapewniając dokładność do 1–2 stopni przy prawidłowej kalibracji. Według danych Bosch Sensortec Application Note, 2024, nowoczesne MEMS-magnetometry pobierają zaledwie 0.5–2 mA i mieszczą się w obudowie 1.5×1.5×0.7 mm.

Najważniejsze

  • Magnetometr — czujnik Halla mierzący pole magnetyczne w trzech osiach z zakresem ±1300 µT.
  • Cyfrowy kompas oparty na magnetometrze wymaga kalibracji — bez niej błąd sięga 30–40 stopni.
  • Android API używa Sensor.TYPE_MAGNETIC_FIELD do odczytu danych w mikroteslach (µT).
  • Sensor Fusion łączy magnetometr z żyroskopem i akcelerometrem w celu dokładnego określania orientacji.
  • Hard Iron i Soft Iron — rodzaje zniekształceń magnetycznych powodowanych przez metal obudowy i głośniki smartfona.

Co to jest magnetometr w smartfonie

Magnetometr w urządzeniu mobilnym to trójosiowy czujnik pola magnetycznego oparty na efekcie Halla. Mierzy rzuty wektora indukcji magnetycznej na osie X, Y i Z. W połączeniu z akcelerometrem magnetometr pozwala określić azymut — kąt między kierunkiem na północ a osią telefonu.

Rodzaje magnetometrów w urządzeniach mobilnych

W nowoczesnych smartfonach stosuje się MEMS-magnetometry oparte na anizotropowym efekcie magnetorezystancyjnym (AMR) i efekcie Halla. Czujniki AMR (seria AKM firmy Asahi Kasei Microdevices) zapewniają czułość 0.15 µT/LSB i zakres ±1200 µT — to wystarcza do pomiaru pola Ziemi (25–65 µT).

ParametrWartość
TechnologiaAMR / Efekt Halla
Zakres±1200 — ±1300 µT
Pobór mocy0.5–2 mA
Rozmiar1.5×1.5×0.7 mm
Czułość0.15 µT/LSB

Dlaczego magnetometr jest ważny dla smartfona

Bez cyfrowego kompasu aplikacje nawigacyjne nie mogą określić kierunku ruchu. Google Maps używa magnetometru do wyświetlania orientacji mapy względem kierunku spojrzenia użytkownika. W przypadku awarii czujnika aplikacja pokazuje tylko położenie na mapie bez niebieskiej strzałki kierunku.

Jak działa czujnik Halla

Efekt Halla to zjawisko fizyczne polegające na powstaniu różnicy potencjałów na krawędziach płytki przewodzącej pod wpływem pola magnetycznego. W MEMS-magnetometrach stosuje się cienkowarstwowe struktury z permalloju (NiFe), których rezystancja zmienia się pod wpływem zewnętrznego pola magnetycznego (efekt AMR).

Struktura czujnika AMR

Każdy z trzech kanałów (X, Y, Z) składa się z czterech magnetorezystorów włączonych w mostek Wheatstone'a. Pole magnetyczne zmienia rezystancję rezystorów o 2–3%, co jest przekształcane przez wzmacniacz różnicowy na napięcie. Wbudowany 16-bitowy przetwornik ADC digitalizuje sygnał z częstotliwością do 100 Hz.

Pomiar w osi Z

Do pomiaru składowej pionowej pola stosuje się zintegrowany koncentrator strumienia magnetycznego (IMC — Integrated Magnetic Concentrator). Jest to cienkowarstwowa struktura z NiFe, która odchyla pole poziome do płaszczyzny pionowej, umożliwiając pojedynczemu mostkowi AMR pomiar wszystkich trzech osi.

Czym różni się magnetometr od żyroskopu

Magnetometr określa orientację względem pola magnetycznego Ziemi (bezwzględne odniesienie), a żyroskop mierzy tylko zmianę kąta (dane względne). Żyroskop dostarcza dokładne dane w krótkich przedziałach czasu, ale kumuluje błąd dryfu. Magnetometr nie dryfuje, lecz jest podatny na zakłócenia magnetyczne.

Sensor Fusion z magnetometrem

Android łączy dane z trzech czujników poprzez SensorManager.getRotationMatrix. Magnetometr służy do korekcji dryfu żyroskopu w długich przedziałach czasu. Bez magnetometru żyroskop w ciągu 5 minut kumuluje błąd do 10–20 stopni. Według danych Google ARCore (2024), algorytm fusion osiąga dokładność 1–3 stopni przy obecności 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] — azymut w radianach

Zniekształcenia magnetyczne: Hard Iron i Soft Iron

Hard Iron — stałe pole magnetyczne wytwarzane przez materiały ferromagnetyczne wewnątrz telefonu: magnesy głośników, silnik wibracyjny, metalową ramkę obudowy. Zniekształcenie Hard Iron objawia się jako stałe przesunięcie (bias) w każdej osi. Soft Iron — zmiana kierunku pola spowodowana materiałami magnetoprzewodzącymi, które zniekształcają kształt linii pola.

Algorytm kalibracji

Standardowa procedura kalibracji magnetometru polega na obracaniu telefonu ósemką (figure-8 pattern). Podczas tego procesu czujnik rejestruje punkty w przestrzeni trójwymiarowej. Bez zniekształceń punkty leżą na sferze o promieniu 25–65 µT. Hard Iron przesuwa środek sfery, Soft Iron zamienia ją w elipsoidę. Algorytm kalibracji oblicza parametry przesunięcia i skalowania.

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

Programowa korekcja zniekształceń

Deweloper może zaimplementować własną kalibrację magnetometru, zbierając dane podczas ruchu urządzenia. Algorytm dopasowania elipsoidy (ellipsoid fitting) znajduje parametry Hard Iron i Soft Iron, minimalizując sumę kwadratów odchyleń od sfery. Biblioteka Apache Commons Math udostępnia implementację nieliniowej metody najmniejszych kwadratów (Levenberg-Marquardt) dla tego zadania — dokładność po programowej kalibracji sięga 0.5 stopnia.

Zalecenia dotyczące eliminacji zakłóceń

Aby zminimalizować Hard Iron, producenci umieszczają magnetometr w górnej części telefonu, z dala od głośnika i silnika wibracyjnego. Inżynierowie Apple w iPhone 16 Pro Max (2024) zastosowali ekranowanie magnetometru folią permallojową, która zmniejszyła wpływ głośnika 4-krotnie. W Samsung Galaxy S24 Ultra zastosowano dodatkowy obwód kompensacyjny mierzący prąd w głośniku w czasie rzeczywistym w celu odejmowania indukowanego pola. Etui z magnetycznymi mocowaniami (np. w uchwytach samochodowych) powodują silne zniekształcenia — po ich użyciu magnetometr może wskazywać nieprawidłowy kierunek aż do ponownej kalibracji.

Programowy dostęp do magnetometru w Androidzie

Android udostępnia dwa czujniki: TYPE_MAGNETIC_FIELD (dane skalibrowane w µT) i TYPE_MAGNETIC_FIELD_UNCALIBRATED (surowe dane z oceną zniekształcenia). Do aplikacji nawigacyjnych zaleca się używanie skalibrowanego czujnika — system automatycznie stosuje wbudowaną kalibrację na podstawie ostatniego ruchu ósemką.

Rejestracja i przetwarzanie

Opóźnienie SENSOR_DELAY_NORMAL (200 ms) jest wystarczające dla kompasu, SENSOR_DELAY_FASTEST (0 ms) — tylko do specjalnych aplikacji badawczych. Po otrzymaniu wartości można przekształcić je na azymut przez getRotationMatrix + getOrientation. Ważne jest sprawdzanie dokładności czujnika przez event.accuracy — wartość SENSOR_STATUS_UNRELIABLE oznacza konieczność kalibracji.

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

Zastosowanie magnetometru w aplikacjach mobilnych

Magnetometr jest używany nie tylko do kompasu. Aplikacje AR, w tym Pokemon GO, wykorzystują magnetometr do określania orientacji kamery względem rzeczywistego świata. W przypadku braku magnetometru ARCore przełącza się w tryb Screen Axis — orientacja jest określana tylko przez żyroskop, co obniża dokładność.

  • Nawigacja — określanie azymutu ruchu w Google Maps, Yandex.Maps, MAPS.ME. Dokładność kompasu bezpośrednio wpływa na jakość trasy.
  • Wykrywacze metali — aplikacje do wykrywania metalowych przedmiotów używają magnetometru do wykrywania anomalii pola magnetycznego.
  • Geofizyka i edukacja — pomiar pola magnetycznego do projektów edukacyjnych. Czujnik pozwala badać pole magnetyczne Ziemi w szkołach.
  • VR i wideo 360 — orientacja głowy w goglach VR jest korygowana przez magnetometr w celu kompensacji dryfu żyroskopu.

Magnetometr w nawigacji samochodowej

W samochodowych systemach nawigacyjnych opartych na Android Auto magnetometr służy do określania kierunku jazdy przy utracie sygnału GPS w tunelach i gęstej zabudowie miejskiej. W połączeniu z danymi z odometrii kół pojazdu (odczytywanymi przez OBD-II) magnetometr pozwala kontynuować nawigację do 5 minut bez GPS z dokładnością pozycjonowania 10–20 metrów. Według danych Google Maps Engineering Blog (2024), algorytm hybrydowy zmniejsza odsetek utraty trasy w kanionach miejskich o 40%.

Magnetometr w aplikacjach nawigacyjnych

Aplikacje nawigacyjne używają magnetometru do określania azymutu ruchu — kąta między kierunkiem na północ a bieżącym kursem użytkownika. W Google Maps dane magnetometru są łączone z śladem GPS i historią przemieszczeń w celu wyświetlenia niebieskiej strzałki kierunku. W przypadku utraty sygnału GPS (w tunelach, przejściach podziemnych) magnetometr pozostaje jedynym źródłem informacji o orientacji.

Przyszłość magnetometrów

Nowa generacja 3-osiowych magnetometrów ze zintegrowanym ASIC (BMM350 od Bosch, 2024) pobiera zaledwie 0.35 mA i obsługuje częstotliwość do 200 Hz. Rozwój kwantowych magnetometrów i centrów NV w diamencie dla urządzeń mobilnych nie wyszedł jeszcze z fazy eksperymentów laboratoryjnych. Oczekuje się, że do 2028 roku dokładność mobilnych magnetometrów osiągnie 0.01 µT.

Często zadawane pytania

Jak skalibrować magnetometr w telefonie?

Narysuj ósemkę telefonem w powietrzu — to standardowy gest kalibracji cyfrowego kompasu. Jeśli kompas nadal pokazuje nieprawidłowo, sprawdź etui: magnetyczne mocowania i metalowe elementy powodują silne zniekształcenia Hard Iron.

Dlaczego kompas w telefonie pokazuje nieprawidłowo?

Główne przyczyny: zakłócenia magnetyczne od głośników i silnika wibracyjnego telefonu, brak kalibracji po zmianie etui, wpływ pobliskich metalowych przedmiotów. W pomieszczeniach z konstrukcjami żelbetowymi pole magnetyczne jest zniekształcane szczególnie silnie.

Czy można używać telefonu jako wykrywacza metali?

Tak, aplikacje wykrywaczy metali wykorzystują wbudowany magnetometr do wykrywania anomalii pola magnetycznego. Jednak głębokość wykrywania nie przekracza 10–20 cm, a urządzenie nie rozróżnia rodzajów metali — jest to raczej narzędzie edukacyjne.

Czym różni się TYPE_MAGNETIC_FIELD od TYPE_MAGNETIC_FIELD_UNCALIBRATED?

TYPE_MAGNETIC_FIELD zwraca dane po kalibracji zastosowanej przez system. TYPE_MAGNETIC_FIELD_UNCALIBRATED podaje surowe wartości plus oszacowanie przesunięcia (bias), umożliwiając deweloperowi zastosowanie własnej kalibracji.

Jak uzyskać azymut z danych magnetometru?

Użyj SensorManager.getRotationMatrix z danymi akcelerometru i magnetometru, następnie getOrientation — pierwszy element tablicy (azymut) będzie w radianach. Do wyświetlenia kompasu przekształć na stopnie: Math.toDegrees(azimuth).

Podsumowanie

  • Magnetometr — trójosiowy czujnik pola magnetycznego działający jak cyfrowy kompas w urządzeniach mobilnych.
  • Technologia AMR oparta na efekcie Halla umożliwia pomiar pola Ziemi z dokładnością 0.15 µT/LSB.
  • Hard Iron i Soft Iron — zniekształcenia magnetyczne powodowane przez komponenty telefonu wymagające kalibracji ruchem ósemki.
  • Android API udostępnia TYPE_MAGNETIC_FIELD i TYPE_MAGNETIC_FIELD_UNCALIBRATED z danymi w µT.
  • Sensor Fusion łączy magnetometr z żyroskopem i akcelerometrem w celu dokładnej (1–3 stopnie) orientacji.
  • Zastosowania obejmują nawigację, aplikacje AR, wykrywacze metali i korekcję dryfu żyroskopu w VR.
  • Nowoczesne czujniki pobierają od 0.35 mA przy częstotliwości 200 Hz i rozmiarze 1.5×1.5 mm.

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również