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 µT в зависимост от географската ширина). Наличието на метални предмети и паразитни магнитни полета от високоговорители, вибрационен мотор и камера създава изкривявания, поради което за точна работа е необходима софтуерна корекция на показанията.

Първите цифрови компаси в мобилни телефони се появяват през 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 µT с динамичен обхват ±1000 µT (±8 Гауса), достатъчна за точно измерване на земното поле (30–65 µT) и компенсиране на паразитни полета. Честотата на запитване на сензора може да достигне 100–200 Hz, но повечето приложения използват 10–50 Hz за пестене на енергия. Автоматичната компенсация на температурата и деформациите от напрежение на корпуса е реализирана на ниво драйвер на сензора.

Калибриране на цифровия компас

Калибриране на компаса е процес на компенсиране на паразитни магнитни полета, генерирани от компонентите на смартфона: високоговорители, вибрационен мотор, камера и акумулатор. Без калибриране показанията на магнитометъра могат да се отклоняват от реалната посока с 10–30 градуса. Системата за калибриране определя матрицата на отместване (hard-iron bias) по три оси и я прилага за корекция на всички последващи измервания.

Алгоритми и методи за калибриране

Стандартният метод за калибриране на компаса — рисуване на осмица: потребителят завърта смартфона по траектория, наподобяваща цифрата 8. По време на движението сензорът регистрира магнитното поле във всички възможни ориентации, а алгоритъмът натрупва точки и апроксимира сфера с център, изместен спрямо нулата. Радиусът на сферата съответства на големината на магнитното поле на Земята, а центърът — на вектора на паразитно отместване. След апроксимацията системата изчислява корекционни коефициенти за всяка ос.

Съвременните алгоритми за калибриране на Qualcomm и MediaTek извършват непрекъснато фоново калибриране без участието на потребителя. Те анализират промените в магнитното поле при завъртане на устройството и автоматично актуализират параметрите на корекция. Ако сензорът открие ново паразитно поле (например при поставяне на магнитен калъф), системата стартира прекалибриране за 1–2 секунди непрекъснато движение на устройството.

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

Цифров компас се използва в широк спектър от мобилни приложения. Основното приложение — навигационни и картографски услуги (Google Maps, Yandex.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())
        // азимут: 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. Важно е да се вземе предвид магнитната деклинация — ъгълът между магнитния и истинския (географски) север, който зависи от географското положение и се променя с времето. Google Карти автоматично коригират деклинацията чрез 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 µT и автоматична корекция.

Обобщение

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

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

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

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

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