Оглавление:

Как использовать модуль GY511 с Arduino [сделать цифровой компас]: 11 шагов
Как использовать модуль GY511 с Arduino [сделать цифровой компас]: 11 шагов

Видео: Как использовать модуль GY511 с Arduino [сделать цифровой компас]: 11 шагов

Видео: Как использовать модуль GY511 с Arduino [сделать цифровой компас]: 11 шагов
Видео: Самодельный Head Tracker на STM32. Калибровка акселерометра и магнитометра LSM303DLHC 2024, Ноябрь
Anonim
Как использовать модуль GY511 с Arduino [сделать цифровой компас]
Как использовать модуль GY511 с Arduino [сделать цифровой компас]

Обзор

В некоторых проектах в области электроники нам необходимо знать географическое положение в любой момент и соответственно выполнить определенную операцию. В этом руководстве вы узнаете, как использовать модуль компаса LSM303DLHC GY-511 с Arduino для создания цифрового компаса. Сначала вы узнаете об этом модуле и о том, как он работает, а затем узнаете, как связать модуль LSM303DLHC GY-511 с Arduino.

Что вы узнаете

  • Что это за модуль компаса?
  • Модуль компаса и интерфейс Arduino.
  • Сделайте цифровой компас с модулем GY-511 и Arduino.

Шаг 1. Общая информация о модуле «Компас»

Общая информация о модуле компаса
Общая информация о модуле компаса

Модуль GY-511 включает в себя 3-осевой акселерометр и 3-осевой магнитометр. Этот датчик может измерять линейное ускорение в полном масштабе ± 2 г / ± 4 г / ± 8 г / ± 16 г и магнитные поля в полном масштабе ± 1,3 / ± 1,9 / ± 2,5 / ± 4,0 / ± 4,7 / ± 5,6 / ± 8,1 Гаусс.

Когда этот модуль помещается в магнитное поле, в соответствии с законом Лоренца в его микроскопической катушке индуцируется ток возбуждения. Модуль компаса преобразует этот ток в дифференциальное напряжение для каждого направления координат. Используя эти напряжения, вы можете рассчитать магнитное поле в каждом направлении и получить географическое положение.

Кончик

QMC5883L - еще один широко используемый модуль компаса. Этот модуль, который имеет аналогичную структуру и применение, что и модуль LMS303, немного отличается по производительности. Поэтому, если вы занимаетесь проектами, будьте осторожны с типом вашего модуля. Если ваш модуль QMC5882L, используйте соответствующую библиотеку и коды, которые также включены в руководство.

Шаг 2: Необходимые компоненты

Обязательные компоненты
Обязательные компоненты

Компоненты оборудования

Ардуино UNO R3 * 1

GY-511 3-осевой акселерометр + магнитометр * 1

Сервомотор TowerPro SG-90 * 1

1602 ЖК-модуль * 1

Джемперы * 1

Программные приложения

IDE Arduino

Шаг 3. Сопряжение модуля компаса GY-511 с Arduino

Взаимодействие модуля компаса GY-511 с Arduino
Взаимодействие модуля компаса GY-511 с Arduino
Взаимодействие модуля компаса GY-511 с Arduino
Взаимодействие модуля компаса GY-511 с Arduino

Модуль компаса GY-511 имеет 8 контактов, но вам нужно только 4 из них для взаимодействия с Arduino. Этот модуль взаимодействует с Arduino по протоколу I2C, поэтому подключите контакты SDA (выход I2C) и SCK (вход часов I2C) модуля к контактам I2C на плате Arduino.

Примечание. Как видите, в этом проекте мы использовали модуль GY-511. Но вы можете использовать эту инструкцию для настройки других модулей компаса LMS303.

Шаг 4: Калибровка модуля компаса GY-511

Для навигации сначала необходимо откалибровать модуль, то есть установить диапазон измерения от 0 до 360 градусов. Для этого подключите модуль к Arduino, как показано ниже, и загрузите следующий код на свою плату. После выполнения кода вы можете увидеть минимальное и максимальное значения диапазона измерения для осей X, Y и Z в окне последовательного монитора. Эти числа понадобятся вам в следующей части, поэтому запишите их.

Шаг 5: Схема

Схема
Схема

Шаг 6: Код

В этом коде вам понадобится библиотека Wire.h для связи I2C и библиотека LMS303.h для модуля компаса. Вы можете скачать эти библиотеки по следующим ссылкам.

LMS303.h Библиотека

Библиотека Wire.h

Примечание. Если вы используете QMC5883, вам понадобится следующая библиотека:

MechaQMC5883L.h

Здесь мы объясняем код для LMS303, но вы также можете загрузить коды для модуля QMC.

Давайте посмотрим на некоторые из новых функций:

compass.enableDefault ();

Инициализация модуля

compass.read ();

Чтение выходных значений модуля компаса

running_min.z = min (running_min.z, compass.mz); running_max.x = макс (running_max.x, compass.m.x);

Определение минимального и максимального значений диапазона измерения путем сравнения измеренных значений.

Шаг 7: создание цифрового компаса

После калибровки модуля мы собираемся построить компас, подключив к модулю серводвигатель. Так что индикатор сервопривода всегда показывает нам северное направление, как красная стрелка на компасе. Для этого сначала модуль компаса вычисляет географическое направление и отправляет его в Arduino, а затем, применяя соответствующий коэффициент, вы вычисляете угол, на который серводвигатель должен вращаться, чтобы его индикатор указывал на магнитный север. В конце концов, мы применяем этот угол к серводвигателю.

Шаг 8: Схема

Схема
Схема

Шаг 9: Код

Код
Код

Для этой части вам также понадобится библиотека Servo.h, которая по умолчанию установлена в вашем программном обеспечении Arduino.

Давайте посмотрим на некоторые из новых функций:

Серво Серво1;

Инициализация модуля

compass.read ();

Представляем объект серводвигателя

Servo1.attach (servoPin); compass.init (); compass.enableDefault ();

Инициализация модуля компаса и серводвигателя

Аргумент Servo1.attach () - это номер вывода, подключенного к серводвигателю.

compass.m_min = (LSM303:: vector) {- 32767, -32767, -32767}; compass.m_max = (LSM303:: vector) {+ 32767, +32767, +32767};

Используя эти строки, вы определяете минимальные и максимальные значения для измерения диапазона, полученные в предыдущей части.

float heading = compass.heading ((LSM303:: vector) {0, 0, 1});

Функция heading () возвращает угол между осью координат и фиксированной осью. Вы можете определить фиксированную ось с помощью вектора в аргументе функции. Например, здесь, определяя (LSM303:: vector) {0, 0, 1}, ось Z рассматривается как постоянная ось.

Servo1.write (заголовок);

Функция Servo1.write () применяет значение, считываемое модулем компаса, к серводвигателю.

Примечание Обратите внимание, что серводвигатель может иметь магнитное поле, поэтому лучше разместить серводвигатель на подходящем расстоянии от модуля компаса, чтобы он не отклонялся от модуля компаса.

Рекомендуемые: