47. Sensor Kompas HMC5883L
47. Sensor Kompas HMC5883L

HMC5883L merupakan sensor magnetometer atau sensor Kompas digital. Sensor ini memiliki magnetometer 3 sumbu yang mampu membaca medan magnet di sekitarnya. Oleh karena itu, sensor ini dapat mengetahui arah medan magnet bumi dan mengetahui orientasi arah utara magnet bumi.

Selain itu, sensor HMC6883L ini juga dapat digunakan untuk mengukur magnetisasi bahan magnetik seperti ferromagnet atau mengukur kekuatan medan magnet. Sensor ini dapat diakses dengan Mikrokontroler menggunakan protokol komunikasi I2C. Akurasi sensor Kompas digital HMC5883L ini yaitu 1° - 2°.

Sensor HMC5883 ini memanfaatkan efek Anisotropic Magneto Resistive (AMR) dari bahan feromagnetik yang akan mempengaruhi nilai tegangan sirkuit akibat adanya medan magnet eksternal. Sensor ini juga menggunakan teknologi Honeywell, yaitu salah satu teknologi yang digunakan pada sensor medan magnet rendah dengan tingkat sensitifitas yang tinggi. Sensor digital Kompas HMC5883L ini dapat membaca 3 orientasi sumbu yaitu X, Y, dan Z, serta mengahasilkan 2 data orientasi dalam bentuk nilai analog sekaligus.

Modul ini memiliki komponen utama yaitu IC Magnetometer HMC5883L, yang digunakan untuk penginderaan medan magnet. HMC833L mencakup sensor magneto-resistive seri HMC118X resolusi tinggi ditambah ASIC yang mengandung amplifier, automatic degaussing strap driver (menghilangkan sisa medan magnet secara otomatis), penghilang offset, dan ADC 12-bit yang memungkinkan akurasi arah Kompas 1° hingga 2°. Selain itu, sensor ini juga dilengkapi dengan voltage regulator yang berfungsi untuk menurunkan tegangan kerja rangkaian ke 3.3V sebagai tegangan yang akan masuk ke IC.

Pinout & Spesifikasi Sensor Kompas HMC5883L

.

Contoh Rangkaian Sensor Kompas HMC5883L & Arduino Uno

Percobaan 63: Akses Sensor Kompas HMC5883L

  1. Hubungkan SDA dengan pin A4 ATMEGA 328 / Arduino NANO
  2. Hubungkan SCL dengan pin A5 ATMEGA 328 / Arduino NANO
  3. Hubungkan board ATMEGA 328 / Arduino NANO dengan Komputer menggunakan kabel USB.
  4. Bukalah IDE Arduino, kemudian ketikkan kode program/sketch atau buka file KOMPAS_HMC5883L_DFROBOT
  5. Compile menggunakan verify button (tanda ceklist pada IDE arduino) untuk mengecek ada atau tidaknya error/kesalahan dalam pengetikan.
  6. Upload program ke arduino dengan cara, pilih File > Upload to I/O board, atau tekan tombol tanda panah pada jendela IDE arduino.

Code:

#include <Wire.h>
#include <DFRobot_QMC5883.h>
DFRobot_QMC5883 compass;
void setup()
{
  Serial.begin(9600);
  while (!compass.begin())
  {
    Serial.println("Could not find a valid QMC5883 sensor, check wiring!");
    delay(500);
  }
    if(compass.isHMC()){
        Serial.println("Initialize HMC5883");
        compass.setRange(HMC5883L_RANGE_1_3GA);
        compass.setMeasurementMode(HMC5883L_CONTINOUS);
        compass.setDataRate(HMC5883L_DATARATE_15HZ);
        compass.setSamples(HMC5883L_SAMPLES_8);
    }
   else if(compass.isQMC()){
        Serial.println("Initialize QMC5883");
        compass.setRange(QMC5883_RANGE_2GA);
        compass.setMeasurementMode(QMC5883_CONTINOUS); 
        compass.setDataRate(QMC5883_DATARATE_50HZ);
        compass.setSamples(QMC5883_SAMPLES_8);
   }
  }
void loop()
{
  Vector norm = compass.readNormalize();
  // Calculate heading
  float heading = atan2(norm.YAxis, norm.XAxis);
  // Set declination angle on your location and fix heading
  // You can find your declination on: http://magnetic-declination.com/
  // (+) Positive or (-) for negative
  // For Bytom / Poland declination angle is 4'26E (positive)
  // Formula: (deg + (min / 60.0)) / (180 / M_PI);
  float declinationAngle = (4.0 + (26.0 / 60.0)) / (180 / PI);
  heading += declinationAngle;
  // Correct for heading < 0deg and heading > 360deg
  if (heading < 0){
    heading += 2 * PI;
  }
  if (heading > 2 * PI){
    heading -= 2 * PI;
  }
  // Convert to degrees
  float headingDegrees = heading * 180/M_PI; 
  // Output
  Serial.print(" Heading = ");
  Serial.print(heading);
  Serial.print(" Degress = ");
  Serial.print(headingDegrees);
  Serial.println();
  delay(100);
}

Video Demo:

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *