Урок 12. Управление сервоприводами с помощью гироскопа MPU6050 Gy-521
Гироскоп может быть очень полезен в ваших проектах. Например, его можно использовать как устройство для управления вашими роботами. Сейчас мы рассмотрим один из простых примеров, который Вы с легкостью сможете адаптировать для своих задач.
В этом примере мы научимся управлять двумя серво приводами с помощью акселерометра, когда мы будем отклонять акселерометр Gy-521 (MPU6050) по координате X и Y сервоприводы будут поворачиваться на отклоненный угол.
В данном уроке нам понадобится:
Для реализации проекта нам необходимо установить библиотеки:
Сборка:
1) Подключаем Акселерометр Gy-521
Gy-521 (mpu6050) | Arduino (Uno) |
---|---|
VCC | 3.3 V |
GND | GND |
SCL | A5 |
SDA | A4 |
Для питания модуля необходимо использовать строго 3.3V! Для этого можно использовать преобразователь напряжения на 3.3V.
2) Сервоприводы подключаем следующим образом:
Arduino (uno) | Servo 1 | Servo 2 |
---|---|---|
5V | Красный (Центральный) | Красный (Центральный) |
GND | Черный или Коричневый (Левый) | Черный или Коричневый (Левый) |
Pin8 — для servo 1 Pin9 — для servo 2 | Белый или Оранжевый (Правый) | Белый или Оранжевый (Правый) |
Сервопривод рекомендуется питать от внешнего источника питания, если запитать сервопривод от ардуины, то могут возникнуть помехи и перебои в работе arduino. Организовать это можно с помощью источника питания 9V и комбинированного стабилизатора 5V ,3.3V.
Теперь, когда все подключено, приступим к загрузке скетча.
Скетч:
Видео:
Обзор модуля GY-521 (MPU-6050)
Автор: Сергей · Опубликовано 06.03.2020 · Обновлено 02.04.2020
Наверное задумывались, как телефон определяет вверх и низ, а так же наклоны. Все это стало возможно с появлением устройств акселерометр и гироскопу. Таким образом, телефон автоматически определяет, когда нужно переключить расположение экрана с портретного на альбомное. В статье расскажу о модуле GY-521 на чипе MPU-6050, который содержит в себе MEMS гироскоп и MEMS акселерометр и датчик температуры.
Технические параметры.
► Основная микросхема: MPU-6050
► Напряжение питания: 3.3 и 5 В
► Режимы для акселерометра: ±2g, ±4g, ±6g, ±8g, ±16g;
► Режимы для гироскопа: ±250°, ±500°, ±1000°, ±2000°;
► Ширина шины IIC: 16 бит;
Общие сведения.
Основная микросхема модуль GY-521 чип MPU-6050 , который содержит в себе акселерометр и гироскоп, а так же датчик температуры. Обработка данных осуществляется с помощью 16-битное АЦП (Аналого-цифровой преобразователь) на каждый канал, поэтому он обрабатывает значение x, y и z одновременно. Встроенный датчик температуры предназначен для измерения температуры и имеет диапазон измерений от -40 ° С до + 85 ° С.
Для взаимодействия с Arduino используется шина I2C и датчик MPU-6050 всегда выступает в качестве подчиненного устройства. Но кроме обычной шины I2C, есть собственный контроллер I2C, в котором MPU-6050 ведомый, выводы SDA и XDA и с помощью это шины можно управлять например магнитометром и передавать данные на Arduino.
Гироскоп – инструмент, который позволяет измерить реакцию тела на перемещение углов и вообще ориентации. Акселерометр же служит измерителем проекции ускорения, которое только кажется.
Датчика MPU-6050 работает от напряжение
2.4 — 3.5 В и чтобы стабилизировать питание, на модуле GY-521 добавили стабилизатор напряжения на 3.3 В с малым падением напряжении, поэтому модуль можно подключить к напряжению 5 В и 3.3 В.
На плате установлен один ряд разъема, шагом 2,54 мм, назначение каждого можно посмотреть ниже.
Назначение выводов:
► VCC – «+» питание модуля 3.3 В до 5 В
► GND – «-» питание модуля
► SCL – линия синхронизации для протокола I2C
► SDA – линия передачи данных протокола I2C
► XDA – линия передачи данных протокола при работе в режиме мастера
► XCL – линия синхронизации для протокола I2C при работе в режиме мастера
► AD0 – если вывод лог «0» адрес I2C будет 0x68, если вывод лог «1» адрес I2C будет 0x69
► INT – прерывание
Подключение GY-521 к Arduino
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Провод DuPont, 2,54 мм, 20 см x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
► 3-осевой гироскоп акселерометр GY-521 x 1 шт.
Подключение:
В примере будем использовать только первые четыре контакта VCC, GND, SDA и SCL. Сначала подключаем VCC и GND модуля GY-521 к 5V и GND. Далее нужно установить соединение I2C между модулем GY-521 и Arduino, для этого подключите вывод SCL модуля к выводу А4 Arduino и вывод модуля SCL к выводу A5 Arduino. Для удобства приведу схему подключение.
Программа:
Чтобы протестировать модуль GY-521 сначала необходимо установить библиотеку «MPU6050» , скачать ее можно в конце статьи. Если все сделали правильно, при открытии Arduino IDE вы можете увидеть «MPU6050» в «Файл» -> «Примеры».
Работа с Arduino и MPU6050
Arduino и датчик MPU6050
MPU6050 представляет собой 3-х осевой гироскоп и 3-х же осевой акселерометр в одном корпусе. Сразу поясню, что это и для чего:
- Гироскоп измеряет угловую скорость вращения вокруг оси, условно в градусах/секунду. Если датчик лежит на столе – по всем трём осям будет значение около нуля. Для нахождения текущего угла по скорости нужно интегрировать эту скорость. Гироскоп может чуть привирать, поэтому ориентироваться на него для расчёта текущего угла не получится даже при идеальной калибровке.
- Акселерометр измеряет ускорение вдоль оси, условно в метрах/секунду/секунду. Если датчик лежит на столе или движется с постоянной скоростью – на оси будет спроецирован вектор силы тяжести. Если датчик движется с ускорением – вдобавок к ускорению свободного падения получим составляющие вектора ускорения. Если датчик находится в свободном падении (в том числе на орбите планеты) – величины ускорений по всем осям будут равны 0. Зная проекции вектора силы тяжести можно с высокой точностью определить угол наклона датчика относительно него (привет, школьная математика). Если датчик движется – однозначно определить направление вектора силы тяжести не получится, соответственно угол тоже.
Модуль стоит в районе 150 рублей на нашем любимом AliExpress (ссылка, ссылка), а также входит в Arduino набор GyverKIT.
Итак, по отдельности акселерометр и гироскоп не могут обеспечить точное измерение угла, но вместе – ещё как могут! Об этом мы поговорим ниже. А начнём с подключения и базового общения с датчиком.
Подключение
Датчик подключается на шину i2c (SDA -> A4, SCL -> A5, GND -> GND). На плате стоит стабилизатор, позволяющий питаться от пина 5V (VCC -> 5V).
На модуле выведен пин AD0. Если он никуда не подключен (или подключен к GND) – адрес датчика на шине i2c будет 0x68, если подключен к питанию (VCC) – адрес будет 0x69. Таким образом без дополнительных микросхем можно подключить два датчика на шину с разными адресами.
GY-521 — модуль с гироскопом, акселерометром и термометром MPU-6050 для Ардуино
Большие отверстия не металлизированы, как на картинке в магазине, поэтому, если Вы будите их прикручивать болтами к «минусу», эффекта не будет. Я заливаю их термоклеем, а он, образуя «шапочки», надёжно фиксирует плату. Отвертия контактов металлизированы отлично, паяются без проблем.
Модуль GY-521 включает понижающий линейный стабилизатор для питания от 5В, красный светодиод питания и обвязку, обеспечивающую работу по протоколу I2C.
MPU-6050 снабжен акселерометром, гироскопом и термометром. Зачем нужен термометр — не понятно, вероятно, его было удобно разместить в этой микросхеме. Или, действительно, есть такие варианты применения, о которых я не знаю, где тебя вертят и греют нужно вертеться в пространстве и знать температуру =)
Или, в процессе интенсивной работы с устройством, оно может нагреваться и нужно контролировать его температуру и нагрузку.
Характеристики:
— 16-битный АЦП,
— напряжение питания 3-5В,
— поддержка протокола «IIC» (может, I2C ?),
— диапазон ускорений: ± 2 ± 4 ± 8 ± 16g,
— диапазон «гиро»: ± 250 500 1000 2000 ° / s,
— покрытие иммерсионным золотом вместо лужения,
— ток при работе последнего примера составил 5.3 мА и 1.2 мА когда устройство не успело стартовать (питание на модуль было подано после выполнения setup() контроллером)
Подключение к Arduino
Для интерфейса I2C у Ардуино имеются контакты A4 (SDA) и A5 (SCL), да-а, это те, которые расположены чёрти-где (на одной плате у меня они были справа от контроллера, на другой с левого края). В коде нужно использовать библиотеку Wire, прочитать о ней можно туточки. Минимальная схема во Fritzing такая: … а значит у нас уже не 8 лишних штырьков, а целых двенадцать!
Тестирование
InvenSense MPU-6050
June 2012
WHO_AM_I: 68, error = 0
PWR_MGMT_1: 40, error = 0
MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 12180, 9468, -9168
temperature: 22.153 degrees Celsius
gyro x,y,z: -462, -5303, -490,
MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 13204, 8928, -7420
temperature: 22.482 degrees Celsius
gyro x,y,z: 282, -2012, -956,
MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: -1276, 7932, -16232
temperature: 22.435 degrees Celsius
gyro x,y,z: -1168, 1159, 1258,
MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 6216, 10604, -12796
temperature: 22.576 degrees Celsius
gyro x,y,z: -2161, 4363, 2176,
После определённого времени кручения платой, показания гироскопа сбиваются:это нормально и об этом написано в статье, упомянутой выше.
Примечательно, что если нажать ресет и перезагрузить плату в произвольном положении, то реальное положение в пространстве будет показывать акселерометр, гироскоп же сориентироваться в изначальное положение:Суть этого вяления раскрыта в первом комментарии к этой статье от AndyBig.
Думаю, можно будет реализовать с помощью этого модуля какую-нибудь «неваляшку», шлем обклеивать светодиодами как-то рука не поднимается.
Тестовая установка
Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта.
Подключение GY-521 (MPU 6050) к Arduino
В новой информационной статье хотим поговорить с вами о том, как подключить GY-521 (MPU 6050), какие задачи имеет данный модуль, где применяется и т.д. Речь идет о двойном устройстве на базе одноименной микросхемы (с совмещенными опциями трех-осевого гироскопа, термометра и акселерометра).
Такие модели часто применяются в любительских проектах для определения положения в пространстве, а также для конструирования и усовершенствования простейших навигационных девайсов. Кроме того, датчик можно задействовать для измерения количества оборотов в секунду, регуляции мощности охладительных систем и даже для автоматизации различных производственных процессов.
В продолжение темы рассмотрим основные технические параметры датчика:
- напряжение питания: 3,5 – 6V;
- рабочий ток: 500 мкА;
- тип шины: I2C;
- диапазон измерений акселерометра: ± 2, 4, 8, 16 г;
- разрядность АЦП: 16.
Подключение MPU 6050 к Arduino
Распиновка выводов показана на скриншоте:Реализовываем несложный проект подключения всех аппаратных компонентов через интерфейс I2C. Для этого нам понадобится следующее «железо»:
- микроконтроллер Ардуино Uno;
- 3-осевой гироскоп-акселерометр GY-521;
- соединительные провода (набор);
- макетная плата (прототипирования);
- USB-кабель для подключения к компьютеру.
Принципиальная схема сборки:А так она выглядит на макете:
Чтобы наладить соединение (получить необходимые значения) и просто проверить правильность подключения, пропишем скетч:
В нем мы использовали 2 специализированных софта – библиотеки MPU6050 и I2Cdev. Их следует скачать и инсталлировать в среду программирования IDE (как обычно, разархивируем файлы в директорию libraries).
http://git.robotclass.ru/download/Arduino/MPU6050.zip
http://git.robotclass.ru/download/Arduino/I2Cdev.zip
Управление стандартное – через монитор последовательного порта (Serial Monitor ). Открываем при помощи сочетания клавиш Ctrl+Shift+M или через меню Инструменты. В нем «побегут» нужные нам показания.
Можно значительно модернизировать сборку, добавив различные передатчики, движущиеся платформы, приемники, блоки питания (батарей) и т.д. Все зависит от ваших возможностей и целей.
На этом наша статья подошла к концу. Надеемся, что материал был для вас информативным и вы сможете применить полученные знания в собственных проектах! Следите за нашим блогом! Удачи!