İçindekiler:

HMC5883 ve Parçacık Fotonu Kullanarak Manyetik Alan Ölçümü: 4 Adım
HMC5883 ve Parçacık Fotonu Kullanarak Manyetik Alan Ölçümü: 4 Adım

Video: HMC5883 ve Parçacık Fotonu Kullanarak Manyetik Alan Ölçümü: 4 Adım

Video: HMC5883 ve Parçacık Fotonu Kullanarak Manyetik Alan Ölçümü: 4 Adım
Video: Трехосевой цифровой компас HMC5883L и Arduino 2024, Temmuz
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 derste, HMC5883'ün parçacık fotonu ile detaylı çalışmasını açıklayacağız. Parçacık fotonu, Nesnelerin İnterneti'nin (IoT) en temel özelliğini destekleyen, web sitesinden veri gönderip almayı kolaylaştıran bir panodur.

Adım 1: Donanım Gerekli:

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

Hedefimizi gerçekleştirmek için ihtiyaç duyduğumuz malzemeler aşağıdaki donanım bileşenlerini içerir:

1. HMC5883

2. Parçacık Fotonu

3. I2C Kablosu

4. Parçacık Fotonu için I2C Kalkanı

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 parçacık fotonu 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 İçin Kod:

Manyetik Alan Şiddetini Ölçmek İçin Kod
Manyetik Alan Şiddetini Ölçmek İçin Kod

Şimdi parçacık koduyla başlayalım.

Arduino ile sensör modülünü kullanırken application.h ve spark_wiring_i2c.h kütüphanesini dahil ediyoruz. "application.h" ve spark_wiring_i2c.h kitaplığı, sensör ve parçacık arasındaki i2c iletişimini kolaylaştıran işlevleri içerir.

Parçacık kodunun tamamı, kullanıcının rahatlığı için aşağıda verilmiştir:

#Dahil etmek

#Dahil etmek

// HMC5883 I2C adresi 0x1E(30)

#define Addr 0x1E

int xMag = 0, yMag = 0, zMag = 0;

geçersiz kurulum()

{

// Değişken ayarla

Particle.variable("i2ccihaz", "HMC5883");

Particle.variable("xMag", xMag);

Particle.variable("yMag", yMag);

Particle.variable("zMag", zMag);

// I2C iletişimini MASTER olarak başlat

Wire.begin();

// Seri İletişimi Başlat, baud hızını ayarla = 9600

Seri.başla(9600);

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

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

Wire.write(0x00);

// Normal ölçüm konfigürasyonunu ayarla, veri çıkış hızı = 0.75Hz

Wire.write(0x60);

// I2C İletimini Durdur

Wire.endTransmission();

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Mod kaydını seç

Wire.write(0x02);

// Sürekli ölçümü ayarla

Wire.write(0x00);

// I2C İletimini Durdur

Wire.endTransmission();

gecikme(300);

}

boşluk döngüsü()

{

imzasız int veri[6];

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Veri kaydını seç

Wire.write(0x03);

// I2C İletimini Durdur

Wire.endTransmission();

// 6 bayt veri iste

Wire.requestFrom(Adr, 6);

// 6 bayt veri oku

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

if(Wire.available() == 6)

{

data[0] = Wire.read();

data[1] = Wire.read();

data[2] = Wire.read();

veri[3] = Wire.read();

veri[4] = Wire.read();

veri[5] = Wire.read();

}

gecikme(300);

// Verileri dönüştür

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

if(xMag > 32767)

{

xMag -= 65536;

}

zMag = ((veri[2] * 256) + veri[3]);

if(zMag > 32767)

{

zMag -= 65536;

}

yMag = ((veri[4] * 256) + veri[5]);

if(yMag > 32767)

{

yMag -= 65536;

}

// Gösterge tablosuna veri çıkışı

Particle.publish("X Ekseninde Manyetik Alan: ", String(xMag));

gecikme(1000);

Particle.publish("Y Ekseninde Manyetik Alan: ", String(yMag));

gecikme(1000);

Particle.publish("Z Ekseninde Manyetik Alan: ", String(zMag));

gecikme(1000);

}

Particle.variable() işlevi, sensörün çıktısını depolamak için değişkenleri oluşturur ve Particle.publish() işlevi, çıktıyı sitenin panosunda görüntüler.

Sensör çıkışı, referansınız için yukarıdaki resimde gösterilmektedir.

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: