Компас у смартфонах — суть, принцип роботи та застосування

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

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

Головне

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

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

Цифровий компас у смартфоні — це датчик, заснований на магнітометрі, який вимірює напруженість магнітного поля Землі та визначає азимут (кут відносно магнітної півночі). На відміну від механічного компаса, цифровий компас використовує мікроелектромеханічні системи (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())
        // азимут: 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 мкТл та автоматичною корекцією.

Підсумки

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

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

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

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

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