Что такое гироскоп arduino

Гироскоп v2: инструкция, схемы и примеры использования

Используйте гироскоп для определения угловой скорости вокруг собственных осей X, Y, Z.

Модуль пригодиться для стабилизации летательного аппарата по самолётным углам: тангаж, крен и рысканье. Гироскоп совместно с акселерометром применяется для отслеживания угла поворота в современном смартфоне.

Если вам необходимо определить положение вашего девайса в пространстве, обратите внимания на IMU-сенсор на 10 степеней свободы.

Видеообзор

Гироскоп в обзоре IMU-модуля.

Пример работы для Arduino и XOD

В качестве мозга для считывания показаний с датчика рассмотрим платформу из серии Arduino, например, Uno.

На аппаратном уровне инерционный модуль общается с управляющей электроникой по шине I²C. Но не переживайте о битах и байтах: используйте библиотеку TroykaIMU и на выходе получите готовы данные.

Схема устройства

Подключите гироскоп к пинам питания и шины I²C — SDA и SCL на платформе Uno. Для коммуникации используйте соединительные провода «мама-папа»

Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Arduino Uno методом бутерброда. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.

С Troyka Slot Shield провода не понадобятся вовсе.

Вывод данных

В качестве примера выведем в Serial-порт угловую скорость вокруг собственных осей X, Y, Z.

Пример для Espruino

В качестве мозга для считывания показаний с датчика рассмотрим платформы из серии Espruino, например, Iskra JS.

Схема устройства

Подключите гироскоп к пинам питания и шины I²C — SDA и SCL платформы Iskra JS. Для коммуникации используйте соединительные провода «мама-папа».

Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Iskra JS методом бутерброда. Для коммуникации используйте трёхпроводной шлейф «мама-мама», который идёт в комплекте с датчиком.

С Troyka Slot Shield провода не понадобятся вовсе.

Вывод данных

В качестве примера выведем в консоль угловую скорость гироскопа вокруг собственных осей X, Y, Z.

Пример для Raspberry Pi

В качестве мозга для считывания показаний с датчика рассмотрим одноплатные компьютеры Raspberry Pi, например, Raspberry Pi 4.

Схема устройства

Подключите гироскоп к пинам SDA и SCL шины I²C компьютера Raspberry Pi.

Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Cap, которая надевается сверху на малину методом бутерброда.

Программная настройка

Вывод данных

А написать пример кода для Raspberry Pi оставим вам домашним заданием.

Элементы платы

Гироскоп на I3G4250D

Гироскоп выполнен на чипе I3G4250D и представляет собой миниатюрный датчик перемещений в трёхмерном пространстве, разработанный по технологии MEMS от компании STMicroelectronics. Адрес устройства по умолчанию равен 0x68, но может быть изменен на 0x69. Подробности читайте в разделе смена адреса модуля.

Регулятор напряжения

Линейный понижающий регулятор напряжения NCP698SQ33T1G обеспечивает питание MEMS-чипа и других компонентов сенсора. Диапазон входного напряжения от 3,3 до 5 вольт. Выходное напряжение 3,3 В с максимальным выходным током 150 мА.

Преобразователь логических уровней

Преобразователь логических уровней PCA9306DCT необходим для сопряжения датчика с разными напряжениями логических уровней от 3,3 до 5 вольт. Другими словами сенсор совместим как с 3,3 вольтовыми платами, например, Raspberry Pi, так и с 5 вольтовыми — Arduino Uno.

Troyka-контакты

Датчик подключается к управляющей электронике через две группы Troyka-контактов:

Смена адреса модуля

Иногда в проекте необходимо использовать несколько гироскопов. Для этого на модуле предусмотрены контактная площадка. Для смена адреса капните каплей припоя на отведённую контактную площадку.

Источник

Учебное пособие по акселерометру и гироскопу MPU6050. Подключение к Ардуино

В этой статье мы узнаем, как использовать акселерометр и датчик гироскопа MPU6050 совместно с Ардуино. Объясним, как работает MPU6050 и как считывать с него данные.

MPU6050 — как это работает

MPU6050 имеет 3-осевой акселерометр и 3-осевой гироскоп, интегрированные в один чип. Гироскоп измеряет скорость вращения или скорость изменения углового положения во времени по осям X, Y и Z. Для измерения используется технология MEMS и эффект Кориолиса.

Выходные данные гироскопа измеряются в градусах в секунду, поэтому для получения углового положения нам просто нужно интегрировать угловую скорость.

С другой стороны, акселерометр MPU6050 измеряет ускорение. Вкратце, он может измерять гравитационное ускорение по трем осям, и используя некоторую тригонометрию, мы можем вычислить угол, под которым расположен датчик. Итак, если мы объединим данные акселерометра и гироскопа, мы сможем получить очень точную информацию об ориентации датчика в пространстве.

MPU6050 также называют устройством слежения за движением по шести осям или устройством с 6 степенями свободы (шесть степеней свободы) из-за его 6 выходов, или 3 выхода акселерометра и 3 выхода гироскопа.

Ардуино и MPU6050

Давайте посмотрим, как мы можем подключить и прочитать данные с датчика MPU6050 с помощью Ардуино. Для связи с Ардуино мы используем протокол I2C, поэтому нам нужны всего два провода для подключения по линии данных и два провода для питания.

Скетч MPU6050 Ардуино

Ниже приведем полный код, а после разъясним его поподробнее:

Описание кода: Итак, сначала нам нужно подключить библиотеку Wire.h, которая используется для I2C связи, и определить некоторые переменные, необходимые для хранения данных.

В разделе setup() нам нужно инициализировать библиотеку Wire.h и сбросить датчик через регистр управления . Для этого нам нужно взглянуть в datasheet, где мы можем увидеть адрес регистра:

Также, если мы хотим, мы можем выбрать полный диапазон для акселерометра и гироскопа, используя их регистры конфигурации. В этом примере мы будем использовать диапазон по умолчанию + — 2g для акселерометра и диапазон 250 градусов/с для гироскопа, поэтому оставим эту часть кода закомментированной:

В разделе loop() мы начинаем с чтения данных акселерометра. Данные для каждой оси хранятся в двух байтах или регистрах, и мы можем видеть адреса этих регистров в datasheet датчика:

Чтобы прочитать их все, мы начинаем с первого регистра и с помощью функции RequiestFrom() запрашиваем чтение всех 6 регистров для осей X, Y и Z. Затем мы читаем данные из каждого регистра, и, поскольку выходные данные состроят из старшего и младшего байта, мы соответствующим образом объединяем их, чтобы получить правильные значения:

Чтобы получить выходные значения от -1g до + 1g, подходящие для расчета углов, мы делим выходной сигнал с предварительно выбранной чувствительностью.

Наконец, используя две формулы, мы вычисляем углы крена и тангажа на основе данных акселерометра:

Далее тем же методом получаем данные гироскопа:

Мы считываем шесть регистров гироскопа, соответствующим образом объединяем их данные и делим их на предварительно выбранную чувствительность, чтобы получить результат в градусах в секунду:

Здесь вы можете заметить, что выходные значения корректируются на величину ошибок (объясним далее). Поскольку выходные данные выражаются в градусах в секунду, то нам нужно умножить их на время, чтобы получить только градусы. Значение времени фиксируется перед каждой итерацией чтения с помощью функции millis().

Наконец, мы объединяем данные акселерометра и гироскопа с помощью дополнительного фильтра. Здесь мы берем 96% данных гироскопа, потому что они очень точны и не подвержены внешним воздействиям.

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

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

Прежде чем мы взглянем на результаты, объясним, как получить значения коррекции ошибок. Для вычисления этих ошибок мы можем вызвать пользовательскую функцию calculate_IMU_error(), когда датчик находится в неподвижном положении.

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

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

Источник

Подключение гироскопа MPU6050 к Arduino

Гироскопический датчик MPU6050 имеет достаточно много функций в своем составе. Он включает в себя микро электромеханический акселерометр (измеритель ускорения), микро электромеханический гироскоп и датчик температуры. Датчик обеспечивает высокую точность преобразования аналоговых значений в цифровые поскольку имеет на каждом канале 16-битный АЦП (аналого-цифровой преобразователь). Этот модуль способен одновременно обрабатывать информацию сразу по трем осям (каналам): x, y и z. Он имеет интерфейс I2C для взаимодействия с другими устройствами. Это один из немногих компактных модулей на рынке, который имеет в своем составе и гироскоп, и акселерометр. Этот модуль находит широкое применение в таких устройствах как дроны, роботы, датчики движения. Также этот модуль иногда называют гироскопом или трехосевым акселерометром.

В этой статье мы рассмотрим подключение датчика (гироскопа) MPU6050 к плате Arduino и будем отображать поступающие от него значения на ЖК дисплее 16×2.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Гироскопический датчик (гироскоп) MPU-6050 (купить на AliExpress).
  3. ЖК дисплей 16х2 (купить на AliExpress).
  4. Потенциометр 10 кОм (купить на AliExpress).
  5. Соединительные провода.
  6. Макетная плата.
  7. USB кабель.
  8. Источник питания

Гироскопический датчик (гироскоп) MPU-6050

MPU-6050 представляет собой 8-пиновый 6-осевой гироскоп и акселерометр на едином чипе. По умолчанию данный модуль работает по интерфейсу I2C, но можно задействовать и интерфейс SPI. В нашем проекте мы будем использовать интерфейс (режим) I2C и в этом режиме нам понадобятся контакты SDA и SCL модуля.

Распиновка MPU-6050:
Vcc – контакт для подачи питающего напряжения постоянного тока;
GND – земля модуля;
SDA – это контакт используется для передачи данных между модулем mpu6050 и микроконтроллером;
SCL – вход синхронизации;
XDA – линия передачи данных (опциональная) по протоколу I2C для конфигурирования и считывания данных с внешних датчиков (не используется в нашем проекте);
XCL – вход синхронизации протокола I2C для конфигурирования и считывания данных с внешних датчиков (не используется в нашем проекте);
ADO – I2C Slave Address LSB (не используется в нашем проекте);
INT – контакт прерывания для индикации готовности данных.

Общие принципы работы проекта

В этом проекте мы будем показывать на экране ЖК дисплея данные температуры, гироскопа и акселерометра, считываемые с датчика MPU6050. С этого датчика можно считывать «сырые» (row values) и нормированные значения, но «сырые» значения нестабильны, поэтому на экране ЖК дисплея мы будем показывать нормированные значения.

Сначала на ЖК дисплее мы будем показывать температуру, затем через 10 секунд будем показывать данные гироскопа и еще через 10 секунд данные акселерометра.

Работа схемы

Схема подключения гироскопа MPU6050 к плате Arduino представлена на следующем рисунке.

Наш проект мы запитали по кабелю USB от компьютера. Потенциометр 10 кОм используется для регулировки яркости ЖК дисплея. У датчика MPU6050 мы задействовали 5 контактов:

  • контакт питания – к контакту 3.3v платы Arduino;
  • землю – к земле платы Arduino;
  • контакты SCL и SDA датчика MPU6050 – к контактам A4 и A5 платы Arduino;
  • контакт прерывания (INT) MPU6050 – к контакту прерывания 0 (D2) платы Arduino.

Контакты RS, RW и EN ЖК дисплея непосредственно подключены к контактам 8, gnd и 9 платы Arduino. Контакты данных ЖК дисплея подключены к контактам 10, 11, 12 и 13 платы Arduino.

Объяснение работы программы для Arduino

В нашем проекте для взаимодействия с гироскопом MPU6050 мы использовали специальную библиотеку (MPU6050 library) для работы с ним. Скачайте ее по приведенной ссылке с сервиса GitHub и установите ее в вашу Arduino IDE.

Перед загрузкой нашей программы (приведенной в конце статьи) в плату Arduino вы можете протестировать работу примеров, которые идут вместе со скачанной библиотекой. Также в программе мы должны подключить библиотеку для работы с ЖК дисплеем и сообщить плате Arduino, к каким ее контактам подключен ЖК дисплей.

Источник

Adblock
detector