Лабораторная работа 4: Управление гироскопом I2C
Лабораторная работа 4: Управление гироскопом I2CЦели
В этой лабораторной работе вы будете использовать модуль акселерометра-гироскопа GY-521 для измерения ускорения по трем осям и вращательного движения по трем осям. Вы также поэкспериментируете с управлением вращающимся кубом с помощью движений модуля.
Рекомендуемая литература и ресурсы
- Схема GY-521
- MPU-6050 техпаспорт
- MPU-6050 Ссылка на регистр (pdf)
- MPU-6050 Ссылка на регистр (онлайн)
- http://playground.arduino.cc/Main/MPU-6050
- Информация о графической библиотеке
- веб-сайт i2cdevlib Пример кода отображения гистограммы
- (не для Arduino) проще написать свой собственный…
- Использование Quaternion для выполнения трехмерных поворотов
- Вращение объектов с помощью кватернионов
- Себастьян Мэджвик Алгоритм IMU
- Эффективная вычислительная скользящая средняя для микроконтроллеров
- Вращения по рысканию, тангажу и крену (спасибо Виктору и Люку)
Часть 1: Начало
A. Найдите в комплекте синюю плату GY-521 и прилагаемую к ней прямоугольную клеммную колодку:
Припаяйте короткие контакты прямоугольной клеммной колодки к GY-521, как показано на рисунке:
Подсоедините четыре предварительно подготовленных провода из комплекта к модулю и к Teensy, как показано здесь:
Настройка оборудования:
MPU6050 Breakout ——— Arduino
3,3 В ————————- 3,3 В
ПДД —————— ——- A4
SCL ————————- A5
GND ———— ———— Земля
SDA и SCL должны иметь внешние подтягивающие резисторы на 10 кОм (до 3,3 В).
B. Для тестирования загрузите и запустите скетч MPU6050BasicExample.ino. Обязательно немедленно откройте окно отладки.
Вы должны увидеть такие данные:
MPU6050 в сети... Самотестирование по оси X: корректировка ускорения в пределах: 0,6% от заводского значения Самотестирование по оси Y: корректировка ускорения в пределах: 0,6% от заводского значения Самотестирование по оси Z: корректировка ускорения в пределах: 0,7% от заводского значения Самотестирование по оси x: регулировка вращения в пределах: 0,2% от заводского значения Самотестирование по оси Y: регулировка вращения в пределах: -0,2% от заводского значения Самотестирование по оси Z: регулировка вращения в пределах: 0,3% от заводского значения
MPU6050 инициализирован для режима активных данных. ...
X-ускорение: -3,30 мг Y-ускорение: 1,71 мг Z-ускорение: 1005,68 мг Скорость X-гироскопа: -1,9 градуса/сек Скорость Y-гироскопа: 0,3 градуса/сек Скорость Z-гироскопа: -0,3 градуса/сек Температура 13,31 градуса С
X-ускорение: 14,40 мг Y-ускорение: 0,98 мг Z-ускорение: 1003,36 мг Скорость X-гироскопа: 0,4 градуса/сек Скорость Y-гироскопа: 0,1 градуса/сек Скорость Z-гироскопа: 0,0 градуса/сек Температура 23,27 градуса С
Обратите внимание, что версия данных печатается на ЖК-дисплее.
Также обратите внимание, что мы не используем библиотеку для MPU6050, хотя она у нас установлена. Вместо этого мы определяем адреса регистров для MPU6050 в нашем скетче и адресуем эти регистры в теле скетча.
C. Сделайте версию скетча под названием MPU6050Graph2.ino для отображения гистограмм 6 переменных, используйте длинную ось дисплея и выберите интересные цвета для фона, ускорения и гироскопической скорости.
Закомментируйте отладочную печать, чтобы ваш скетч работал с максимальной скоростью.
Покажите свой работающий скетч ТА.
Вопрос 1: Сколько адресных регистров в MPU-6050?
(см. техническое описание, номер регистра и код примера)Вопрос 2: Каков формат данных сообщений I2C, записываемых в MPU-6050?
Часть 2. Сглаживание данных и управление вращающимся кубом
Начните с копии вашего эскиза и назовите ее MPU6050Graph3.ino . Данные меняются, когда вы перемещаете свой модуль. Чтобы сгладить данные, вы должны вставить скользящее среднее значение для каждой из 6 переменных. Поэкспериментируйте с длиной скользящей средней, которая лучше всего подходит для обеспечения плавности и контроля. Для ускорения и скорости гироскопа могут потребоваться скользящие средние разной длины, чтобы оптимизировать плавность и отзывчивость.
Теперь вы должны добавить код вращающегося куба с прошлой недели в новый скетч с именем MPU6050Cube.ino . Подумайте, как вы можете использовать данные для управления движением и/или положением/размером куба. Найдите разумное решение и укажите, как вы использовали данные в комментариях к эскизу. Имейте в виду, что данные гироскопа — это скорость вращения, а не абсолютный курс.
Покажите свой работающий скетч ТА.
Вопрос 3. Какие факторы влияют на плавность эскиза вращающегося куба при использовании необработанных данных с MPU-6050? Помогает ли усреднение данных?
Часть 3: Кватернионы
Чтобы начать эту часть лабораторной работы, загрузите и запустите скетч MPU6050IMU.ino. Обязательно немедленно откройте окно отладки.
В этом коде используется алгоритм IMU Себастьяна Мэджвика (документ)
http://www.x-io.co.uk/open-source-imu-and-ahrs-algorithms/ (сайт может не работать, пропускная способность превышена)
, который объединяет ускорение и скорость вращения для получения оценки относительной ориентации устройства на основе кватернионов, которую можно преобразовать в рыскание, тангаж и крен:
Подготовьте скетч с именем MPU6050IMUgraph. ino , добавив гистограммы. Поэкспериментируйте, чтобы увидеть, нужно ли вам какое-либо сглаживание скользящей средней для получения стабильных курсов.
Теперь сделайте скетч с именем MPU6050IMUcube.ino и управляйте наклоном, рысканием и креном вашего куба. Распечатайте переменные тангажа, рысканья и крена в нижней части экрана.
Вопрос 4. Какова производительность подхода на основе Quaternion в части 3 по сравнению с использованием необработанных данных в части 2? Объясните свою методику измерения.
Лаборатория 4 Результаты
- Продемонстрируйте свои рабочие наброски ассистенту в течение первых 30 минут лабораторной работы на следующей неделе.
- Ваши зарисовки и ответы должны иметь имена обоих партнеров в комментариях в начале.
- Сдайте ваш MPU6050IMUgraph.ino и MPU6050IMUcube.ino и ответы на четыре вопроса .
- Все результаты должны быть загружены в ваш Catalyst Dropbox до или в течение первых 30 минут лабораторной работы на следующей неделе.
Модуль акселерометра GY-521 MPU6050 6DOF
GY-521 Модуль акселерометра MPU6050 6DOF
9,90 ринггита
Этот модуль представляет собой 3-осевой акселерометр и 3-осевой датчик гироскопа, которые вы можете использовать с Arduino для полного восприятия движения и жестов движения.
Этот модуль поставляется с не припаянными штыревыми контактами. Пожалуйста, свяжитесь с нами, если вам нужна помощь в пайке.
4 в наличии
Количество модулей акселерометраGY-521 MPU6050 6DOF
Добавить в список желаний
Добавить в список желаний
Артикул: MDU-SEN-GY-521 Категория: Датчики Теги: акселерометр, gy-521, гироскоп, mpu6050
- Описание
- Дополнительная информация
- Отзывы (0)
Описание
Этот модуль оснащен чипом INVENSENSE MPU-6050, который представляет собой 3-осевой акселерометр и 3-осевой датчик гироскопа, которые вы можете использовать с Arduino, чтобы полностью ощущать движение и жесты движения.
Модуль GY-521 представляет собой коммутационную плату для MPU-6050 MEMS (микроэлектромеханических систем), оснащенную 3-осевым гироскопом, 3-осевым акселерометром, цифровым процессором движения (DMP) и датчиком температуры. Цифровой процессор движения можно использовать для обработки сложных алгоритмов прямо на плате.
Чтобы узнать, как использовать этот модуль с Arduino, перейдите по ссылкам ниже.0073
Особенности
- I2C Цифровой вывод 6- или 9-осевых данных MotionFusion в формате матрицы вращения, кватерниона, угла Эйлера или необработанных данных
- Рабочее напряжение: 3,3–5,0 В
- 3-осевой датчик угловой скорости (гироскоп) с чувствительностью до 131 LSB/dps и диапазоном полной шкалы ?250, ?500, ?1000 и ?2000 dps
- 3-осевой акселерометр с программируемым диапазоном полной шкалы ?2g, ?4g, ?8g и ?16g
- Цифровая обработка движения? (DMP?) движок разгружает комплекс MotionFusion, сенсорную синхронизацию и обнаружение жестов
- Встроенные алгоритмы смещения во время выполнения и калибровки компаса. Вмешательство пользователя не требуется
- Датчик температуры с цифровым выходом
Электропроводка
Этикетка | Значение | Соединение |
ВКЦ | Источник питания | Подключение к 3–5 В системы |
Земля | Заземление | Подключение к GND системы |
СКЛ | Последовательные часы I2C | Подключиться к контакту SCL |
ПДД | Последовательные данные I2C | Подключается к контакту SDA |
XDA | Дополнительные последовательные данные I2C | (опция) для подключения к внешнему датчику |
XCL | Вспомогательные часы последовательного интерфейса I2C | (опция) для подключения к внешнему датчику |
АД0 | Адрес I2C | Если на этом выводе низкий уровень, I2C-адрес платы будет 0x68. |