Mündəricat:

HMC5883 və Raspberry Pi istifadə edərək maqnit sahəsinin ölçülməsi: 4 addım
HMC5883 və Raspberry Pi istifadə edərək maqnit sahəsinin ölçülməsi: 4 addım

Video: HMC5883 və Raspberry Pi istifadə edərək maqnit sahəsinin ölçülməsi: 4 addım

Video: HMC5883 və Raspberry Pi istifadə edərək maqnit sahəsinin ölçülməsi: 4 addım
Video: Как использовать гироскоп, акселерометр, магнитометр MPU-9250 для Arduino 2024, Noyabr
Anonim
Image
Image

HMC5883, aşağı sahə maqnit algılaması üçün hazırlanmış rəqəmsal bir kompasdır. Bu cihaz +/- 8 Oe geniş bir maqnit sahəsinə və 160 Hz çıxış sürətinə malikdir. HMC5883 sensoru, avtomatik degaussing kəmər sürücülərini, ofset ləğvini və 1 ° -dən 2 ° -ə qədər kompas başlığı dəqiqliyini təmin edən 12-bit ADC-ni ehtiva edir. Bütün I²C Mini Modulları 5VDC -də işləmək üçün nəzərdə tutulmuşdur.

Bu təlimatda, Raspberry pi ilə HMC5883 -ün ətraflı işini və java proqramlaşdırma dilindən istifadə edərək proqramlaşdırmasını izah edəcəyik.

Addım 1: Lazım olan avadanlıq:

Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur

Tapşırığı yerinə yetirmək üçün lazım olan avadanlıq aşağıdakı kimidir:

1. HMC5883

2. Moruq Pi

3. I2C Kabeli

4. Raspberry Pi üçün I2C Shield

5. Ethernet Kabeli

Addım 2: Hardware Bağlantısı:

Avadanlıq Bağlama
Avadanlıq Bağlama
Avadanlıq Bağlama
Avadanlıq Bağlama

Avadanlıq bağlama bölməsi əsasən sensor və moruq pi arasında lazım olan tel əlaqələrini izah edir. İstənilən çıxış üçün hər hansı bir sistem üzərində işləyərkən düzgün əlaqələrin təmin edilməsi əsas zərurətdir. Beləliklə, zəruri əlaqələr aşağıdakılardır:

HMC5883 I2C üzərində işləyəcək. Sensorun hər bir interfeysini necə bağlayacağınızı göstərən nümunə naqillər diaqramı.

Qutudan kənarda, lövhə I2C interfeysi üçün konfiqurasiya olunmuşdur, buna görə də başqa cür agnostiksinizsə bu əlaqəni istifadə etməyi məsləhət görürük. Lazım olan tək şey dörd teldir!

Vcc, Gnd, SCL və SDA pinləri üçün yalnız dörd əlaqə lazımdır və bunlar I2C kabelinin köməyi ilə bağlanır.

Bu əlaqələr yuxarıdakı şəkillərdə göstərilmişdir.

Addım 3: Maqnit sahəsinin intensivliyini ölçmək üçün Java kodu:

Maqnit sahəsinin intensivliyini ölçmək üçün Java kodu
Maqnit sahəsinin intensivliyini ölçmək üçün Java kodu
Maqnit sahəsinin intensivliyini ölçmək üçün Java kodu
Maqnit sahəsinin intensivliyini ölçmək üçün Java kodu

Moruq pi istifadə etmənin üstünlüyü, sensoru onunla əlaqələndirmək üçün lövhəni proqramlaşdırmaq istədiyiniz proqramlaşdırma dilinin rahatlığını təmin edir. Bu lövhənin bu üstünlüyündən istifadə edərək burada Java dilində proqramlaşdırdığını nümayiş etdiririk. HMC5883 üçün java kodunu Dcube Mağazası olan github cəmiyyətimizdən yükləyə bilərsiniz.

İstifadəçilərin rahatlığı üçün, kodu da burada izah edirik:

Kodlaşdırmanın ilk addımı olaraq java vəziyyətində pi4j kitabxanasını yükləməlisiniz, çünki bu kitabxana kodda istifadə olunan funksiyaları dəstəkləyir. Beləliklə, kitabxananı yükləmək üçün aşağıdakı linkə daxil ola bilərsiniz:

pi4j.com/install.html

Bu sensor üçün işləyən java kodunu buradan da kopyalaya bilərsiniz:

com.pi4j.io.i2c. I2CBus idxal edin;

com.pi4j.io.i2c. I2CDevice idxal edin;

mport com.pi4j.io.i2c. I2CFactory;

java.io. IOException idxal edin; ümumi sinif HMC5883

{

public static void main (String args ) İstisna atır

{

// I2C avtobusu yaradın

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

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

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

// Konfiqurasiya reyestrini seçin A

// Normal ölçü konfiqurasiyası, məlumat sürəti o/p = 0.75 Hz

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

// Mode qeydiyyatı seçin

// Davamlı ölçmə rejimi

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

Thread.sleep (500);

// 0x03 -dən 6 bayt məlumat oxuyun (3)

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

bayt məlumat = yeni bayt [6];

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

// Məlumatları çevirin

int xMag = ((data [0] & 0xFF) * 256 + (data [1] & 0xFF));

əgər (xMag> 32767)

{

xMag -= 65536;

}

int zMag = ((data [2] & 0xFF) * 256 + (data [3] & 0xFF));

əgər (zMag> 32767)

{

zMag -= 65536;

}

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

əgər (yMag> 32767)

{

yMag -= 65536;

}

// Ekrana məlumat çıxarın

System.out.printf ("X-Axisdəki maqnit sahəsi: %d %n", xMag);

System.out.printf ("Y eksenində maqnit sahəsi: %d %n", yMag);

System.out.printf ("Z Eksenində maqnit sahəsi: %d %n", zMag);

}

}

Write () və read () funksiyaları əmrləri yazmaq və sensor çıxışını oxumaq üçün istifadə olunur. Aşağıdakı hissə maqnit sahəsinin dəyərlərinin oxunmasını göstərir.

// 0x03 -dən 6 bayt məlumat oxuyun (3)

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

bayt məlumat = yeni bayt [6];

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

Çıxış yuxarıdakı şəkildə göstərilir.

Addım 4: Tətbiqlər:

Tətbiqlər
Tətbiqlər

HMC5883, aşağı qiymətli kompas və maqnitometriya kimi tətbiqlər üçün rəqəmsal interfeysi olan aşağı sahə maqnit algılaması üçün nəzərdə tutulmuş səthə monte edilmiş, çox çipli bir moduldur. Bir -iki dərəcə yüksək səviyyəli dəqiqlik və dəqiqlik Piyada Naviqasiyası və LBS Tətbiqlərini təmin edir.

Tövsiyə: