Модуль трехосевого компаса-магнитометра

GY-273 HMC5883L
gy-273-2
gy-273-3
Описание

Магниторезистивный датчик для измерения магнитных полей Земли в навигационных и охранных системах.

Характеристики

  • Микросхема: HMC5883L;
  • Шина (протокол передачи данных): I2C (IIC);
  • Напряжение питания: 3...5В;
  • Диапазон измерений: ±1,3-8Гс (±130...800 мкТл);
  • Размеры, мм: 13,9*18,5*2,9.

Подключение

Модуль может быть подключен непосредственно к Arduino, AVR, PIC, ARM или аналогичному микроконтроллеру к соответствующим портам:

  • VDD - положительный полюс источника питания 3...5В;
  • GND - отрицательный полюс источника питания, земля;
  • SCL - вход тактирования шины I2C;
  • SDA - линия данных интерфейса I2C;
  • DRDY - (опционально) выход состояния готовности, логическая "1" - устройство готово к считыванию, может быть подключено к любому порту ввода микроконтроллера.

Пример кода

#include //подключаем библиотеку I2C для Arduino
#define address 0x1E //0011110b, уникальный адрес микросхемы HMC5883 на шине I2C

void setup(){
 //инициализация "монитора порта" и I2C
 Serial.begin(9600);
 Wire.begin();
 //настройка HMC5883
 Wire.beginTransmission(address); //начинаем передачу данных с HMC5883
 Wire.write(0x02); //регистр настроек
 Wire.write(0x00); //режим измерения
 Wire.endTransmission();
}

void loop(){
 int x,y,z; //переменные для измерения трех осей
 Wire.beginTransmission(address);
 Wire.write(0x03); //регистр измерения
 Wire.endTransmission();
 //считываем данные каждой оси
 Wire.requestFrom(address, 6);
 if(6<=Wire.available()){
  x = Wire.read()<<8; //X msb
  x |= Wire.read(); //X lsb
  z = Wire.read()<<8; //Z msb
  z |= Wire.read(); //Z lsb
  y = Wire.read()<<8; //Y msb
  y |= Wire.read(); //Y lsb
 }

 //отправляем в "монитор порта" значения каждой оси
 Serial.print("x: ");
 Serial.print(x);
 Serial.print("  y: ");
 Serial.print(y);
 Serial.print("  z: ");
 Serial.println(z);

 delay(250);
}