İçindekiler:

HMC5883 ve Raspberry Pi Kullanarak Manyetik Alan Ölçümü: 4 Adım
HMC5883 ve Raspberry Pi Kullanarak Manyetik Alan Ölçümü: 4 Adım

Video: HMC5883 ve Raspberry Pi Kullanarak Manyetik Alan Ölçümü: 4 Adım

Video: HMC5883 ve Raspberry Pi Kullanarak Manyetik Alan Ölçümü: 4 Adım
Video: Interfacing HMC5883L / QMC5883 Digital compass with Arduino 2024, Kasım
Anonim
Image
Image

HMC5883, düşük alanlı manyetik algılama için tasarlanmış dijital bir pusuladır. Bu cihaz, +/-8 Oe geniş bir manyetik alan aralığına ve 160 Hz çıkış hızına sahiptir. HMC5883 sensörü, otomatik manyetiklik giderme kayış sürücüleri, ofset iptali ve 1° ila 2° pusula yönü doğruluğu sağlayan 12 bitlik bir ADC içerir. Tüm I²C Mini Modülleri 5VDC'de çalışacak şekilde tasarlanmıştır.

Bu dersimizde HMC5883'ün Raspberry pi ile detaylı çalışmasını ve Java programlama dilini kullanarak programlamasını anlatacağız.

Adım 1: Donanım Gerekli:

Gerekli Donanım
Gerekli Donanım
Gerekli Donanım
Gerekli Donanım
Gerekli Donanım
Gerekli Donanım

Görevi gerçekleştirmek için gereken donanım aşağıdaki gibidir:

1. HMC5883

2. Ahududu Pi

3. I2C Kablosu

4. Raspberry Pi için I2C Kalkanı

5. Ethernet Kablosu

Adım 2: Donanım Bağlantısı:

Donanım Bağlantısı
Donanım Bağlantısı
Donanım Bağlantısı
Donanım Bağlantısı

Donanım bağlantısı bölümü temel olarak sensör ve ahududu pi arasında gerekli olan kablo bağlantılarını açıklar. İstenilen çıktı için herhangi bir sistem üzerinde çalışırken doğru bağlantıların sağlanması temel zorunluluktur. Yani, gerekli bağlantılar aşağıdaki gibidir:

HMC5883, I2C üzerinden çalışacaktır. Sensörün her bir arayüzünün nasıl bağlanacağını gösteren örnek kablo şeması buradadır.

Kutudan çıktığı gibi, kart bir I2C arayüzü için yapılandırılmıştır, bu nedenle, aksi takdirde agnostik iseniz bu bağlantıyı kullanmanızı öneririz. Tek ihtiyacınız olan dört tel!

Vcc, Gnd, SCL ve SDA pinlerinden sadece dört bağlantı gereklidir ve bunlar I2C kablosu yardımıyla bağlanır.

Bu bağlantılar yukarıdaki resimlerde gösterilmiştir.

Adım 3: Manyetik Alan Yoğunluğunu Ölçmek için Java Kodu:

Manyetik Alan Yoğunluğunu Ölçmek için Java Kodu
Manyetik Alan Yoğunluğunu Ölçmek için Java Kodu
Manyetik Alan Yoğunluğunu Ölçmek için Java Kodu
Manyetik Alan Yoğunluğunu Ölçmek için Java Kodu

Raspberry pi kullanmanın avantajı, kartı programlamak istediğiniz programlama dilinin, sensör ile arayüz oluşturmak için size esneklik sağlamasıdır. Bu kartın bu avantajından yararlanarak, burada Java'da programlama olduğunu gösteriyoruz. HMC5883 için java kodu, Dcube Store olan github topluluğumuzdan indirilebilir.

Kullanıcıların kolaylığının yanı sıra, kodu burada da açıklıyoruz:

Kodlamanın ilk adımı olarak java durumunda pi4j kütüphanesini indirmeniz gerekiyor çünkü bu kütüphane kodda kullanılan fonksiyonları destekliyor. Bu nedenle, kütüphaneyi indirmek için aşağıdaki bağlantıyı ziyaret edebilirsiniz:

pi4j.com/install.html

Bu sensör için çalışan Java kodunu buradan da kopyalayabilirsiniz:

com.pi4j.io.i2c. I2CBus'u içe aktarın;

com.pi4j.io.i2c. I2CDevice'ı içe aktarın;

mport com.pi4j.io.i2c. I2CFFactory;

java.io. IOException'ı içe aktar;genel sınıf HMC5883

{

public static void main(String args) İstisna atar

{

// I2C veri yolu oluştur

I2CBus Bus = I2CFactory.getInstance(I2CBus. BUS_1);

// I2C cihazını al, HMC5883 I2C adresi 0x1E(30)

I2CDevice cihazı = Bus.getDevice(0x1E);

// Yapılandırma kaydı A'yı seçin

// Normal ölçüm konfigürasyonu, veri hızı o/p = 0.75 Hz

device.write(0x00, (bayt)0x60);

// Mod kaydını seç

// Sürekli ölçüm modu

device.write(0x02, (bayt)0x00);

thread.sleep(500);

// 0x03(3)'ten 6 bayt veri oku

// xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb

bayt veri = yeni bayt[6];

device.read(0x03, veri, 0, 6);

// Verileri dönüştür

int xMag = ((veri[0] ve 0xFF) * 256 + (veri[1] ve 0xFF));

if(xMag > 32767)

{

xMag -= 65536;

}

int zMag = ((veri[2] ve 0xFF) * 256 + (veri[3] ve 0xFF));

if(zMag > 32767)

{

zMag -= 65536;

}

int yMag = ((veri[4] & 0xFF) * 256 + (veri[5] & 0xFF));

if(yMag > 32767)

{

yMag -= 65536;

}

// Ekrana veri çıktısı

System.out.printf("X Ekseninde Manyetik alan: %d %n", xMag);

System.out.printf("Y Ekseninde Manyetik alan: %d %n", yMag);

System.out.printf("Z Ekseninde Manyetik alan: %d %n", zMag);

}

}

Write() ve read() işlevleri sırasıyla komutları yazmak ve sensör çıktısını okumak için kullanılır. Aşağıdaki kısım manyetik alan değerlerinin okunmasını göstermektedir.

// 0x03(3)'ten 6 bayt veri oku

// xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb

bayt veri = yeni bayt[6];

device.read(0x03, veri, 0, 6);

Çıktı yukarıdaki resimde gösterilmiştir.

Adım 4: Uygulamalar:

Uygulamalar
Uygulamalar

HMC5883, düşük maliyetli pusula ve manyetometri gibi uygulamalar için dijital bir arayüze sahip düşük alanlı manyetik algılama için tasarlanmış yüzeye monte, çok çipli bir modüldür. Bir ila iki derecelik yüksek düzeyde doğruluk ve hassasiyet, Yaya Navigasyonu ve LBS Uygulamalarına olanak tanır.

Önerilen: