Akıllı telefondaki pusula (compass), Dünya’nın manyetik kutuplarına yönü belirleyen bir manyetometre tabanlı dijital sensördür. Teknoloji, navigasyon, haritalama ve artırılmış gerçeklik uygulamalarının cihazın uzaydaki yönelimini doğru bir şekilde belirlemesini sağlar. STMicroelectronics, 2025'e göre, modern MEMS manyetometreler, 1–2 dereceye kadar yön belirlemede doğruluk sağlar.
Anahtar Noktalar
Akıllı telefondaki dijital pusula, Dünya’nın manyetik alan şiddetini ölçen ve azimutu (manyetik kuzeye göre açı) belirleyen bir manyetometre tabanlı sensördür. Mekanik bir pusuladan farklı olarak, dijital pusula manyetik alanı algılamak için mikroelektromekanik sistemler (MEMS) kullanır. Manyetometre, alanı üç eksende ölçer ve akıllı telefonun herhangi bir eğiminde doğru yön belirlenmesine olanak tanır.
Modern bir MEMS manyetometre, 2×2×1 mm boyutlarında, ivmeölçer ve jiroskopla birlikte (9 eksenli IMU’nun bir parçası olarak) akıllı telefon gövdesine entegre edilmiş bir mikroçiptir. Sensör yalnızca yönü değil, aynı zamanda Dünya’nın manyetik alan şiddetini de (enleme bağlı olarak 25–65 µT) ölçer. Metal nesnelerin ve hoparlörlerden, titreşim motorundan ve kameradan gelen parazit manyetik alanların varlığı bozulmalara neden olur, bu nedenle doğru çalışma için okumaların yazılım düzeltmesi gerekir.
Mobil telefonlardaki ilk dijital pusulalar 2009 yılında iPhone 3GS — yerleşik manyetometreye sahip ilk akıllı telefon — piyasaya sürülmesiyle ortaya çıktı. Günümüzde manyetometreler, bütçe modelleri de dahil olmak üzere akıllı telefonların büyük çoğunluğuna takılmaktadır. Yole Group'a göre, mobil cihazlar için MEMS manyetometre pazarı yılda 1,5 milyar birimi aşmakta ve bu teknolojiye olan talebi doğrulamaktadır.
Bir MEMS manyetometrenin özü, harici bir manyetik alanın etkisi altında elektriksel özelliklerini değiştiren bir algılama elemanıdır. Modern akıllı telefonlar Hall etkisini veya manyetodirenç etkisini (AMR — Anizotropik Manyeto-Direnç) kullanır. Prensip, akım taşıyan bir malzemenin manyetik alana maruz kaldığında direncinin değişmesi ve voltaj değişiminden manyetik alan vektörünün hesaplanması esasına dayanır.
Hall etkisi sensörleri, hareketli yükler üzerindeki Lorentz kuvvetinin neden olduğu yarı iletken plakanın kenarlarındaki voltaj değişimlerini algılar. Manyetodirençli sensörler (AMR), direnci manyetik alanın yönüne bağlı olan bir permalloy (NiFe) filmi kullanır. AMR sensörleri, Hall sensörlerine kıyasla daha küçük boyut ve daha yüksek hassasiyet sağlar, bu nedenle modern akıllı telefonlarda baskındır.
| Tür | Hassasiyet | Güç tüketimi | Boyut |
|---|---|---|---|
| Hall | Orta | Düşük | Orta |
| AMR | Yüksek | Düşük | Küçük |
| GMR | Çok yüksek | Orta | Küçük |
Manyetometre verileri, eğimi düzeltmek ve yatay düzlemde kuzey yönünü belirlemek için ivmeölçer okumalarıyla birleştirilir. Sensör birleştirme algoritması, manyetometre, jiroskop ve ivmeölçerden gelen verileri birleştirmek için Madgwick filtresi veya Kalman filtresi kullanır. Bu, hızlı dönüşler ve cihaz sallanması sırasında bile sabit ve doğru bir azimut sağlar.
Mobil endüstride üç ana MEMS manyetometre türü kullanılır: Hall etkisi, anizotropik manyetodirençli (AMR) ve dev manyetodirençli (GMR). AMR manyetometreler, hassasiyet, güç tüketimi ve maliyet arasındaki optimal denge sayesinde akıllı telefonlarda en yaygın kullanılanlardır. Önde gelen üreticiler AKM (Asahi Kasei Microdevices), STMicroelectronics ve Bosch Sensortec'tir.
Tipik bir akıllı telefonda AMR manyetometre hassasiyeti 0,3–1 µT olup dinamik aralığı ±1000 µT'dir (±8 Gauss), bu da Dünya alanını (30–65 µT) doğru bir şekilde ölçmek ve parazit alanları telafi etmek için yeterlidir. Sensörün örnekleme hızı 100–200 Hz'e ulaşabilir, ancak çoğu uygulama enerji tasarrufu için 10–50 Hz kullanır. Sıcaklık ve kasa gerilim deformasyonlarının otomatik telafisi sensör sürücüsü düzeyinde uygulanır.
Pusula kalibrasyonu, akıllı telefon bileşenleri (hoparlörler, titreşim motoru, kamera ve pil) tarafından oluşturulan parazit manyetik alanları telafi etme sürecidir. Kalibrasyon olmadan, manyetometre okumaları gerçek yönden 10–30 derece sapabilir. Kalibrasyon sistemi, üç eksendeki ofset matrisini (sert demir sapması) belirler ve sonraki tüm ölçümleri düzeltmek için uygular.
Standart pusula kalibrasyonu yöntemi bir “8” çizmektir: kullanıcı akıllı telefonu 8 rakamına benzeyen bir yörünge boyunca döndürür. Hareket sırasında sensör, manyetik alanı mümkün tüm yönelimlerde kaydeder ve algoritma noktaları biriktirir ve merkezi sıfırdan kaydırılmış bir küre yaklaşıklaması yapar. Kürenin yarıçapı Dünya'nın manyetik alan büyüklüğüne karşılık gelir ve merkez parazit ofset vektörünü temsil eder. Yaklaşıklamadan sonra sistem her eksen için düzeltme katsayılarını hesaplar.
Qualcomm ve MediaTek'in modern kalibrasyon algoritmaları, kullanıcı müdahalesi olmadan sürekli arka plan kalibrasyonu gerçekleştirir. Cihaz dönüşleri sırasında manyetik alan değişikliklerini analiz eder ve düzeltme parametrelerini otomatik olarak günceller. Sensör yeni bir parazit alanı algılarsa (örneğin manyetik kılıf takıldığında), sistem 1–2 saniyelik sürekli cihaz hareketi içinde yeniden kalibrasyon başlatır.
Dijital pusula, çok çeşitli mobil uygulamalarda kullanılır. Ana kullanım, haritada cihazın yönelimini belirleyerek kullanıcının hareket yönünü doğru görüntülemek için navigasyon ve haritalama hizmetlerindedir (Google Maps, Yandex.Maps, 2GIS). Artırılmış gerçeklik (AG) uygulamalarında, pusula sanal nesnelerin ana yönlere göre doğru konumlandırılmasını sağlar.
Astronomi uygulamalarında (Star Walk, SkySafari), pusula bir ivmeölçerle birleştirilerek akıllı telefonun baktığı yönü belirler ve gece gökyüzünün ilgili bölgesini gösterir. Balıkçılık ve turizm uygulamaları, azimut referansıyla haritadaki ilgi noktalarını işaretlemek için pusula kullanır. GPS ile fitness takibi, koşu veya bisiklet yönünü belirlemek için pusula okumalarını kullanarak rota görüntüleme doğruluğunu artırır.
Android'de dijital pusulaya erişmek için Sensor API'den TYPE_MAGNETIC_FIELD sensörü kullanılır. Geliştiriciler, manyetometre okumalarındaki değişiklikler için bir dinleyici kaydeder ve mikrote sla cinsinden üç eksendeki manyetik alan şiddeti değerlerinden oluşan bir dizi alır. Azimutu belirlemek için manyetometre verileri, sensör birleştirme yoluyla bir dönüş matrisi aracılığıyla ivmeölçer verileriyle birleştirilir.
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 = kuzey, 90 = doğu, 180 = güney, 270 = batı
}
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 aracılığıyla elde edilen azimut radyan cinsinden ölçülür ve -π ile π arasında değerler alabilir; burada 0 manyetik kuzeye karşılık gelir. Ekranda görüntüleme için değerler 0–360 aralığına normalleştirilerek dereceye (Math.toDegrees) dönüştürülür. Coğrafi konuma bağlı olan ve zamanla değişen manyetik sapmayı (manyetik kuzey ile gerçek (coğrafi) kuzey arasındaki açı) dikkate almak önemlidir. Google Maps, GeomagneticField API aracılığıyla sapmayı otomatik olarak ayarlar.
Sıkça Sorulan Sorular
Dijital pusula, Dünya'nın manyetik alanını üç eksende ölçen bir MEMS manyetometre — 2×2 mm çip — kullanır. Manyetometre verileri, azimutu — kuzey yönü ile cihazın yönelimi arasındaki açı — belirlemek için ivmeölçer okumalarıyla birleştirilir.
Pusulanın yanlış okumaları çoğunlukla kalibrasyon eksikliğinden, hoparlörlerden veya titreşim motorundan kaynaklanan manyetik girişimden ve manyetik kılıflardan kaynaklanır. Çözüm, “8” kalibrasyon hareketi yapmak veya manyetik aksesuarları çıkarmaktır. Kalıcı hatalar için sensörün kontrol edilmesi gerekebilir.
Evet, akıllı telefon içindeki parazit manyetik alanları telafi etmek için pusula kalibrasyonu gereklidir. Modern cihazların çoğunda kalibrasyon arka planda otomatik olarak yapılır. Manuel kalibrasyon için akıllı telefonunuzla havada “8” çizin — sistem tüm açılardan veri toplayacak ve okumaları düzeltecektir.
Android'de, TYPE_MAGNETIC_FIELD sensörüyle Sensor API aracılığıyla pusula erişimi sağlanır. Azimut, manyetometre ve ivmeölçer verilerini birleştiren SensorManager.getRotationMatrix() ve getOrientation() aracılığıyla hesaplanır. Elde edilen azimut ekranda görüntülenmek üzere uyarlanabilir.
En doğru pusulalar, üçlü IMU sensörü (manyetometre + jiroskop + ivmeölçer) ve aktif kalibrasyon sistemine sahip akıllı telefonlarda bulunur. Amiral gemisi Google Pixel, Samsung Galaxy S serisi ve iPhone Pro modelleri liderdir — bunlar 0,3 µT hassasiyet ve otomatik düzeltmeye sahip AKM ve Bosch manyetometrelerini kullanır.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun