Магнітометр у смартфонах — що це, види та принцип роботи

Автор: IT Sectr Опубліковано: 2026-03-22 Час читання: 10 хв

Магнітометр — це датчик, який вимірює напруженість магнітного поля Землі для визначення сторін світу. У мобільних пристроях він працює як цифровий компас, забезпечуючи точність до 1–2 градусів при правильному калібруванні. За даними Bosch Sensortec Application Note, 2024, сучасні MEMS-магнітометри споживають лише 0.5–2 мА і вміщуються в корпусі 1.5×1.5×0.7 мм.

Головне

  • Магнітометр — датчик Холла, який вимірює магнітне поле по трьох осях з діапазоном ±1300 мкТл.
  • Цифровий компас на основі магнітометра потребує калібрування — без нього похибка досягає 30–40 градусів.
  • Android API використовує Sensor.TYPE_MAGNETIC_FIELD для доступу до даних у мікроТеслах (мкТл).
  • Sensor Fusion об'єднує магнітометр з гіроскопом та акселерометром для точної орієнтації.
  • Hard Iron і Soft Iron — типи магнітних спотворень, спричинені металом корпусу та динаміками смартфона.

Що таке магнітометр у смартфоні

Магнітометр у мобільному пристрої — це тривісний датчик магнітного поля, заснований на ефекті Холла. Він вимірює проекції вектора магнітної індукції на осі X, Y та Z. У поєднанні з акселерометром магнітометр дозволяє визначити азимут — кут між напрямком на північ та віссю телефона.

Типи магнітометрів у мобільних пристроях

У сучасних смартфонах використовуються MEMS-магнітометри на основі анізотропного магніторезистивного ефекту (AMR) та ефекту Холла. AMR-сенсори (AKM серія від Asahi Kasei Microdevices) забезпечують чутливість 0.15 мкТл/LSB та діапазон ±1200 мкТл — цього достатньо для вимірювання поля Землі (25–65 мкТл).

ПараметрЗначення
ТехнологіяAMR / Ефект Холла
Діапазон±1200 — ±1300 мкТл
Споживання0.5–2 мА
Розмір1.5×1.5×0.7 мм
Чутливість0.15 мкТл/LSB

Чому магнітометр важливий для смартфона

Без цифрового компаса навігаційні додатки не можуть визначити напрямок руху. Google Maps використовує магнітометр для відображення орієнтації карти відносно напрямку погляду користувача. При відмові сенсора додаток показує лише положення на карті без синьої стрілки напрямку.

Як працює датчик Холла

Ефект Холла — фізичне явище виникнення різниці потенціалів на краях провідної пластини при впливі магнітного поля. У MEMS-магнітометрах використовуються тонкоплівкові структури з пермалою (NiFe), опір яких змінюється під дією зовнішнього магнітного поля (AMR-ефект).

Структура AMR-сенсора

Кожен із трьох каналів (X, Y, Z) складається з чотирьох магніторезисторів, включених у міст Вітстона. Магнітне поле змінює опір резисторів на 2–3%, що перетворюється диференціальним підсилювачем у напругу. Вбудований 16-бітний АЦП оцифровує сигнал з частотою до 100 Гц.

Вимірювання по осі Z

Для вимірювання вертикальної складової поля використовується інтегрований концентратор магнітного потоку (IMC — Integrated Magnetic Concentrator). Це тонкоплівкова структура з NiFe, яка відхиляє горизонтальне поле у вертикальну площину, дозволяючи єдиному AMR-мосту вимірювати всі три осі.

Чим відрізняється магнітометр від гіроскопа

Магнітометр визначає орієнтацію відносно магнітного поля Землі (абсолютний референс), а гіроскоп вимірює лише зміну кута (відносні дані). Гіроскоп дає точні дані на коротких інтервалах, але накопичує помилку дрейфу. Магнітометр не дрейфує, але піддається магнітним перешкодам.

Sensor Fusion з магнітометром

Android об'єднує дані трьох сенсорів через SensorManager.getRotationMatrix. Магнітометр використовується для корекції дрейфу гіроскопа на довгих інтервалах. Без магнітометра гіроскоп за 5 хвилин накопичує помилку до 10–20 градусів. За даними Google ARCore (2024), fusion-алгоритм досягає точності 1–3 градуси за наявності магнітометра.

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] — азимут в радіанах

Магнітні спотворення: Hard Iron і Soft Iron

Hard Iron — постійне магнітне поле, створюване феромагнітними матеріалами всередині телефона: магнітами динаміків, вібромотором, металевою рамкою корпуса. Hard Iron спотворення проявляється як постійне зміщення (bias) по кожній осі. Soft Iron — зміна напрямку поля через магнітопроникні матеріали, які спотворюють форму ліній поля.

Алгоритм калібрування

Стандартна процедура калібрування магнітометра — це обертання телефона по вісімці (figure-8 pattern). У процесі сенсор записує точки в тривимірному просторі. Без спотворень точки лежать на сфері радіусом 25–65 мкТл. Hard Iron зміщує центр сфери, Soft Iron перетворює її в еліпсоїд. Алгоритм калібрування обчислює параметри зміщення та масштабування.

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

Програмна корекція спотворень

Розробник може реалізувати власне калібрування магнітометра, збираючи дані при русі пристрою. Алгоритм еліпсоїдної підгонки (ellipsoid fitting) знаходить параметри Hard Iron та Soft Iron, мінімізуючи суму квадратів відхилень від сфери. Бібліотека Apache Commons Math надає реалізацію нелінійного методу найменших квадратів (Levenberg-Marquardt) для цього завдання — точність після програмного калібрування досягає 0.5 градуса.

Рекомендації щодо усунення перешкод

Для мінімізації Hard Iron виробники розміщують магнітометр у верхній частині телефона, подалі від динаміка та вібромотора. Інженери Apple в iPhone 16 Pro Max (2024) застосували екранування магнітометра пермалоєвою фольгою, знизивши вплив динаміка в 4 рази. У Samsung Galaxy S24 Ultra використовується додатковий компенсаційний контур, який вимірює струм у динаміку в реальному часі для віднімання induced-поля. Чохли з магнітними кріпленнями (наприклад, в автомобільних тримачах) створюють сильні спотворення — після використання магнітометр може показувати неправильний напрямок до повторного калібрування.

Програмний доступ до магнітометра в Android

Android надає два сенсори: TYPE_MAGNETIC_FIELD (калібровані дані в мкТл) та TYPE_MAGNETIC_FIELD_UNCALIBRATED (сирі дані з оцінкою спотворення). Для навігаційних додатків рекомендується використовувати калібрований сенсор — система автоматично застосовує вбудоване калібрування на основі останнього руху по вісімці.

Реєстрація та обробка

SENSOR_DELAY_NORMAL (200 мс) достатня для компаса, SENSOR_DELAY_FASTEST (0 мс) — лише для спеціальних дослідницьких додатків. Після отримання значень можна перетворити їх в азимут через getRotationMatrix + getOrientation. Важно перевіряти точність сенсора через event.accuracy — значення SENSOR_STATUS_UNRELIABLE означає необхідність калібрування.

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

Застосування магнітометра в мобільних додатках

Магнітометр використовується не тільки для компаса. AR-додатки, включаючи Pokemon GO, використовують магнітометр для визначення орієнтації камери відносно реального світу. При відсутності магнітометра ARCore перемикається в режим Screen Axis — орієнтація визначається лише гіроскопом, що знижує точність.

  • Навігація — визначення азимуту руху в Google Maps, Яндекс.Картах, MAPS.ME. Точність компаса безпосередньо впливає на якість маршруту.
  • Металошукачі — додатки для пошуку металевих предметів використовують магнітометр для виявлення аномалій магнітного поля.
  • Геофізика та навчання — вимірювання магнітного поля для освітніх проєктів. Датчик дозволяє вивчати магнітне поле Землі в школах.
  • VR та 360-відео — орієнтація голови в VR-шоломах коригується магнітометром для компенсації дрейфу гіроскопа.

Магнітометр в автомобільній навігації

В автомобільних навігаційних системах на базі Android Auto магнітометр використовується для визначення напрямку руху при втраті сигналу GPS у тунелях та щільній міській забудові. У комбінації з даними одометрії від коліс автомобіля (отримуваними через OBD-II) магнітометр дозволяє продовжувати навігацію до 5 хвилин без GPS з точністю позиціонування 10–20 метрів. За даними Google Maps Engineering Blog (2024), гібридний алгоритм знижує відсоток втрати маршруту в міських каньйонах на 40%.

Магнітометр у навігаційних додатках

Навігаційні додатки використовують магнітометр для визначення азимуту руху — кута між напрямком на північ та поточним курсом користувача. У Google Maps дані магнітометра комбінуються з GPS-треком та історією переміщень для відображення синьої стрілки напрямку. При втраті сигналу GPS (у тунелях, підземних переходах) магнітометр залишається єдиним джерелом інформації про орієнтацію.

Майбутнє магнітометрів

Нове покоління 3-осьових магнітометрів з інтегрованим ASIC (BMM350 від Bosch, 2024) споживає всього 0.35 мА та підтримує частоту до 200 Гц. Розвиток квантових магнітометрів та NV-центрів в алмазі для мобільних пристроїв поки не вийшло зі стадії лабораторних експериментів. Очікується, що до 2028 року точність мобільних магнітометрів досягне 0.01 мкТл.

Часті запитання

Як відкалібрувати магнітометр на телефоні?

Намалюйте вісімку телефоном у повітрі — це стандартний жест для калібрування цифрового компаса. Якщо компас все одно показує невірно, перевірте чохол: магнітні кріплення та металеві елементи створюють сильні спотворення Hard Iron.

Чому компас у телефоні показує невірно?

Основні причини: магнітні перешкоди від динаміків та вібромотора телефона, відсутність калібрування після зміни чохла, вплив металевих предметів поруч. У приміщенні із залізобетонними конструкціями магнітне поле спотворюється особливо сильно.

Чи можна використовувати телефон як металошукач?

Так, додатки-металошукачі використовують вбудований магнітометр для виявлення аномалій магнітного поля. Однак глибина виявлення не перевищує 10–20 см, і прилад не розрізняє типи металів — це скоріше освітній інструмент.

Чим відрізняється TYPE_MAGNETIC_FIELD від TYPE_MAGNETIC_FIELD_UNCALIBRATED?

TYPE_MAGNETIC_FIELD повертає дані після калібрування, застосованої системою. TYPE_MAGNETIC_FIELD_UNCALIBRATED віддає сирі значення плюс оцінку зміщення (bias), дозволяючи розробнику застосувати власне калібрування.

Як отримати азимут із даних магнітометра?

Використовуйте SensorManager.getRotationMatrix з даними акселерометра та магнітометра, потім getOrientation — перший елемент масиву (азимут) буде в радіанах. Для відображення компаса перетворіть у градуси: Math.toDegrees(azimuth).

Підсумки

  • Магнітометр — тривісний датчик магнітного поля, що працює як цифровий компас у мобільних пристроях.
  • AMR-технологія на основі ефекту Холла дозволяє вимірювати поле Землі з точністю 0.15 мкТл/LSB.
  • Hard Iron і Soft Iron — магнітні спотворення, спричинені компонентами телефона, потребують калібрування рухом вісімкою.
  • Android API надає TYPE_MAGNETIC_FIELD та TYPE_MAGNETIC_FIELD_UNCALIBRATED з даними в мкТл.
  • Sensor Fusion об'єднує магнітометр з гіроскопом та акселерометром для точної (1–3 градуси) орієнтації.
  • Застосування включає навігацію, AR-додатки, металошукачі та корекцію дрейфу гіроскопа у VR.
  • Сучасні сенсори споживають від 0.35 мА при частоті 200 Гц та розмірі 1.5×1.5 мм.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також