MPU6050 не работает
Я пытаюсь сделать самобалансирующегося бота в качестве школьного проекта, но застрял с MPU6050.
Я попытался использовать код Джеффа Роуберга (MPU_6050_raw), но он читает только нули.
Я попробовал MPU_6050_DMP и застрял на "инициализации DMP...", и чтение не отображается.
Я пробовал другой код, но то же самое происходит, либо читая нули, либо застревая на "инициализации DMP..".
И как я могу убедиться, что чип не сломан?
@Zohary, 👍1
1 ответ
MPU-6050 представляет собой микросхему 3,3 В. Когда вы используете плату Arduino 5V, вы должны позаботиться о том, чтобы не подавать ток на контакты SDA и SCL MPU-6050.
Начните со сканера i2c.
Этот: Arduino Playground I2C сканер
Или вот это: сканер Nick Gammon I2C
Если сканер I2C останавливается, значит, возникла аппаратная проблема с шиной I2C. Это может быть ярлык SDA или SCL для GND, или модуль MPU-6050 не питается.
Если сканер I2C работает, то вы знаете адрес (0x68 или 0x69). С помощью этого адреса вы можете попробовать Короткий примерный скетч для считывания данных с чипа.
Если это работает, то вы можете попробовать библиотеку Джеффа Роуберга.
- Как подключить вывод INT MPU 6050?
- Как очистить буфер FIFO на MPU6050?
- Как сгенерировать аппаратное прерывание в mpu6050 для пробуждения Arduino из режима SLEEP_MODE_PWR_DOWN?
- Понимание того, почему следует избегать «String» и альтернативных решений
- Объяснение кода MPU6050
- Как подключить MPU9250 к NodeMCU с помощью SPI или I2C Slave?
- Линейное ускорение от MPU 6050
- Изменение адреса I2C MPU-6050
Спасибо, что ответили. сканер i2c работал хорошо, вот что я получил. Сканер I2C. Сканирование ... Найденный адрес: 104 (0x68) Выполнено. Найдено 1 устройство(ы). но я все равно получаю нули, когда пробую короткие примеры. AcX = 0 | AcY = 0 | AcZ = 0 | Tmp = 36,53 | GyX = 0 | GyY = 0 | GyZ = 0 AcX = 0 | AcY = 0 | AcZ = 0 | Tmp = 36,53 | GyX = 0 | GyY = 0 / GyZ = 0 AcX = 0 | AcY = 0 | AcZ = 0 | Tmp = 36,53 | GyX = 0 | GyY = 0 | GyZ = 0 извините, я забыл упомянуть tham iam с помощью платы arduino uno, @Zohary
Температура не равна нулю. Кажется, что акселерометр и гироскоп не включены. Существует целый ряд возможностей: сломанный датчик, или плохая шина I2C, или неправильные напряжения, или это не MPU-6050. Не могли бы вы попробовать длинный пример скетча http://playground.arduino.cc/Main/MPU-6050#sketch , этот скетч проверяет наличие ошибок шины. Не могли бы вы проверить с помощью лупы, действительно ли это MPU-6050 ? Это датчик 3,3 В, а Arduino Uno-плата 5 В. MPU-6050 может быть сломан из-за неправильных напряжений. Мое предложение-купить новый MPU-6050 (или более новый MPU-9250) и переключатель уровня I2C., @Jot
спасибо, что были терпеливы со мной. вот что я получил от кода MPU-6ًInvenSense MPU-6050 Июнь 2012 WHO_AM_I : 68, ошибка = 0 PWR_MGMT_1 : 0, ошибка = 0 МПУ-6050 Считывание accel, temp и gyro, ошибка = 0 accel x,y,z: 0, 0, 0 температура: 36.506 градусов Цельсия gyro x,y,z : 0, 0, 0, я использую 3,3-вольтовый контакт в arduino, я не знаю, что вы имеете в виду, что uno-это плата 5v. и я подумываю о покупке mpu 9250 .и мне жаль задавать еще один вопрос. если вы знаете, как проверить его в магазине и что сделать, чтобы он не сгорел, как в прошлый раз. еще раз спасибо за ваше терпение, @Zohary
error = 0 означает, что ошибки нет, но значения акселератора и гироскопа по-прежнему равны нулю. Это странно, и я никогда не слышал о нем раньше. Предположим, он сломан. Arduino Uno имеет микроконтроллер ATmega328P, работающий на 5 В. MPU-6050 должен иметь 3,3 В для питания, а также сигналы 3,3 В на шине I2C (SDA и SCL). Вам не нужно тестировать его в магазине, он должен быть в порядке. Безопаснее и лучше использовать переключатель уровня I2C для подключения Arduino Uno к датчику 3,3 В или использовать подтягивающие резисторы 4k7 до 3,3 В: http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter, @Jot