Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

Pusula(Compass) Sensörü

Başlatan makine_terbiyecisi, 08 Şubat 2017, 14:54:15

makine_terbiyecisi

Merhaba arkadaşlar,
Elimde HMC5883L pusula sensörü var. I2C iletişim protokolü üzerinden haberleşiyor. Dolayısıyla SDA, SCL uçları ile bunu sağlıyor.


> Bunun kütüphanesini yazmak istiyorum. Başkasının yazdıkları hazır kütüphaneler eminim ki vardır. Hazır kütüphane genel olduğu için işimize yaramayacak bir sürü kod barındırır içinde. Ben sadece işimi görecek kadar kod yazmak istiyorum. Böylece PIC'e gereksiz işlem yaptırmayız.
> Pusula sensörü sağa döndü 1, sola 2, ileri 3, geri 4 diye integer değer döndürsün mesela. Kendi kütüphanemi yazacaksam bunları ayarlayabileceğimi düşünüyorum.

Nereden başlamam gerekiyor sizce?
Elimize bir sensör geldi düşünün, kütüphanesi yok. Kendiniz yazmanız gerekiyor. Ne yapardınız ?
Bu konuda tecrübeli arkadaşlar elbette aramızda vardır. Bilginizin zekatını verme zamanı :)
# ÖĞRENELİM, ÖĞRETELİM #

vitruvius

Datasheet'ini okuyacaksın tabi ki.

Cemre.

Öncelikle kütüphaneyi projenize dahil ettiniz diye MCU oradaki bütün fonksiyonları vs kullanmak zorunda değil biliyorsunuz. Derleyici de bunu dikkate alarak kullanılmayan fonksiyonları derlemez diye düşünüyorum.

Pusula sensörleri sağa sola diye veri göndermezler. Bu elinizdeki sensör de üç eksende manyetik alan şiddeti bilgisini size verecek. Eğer sensör yere hep paralel duracaksa şanslısınız basit bir trigonometrik hesap ile manyetik kuzey kutup noktasına olan sapmanızı hesaplayabilirsiniz.

Sensör yere paralel değil ise Tilt Compensation (eğim dengeleme) işlemine tabi tutmanız gerekiyor. Bunu yapabilmeniz için de sensör düzleminin pitch ve roll açılarını bilmek gerekiyor. Nasıl biliriz? En basit haliyle ivmeölçer ve jiroskop çifti kullanarak hesaplayabiliriz. Benim gördüğüm uygulamalarda sadece ivmeölçer verisi kullanılmış ve yeterli bulunmuş, takdir sizin.

Ancak bu konulara yabancıysanız ve vaktiniz yoksa bu hesaplamaları yapıp hazır veri üreten sensörlere de yönelebilirsiniz. Yanlış hatırlamıyorsam absolute orientation sensor diye geçiyorlar. Bir örnek, https://learn.adafruit.com/adafruit-bno055-absolute-orientation-sensor/overview
Biraz tuzludur elinizdeki sensöre göre.

Kütüphane yazma konusuna gelince, Datasheet başucu kitabınız olacak, eğer hızlı ilerleyeyim diyorsanız önceden yazılmış kütüphanelerde örneğin sensörü init etmek için hangi adımlar izlenmiş hızlıca bunlara bakabilirsiniz. Bu sensörün çok karmaşık bir Register haritası da yok zaten, i2cdevlib.com sitesini öneririm bu konuda. Örnekler mevcuttur.

Kolay gelsin.

makine_terbiyecisi

@Cemre.  Yanıtınız için teşekkür ederim.
Sensör yere sürekli paralel olacak. Aksi durumda ekstra iş çıkardı. Bu sensör ile yol haritası çıkarabileceğimi düşünüyorum. Kuzeyi referans alarak sapmaları hesaplayıp sonra sapmaların meydana geldiği noktaları MCU ile kaydederim. Böylece doğru yol bulunur.

# ÖĞRENELİM, ÖĞRETELİM #

berat23

ne seviyede ne yapacaksınız bilmiyorum ama manyetometre ile yön bulma göründüğü gibi bast bir iş değil;

1.tilt düzelme gerekir, ya da nasıl yere göre düz kalmayı garantileyeceksiniz? tek accelerometer ile tilt düzeltme, dinamiğe göre  düzeltmemekten daha kötü olabilir. gyro da katsanız ordan roll pitch kestirimi zaten daha büyük bir problem.
2.manyetometre denen şey, ölçtüğü ile bozucuları aynı olan birşey. kalibrasyon çok kritik. o konu zaten derya deniz. basitçe aşmak zor(wmm nedir, neye yarar burda not alalım). yerleşimi ve kalibrasyonu yapmak derttir. bazen öyle olur ki kalibre edilemez bir yerleşiminiz olur.
3. buraya kadar herşeyi düzgün yapsanız bile manyetik sapma diye bir olgu var. sabitse tamam ama yolda gitmekten bahsediyorsanız ülkemiz için 1 derece fark olabilir yol boyunca. bunun ilacı konum, tarih bilip wmm 'den declination almak.

bunların hepsini yapan binlerce dolarlık pusulalar, navigasyon cihazları bile 1 derece doğruluğu ancak garantiliyor.

öte yandan mesele sadece sağ sol dönş algılamaksa o çok basit, hiçbirine gerek yok.

makine_terbiyecisi

@berat23 dedikleriniz doğru. Ama o kadar kompleks bir iş yapsın istemiyorum.
Sadece sağ,sol,ileri,geri gibi bilgileri alırsam bana yeter.
# ÖĞRENELİM, ÖĞRETELİM #

berat23

pusuladan ileri geri almak güzel hayal, belki olur deneyin. kulağa komik gelsede sıcaklıkla roll hesaplanan bir dünyada herşey mümkündür.

mesele döndüm diye bir flag üretmekse bunun aracı manyetometre değil, gyrodur. 

makine_terbiyecisi

Alıntı yapılan: berat23 - 08 Şubat 2017, 19:25:57
pusuladan ileri geri almak güzel hayal, belki olur deneyin. kulağa komik gelsede sıcaklıkla roll hesaplanan bir dünyada herşey mümkündür.

mesele döndüm diye bir flag üretmekse bunun aracı manyetometre değil, gyrodur.

ileri geri durumuna ihtiyacım yok zaten, sağ sol kafi gelir.
# ÖĞRENELİM, ÖĞRETELİM #

Cemre.

Alıntı yapılan: berat23 - 08 Şubat 2017, 19:25:57
kulağa komik gelsede sıcaklıkla roll hesaplanan bir dünyada herşey mümkündür.

O neymiş @berat23 hocam?

berat23

ilk başta çok saçma gelse de var böyle birşey. aslında bsitçe gök ile yer arasındaki sıcaklık farkı algılanıyor, mesela;
www.lpi.usra.edu/meetings/ipm2012/pdf/1022.pdf

manyetometre ile de ileri geri anlaşılabilir mi derseniz bence yer ve hıza göre mümkün. kuzey amerikada oldukça hızla giderseniz manyetik sapmadan yön algılanabilir, imkansız değil gibi gözüküyor.

tabi, çok farazi konuşuyorum. bunu yapacak adam zaten forumda sormaz:)