Teknik · 8 dk okuma
Telefonun içindeki pusula nasıl çalışır?
Manyetometre, üç eksenli ölçüm, sensör füzyonu ve kalibrasyonun ne demek olduğu. Cihazın yönü nasıl hesaplanır.
Telefonunuzda dönen bir iğne yok. Ekranda gördüğünüz kadran, üç eksende manyetik alan ölçen küçük bir yongadan gelen sayıların işlenmiş hâli. Bu yazı o zincirin adımlarını anlatıyor — çünkü zincirin nerede kırıldığını bilmek, sorunları teşhis etmenin en hızlı yolu.
Manyetometre ne ölçer
Telefonun içindeki manyetometre, bulunduğu noktadaki manyetik alanın üç eksendeki bileşenini ölçer: cihazın genişliği, yüksekliği ve derinliği boyunca. Sonuç üç sayıdır ve birimi mikrotesladır.
Bu üç sayının birleşimi bir vektörverir: alanın hangi yönde ve ne büyüklükte olduğu. Yeryüzünde Dünya'nın alanı 22 ile 68 mikrotesla arasındadır — oldukça zayıf. Bir buzdolabı mıknatısı yakın mesafeden bunu kolayca bastırır.
Alan büyüklüğünün bu bilinen aralıkta olması, aslında güçlü bir sağlama imkânı verir. Ölçülen büyüklük aralığın belirgin dışına çıkıyorsa, sensörün ölçtüğü şey Dünya değil; yakındaki bir mıknatıs, hoparlör, çelik yüzey veya araç gövdesidir. Sitemizdeki manyetik parazit dedektörü tam bu mantığa dayanır.
Vektörden açıya
Manyetik alan vektörünü bir pusula açısına çevirmek düz bir iş değil, çünkü alan yatay değildir. Dünya'nın manyetik alanı yüzeye bir açıyla girer; bu açıya manyetik eğim (inclination) denir. Türkiye enlemlerinde alan yaklaşık altmış derece eğimle yere dalar.
Pusula için gereken şey alanın yatay bileşenidir. Onu ayıklamak için cihazın uzaydaki duruşunu bilmek gerekir: telefon düz mü duruyor, eğik mi, ters mi? Bu bilgi ivmeölçerden gelir — yerçekimi vektörünü ölçerek cihazın hangi tarafının aşağı baktığını anlarız.
Yani basit bir pusula okuması için bile en az iki sensör gerekiyor: manyetometre ve ivmeölçer. Buna jiroskop da eklenir.
Sensör füzyonu
Üç sensörün her birinin farklı zayıflığı var. Manyetometre yavaş ve gürültülüdür, ama uzun vadede kuzeyi bilir. Jiroskop hızlı ve pürüzsüzdür, ama zamanla kayar (drift) — nereye baktığınızı değil, ne kadar döndüğünüzü ölçer. İvmeölçer yerçekimini bilir ama hareket hâlinde karışır.
Sensör füzyonu, bu üçünü birleştirip her birinin güçlü yönünü kullanmaktır. Jiroskop kısa vadeli pürüzsüzlüğü, manyetometre uzun vadeli doğruluğu sağlar. İşletim sistemi bu birleştirmeyi kendi yapar ve tarayıcıya sonucu verir; biz ham sensöre değil, füzyondan geçmiş yön değerine erişiyoruz.
Bu yüzden telefonu hareketsiz tutarken iğne yavaşça kayabilir: o kayma jiroskop drift'inin manyetometre tarafından düzeltilmesidir.
Kalibrasyon neden gerekiyor
Manyetometrenin her ekseninin bir sıfır noktası vardır. İdeal durumda alan sıfırken sensör de sıfır okur. Gerçekte ise her eksende bir kayma (offset) bulunur ve bu kayma zamanla değişir.
Kaymanın kaynağı çoğunlukla cihazın kendisi: hoparlör mıknatısı, titreşim motoru, metal çerçeve. Buna hard iron etkisi denir ve sabit bir ofset üretir. Cihazın etrafındaki malzemenin alanı büküp yönü bozmasına ise soft iron etkisi denir.
Kalibrasyon, bu ofsetleri tahmin etme işlemidir. Mantığı zarif: sensör farklı yönlere çevrildikçe ölçülen vektörün ucu, teorik olarak birküre yüzeyi çizmelidir — çünkü alanın büyüklüğü sabittir, yalnızca yönü değişir. Gerçekte çizilen şekil kaymış ve bozulmuş bir küredir. Sistem bu şekli ölçüp merkezini bularak ofsetleri çıkarır.
İşte "sekiz çizme" hareketinin sebebi bu. Amaç sensörü rastgele sallamak değil, üç eksende de geniş bir açı aralığı taratmaktır. Hareketi yavaş ve geniş yapmak gerekir; hızlı sallamak küre yüzeyini yeterince örneklemez.
Filtreleme ve sarmalama
Ham yön verisi titrer; filtresiz bir iğne okunamayacak kadar oynar. Ama açı değerleri üzerinde basit ortalama almak burada tuzaktır: 359 derece ile 1 derecenin aritmetik ortalaması 180 çıkar. Yani iğne kuzeyden her geçişte bir anda güneye fırlar.
Çözüm, filtreyi açı üzerinde değil birim vektör üzerinde uygulamaktır. Açının sinüs ve kosinüsünü ayrı ayrı yumuşatıp sonucu geri açıya çevirirsiniz; sarmalama sorunu kendiliğinden ortadan kalkar. Aynı yaklaşımın bir yararı daha var: aynı matematikle okumaların dairesel dağılımını hesaplayıp doğruluk tahmini üretebiliyoruz.
Zincirin tamamı
Özetle: manyetometre üç eksende alan ölçer → ivmeölçer cihazın duruşunu verir → füzyon katmanı bunları birleştirip yön üretir → işletim sistemi kalibrasyon ofsetlerini uygular → tarayıcı bir olay yayınlar → biz o değeri dairesel filtreden geçirip kadrana çiziyoruz ve gerekiyorsa manyetik sapma düzeltmesini ekliyoruz.
Bu zincirde en kırılgan halka ilk adımdır: manyetometre, zayıf bir alanı güçlü parazitlerin ortasında ölçmeye çalışıyor. Hesap tarafındaki hatamız derecenin binde birleri düzeyinde; cihaz tarafındaki hata onlarca derece olabiliyor. Doğruluk sayfamızdaki hata bütçesi tablosu bu dengesizliği sayılarla gösteriyor.
Ve tam bu yüzden güneş yöntemi ciddi bir alternatif: zincirin tamamını atlar. Güneşin konumu hesaplanabilir bir gökmekanik büyüklüktür ve hiçbir mıknatıs onu bir derece bile kaydıramaz.