Модуль трехосевого компаса-магнитометра
Магниторезистивный датчик для измерения магнитных полей Земли в навигационных и охранных системах.
Характеристики
- Микросхема: 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);
}