
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.