Compass в смартфонах — суть, принцип работы и применение

Автор: IT Sectr Опубликовано: 2026-03-25 Время чтения: 8 мин

Compass (компас) в смартфоне — это цифровой датчик на основе магнитометра, определяющий направление на магнитные полюса Земли. Технология позволяет приложениям навигации, картографии и дополненной реальности точно определять ориентацию устройства в пространстве. По данным STMicroelectronics, 2025, современные MEMS-магнитометры обеспечивают точность определения направления до 1–2 градусов.

Главное

  • Compass в смартфоне — цифровой компас на базе MEMS-магнитометра, измеряющего магнитное поле Земли.
  • Современные магнитометры используют эффект Холла или магниторезистивный эффект для определения направления магнитного поля.
  • Для точной работы цифрового компаса требуется калибровка — компенсация паразитных магнитных полей от динамиков и других компонентов.
  • Магнитометр в смартфоне измеряет магнитное поле по трём осям (X, Y, Z), что позволяет определять направление в любом положении устройства.
  • Цифровой компас используется в навигационных приложениях, дополненной реальности, геолокационных сервисах и астрономических программах.

Что такое цифровой компас в смартфоне?

Цифровой компас (compass) в смартфоне — это датчик, основанный на магнитометре, который измеряет напряжённость магнитного поля Земли и определяет азимут (угол относительно магнитного севера). В отличие от механического компаса, цифровой компас использует микроэлектромеханические системы (MEMS) для регистрации магнитного поля. Магнитометр измеряет поле по трём осям, что позволяет корректно определять направление при любом наклоне смартфона.

Как устроен датчик

Современный MEMS-магнитометр представляет собой микрочип размером 2×2×1 мм, интегрированный в корпус смартфона вместе с акселерометром и гироскопом (в составе 9-осевого IMU). Датчик измеряет не только направление, но и интенсивность магнитного поля Земли (25–65 мкТл в зависимости от широты). Наличие металлических предметов и паразитных магнитных полей от динамиков, вибромотора и камеры создаёт искажения, поэтому для точной работы необходима программная коррекция показаний.

Первые цифровые компасы в мобильных телефонах появились в 2009 году с выходом iPhone 3GS — первого смартфона со встроенным магнитометром. Сегодня магнитометр устанавливается в подавляющем большинстве смартфонов, включая бюджетные модели. По данным Yole Group, рынок MEMS-магнитометров для мобильных устройств превышает 1,5 млрд единиц в год, что подтверждает востребованность технологии.

Принцип работы магнитометра

Основу MEMS-магнитометра составляет чувствительный элемент, изменяющий свои электрические характеристики под действием внешнего магнитного поля. В современных смартфонах используется эффект Холла или магниторезистивный эффект (AMR — Anisotropic Magneto-Resistance). Принцип основан на том, что материал с током меняет сопротивление при воздействии магнитного поля, и по изменению напряжения вычисляется вектор магнитного поля.

Эффект Холла и AMR

Датчики на эффекте Холла регистрируют изменение напряжения на краях полупроводниковой пластины, возникающее под действием силы Лоренца на движущиеся заряды. Магниторезистивные датчики (AMR) используют плёнку из пермаллоя (NiFe), сопротивление которой зависит от направления магнитного поля. AMR-сенсоры обеспечивают меньший размер и более высокую чувствительность по сравнению с холловскими, поэтому они доминируют в современных смартфонах.

ТипЧувствительностьЭнергопотреблениеРазмер
ХолловскийСредняяНизкоеСредний
AMRВысокаяНизкоеМалый
GMRОчень высокаяСреднееМалый

Данные с магнитометра комбинируются с показаниями акселерометра для корректировки наклона и определения направления на север в горизонтальной плоскости. Алгоритм сенсорного фьюжна (sensor fusion) использует фильтр Маджвика или фильтр Калмана для объединения данных магнитометра, гироскопа и акселерометра. Это позволяет получить стабильный и точный азимут даже при быстрых поворотах и тряске устройства.

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

В мобильной индустрии используются три основных типа MEMS-магнитометров: на эффекте Холла, анизотропные магниторезистивные (AMR) и гигантские магниторезистивные (GMR). AMR-магнитометры получили наибольшее распространение в смартфонах благодаря оптимальному сочетанию чувствительности, энергопотребления и стоимости. Ведущие производители — AKM (Asahi Kasei Microdevices), STMicroelectronics и Bosch Sensortec.

Чувствительность AMR-магнитометра типичного смартфона составляет 0,3–1 мкТл при динамическом диапазоне ±1000 мкТл (±8 Гаусс), что достаточно для точного измерения поля Земли (30–65 мкТл) и компенсации паразитных полей. Частота опроса датчика может достигать 100–200 Гц, но большинство приложений использует 10–50 Гц для экономии энергии. Автоматическая компенсация температуры и стрессовых деформаций корпуса реализована на уровне драйвера датчика.

Калибровка цифрового компаса

Калибровка компаса — это процесс компенсации паразитных магнитных полей, создаваемых компонентами смартфона: динамиками, вибромотором, камерой и аккумулятором. Без калибровки показания магнитометра могут отклоняться от реального направления на 10–30 градусов. Система калибровки определяет матрицу смещений (hard-iron bias) по трём осям и применяет её для коррекции всех последующих измерений.

Алгоритмы и методы калибровки

Стандартный метод калибровки компаса — рисование «восьмёрки»: пользователь вращает смартфон по траектории, напоминающей цифру 8. При движении датчик регистрирует магнитное поле во всех возможных ориентациях, а алгоритм накапливает точки и аппроксимирует сферу с центром, смещённым относительно нуля. Радиус сферы соответствует величине магнитного поля Земли, а центр — вектор паразитного смещения. После аппроксимации система вычисляет поправочные коэффициенты для каждой оси.

Современные алгоритмы калибровки от Qualcomm и MediaTek выполняют непрерывную фоновую калибровку без участия пользователя. Они анализируют изменения магнитного поля при поворотах устройства и автоматически обновляют параметры коррекции. Если датчик обнаруживает новое паразитное поле (например, при установке магнитного чехла), система запускает перекалибровку за 1–2 секунды непрерывного движения устройства.

Применение компаса в мобильных приложениях

Цифровой компас используется в широком спектре мобильных приложений. Основное применение — навигационные и картографические сервисы (Google Maps, Яндекс.Карты, 2GIS), которые определяют ориентацию устройства на карте для корректного отображения направления движения пользователя. В приложениях дополненной реальности (AR) компас обеспечивает правильное расположение виртуальных объектов относительно сторон света.

В астрономических приложениях (Star Walk, SkySafari) компас в сочетании с акселерометром определяет направление, в которое направлен смартфон, и показывает соответствующую область звёздного неба. Рыболовные и туристические приложения используют компас для отметки точек интереса на карте с привязкой к азимуту. Фитнес-трекинг с GPS использует показания компаса для определения направления бега или велосипедной поездки, что повышает точность отображения маршрута.

Использование компаса через Android API

Для доступа к цифровому компасу на Android используется датчик TYPE_MAGNETIC_FIELD из Sensor API. Разработчики регистрируют слушатель изменений показаний магнитометра и получают массив значений напряжённости магнитного поля по трём осям в микроТеслах. Для определения азимута данные магнитометра комбинируются с данными акселерометра через матрицу вращения sensor fusion.

kotlin
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager

class CompassManager(
    private val sensorManager: SensorManager
) : SensorEventListener {

    private val magnetometer = FloatArray(3)
    private val accelerometer = FloatArray(3)
    private val rotationMatrix = FloatArray(9)
    private val orientation = FloatArray(3)

    override fun onSensorChanged(event: SensorEvent) {
        if (event.sensor.type == Sensor.TYPE_MAGNETIC_FIELD) {
            event.values.copyInto(magnetometer)
        } else if (event.sensor.type == Sensor.TYPE_ACCELEROMETER) {
            event.values.copyInto(accelerometer)
        }
        
        SensorManager.getRotationMatrix(
            rotationMatrix, null,
            accelerometer, magnetometer
        )
        SensorManager.getOrientation(rotationMatrix, orientation)
        
        val azimuth = Math.toDegrees(orientation[0].toDouble())
        // azimuth: 0 = север, 90 = восток, 180 = юг, 270 = запад
    }

    fun start() {
        sensorManager.registerListener(this,
            sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
            SensorManager.SENSOR_DELAY_UI)
        sensorManager.registerListener(this,
            sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
            SensorManager.SENSOR_DELAY_UI)
    }

    override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {}
}

Азимут, полученный через getOrientation, измеряется в радианах и может принимать значения от -π до π, где 0 соответствует магнитному северу. Для отображения на экране значения преобразуются в градусы (Math.toDegrees) с нормализацией к диапазону 0–360. Важно учитывать магнитное склонение — угол между магнитным и истинным (географическим) севером, который зависит от географического положения и со временем меняется. Гугл-карты автоматически корректируют склонение через GeomagneticField API.

Часто задаваемые вопросы

Как работает цифровой компас в смартфоне?

Цифровой компас использует MEMS-магнитометр — чип размером 2×2 мм, измеряющий магнитное поле Земли по трём осям. Данные магнитометра комбинируются с показаниями акселерометра для определения азимута — угла между направлением на север и ориентацией устройства.

Почему компас на телефоне показывает неправильно?

Неправильные показания компаса чаще всего вызваны отсутствием калибровки, магнитными помехами от динамиков или вибромотора, а также магнитными чехлами. Решение — выполнить калибровку движения «восьмёркой» или убрать магнитные аксессуары. При постоянных ошибках может потребоваться проверка датчика.

Нужен ли компасу калибровка и как её сделать?

Да, калибровка компаса необходима для компенсации паразитных магнитных полей внутри смартфона. В большинстве современных устройств калибровка выполняется автоматически в фоне. Для ручной калибровки нарисуйте смартфоном «восьмёрку» в воздухе — система соберёт данные со всех ракурсов и скорректирует показания.

Как получить доступ к компасу в приложении Android?

На Android доступ к компасу осуществляется через Sensor API с датчиком TYPE_MAGNETIC_FIELD. Азимут вычисляется через SensorManager.getRotationMatrix() и getOrientation(), комбинирующие данные магнитометра и акселерометра. Полученный азимут можно адаптировать для отображения на экране.

Какие модели смартфонов имеют самый точный компас?

Наиболее точные компасы установлены в смартфонах с тройным IMU-датчиком (магнитометр + гироскоп + акселерометр) и активной системой калибровки. Лидируют флагманы Google Pixel, Samsung Galaxy S-серии и iPhone Pro — они используют магнитометры AKM и Bosch с чувствительностью 0,3 мкТл и автоматической коррекцией.

Итоги

  • Compass (цифровой компас) в смартфоне — это MEMS-магнитометр, измеряющий магнитное поле Земли для определения азимута и ориентации устройства.
  • Современные магнитометры используют AMR-эффект (анизотропное магнитосопротивление), обеспечивая чувствительность 0,3 мкТл и компактный размер 2×2 мм.
  • Точные показания компаса требуют калибровки для компенсации магнитных полей от динамиков, вибромотора и камеры смартфона.
  • Направление на север вычисляется через sensor fusion — объединение данных магнитометра с акселерометром и гироскопом для коррекции наклона.
  • Цифровой компас применяется в навигации, картографии, дополненной реальности, астрономии и фитнес-трекинге для определения ориентации и направления движения.
  • На Android доступ к компасу осуществляется через TYPE_MAGNETIC_FIELD с вычислением азимута через getRotationMatrix и getOrientation.
  • Магнитное склонение (угол между магнитным и географическим севером) корректируется автоматически в навигационных API Google и Apple.

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

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

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

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