Отправляем напрямую из Москвы за 3-4 дня

WhatsApp, Telegram, Viber
пн - пт: 10:00 – 20.00

Модуль GY-271 (трехосевой цифровой компас на микросхеме QMC5883L)

Модуль GY-271 на микросхеме QMC5883L - это трехосевой цифровой магниторезистивный компас (магнитометр на три координаты).
Кроме этого на плате модуля GY-271 размещены необходимые для надежного функционирования подтягивающие резисторы.
Микросхема QM... Перейти к полному описанию

9 руб.

 

Артикул: 23871293

 

нет

 

Описание

Модуль GY-271 на микросхеме HMC5883L - это трехосевой цифровой магниторезистивный компас (магнитометр на три координаты). 

Кроме этого на плате модуля GY-271 размещены необходимые для надежного функционирования подтягивающие резисторы. 

Микросхема HMC5883L работает по шине I2C. В качестве сенсоров используется три магниторезистивных датчика.

  • Разработчик: компания Honeywell. 
  • Напряжение питания составляет 2.2-3.6В.
  • Чувствительность датчика 5 миллигаусс.
  • Малый размер и низкое энергопотребление

Datasheet HMC5883L

Схема подключения

Схема подключения проста. Обратите внимание, что распиновка датчика на схеме отличается от распиновки на реальном устройстве. При подключении руководствуйтесь наименованиями пинов, нарисованными на Вашем датчике.




SCL подключите к аналоговому выходу 5 платы Arduino

SDA подключите к аналоговому выходу 4 платы Arduino

На VCC подайте 3V

GND заземлите.

Пример кода

Для работы с датчиком есть готовая Arduino библиотека. Скачайте и установите в Arduino IDE.

Далее залейте скетч:

#include "Wire.h"
#include "HMC5883L.h"

HMC5883L compass;

void setup(){
  Serial.begin(9600);
  Wire.begin();
  
  compass = HMC5883L();  // создаем экземпляр HMC5883L библиотеки
  setupHMC5883L();       // инициализация HMC5883L
}

void loop(){
  float heading = getHeading();
  Serial.println(heading);
  delay(250);
}

void setupHMC5883L(){
  // инициализация HMC5883L, и проверка наличия ошибок
  int error;  
  error = compass.SetScale(0.88); // чувствительность датчика из диапазона: 0.88, 1.3, 1.9, 2.5, 4.0, 4.7, 5.6, 8.1
  if(error != 0) Serial.println(compass.GetErrorText(error)); // если ошибка, то выводим ее

  error = compass.SetMeasurementMode(Measurement_Continuous); // установка режима измерений как Continuous (продолжительный)
  if(error != 0) Serial.println(compass.GetErrorText(error)); // если ошибка, то выводим ее
}

float getHeading(){
  // считываем данные с HMC5883L и рассчитываем  направление
  MagnetometerScaled scaled = compass.ReadScaledAxis(); // получаем масштабированные элементы с датчика
  float heading = atan2(scaled.YAxis, scaled.XAxis);    // высчитываем направление

  // корректируем значения с учетом знаков
  if(heading < 0) heading += 2*PI;
  if(heading > 2*PI) heading -= 2*PI;

  return heading * RAD_TO_DEG; // переводим радианы в градусы
}