Itg mpu. Подключение гироскопа MPU-6050 к Arduino: пошаговое руководство

Как правильно подключить MPU-6050 к Arduino. Какие выводы нужно соединить. Как настроить I2C шину. Как получить данные с датчика.

Содержание

Что такое MPU-6050 и зачем он нужен

MPU-6050 — это популярный датчик движения, который объединяет в себе 3-осевой акселерометр и 3-осевой гироскоп. Он позволяет определять ускорение, угловую скорость и ориентацию объекта в пространстве.

Основные преимущества MPU-6050:

  • Компактные размеры (4х4х0.9 мм)
  • Низкое энергопотребление
  • Высокая точность измерений
  • Встроенный температурный датчик
  • Цифровой интерфейс I2C для подключения к микроконтроллеру

MPU-6050 широко применяется в робототехнике, квадрокоптерах, устройствах виртуальной реальности и других проектах, где требуется отслеживание движения.

Подключение MPU-6050 к Arduino

Для подключения MPU-6050 к Arduino нам потребуется всего 4 провода. Схема подключения выглядит следующим образом:

  • VCC — к 3.3В на Arduino
  • GND — к GND на Arduino
  • SCL — к пину A5 на Arduino
  • SDA — к пину A4 на Arduino

Важно помнить, что MPU-6050 работает от напряжения 3.3В. Если вы используете Arduino с логическими уровнями 5В, необходимо использовать преобразователь логических уровней.


Дополнительные выводы MPU-6050

Помимо основных выводов питания и I2C, на MPU-6050 есть дополнительные пины:

  • INT — вывод прерывания, можно подключить к цифровому пину Arduino
  • XDA, XCL — дополнительная шина I2C для подключения внешних датчиков
  • AD0 — адресный пин, позволяет изменить I2C адрес устройства

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

Настройка I2C соединения

MPU-6050 использует шину I2C для обмена данными с Arduino. Для работы с I2C необходимо подключить библиотеку Wire:


#include <Wire.h>

void setup() {
  Wire.begin();
  Wire.setClock(400000); // Устанавливаем скорость I2C 400 кГц
}

I2C адрес MPU-6050 по умолчанию 0x68. Если вы подключили вывод AD0 к питанию, адрес изменится на 0x69.

Инициализация MPU-6050

Перед началом работы необходимо выполнить инициализацию датчика. Вот базовый код для инициализации:


void setup() {
  Wire.begin();
  Wire.beginTransmission(0x68);
  Wire.write(0x6B);  // PWR_MGMT_1 регистр
  Wire.write(0);     // Выходим из спящего режима
  Wire.endTransmission(true);
}

Этот код «пробуждает» MPU-6050 и подготавливает его к работе. Теперь можно настроить диапазоны измерений акселерометра и гироскопа.


Чтение данных с MPU-6050

MPU-6050 позволяет считывать следующие данные:

  • Ускорение по осям X, Y, Z
  • Угловую скорость по осям X, Y, Z
  • Температуру

Вот пример кода для чтения данных акселерометра:


int16_t accelX, accelY, accelZ;

void loop() {
  Wire.beginTransmission(0x68);
  Wire.write(0x3B);  // Начинаем с регистра ACCEL_XOUT_H
  Wire.endTransmission(false);
  Wire.requestFrom(0x68, 6, true);  // Запрашиваем 6 байт
  
  accelX = Wire.read()<<8 | Wire.read();
  accelY = Wire.read()<<8 | Wire.read();
  accelZ = Wire.read()<<8 | Wire.read();
}

Аналогично можно считать данные гироскопа, начиная с регистра 0x43.

Калибровка MPU-6050

Для повышения точности измерений рекомендуется выполнить калибровку MPU-6050. Процесс калибровки включает:

  1. Сбор данных в состоянии покоя
  2. Вычисление смещения для каждой оси
  3. Применение смещения к полученным значениям

Вот пример простой калибровки акселерометра:


long accelXoffset = 0;
long accelYoffset = 0;
long accelZoffset = 0;

void calibrateAccel() {
  for (int i = 0; i < 1000; i++) {
    getAccelData();
    accelXoffset += accelX;
    accelYoffset += accelY;
    accelZoffset += accelZ;
    delay(1);
  }
  accelXoffset /= 1000;
  accelYoffset /= 1000;
  accelZoffset /= 1000;
}

После калибровки вычитайте полученные смещения из измеренных значений.


Обработка данных MPU-6050

Сырые данные с MPU-6050 требуют дополнительной обработки для получения осмысленных результатов. Рассмотрим несколько примеров:

Вычисление углов наклона

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


float roll = atan2(accelY, accelZ) * 180.0 / PI;
float pitch = atan2(-accelX, sqrt(accelY*accelY + accelZ*accelZ)) * 180.0 / PI;

Комплементарный фильтр

Для более точного определения ориентации используется комплементарный фильтр, объединяющий данные акселерометра и гироскопа:


float compAngleX = 0;
float compAngleY = 0;

void updateAngle() {
  float gyroXrate = gyroX / 131.0;
  float gyroYrate = gyroY / 131.0;
  
  compAngleX = 0.98 * (compAngleX + gyroXrate * dt) + 0.02 * roll;
  compAngleY = 0.98 * (compAngleY + gyroYrate * dt) + 0.02 * pitch;
}

Этот фильтр объединяет быстрые изменения от гироскопа с долгосрочной стабильностью акселерометра.

Применение MPU-6050 в проектах

MPU-6050 можно использовать во множестве интересных проектов. Вот несколько идей:


  • Стабилизация камеры — используйте данные с MPU-6050 для компенсации дрожания
  • Управление роботом — определяйте наклон и движение для балансировки робота
  • Фитнес-трекер — отслеживайте активность пользователя на основе данных акселерометра
  • Джойстик — создайте контроллер движения для игр или управления устройствами
  • Система предупреждения падения — детектируйте резкие изменения ориентации

Возможности применения MPU-6050 ограничены только вашим воображением!

Типичные проблемы при работе с MPU-6050

При работе с MPU-6050 можно столкнуться с некоторыми сложностями. Рассмотрим самые распространенные проблемы и способы их решения:

Некорректные показания датчика

Если вы получаете странные или нестабильные данные, проверьте следующее:

  • Правильность подключения выводов VCC и GND
  • Надежность соединений на макетной плате
  • Корректность настроек диапазонов измерения
  • Наличие калибровки датчика

Ошибки связи по I2C

При проблемах с I2C соединением убедитесь, что:

  • Правильно подключены линии SCL и SDA
  • Используется корректный I2C адрес устройства
  • На линиях I2C установлены подтягивающие резисторы (обычно 4.7 кОм)

Дрейф показаний гироскопа

Гироскоп MPU-6050 подвержен дрейфу. Для минимизации этого эффекта:


  • Выполняйте калибровку при каждом запуске
  • Используйте комплементарный или Калмановский фильтр
  • Периодически обновляйте смещение гироскопа в состоянии покоя

Альтернативы MPU-6050

Хотя MPU-6050 отлично подходит для многих проектов, иногда требуются альтернативные решения. Вот несколько вариантов:

  • MPU-9250 — включает дополнительно магнитометр для определения направления
  • BNO055 — имеет встроенный процессор для обработки данных
  • LSM6DS3 — более современный и энергоэффективный датчик
  • ICM-20948 — высокоточный датчик с низким энергопотреблением

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


Трехосевой акселерометр и гироскоп SparkFun — MPU-6050 — SEN-11028

8

В наличии 91 шт. в наличии.

32,50

30,88

29.25

27,63

1+ шт.

10+ шт.

25+ шт.

100+ штук

  • Описание
  • Функции
  • Документы

MPU-6050 — серьезная маленькая технология обработки движения! Комбинируя 3-осевой гироскоп MEMS и 3-осевой акселерометр на одном кремниевом кристалле вместе со встроенным процессором Digital Motion Processor™ (DMP™), способным обрабатывать сложные 9Алгоритмы MotionFusion, MPU-6050 устраняет проблемы выравнивания поперек осей, которые могут возникать на дискретных деталях.

Наша коммутационная плата для MPU-6050 упрощает работу с этим крошечным пакетом QFN в вашем проекте. Каждый контакт, который вам нужен для запуска и работы, разбит на 0,1-дюймовые разъемы, включая вспомогательную главную шину I2C, которая позволяет MPU-6050 получать доступ к внешним магнитометрам и другим датчикам.

Трудно выбрать IMU? Наш акселерометр, Gyro и IMU Buying Guide могут помочь!0003

  • I2C Цифровой вывод 6- или 9-осевых данных MotionFusion в формате матрицы вращения, кватерниона, угла Эйлера или необработанных данных
  • Входное напряжение: 2,3–3,4 В
  • Выбираемые перемычки под пайку на CLK, FSYNC и AD0
  • Трехосевой датчик угловой скорости (гироскоп) с чувствительностью до 131 LSB/dps и диапазоном полной шкалы ±250, ±500, ±1000 и ±2000dps
  • Трехосевой акселерометр с программируемым диапазоном полной шкалы ±2g, ±4g, ±8g и ±16g
  • Процессор
  • Digital Motion Processing™ (DMP™) разгружает комплекс MotionFusion, синхронизацию датчиков и обнаружение жестов
  • Встроенные алгоритмы смещения во время выполнения и калибровки компаса. Вмешательство пользователя не требуется
  • Датчик температуры с цифровым выходом
  • 1 х 0,6 х 0,09 дюйма (25,5 х 15,2 х 2,48 мм)

Трехосевой акселерометр и гироскоп SparkFun — Справка и ресурсы по продукту MPU-6050

  • Учебники
  • Советы поддержки
  • Необходимые навыки
Контакт VIO

последнее обновление

Если вы видите это как вывод при использовании I2C, датчик подключен неправильно. http://www.i2cdevlib.com/forums/topic/8-mpu6050-connection-failed/:

 Инициализация устройств I2C...
Проверка подключений устройств...
Не удалось подключиться к MPU6050
а/г: 0 0 0 0 0 0
а/г: 0 0 0 0 0 0
а/г: 0 0 0 0 0 0
а/г: 0 0 0 0 0 0
а/г: 0 0 0 0 0 0
. 
.
.
 

У вас должно быть это основное соединение: ВДД-Ардуино 3.3В Земля — ​​Земля Ардуино INT — цифровой контакт 2 Arduino FSYNC — не подключен SCL — специальный контакт Arduino SCL SDA — специальный контакт Arduino SDA Вио — Ардуино 3.3В CLK — не подключен АСКЛ — не подключен ASDA — не подключен


Основной навык:

Пайка

Этот навык определяет сложность пайки конкретного изделия. Это может быть пара простых паяных соединений или потребуются специальные инструменты для оплавления.

1 Пайка

Уровень навыка: Нуб — Требуется некоторая базовая пайка, но она ограничена всего несколькими контактами, базовой пайкой через отверстие и парой (если есть) поляризованных компонентов. Обычный паяльник — это все, что вам нужно.
Просмотреть все уровни навыков


Основной навык:

Программирование

Если плате нужен код или она каким-то образом взаимодействует, вам нужно знать, как программировать ее или взаимодействовать с ней. Навык программирования связан с общением и кодом.

3 Программирование

Уровень навыков: Компетентный — Цепочка инструментов для программирования немного сложнее, и примеры могут быть не предоставлены вам явно. Вы должны будете иметь фундаментальные знания в области программирования и должны будете предоставить свой собственный код. Возможно, вам потребуется изменить существующие библиотеки или код для работы с вашим конкретным оборудованием. Сенсорные и аппаратные интерфейсы будут SPI или I2C.
Просмотреть все уровни навыков


Основной навык:

Электрическое прототипирование

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

1 Электрическое прототипирование

Уровень навыка: Нуб — Вам не нужно ссылаться на таблицу данных, но вам нужно знать основные требования к питанию.
Просмотреть все уровни навыков


  • Комментарии 208
  • Отзывы 8 8

3,5 из 5

На основании 8 оценок:

Сейчас просматриваются все отзывы покупателей.

Показаны результаты со звездным рейтингом.

5 из 5 нашел это полезным:

Средняя 6DOF, удобная доска.

от участника #154127 проверенный покупатель

Вероятно, это одна из самых простых плат в подключении и использовании, а встроенный DMP довольно удобен. При этом я обнаружил, что результаты ускорения и гироскопа MEMS на этом парне были довольно неточными. Добавление внешнего компаса помогло немного исправить это, но в этом случае вам лучше перейти на коммутационную плату MPU 9150, так как это универсальное решение с одним кристаллом, и его проще сделать, чем добавить компас как запоздалая мысль об этой доске. Я нашел гораздо более надежный MEMS 9Тем не менее, чип DOF в чипе Bosch BNO055 еще проще в использовании, и я использовал его для своих проектов с лучшими результатами. Надеюсь, Sparkfun скоро сделает плату для этого чипа! Из-за этих вещей я оценил эту плату только как «Хорошо» — в целом она будет работать для вас и проста в использовании, но есть гораздо лучшие чипы по цене.

1 из 1 нашел это полезным:

Небольшая проблема с подключением.

от участника № 597229 проверенный покупатель

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

2 из 2 нашел это полезным:

Неплохо, но могло быть и лучше, учитывая цену

от участника № 1266173 проверенный покупатель

Плата такой цены должна быть проще в использовании. В предоставленной документации от Sparkfun я ничего не видел о необходимости подключения линии VIO к источнику 3V3 в качестве опорного напряжения ввода-вывода. Это должно быть документировано лучше. Также должен быть припаиваемый мост для соединения VIO с VDD, чтобы в системах 3V3 не нужно было прокладывать дополнительный провод. Один дополнительный провод действительно должен быть необходим только с 5V VDD. Кроме того, добавление светодиода снова с паяным соединением для его отключения было бы очень полезно, чтобы помочь убедиться, что MPU-6050 действительно получает питание.

1 из 1 нашел это полезным:

Простой I2C с хорошей производительностью для крошечного чипа

от MagiccMan проверенный покупатель

Тройное ускорение, тройной гироскоп с внутренним датчиком температуры — вот почему я купил это. То, что вам нужно для определения ориентации на одном чипе. Связь через I2C была прямой. Sparkfun должен добавить перемычку, однако подключив VIO к 3,3 В. Как только я это понял (обзор выше), все заработало нормально.

1 из 1 нашел это полезным:

Я заказал два, только один из них работает

от участника № 1452960 проверенный покупатель

Пока он работает (вероятность 50%?), он в порядке.

Очень простой в настройке и очень прочный

от пользователя #1109064 проверенный покупатель

Много кода в Интернете о том, как подключить его и извлечь из него данные. Также очень прочный. Сделал пайку проводов возле него, прогревая его термофеном (для термоусадок рядом). Я уронил на него инструменты и разбил свой квадрокоптер, но он все это пережил.

Зачем платить премию за что-то недокументированное?

от LucasV проверенный покупатель

~10 лет назад, когда я был студентом, я купил у SparkFun, потому что их доски были задокументированы и снабжены учебными пособиями. Это оправдало затраты.

Используя мышечную память, я купил это, которое представляет собой (максимум) 5 долларов чипов, припаянных к крошечной печатной плате и проданных за 30 долларов, полагая, что студент, которого я поддерживал, мог прочитать учебные пособия.

Я был разочарован, увидев ссылки на несвязанные учебники, отсутствие реального учебника и т. д. Мне пришлось прочитать принципиальную схему и поискать в Google, чтобы понять, как ее подключить. Это все хорошо, но тогда почему я плачу 30 долларов от SparkFun вместо 7,99 долларов от других поставщиков?

Мне нужно перетренировать свою мышечную память и купить у кого-нибудь еще.

Подключите VIO к 3,3 В!

Дуг М. проверенный покупатель

Эх, я зря потратил время, прежде чем узнал об этом из этих обзоров. После этого не было проблем с передачей данных на частоте 400 кГц. Я ожидаю, что информация доступна в техническом описании MPU, но я предпочитаю углубляться и говорить об этом как можно скорее.

3-осевой гироскоп/акселерометр IC — MPU-6050 — SEN-10937

Нет в наличии SEN-10937 RoHS В библиотеке Орла


$ 13,95

Наличие на складе

Примечание: Доставка за пределы США?
Щелкните здесь для получения информации

Примечание: В настоящее время у нас нет оценки того, когда этот продукт снова появится на складе. Уведомить меня

Примечание: У нас есть лимит заказа 3 на клиента для этого продукта.

Избранное Любимый 18

Список желаний

Нет в наличии SEN-10937 RoHS В библиотеке Орла

$ 13,95

Примечание: Доставка за пределы США?
Щелкните здесь для получения информации

Примечание: В настоящее время у нас нет оценки того, когда этот продукт снова появится на складе. Уведомить меня

Примечание: У нас есть лимит заказа 3 на клиента для этого продукта.

  • Описание
  • Функции
  • Документы

MPU-6050 — серьезная маленькая технология обработки движения! Комбинируя 3-осевой гироскоп MEMS и 3-осевой акселерометр на одном кремниевом кристалле вместе со встроенным процессором Digital Motion Processor™ (DMP™), способным обрабатывать сложные 9-осевые алгоритмы MotionFusion, MPU-6050 избавляется от перекрестного проблемы с выравниванием осей, которые могут возникать на дискретных деталях. Детали интегрированы 9Алгоритмы MotionFusion могут даже получать доступ к внешним магнитометрам или другим датчикам через вспомогательную главную шину I2C, позволяя устройствам собирать полный набор данных датчиков без вмешательства системного процессора.

Для точного отслеживания как быстрых, так и медленных движений MPU-6050 имеет программируемый пользователем диапазон полной шкалы гироскопа ±250, ±500, ±1000 и ±2000°/с (dps) и программируемый пользователем полный диапазон акселерометра ±2g, ±4g, ±8g и ±16g.

  • Цифровой вывод 6- или 9-осевых данных MotionFusion в формате матрицы вращения, кватерниона, угла Эйлера или необработанных данных
  • Трехосевой датчик угловой скорости (гироскоп) с чувствительностью до 131 LSB/dps и диапазоном полной шкалы ±250, ±500, ±1000 и ±2000dps
  • Трехосевой акселерометр с программируемым диапазоном полной шкалы ±2g, ±4g, ±8g и ±16g
  • Уменьшение эффектов оседания и дрейфа датчика за счет устранения ошибок выравнивания поперечной оси на уровне платы между акселерометрами и гироскопами
  • Процессор Digital Motion Processing™ (DMP™) разгружает комплекс MotionFusion, синхронизацию датчиков и обнаружение жестов
  • Встроенные алгоритмы смещения во время выполнения и калибровки компаса. Вмешательство пользователя не требуется
  • Датчик температуры с цифровым выходом
  • Цифровой вход на контакте FSYNC для поддержки электронной стабилизации видео и GPS
  • Программируемое прерывание поддерживает распознавание жестов, панорамирование, масштабирование, прокрутку, прерывание свободного падения, прерывание с высоким ускорением, обнаружение нулевого движения, обнаружение касания и обнаружение тряски
  • VDD Диапазон напряжения питания 2,375–3,46 В; VLOGIC при 1,8 В ± 5% или VDD
  • Встроенный синхронизирующий генератор с отклонением частоты ±1% во всем диапазоне температур
  • Ударопрочность 10 000g
  • 4x4x0,9 мм QFN
  • [Технические данные](http://cdn.sparkfun.com/datasheets/Components/General IC/PS-MPU-6000A.pdf)
  • Карта регистрации

ИС 3-осевого гироскопа/акселерометра — Справка и ресурсы по продукту MPU-6050

  • Необходимые навыки

Основной навык:

Пайка

Этот навык определяет сложность пайки конкретного изделия. Это может быть пара простых паяных соединений или потребуются специальные инструменты для оплавления.

3 Пайка

Уровень навыка: Компетентный — Вы столкнетесь с компонентами для поверхностного монтажа и потребуются базовые методы пайки SMD.
Просмотреть все уровни навыков


Основной навык:

Программирование

Если плате нужен код или она каким-то образом взаимодействует, вам нужно знать, как программировать ее или взаимодействовать с ней. Навык программирования связан с общением и кодом.

3 Программирование

Уровень навыков: Компетентный — Цепочка инструментов для программирования немного сложнее, и примеры могут быть не предоставлены вам явно. Вы должны будете иметь фундаментальные знания в области программирования и должны будете предоставить свой собственный код. Возможно, вам потребуется изменить существующие библиотеки или код для работы с вашим конкретным оборудованием. Сенсорные и аппаратные интерфейсы будут SPI или I2C.
Просмотреть все уровни навыков


Основной навык:

Электрическое прототипирование

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

3 Электрическое прототипирование

Уровень квалификации: Компетентный — Вам потребуется обратиться к таблице данных или схеме, чтобы знать, как использовать компонент. Ваше знание таблицы данных потребует только основных функций, таких как требования к питанию, распиновка или тип связи.

Добавить комментарий

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