Compass (kompas) smartfonda maqnitometr əsasında işləyən rəqəmsal sensor olub Yerin maqnit qütblərinə istiqaməti müəyyən edir. Texnologiya naviqasiya, xəritəçəkmə və artırılmış reallıq tətbiqlərinə cihazın fəzada oriyentasiyasını dəqiq müəyyən etməyə imkan verir. STMicroelectronics, 2025 məlumatlarına görə, müasir MEMS-maqnitometrlər istiqamətin təyinində dəqiqlik təmin edir — 1–2 dərəcəyə qədər.
Əsas məqamlar
Rəqəmsal kompas (compass) smartfonda — maqnitometr əsasında işləyən, Yerin maqnit sahəsinin gərginliyini ölçən və azimutu (maqnit şimalına nisbətən bucaq) təyin edən sensordur. Mexaniki kompasdan fərqli olaraq, rəqəmsal kompas maqnit sahəsini qeyd etmək üçün mikroelektromexaniki sistemlərdən (MEMS) istifadə edir. Maqnitometr sahəni üç ox üzrə ölçür, bu da smartfonun istənilən meylində istiqaməti düzgün təyin etməyə imkan verir.
Müasir MEMS-maqnitometr — 2×2×1 mm ölçülü, smartfonun korpusuna akselerometr və giroskopla birlikdə (9-oxlu IMU tərkibində) inteqrasiya edilmiş mikroçipdir. Sensor təkcə istiqaməti deyil, həm də Yerin maqnit sahəsinin intensivliyini ölçür (en dairəsindən asılı olaraq 25–65 µT). Metal əşyaların və dinamiklər, vibrasiya motoru, kameradan yaranan parazit maqnit sahələrinin olması təhriflər yaradır, buna görə də dəqiq iş üçün proqram korreksiyası tələb olunur.
İlk rəqəmsal kompaslar mobil telefonlarda 2009-cu ildə iPhone 3GS-in buraxılışı ilə ortaya çıxdı — daxili maqnitometrə malik ilk smartfon. Bu gün maqnitometr smartfonların böyük əksəriyyətində, o cümlədən büdcə modellərində quraşdırılır. Yole Group məlumatlarına görə, mobil cihazlar üçün MEMS-maqnitometr bazarı ildə 1,5 milyard vahidi ötür ki, bu da texnologiyaya tələbatı təsdiqləyir.
MEMS-maqnitometrin əsasını xarici maqnit sahəsinin təsiri altında elektrik xarakteristikalarını dəyişən həssas element təşkil edir. Müasir smartfonlarda Hall effekti və ya maqnito-rezistiv effekt (AMR — Anisotropic Magneto-Resistance) istifadə olunur. Prinsip ondan ibarətdir ki, cərəyan keçirən material maqnit sahəsinin təsiri altında müqavimətini dəyişir və gərginliyin dəyişməsi ilə maqnit sahə vektoru hesablanır.
Hall effekti əsasında işləyən sensorlar hərəkət edən yüklərə Lorentz qüvvəsinin təsiri nəticəsində yarımkeçirici lövhənin kənarlarında yaranan gərginlik dəyişməsini qeyd edir. Maqnito-rezistiv sensorlar (AMR) müqaviməti maqnit sahəsinin istiqamətindən asılı olan permalloy (NiFe) təbəqəsindən istifadə edir. AMR sensorları daha kiçik ölçü və Hall sensorları ilə müqayisədə daha yüksək həssaslıq təmin edir, buna görə də müasir smartfonlarda üstünlük təşkil edir.
| Növ | Həssaslıq | Enerji sərfiyyatı | Ölçü |
|---|---|---|---|
| Hall | Orta | Aşağı | Orta |
| AMR | Yüksək | Aşağı | Kiçik |
| GMR | Çox yüksək | Orta | Kiçik |
Maqnitometrdən alınan məlumatlar meylin korreksiyası və üfüqi müstəvidə şimala istiqamətin təyini üçün akselerometr göstəriciləri ilə birləşdirilir. Sensor füzyonu (sensor fusion) alqoritmi maqnitometr, giroskop və akselerometr məlumatlarını birləşdirmək üçün Madgwick filtri və ya Kalman filtrindən istifadə edir. Bu, hətta cihazın sürətli dönmələri və silkələnməsi zamanı belə sabit və dəqiq azimut əldə etməyə imkan verir.
Mobil sənayedə üç əsas MEMS-maqnitometr növü istifadə olunur: Hall effektinə əsaslanan, anizotrop maqnito-rezistiv (AMR) və nəhəng maqnito-rezistiv (GMR). AMR-maqnitometrlər smartfonlarda həssaslıq, enerji sərfiyyatı və maya dəyərinin optimal birləşməsi sayəsində ən geniş yayılmışdır. Aparıcı istehsalçılar — AKM (Asahi Kasei Microdevices), STMicroelectronics və Bosch Sensortec.
Tipik smartfonun AMR-maqnitometrinin həssaslığı 0,3–1 µT, dinamik diapazonu ±1000 µT (±8 Qauss) təşkil edir ki, bu da Yer sahəsinin (30–65 µT) dəqiq ölçülməsi və parazit sahələrin kompensasiyası üçün kifayətdir. Sensorun sorğu tezliyi 100–200 Hz-ə çata bilər, lakin enerjiyə qənaət üçün əksər tətbiqlər 10–50 Hz istifadə edir. Temperaturun və korpusun gərginlik deformasiyalarının avtomatik kompensasiyası sensor sürücüsü səviyyəsində həyata keçirilir.
Kompasın kalibrlənməsi — smartfonun komponentləri tərəfindən yaradılan parazit maqnit sahələrinin kompensasiyası prosesidir: dinamiklər, vibrasiya motoru, kamera və akkumulyator. Kalibrləmə olmadan maqnitometr göstəriciləri real istiqamətdən 10–30 dərəcə yayına bilər. Kalibrləmə sistemi üç ox üzrə yerdəyişmə matrisini (hard-iron bias) müəyyən edir və onu bütün sonrakı ölçmələrin korreksiyası üçün tətbiq edir.
Standart kompas kalibrləmə metodu — «səkkiz» rəqəminin çəkilməsi: istifadəçi smartfonu 8 rəqəmini xatırladan trayektoriya üzrə fırladır. Hərəkət zamanı sensor bütün mümkün oriyentasiyalarda maqnit sahəsini qeyd edir, alqoritm isə nöqtələri toplayır və mərkəzi sıfıra nisbətən yerdəyişmiş sferanı aproksimasiya edir. Sferanın radiusu Yerin maqnit sahəsinin böyüklüyünə, mərkəz isə parazit yerdəyişmə vektoruna uyğundur. Aproksimasiyadan sonra sistem hər ox üçün korreksiya əmsallarını hesablayır.
Qualcomm və MediaTek tərəfindən hazırlanmış müasir kalibrləmə alqoritmləri istifadəçinin iştirakı olmadan fon rejimində davamlı kalibrləmə həyata keçirir. Onlar cihazın fırlanması zamanı maqnit sahəsindəki dəyişiklikləri təhlil edir və avtomatik olaraq korreksiya parametrlərini yeniləyir. Sensor yeni parazit sahə aşkar edərsə (məsələn, maqnit qutusu taxıldıqda), sistem 1–2 saniyə davamlı hərəkət ərzində yenidən kalibrləməni işə salır.
Rəqəmsal kompas geniş spektrli mobil tətbiqlərdə istifadə olunur. Əsas tətbiq — naviqasiya və xəritəçəkmə xidmətləri (Google Maps, Yandex.Maps, 2GIS) istifadəçinin hərəkət istiqamətini düzgün göstərmək üçün cihazın xəritədə oriyentasiyasını təyin edir. Artırılmış reallıq (AR) tətbiqlərində kompas virtual obyektlərin düzgün yerləşdirilməsini təmin edir.
Astronomiya tətbiqlərində (Star Walk, SkySafari) kompas akselerometrlə birlikdə smartfonun hansı istiqamətə yönəldiyini müəyyən edir və ulduzlu səmanın müvafiq sahəsini göstərir. Balıqçılıq və turizm tətbiqləri kompasdan azimuta istinadla xəritədə maraq nöqtələrini qeyd etmək üçün istifadə edir. GPS ilə fitnes-trekinq kompas göstəricilərindən qaçış və ya velosiped sürmə istiqamətini təyin etmək üçün istifadə edir ki, bu da marşrutun göstərilmə dəqiqliyini artırır.
Android-də rəqəmsal kompasa çıxış üçün Sensor API-dən TYPE_MAGNETIC_FIELD sensoru istifadə olunur. Proqramçılar maqnitometr göstəricilərində dəyişikliklərin dinləyicisini qeydiyyatdan keçirir və üç ox üzrə maqnit sahəsinin gərginlik dəyərlərini mikroTeslalarla əldə edirlər. Azimutun müəyyən edilməsi üçün maqnitometr məlumatları sensor fusion fırlanma matrisi vasitəsilə akselerometr məlumatları ilə birləşdirilir.
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())
// azimut: 0 = şimal, 90 = şərq, 180 = cənub, 270 = qərb
}
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 vasitəsilə əldə edilən azimut radianlarla ölçülür və -π-dən π-ə qədər qiymətlər ala bilər, burada 0 maqnit şimalına uyğundur. Ekranda göstərmək üçün dəyərlər 0–360 diapazonuna normallaşdırma ilə dərəcələrə (Math.toDegrees) çevrilir. Maqnit deklinasiyasını — maqnit və həqiqi (coğrafi) şimal arasındakı bucağı nəzərə almaq vacibdir, bu coğrafi mövqedən asılıdır və zamanla dəyişir. Google Xəritələri deklinasiyanı GeomagneticField API vasitəsilə avtomatik olaraq düzəldir.
Tez-tez verilən suallar
Rəqəmsal kompas MEMS-maqnitometrdən — üç ox üzrə Yerin maqnit sahəsini ölçən 2×2 mm ölçülü çipdən istifadə edir. Maqnitometr məlumatları akselerometr göstəriciləri ilə birləşdirilərək azimut — şimala istiqamət ilə cihazın oriyentasiyası arasındakı bucaq müəyyən edilir.
Kompasın səhv göstəriciləri ən çox kalibrləmənin olmaması, dinamiklərdən və ya vibrasiya motorundan maqnit müdaxilələri, həmçinin maqnit qutuları səbəbindən yaranır. Həll yolu — «səkkiz» hərəkəti ilə kalibrləmə aparmaq və ya maqnit aksesuarlarını çıxarmaqdır. Daimi səhvlər zamanı sensorun yoxlanması tələb oluna bilər.
Bəli, kompasın kalibrlənməsi smartfon daxilindəki parazit maqnit sahələrinin kompensasiyası üçün zəruridir. Müasir cihazların əksəriyyətində kalibrləmə avtomatik olaraq fonda aparılır. Əl ilə kalibrləmə üçün smartfonla havada «səkkiz» rəqəmi çəkin — sistem bütün bucaqlardan məlumat toplayaraq göstəriciləri düzəldəcək.
Android-də kompasa giriş TYPE_MAGNETIC_FIELD sensoru ilə Sensor API vasitəsilə həyata keçirilir. Azimut maqnitometr və akselerometr məlumatlarını birləşdirən SensorManager.getRotationMatrix() və getOrientation() vasitəsilə hesablanır. Əldə edilən azimut ekranda göstərilmək üçün uyğunlaşdırıla bilər.
Ən dəqiq kompaslar üçlü IMU-sensoru (maqnitometr + giroskop + akselerometr) və aktiv kalibrləmə sistemi olan smartfonlarda quraşdırılıb. Google Pixel, Samsung Galaxy S-seriyası və iPhone Pro flaqmanları — 0,3 µT həssaslıqlı AKM və Bosch maqnitometrlərindən və avtomatik korreksiyadan istifadə edir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun