Проводка для Arduino Mega и нескольких MPU 6050/Gy 521
У меня есть Arduino Mega 2560, к которому мне нужно подключить 4 MPU 6050/Gy 521.
Я нашел некоторые ресурсы по Mega и Uno, однако не могу собрать их воедино.
Этот ресурс содержит подробную информацию о подключении одного MPU к мега. http://dummyscodes.blogspot.com/2014/07/mpu6050- gy-521-breakout-arduino-mega.html
Этот ресурс предлагает способ подключения нескольких устройств к UNO. https://playground.arduino.cc/Main/MPU-6050
Моя проблема в том, что проводка для Uno и Mega разная. Ресурс, который у меня есть для UNO, описывает использование MPU AD0 (выход), подключая его к различным выходным контактам для каждого MPU. Ресурс, рассказывающий о MEGA, даже не использует AD0, а использует INT, но я не уверен, смогу ли я использовать ту же концепцию.
Кроме того, я до сих пор не понимаю, как подключить/какие еще контакты использовать для остальных четырех.
Я новичок в Arduino и определенно новичок во всем, что связано с проводкой.
Пожалуйста, помогите! Я действительно не понимаю, как использовать несколько вместе и как их правильно соединить.
@sGlow, 👍0
2 ответа
MPU-6050 использует I2C для связи, да? Подключите все SCL параллельно к Mega с помощью подтягивающего резистора 4,7 или 3,3 кОм. То же самое и с ПДД. I2C — это D20, D21 (или D21, D22) на Mega.
MPU-6050 имеет контакт A0 для выбора одного из двух адресов, для простоты назовем их Add0 и Add1. Подключите каждый контакт A0 MPU-6050 к уникальному контакту Mega. Если ни один из них не адресован, установите каждый выход Mega на высокий уровень. Когда требуется доступ к одному MPU-6050, установите низкий уровень на выводе A0 этого устройства и установите связь с ним, используя Add0. Другой будет искать связь на Add1 и поэтому не будет отвечать.
Если MPU6050 является устройством с напряжением 3,3 В, вам также следует удалить сетевой пакет подтягивающих резисторов на Mega, который подтягивает SCL/SDA к 5 В. В очень маленьком 8-контактном корпусе есть 2 подтягивания, остальные 2 не используются. Подключите подтягивающие резисторы 3,3 К или 4,7 К, описанные выше, к 3,3 В.
Это деталь RN1 на плате Mega R3. На плате это может быть не отмечено как таковое. Снимите его или обрежьте дорожки рядом с ножками колодки: одну с левой стороны (подключается к контакту 3), одну сверху (подключается к контакту 2).
Ответ CrossRoads с использованием контакта выбора адреса на ваших модулях MPU превосходен. Однако он связывает линию GPIO для каждого MPU, к которому вы хотите обратиться.
(Если вы используете Mega 2560, это может не быть проблемой, поскольку у них множество линий GPIO.)
Вы также можете приобрести мультиплексор адресации I2C. Их предлагают Adafruit и Sparkfun. Пример: https://www.adafruit.com/product/2717?gclid=EAIaIQobChMItYnah7zB4 QIVAOTICh1JlAk3EAQYASABEGK7hvD_BwE
Он будет мультиплексировать до 8 устройств I2C с одним и тем же адресом и не требует дополнительных контактов. Вы отправляете ему одну команду I2C, чтобы выбрать одно из 8 ваших устройств.
Я не знаю, делает ли кто-нибудь мультиплексор I2C, который также выполняет преобразование напряжения. Кажется, это было бы удобно.
- Как очистить буфер FIFO на MPU6050?
- Почему MPU6050 DMP не инициализируется, но я могу получить необработанные значения ускорения от MPU6050
- Взаимодействие MPU6050 с Arduino через S-функцию Simulink
- Почему значение регистра чтения и записи гироскопа MPU6050 равно 0x08 для полной шкалы 500 градусов в секунду?
- Проблема прерывания библиотеки MPU6050 Arduino Jeff Rowberg
- Проблема с библиотекой MPU6050
- Arduino Mega и ошибочные значения гироскопа
- MPU6050/DMP Прерывистый плохой вывод данных?
Я не знал о пакете подтягивающих резисторов на шине I2C Mega. Предполагается ли, что он будет съемным/заменяемым, или вам придется его деструктивно отламывать?, @Duncan C
Я бы не стал его отламывать, но паяльником он достается без особого труда., @CrossRoads