Получение обратных значений ускорения и наклона для MPU 6050
Я использую библиотеку I2C для подключения к плате GY-521, и при выполнении методов getAcceleration() я получаю значения гироскопа и наоборот.
Это моя настройка (я использую прото-щит, но, насколько я понимаю, это ничего не должно изменить):
Это следует из этой схемы:
И это код, который я тестирую:
#include "Wire.h"
#include "MPU6050.h"
MPU6050 accel;
int16_t ax, ay, az;
void setup() {
Wire.begin();
Serial.begin(9600);
Serial.println("Initializing I2C devices...");
accel.initialize();
Serial.println("Testing device connections...");
Serial.println(accel.testConnection() ? "Connected" : "Connection failed");
}
void loop() {
accel.getAcceleration(&ax, &ay, &az);
Serial.print("acc x: ");
Serial.println(ax); // This prints the gyro value of the Y axis!
delay(1000);
}
Я не думаю, что это связано с проводкой, так как инвертирование 4 и 5 аналоговых выводов дает нулевые значения.
Это проблема с библиотекой? Или с моим чипом?
@Alvaro, 👍2
Обсуждение1 ответ
Существует множество библиотек, я бы не стал использовать библиотеку акселерометров в wire, скачайте и добавьте библиотеку I2Cdev, вы можете получить ее на различных сайтах, таких как github.com
Не могли бы вы, пожалуйста, развить свой ответ дальше? В настоящее время это не типичный полезный ответ: нет реальной ценности, нет деталей, нет причин, по которым "вы бы не использовали библиотеку акселерометров..." Для меня вы могли бы опубликовать это в качестве комментария к вопросу., @jfpoilpret
- Как подключить MPU9250 к NodeMCU с помощью SPI или I2C Slave?
- Изменение адреса I2C MPU-6050
- MPU6050 не выдает выход
- MPU-9250 IMU на SPI, внешнем датчике или магнитометре с использованием мастера I2C
- Использование MPU-6050 без I2C
- Почему Wire.write дважды?
- Сбой при записи данных MPU-6050 на SD-карту
- Мультиплексор Adafruit MPU-6050 и adafruit I2C
Я думаю, что это должно быть проблемой с библиотекой или с вашим методом определения того, какой набор значений является ускорением и гироскопом, я думаю. Гироскоп должен быть полностью обнулен, когда датчик неподвижен. Откуда вы скачали библиотеку?, @BrettAM
Да, я уверен, что это значение гироскопа (у меня даже есть видео, если оно вам нужно). Так что я предполагаю, что это библиотека... Я могу просто завершить его правильными именами, @Alvaro
Лично я использую
accel.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
, который выдает все значения, генерируемые датчиком. Просто для уверенности, если вы используете " accelgyro.getAcceleration(&ax, &ay, &az)", вы получаете данные гироскопа, а если вы используете " accelgyro.getRotation(&gx, &gy, &gz)", вы получаете данные акселерометра? Если вы на самом деле неправильно получаете значения, вы можете просто использовать переменные "неправильно", я знаю, что это не так, как должно работать., @Mathieu Brouwers