Как правильно подключить 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В, необходимо использовать преобразователь логических уровней.
![](/800/600/https/sun9-23.userapi.com/c621704/v621704208/9d0/acd3hA-wY_Q.jpg)
Дополнительные выводы 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 и подготавливает его к работе. Теперь можно настроить диапазоны измерений акселерометра и гироскопа.
![](http://m-gen.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif)
Чтение данных с 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. Процесс калибровки включает:
- Сбор данных в состоянии покоя
- Вычисление смещения для каждой оси
- Применение смещения к полученным значениям
Вот пример простой калибровки акселерометра:
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;
}
После калибровки вычитайте полученные смещения из измеренных значений.
![](/800/600/https/content.instructables.com/FP5/PCA9/LD5YNNVM/FP5PCA9LD5YNNVM.png)
Обработка данных 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 можно использовать во множестве интересных проектов. Вот несколько идей:
![](/800/600/https/ae01.alicdn.com/kf/H56fde2f63a5c4c9289c481bd06943719P.jpg)
- Стабилизация камеры — используйте данные с MPU-6050 для компенсации дрожания
- Управление роботом — определяйте наклон и движение для балансировки робота
- Фитнес-трекер — отслеживайте активность пользователя на основе данных акселерометра
- Джойстик — создайте контроллер движения для игр или управления устройствами
- Система предупреждения падения — детектируйте резкие изменения ориентации
Возможности применения MPU-6050 ограничены только вашим воображением!
Типичные проблемы при работе с MPU-6050
При работе с MPU-6050 можно столкнуться с некоторыми сложностями. Рассмотрим самые распространенные проблемы и способы их решения:
Некорректные показания датчика
Если вы получаете странные или нестабильные данные, проверьте следующее:
- Правильность подключения выводов VCC и GND
- Надежность соединений на макетной плате
- Корректность настроек диапазонов измерения
- Наличие калибровки датчика
Ошибки связи по I2C
При проблемах с I2C соединением убедитесь, что:
- Правильно подключены линии SCL и SDA
- Используется корректный I2C адрес устройства
- На линиях I2C установлены подтягивающие резисторы (обычно 4.7 кОм)
Дрейф показаний гироскопа
Гироскоп MPU-6050 подвержен дрейфу. Для минимизации этого эффекта:
![](/800/600/https/i.pinimg.com/originals/39/5b/f5/395bf5644f70a57c83399a1c1da63638.png)
- Выполняйте калибровку при каждом запуске
- Используйте комплементарный или Калмановский фильтр
- Периодически обновляйте смещение гироскопа в состоянии покоя
Альтернативы 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, удобная доска.
![](/800/600/http/ae01.alicdn.com/kf/HTB18dypPXXXXXcAXpXXq6xXFXXX4.jpg)
от участника #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 Электрическое прототипирование
Уровень квалификации: Компетентный — Вам потребуется обратиться к таблице данных или схеме, чтобы знать, как использовать компонент. Ваше знание таблицы данных потребует только основных функций, таких как требования к питанию, распиновка или тип связи.