Panduan lengkap menggunakan HMC5883L dengan Arduino

  • Koneksi HMC5883L dengan Arduino melalui komunikasi I2C.
  • Kode untuk membaca sumbu X, Y, Z medan magnet.
  • Buat kompas digital dengan mengatur deklinasi magnet.

kode hmc5883l arduino-3

Magnetometer HMC5883L adalah sensor yang banyak digunakan dalam proyek Arduino karena kemampuannya mengukur medan magnet dalam tiga sumbu. Hal ini menjadikannya pilihan yang sangat baik untuk membuat kompas digital, sistem navigasi untuk drone, dan kendaraan otonom lainnya. Selain terjangkau, integrasinya juga sederhana berkat antarmuka I2C, sehingga ideal untuk pemula.

Pada artikel ini kita akan mempelajari fitur-fitur utama HMC5883L, hubungannya dengan berbagai papan Arduino dan contoh praktis penggunaannya. Pada akhirnya, Anda akan dapat mengimplementasikan proyek kompas digital Anda sendiri dengan Arduino, memanfaatkan potensi penuh dari sensor canggih ini.

Apa itu HMC5883L dan bagaimana cara kerjanya?

HMC5883L adalah magnetometer tiga sumbu yang mengukur komponen medan magnet bumi pada sumbu X, Y dan Z. Hal ini tidak hanya memungkinkan terdeteksinya keberadaan medan magnet, tetapi juga memungkinkan penentuan orientasi melalui perhitungan berdasarkan pengukuran yang diperoleh. Fitur-fitur ini menjadikannya sensor ideal untuk membuat sistem orientasi, seperti kompas digital.

Sensor biasanya terdapat pada modul seperti model GY-273, yang juga mencakup elektronik yang diperlukan untuk memfasilitasi koneksi langsung dengan papan Arduino atau mikrokontroler lainnya. Catu dayanya fleksibel, dan dapat diberi daya dengan tegangan 3.3V dan 5V, yang membuatnya sangat serbaguna dalam hal kompatibilitas dengan sistem yang berbeda.

Koneksi Arduino

Menghubungkan HMC5883L dengan Arduino sangat sederhana berkat antarmuka I2C yang digunakannya. Komunikasi ini hanya membutuhkan dua pin: SDA dan SCL, yang harus dihubungkan ke pin yang sesuai di papan Arduino.

  • untuk Arduino Uno, Nano dan Mini: SDA terhubung ke pin A4 dan SCL ke A5.
  • Jika menggunakan Arduino Mega atau Due: SDA harus terhubung ke pin 20 dan SCL ke pin 21.
  • Dalam kasus Arduino Leonardo: SDA menuju pin 2 dan SCL ke pin 3.

Jangan lupa bahwa magnetometer bekerja dengan alamat I2C tetap 0x1E, jadi tidak mungkin mengubahnya. Alamat ini unik untuk jenis sensor ini, yang berarti kita tidak dapat menghubungkan beberapa perangkat HMC5883L pada bus I2C yang sama.

Pembacaan Medan Magnet

Metode utama pengoperasian HMC5883L adalah membaca nilai medan magnet di ketiga sumbu. Untuk mendapatkan nilai-nilai tersebut pada Arduino, kami menggunakan perpustakaan yang dikembangkan oleh Jeff Rowberg. Anda dapat menemukan toko buku ini di repositori GitHub Anda dan unduh untuk digunakan di Arduino IDE.

Setelah perpustakaan diinstal, sensor dapat diinisialisasi dan mulai membaca nilai medan magnet. Berikut ini contoh sederhana melakukan hal ini:

#include "Wire.h"
#include "I2Cdev.h"
#include "HMC5883L.h"
HMC5883L magnetometro;
int16_t mx, my, mz;

void setup() {
Serial.begin(9600);
Wire.begin();
magnetometro.initialize();
}

void loop(){
magnetometro.getHeading(&mx, &my, &mz);
Serial.print("mx: "); Serial.print(mx);
Serial.print(" my: "); Serial.print(my);
Serial.print(" mz: "); Serial.println(mz);
delay(100);
}

Dalam kode ini, magnetometer diinisialisasi dan nilai pada ketiga sumbu dibaca dalam satu lingkaran. Setiap kali kita menjalankan `loop()`, nilai medan magnet di X, Y dan Z akan ditampilkan di monitor serial.

Pengaturan Jangkauan dan Penguatan

HMC5883L memungkinkan Anda menyesuaikan rentang pengukuran medan magnet antara ±0.88 Gauss dan ±8.1 Gauss dengan tingkat penguatan yang berbeda. Kisaran defaultnya adalah ±1.3 Gauss, dan Anda dapat memodifikasinya agar sesuai dengan kebutuhan proyek Anda. Hal ini dapat dilakukan dengan menggunakan baris berikut dalam kode:

magnetometro.setGain(value);

Dimana nilai adalah bilangan bulat antara 0 dan 7, yang akan memilih tingkat penguatan. Di bawah ini kami tunjukkan tabel dengan nilai yang sesuai:

keberanian Rango Keuntungan (LSB/Gauss)
0 ±0.88Ga 1370
1 ±1.3Ga 1090
2 ±1.9Ga 820
3 ±2.5Ga 660
4 ±4.0Ga 440
5 ±4.7Ga 390
6 ±5.6Ga 330
7 ±8.1Ga 230

Membangun kompas digital

Salah satu kegunaan paling umum dari HMC5883L adalah membangun a kompas digital. Untuk melakukan ini, kita perlu menghitung sudut antara sensor dan utara magnet menggunakan pembacaan sumbu X dan Y. Hal ini dicapai dengan menggunakan rumus:

float angulo = atan2(my, mx) * 180 / M_PI;

Nilai ini akan memberi Anda sudut orientasi terhadap Utara magnetis. Untuk menyesuaikan sudut ini utara geografis, Anda harus memperhitungkan deklinasi magnetis lokasi Anda, yang dapat Anda lihat di berbagai situs web seperti www.ign.es atau www.ngdc.noaa.gov.

Deklinasi magnet yang benar

Setelah Anda mendapatkan deklinasi magnetis posisi Anda, Anda hanya perlu menguranginya dari sudut yang diperoleh. Misalnya:

angulo -= declinacion;

Jika sudutnya negatif, Anda dapat menambahkan 360 derajat untuk selalu mendapatkan nilai positif yang disesuaikan antara 0 dan 360 derajat:

if (angulo < 0) angulo += 360;

Pengaturan ini akan memberi Anda kompas yang akan selalu menunjuk secara akurat ke geografis Utara.

Dalam praktiknya, dengan sensor ini dan beberapa perpustakaan Anda dapat memiliki kompas dalam beberapa menit. Namun, perlu diingat bahwa HMC5883L adalah sensor yang sensitif terhadap gangguan eksternal, seperti logam di dekatnya atau medan yang dihasilkan oleh arus tinggi, yang dapat mengubah pembacaan.


Tambahkan sebagai sumber pilihan