Магнетометър в смартфоните — какво е, видове и принцип на работа

Автор: IT Sectr Публикувано: 2026-03-22 Време за четене: 10 мин

Магнетометърът е сензор, който измерва интензитета на магнитното поле на Земята за определяне на посоките на света. В мобилните устройства той работи като цифров компас, осигурявайки точност до 1–2 градуса при правилно калибриране. Според Bosch Sensortec Application Note, 2024, съвременните MEMS-магнетометри консумират само 0,5–2 mA и се побират в корпус с размери 1.5×1.5×0.7 mm.

Основни точки

  • Магнетометър — сензор на Хол, измерващ магнитното поле по три оси с обхват ±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 mA
Размер1.5×1.5×0.7 mm
Чувствителност0,15 μТ/LSB

Защо магнетометърът е важен за смартфона

Без цифров компас навигационните приложения не могат да определят посоката на движение. Google Maps използва магнетометъра за показване на ориентацията на картата спрямо посоката на погледа на потребителя. При отказ на сензора, приложението показва само позицията на картата без синя стрелка за посока.

Как работи сензорът на Хол

Ефектът на Хол е физическо явление на възникване на потенциална разлика по краищата на проводяща пластина под въздействието на магнитно поле. В MEMS-магнетометрите се използват тънкослойни структури от пермалой (NiFe), чието съпротивление се променя под въздействието на външно магнитно поле (AMR-ефект).

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

Всеки от трите канала (X, Y, Z) се състои от четири магниторезистора, свързани в мост на Уитстън. Магнитното поле променя съпротивлението на резисторите с 2–3%, което се преобразува от диференциален усилвател в напрежение. Вграден 16-битов ADC дигитализира сигнала с честота до 100 Hz.

Измерване по ос 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 се използва допълнителна компенсационна верига, която измерва тока в говорителя в реално време за изваждане на индуцираното поле. Калъфи с магнитни закрепвания (например в автомобилни държачи) създават силни смущения — след употреба магнетометърът може да показва грешна посока до повторно калибриране.

Програмен достъп до магнетометъра в Android

Android предоставя два сензора: TYPE_MAGNETIC_FIELD (калибрирани данни в μТ) и TYPE_MAGNETIC_FIELD_UNCALIBRATED (сурови данни с оценка на смущението). За навигационни приложения се препоръчва използването на калибриран сензор — системата автоматично прилага вграденото калибриране въз основа на последното движение във формата на осмица.

Регистрация и обработка

Закъснението SENSOR_DELAY_NORMAL (200 ms) е достатъчно за компас, SENSOR_DELAY_FASTEST (0 ms) — само за специални изследователски приложения. След получаване на стойностите, те могат да бъдат преобразувани в азимут чрез 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, Yandex.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 mA и поддържа честота до 200 Hz. Развитието на квантови магнетометри и NV центрове в диамант за мобилни устройства все още не е излязло от фазата на лабораторни експерименти. Очаква се до 2028 г. точността на мобилните магнетометри да достигне 0,01 μТ.

Често задавани въпроси

Как да калибрирам магнетометъра на телефона?

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

Защо компасът в телефона показва неточно?

Основни причини: магнитни смущения от говорителите и вибрационния мотор на телефона, липса на калибриране след смяна на калъф, влияние на близки метални предмети. В помещения със стоманобетонни конструкции магнитното поле се изкривява особено силно.

Може ли да се използва телефонът като металотърсач?

Да, приложенията за металотърсачи използват вградения магнетометър за откриване на аномалии в магнитното поле. Дълбочината на откриване обаче не надвишава 10–20 cm и устройството не различава видовете метал — това е по-скоро образователен инструмент.

Каква е разликата между 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 mA при честота 200 Hz и размер 1.5×1.5 mm.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също