Магнитометр HMC5883L

Сегодня речь пойдет от трехосевом магнитометре HMC5883L (модуль GY-273), который при должной обработке можно использовать в качестве компаса.

hmc5883l

Подключается датчик по интерфейсу I2C, который на Arduino UNO задействован на портах A4 и A5.

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

hmc5883l-scheme

Для программирования воспользуемся вот этой библиотекой.

Получение сырых и нормализованных данных:

Вектора X и Y позволяют узнать отклонение от направления на север по следующей зависимости:

направление измерения (rad) = atan (vector_y, vector_x);

Кроме того, нужно знать еще и магнитное склонение. Посмотреть его можно здесь http://www.magnetic-declination.com/.

magnetic_declination

У меня оно 15 градусов 46 минут.

Получим направление:

Нужно иметь в виду, что датчик очень чувствителен к наклону и к магнитным приборам рядом с ним. Примеры взяты отсюда: http://www.jarzebski.pl/arduino/czujniki-i-sensory/3-osiowy-magnetometr-hmc5883l.html

Автор также сообщает, что особенностью данного магнитометра является неравномерное измерение магнитного поля в диапазоне от 1 ° до 180 ° и от 180 ° до 360 °. Для первого отсека наш магнитометр будет генерировать искаженные результаты от 1 ° до 240 ° , а для второго — от 240 ° ÷ 360 ° . Поэтому следует вносить поправки, например, с помощью функции map:

Сделаем небольшой проект — компас со светодиодом: когда направление приближается к северу, светодиод горит ярче, когда отдаляется — яркость уменьшается.

 

 

 

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *