GY-273 modülünün Honeywell HMC5883L üç eksenli dijital pusula ile bağlantısını ele alalım. Bu mikro devre, yüksek bir ölçüm doğruluğu gerekli değilse (1 … 2 derecelik bir hata ve kalibrasyon olasılığı ile) navigasyonda manyetometrik ölçümler için kullanılabilir. Cihaz, I2C arayüzü üzerinden bağlanır.
Gerekli
- - Dijital pusula HMC5883;
- -Arduino;
- - prototip kartı ve bağlantı telleri;
- - bilgisayar.
Talimatlar
Aşama 1
Manyetik pusulanın ana özellikleri şunlardır:
- 3 eksenli manyetik olarak hassas sensör;
- 2 mG (miligauss) çözünürlüğe sahip 12 bit ADC;
- yerleşik kendi kendine test;
- düşük çalışma voltajı ve düşük tüketim;
- dijital arayüz I2C;
- yüksek yoklama oranı - saniyede 160 defaya kadar (bir ölçümün süresi yaklaşık 6 ms'dir);
- yön belirleme doğruluğu 1 °… 2 °'dir;
- güçlü manyetik alanlarda kullanılabilir (± 8 Gauss'a kadar).
HMC5883L manyetik sensörünü Arduino'ya bağlama şeması şekilde gösterilmiştir. Çok kompakt ve basittir, çünkü İki telli I2C arayüzü harika çünkü birkaç bağlantı gerektiriyor. Breadboard kullanabilirsiniz.
Adım 2
Fotoğraf gibi bir şey görünmelidir. Arduino ve HMC5883 modülü arasındaki bilgi alışverişini izlemek için SCL ve SDA veri yollarına bir mantık analizörü de bağlayacağım. Zorunlu değil.
Aşama 3
İlk tanışma olarak HMC5883 dijital pusulasının 10 (0xA), 11 (0xB) ve 12 (0xC) tanımlama registerlarını okumaya çalışalım ve şekildeki gibi bir kroki yazalım. Ayrıntılı yorumlarla birlikte sunulur.
4. Adım
Mantık analizörü ile elde edilen sinyal, şekilde gösterildiği gibi olacaktır.
Bu ne anlama geliyor? İlk bayt, iletişim kurduğumuz (ana cihaz, Arduino) I2C adresidir (yüksek 7 bit 0x1E) ve yazma modudur (düşük bit - 0x0); sayı 0x3C'dir. İkinci bayt 0x1E adresine yazdığımız 0xA sayısı ve bağımlı olan HMC5883L sensöründen gelen onay bitidir. Bu, verileri okumaya başlayacağımız kayıt numarasıdır. Böylece ilk işlem tamamlanmış olur. Bir sonraki başlıyor. Üçüncü bayt bağımlıdan gelen bir okuma talebidir (en önemli 7 bit 0x1E adresidir, 8. bit 0x1 okuma işlemidir; sonuçtaki sayı 0x3D'dir). Son 3 üç bayt sırasıyla 0xA, 0xB ve 0xC kayıtlarından HMC5883L bağımlı biriminden gelen yanıttır.
Dijital pusula HMC5883L, sürekli okuma sırasında kayıtlar arasında bağımsız olarak hareket eder. Şunlar. her seferinde durumu belirtmek gerekli değildir (ancak yasak değildir). Örneğin 0xA yerine 0x3 yazıp 10 defa okusaydık 3'ten 12'ye kadar 10 registerda değerler alırdık.
Ve bu üç sayı nedir - 0x48, 0x34, 0x33? HMC5883L dijital pusula için veri sayfasını tekrar kullanarak, bunların üç tanımlama kaydı için varsayılan değerler olduğunu göreceğiz.
Adım 5
Manyetik alan üzerindeki dijital pusula verilerini elde etmek için, tıpkı bizim tanımlama kayıtlarını okuduğumuz gibi, 3'ten 8'e kadar olan kayıtları okumanız gerekir. Tek fark, X, Y ve Z üç ekseninin her biri için verilerin çift baytlı sayılar olarak sunulmasıdır. Onları ondalık sayılara çevirerek, üç eksenin her biri boyunca yönler elde ederiz.