Dijital Pusula HMC5883'ü Arduino'ya Nasıl Bağlarım

İçindekiler:

Dijital Pusula HMC5883'ü Arduino'ya Nasıl Bağlarım
Dijital Pusula HMC5883'ü Arduino'ya Nasıl Bağlarım

Video: Dijital Pusula HMC5883'ü Arduino'ya Nasıl Bağlarım

Video: Dijital Pusula HMC5883'ü Arduino'ya Nasıl Bağlarım
Video: Arduino Digital Compass using Hmc5883l Magnetometer 2024, Mayıs
Anonim

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.

Dijital Pusula HMC5883
Dijital Pusula HMC5883

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.

HMC5883 dijital pusulanın Arduino'ya bağlanması
HMC5883 dijital pusulanın Arduino'ya bağlanması

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.

Breadboard üzerinde Arduino'ya bağlı HMC5883 dijital pusula
Breadboard üzerinde Arduino'ya bağlı HMC5883 dijital pusula

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.

HMC5883'ün tanımlama kayıtlarını okuyan eskiz
HMC5883'ün tanımlama kayıtlarını okuyan eskiz

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.

HMC5883 dijital pusula ile I2C değişiminin zamanlama şeması
HMC5883 dijital pusula ile I2C değişiminin zamanlama şeması

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.

Önerilen: