Магнитометр в смартфонах — что это, виды и принцип работы

Автор: 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 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

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