Isi kandungan:

Pengukuran Medan Magnetik Menggunakan HMC5883 dan Arduino Nano: 4 Langkah
Pengukuran Medan Magnetik Menggunakan HMC5883 dan Arduino Nano: 4 Langkah

Video: Pengukuran Medan Magnetik Menggunakan HMC5883 dan Arduino Nano: 4 Langkah

Video: Pengukuran Medan Magnetik Menggunakan HMC5883 dan Arduino Nano: 4 Langkah
Video: Product Showcase: Qwiic MLX90393 Triple Axis Magnetometer 2024, Disember
Anonim
Image
Image

HMC5883 adalah kompas digital yang direka untuk penderiaan medan rendah. Peranti ini mempunyai jarak medan magnet yang luas +/- 8 Oe dan kadar output 160 Hz. Sensor HMC5883 merangkumi pemacu tali degaussing automatik, pembatalan offset, dan ADC 12-bit yang memungkinkan ketepatan tajuk kompas 1 ° hingga 2 °. Semua Modul Mini I²C direka untuk beroperasi pada 5VDC.

Dalam tutorial ini, kami akan menerangkan cara kerja terperinci HMC5883 dengan Arduino nano.

Langkah 1: Perkakasan Diperlukan:

Perkakasan Diperlukan
Perkakasan Diperlukan
Perkakasan Diperlukan
Perkakasan Diperlukan
Perkakasan Diperlukan
Perkakasan Diperlukan

Bahan yang kami perlukan untuk mencapai tujuan kami merangkumi komponen perkakasan berikut:

1. HMC5883

2. Arduino Nano

3. Kabel I2C

4. Perisai I2C Untuk Arduino Nano

Langkah 2: Penyambungan Perkakasan:

Penyambungan Perkakasan
Penyambungan Perkakasan
Penyambungan Perkakasan
Penyambungan Perkakasan

Bahagian penyambungan perkakasan pada dasarnya menerangkan sambungan pendawaian yang diperlukan antara sensor dan arduino nano. Memastikan sambungan yang betul adalah keperluan asas semasa mengerjakan sistem apa pun untuk output yang diinginkan. Jadi, sambungan yang diperlukan adalah seperti berikut:

HMC5883 akan berfungsi di atas I2C. Berikut adalah contoh rajah pendawaian, yang menunjukkan cara memasang setiap antara muka sensor.

Di luar kotak, papan dikonfigurasikan untuk antara muka I2C, oleh itu kami mengesyorkan menggunakan penyambungan ini jika anda tidak agnostik. Yang anda perlukan hanyalah empat wayar!

Hanya diperlukan empat sambungan pin Vcc, Gnd, SCL dan SDA dan ini disambungkan dengan bantuan kabel I2C.

Sambungan ini ditunjukkan dalam gambar di atas.

Langkah 3: Kod Arduino untuk Mengukur Keamatan Medan Magnetik:

Kod Arduino untuk Mengukur Intensiti Medan Magnetik
Kod Arduino untuk Mengukur Intensiti Medan Magnetik
Kod Arduino untuk Mengukur Intensiti Medan Magnetik
Kod Arduino untuk Mengukur Intensiti Medan Magnetik

Mari kita mulakan dengan kod Arduino sekarang.

Semasa menggunakan modul sensor dengan Arduino, kami menyertakan perpustakaan Wire.h. Perpustakaan "Wire" mengandungi fungsi yang memudahkan komunikasi i2c antara sensor dan papan Arduino.

Keseluruhan kod Arduino diberikan di bawah untuk kemudahan pengguna:

#sertakan

// Alamat HMC5883 I2C adalah 0x1E (30)

#tentukan Addr 0x1E

persediaan tidak sah ()

{

// Memulakan komunikasi I2C sebagai MASTER

Wire.begin ();

// Inisialisasi Serial Communication, tetapkan baud rate = 9600

Serial.begin (9600);

// Mulakan Penghantaran I2C

Wire.beginTransmission (Addr);

// Pilih konfigurasi register A

Wire.write (0x00);

// Tetapkan konfigurasi pengukuran normal, laju output data = 0.75Hz

Wire.write (0x60);

// Hentikan Penghantaran I2C

Wire.endTransmission ();

// Mulakan Penghantaran I2C

Wire.beginTransmission (Addr);

// Pilih Daftar mod

Wire.write (0x02);

// Tetapkan pengukuran berterusan

Wire.write (0x00);

// Hentikan Penghantaran I2C

Wire.endTransmission ();

kelewatan (300);

}

gelung kosong ()

{

data int yang tidak ditandatangani [6];

// Mulakan Penghantaran I2C

Wire.beginTransmission (Addr);

// Pilih daftar data

Wire.write (0x03);

// Hentikan Penghantaran I2C

Wire.endTransmission ();

// Minta 6 bait data

Wire.requestFrom (Addr, 6);

// Baca 6 bait data

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

jika (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 ();

}

kelewatan (300);

// Tukarkan data

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

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

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

// Keluarkan data ke monitor bersiri

Serial.print ("Medan Magnetik dalam X-Axis:");

Serial.println (xMag);

Serial.print ("Medan Magnetik dalam Y-Axis:");

Serial.println (yMag);

Serial.print ("Medan Magnetik dalam Z-Paksi:");

Serial.println (zMag);

kelewatan (300);

}

Di perpustakaan wayar Wire.write () dan Wire.read () digunakan untuk menulis perintah dan membaca output sensor. Berikut bahagian kod menggambarkan pembacaan output sensor.

// Baca 6 bait data // 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 (); }

Serial.print () dan Serial.println () digunakan untuk memaparkan output sensor pada monitor bersiri dari Arduino IDE.

Output sensor ditunjukkan pada gambar di atas.

Langkah 4: Aplikasi:

Permohonan
Permohonan

HMC5883 adalah modul multi-chip permukaan-mount yang direka untuk penginderaan magnet medan rendah dengan antara muka digital untuk aplikasi seperti kompas dan magnetometri kos rendah. Ketepatan dan ketepatan tahap tinggi satu hingga dua darjah membolehkan Navigasi Pejalan Kaki dan Aplikasi LBS.

Disyorkan: