Mündəricat:

HMC5883 və Arduino Nano istifadə edərək Maqnit Sahəsinin Ölçülməsi: 4 addım
HMC5883 və Arduino Nano istifadə edərək Maqnit Sahəsinin Ölçülməsi: 4 addım

Video: HMC5883 və Arduino Nano istifadə edərək Maqnit Sahəsinin Ölçülməsi: 4 addım

Video: HMC5883 və Arduino Nano istifadə edərək Maqnit Sahəsinin Ölçülməsi: 4 addım
Video: Использование Melexis MLX90614 Инфракрасный термометр с 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, HMC5883 -ün Arduino nano ilə ətraflı işini 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

Məqsədimizə çatmaq üçün ehtiyacımız olan materiallar aşağıdakı aparat komponentlərindən ibarətdir:

1. HMC5883

2. Arduino Nano

3. I2C Kabeli

4. Arduino Nano üçün I2C Shield

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

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

Donanım bağlama bölməsi əsasən sensor və arduino nano arasında lazım olan naqillərin ə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 Arduino Kodu:

Maqnit sahəsinin intensivliyini ölçmək üçün Arduino Kodu
Maqnit sahəsinin intensivliyini ölçmək üçün Arduino Kodu
Maqnit sahəsinin intensivliyini ölçmək üçün Arduino Kodu
Maqnit sahəsinin intensivliyini ölçmək üçün Arduino Kodu

İndi Arduino kodu ilə başlayaq.

Sensor modulunu Arduino ilə birlikdə istifadə edərkən Wire.h kitabxanasına daxil oluruq. "Tel" kitabxanası, sensor və Arduino lövhəsi arasındakı i2c əlaqəsini asanlaşdıran funksiyaları ehtiva edir.

İstifadəçinin rahatlığı üçün bütün Arduino kodu aşağıda verilmişdir:

#daxil edin

// HMC5883 I2C ünvanı 0x1E (30)

#təyin Edr 0x1E

boş quraşdırma ()

{

// I2C ünsiyyətini MASTER olaraq başladın

Wire.begin ();

// Serial Rabitəni Başlatın, baud dərəcəsini = 9600 olaraq təyin edin

Serial.begin (9600);

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// A qeydiyyat reyestrini seçin

Wire.write (0x00);

// Normal ölçü konfiqurasiyasını təyin edin, məlumatların çıxış sürəti = 0.75Hz

Wire.write (0x60);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Mode qeydiyyatı seçin

Wire.write (0x02);

// Davamlı ölçmə qurun

Wire.write (0x00);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

gecikmə (300);

}

boşluq döngəsi ()

{

imzasız int məlumatları [6];

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Məlumat qeydini seçin

Wire.write (0x03);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

// 6 bayt məlumat tələb edin

Wire.requestFrom (Addr, 6);

// 6 bayt məlumat oxuyun

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

əgər (Tel.available () == 6)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

data [4] = Wire.read ();

data [5] = Wire.read ();

}

gecikmə (300);

// Məlumatları çevirin

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

int zMag = ((məlumat [2] * 256) + məlumat [3]);

int yMag = ((məlumat [4] * 256) + məlumat [5]);

// Məlumatların serial monitora çıxarılması

Serial.print ("X-Axisdə Maqnit Sahəsi:");

Serial.println (xMag);

Serial.print ("Y Eksenində Maqnit Sahəsi:");

Serial.println (yMag);

Serial.print ("Z oxunda maqnit sahəsi:");

Serial.println (zMag);

gecikmə (300);

}

Tel kitabxanasında Wire.write () və Wire.read () əmrləri yazmaq və sensor çıxışını oxumaq üçün istifadə olunur. Kodun aşağıdakı hissəsi sensor çıxışının oxunmasını göstərir.

// 6 bayt məlumat oxuyun // 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 (); data [3] = Wire.read (); data [4] = Wire.read (); data [5] = Wire.read (); }

Sensorun çıxışını Arduino IDE -nin serial monitorunda göstərmək üçün Serial.print () və Serial.println () istifadə olunur.

Sensorun çıxışı yuxarıdakı şəkildə göstərilmişdir.

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ə: