MPU 6050 Digitale Bewegungsprozessor-Kreiseleinheiten

Ich stoße auf ein seltsames Problem mit einem Bewegungssteuerungsprozessor (MPU 6050/9150), der rohe Gyroskopwerte wie zwischen -/+ 32768 angegeben zurückgibt, was in der Art und Weise, wie dieser Gyro konfiguriert ist, -/+ 2000 Grad / Sek. entspricht . Dies ist absolut sinnvoll, da dies mit der vorgeschriebenen Dokumentation einhergeht.

Wenn ich jedoch Daten vom digitalen Bewegungsprozessor (6-Achsen-Sensorfusion) verarbeite, erhalte ich maximal 1429. Ich glaube nicht, dass beim Lesen der Daten aus dem MPU-Puffer ein Fehler vorliegt, da die anderen Messungen gut aussehen (Lesen aus dem gleichen FIFO-Puffer). Ich nehme an, dass dies wahrscheinlich ein Problem mit Einheiten ist, das mit der 6-Achsen-Sensorfusion zu tun hat und wahrscheinlich auch das Bogenmaß betrifft

Sie fragen sich, ob einer von Ihnen klugen Leuten mit Ihrem Glühbirnen-Gehirn hier einen Einblick hat?

2000 Grad/Sek. sind ziemlich schnell, das bedeutet 5,5 Umdrehungen pro Sekunde oder 333 U/min. Hast du es mit dieser Geschwindigkeit gedreht?
Ja, meine Anwendung ist ein Frisbee, also ist es ziemlich einfach, das Maximum herauszuholen. 300 U/min liegt am unteren Ende des Bereichs. (300-1000)
Haben Sie ohne Fusionsalgorithmus versucht, nur die Kreiselrate aufzuzeichnen? Wahrscheinlich wird der Fusionsalgorithmus, der unbekannt ist und sicher aufbewahrt wird, für mobile Geräte, Haltungssensoren usw. verwendet, alles, was man an Menschen oder Tieren tragen kann, vielleicht ist die Freesbee ein Overkill für den Algo.
Ist Ihr MPU-Gyros bei 1429 gesättigt, auch wenn Sie mit maximaler Geschwindigkeit drehen, oder es ist ein maximaler Messwert, den Sie gelesen haben (und die meisten Messwerte unter 1429 lagen)? Ich vermute ein Hardwareproblem mit einem Kondensator, der an die Ladungspumpe (Pin 20) angeschlossen ist.
@MarkoBuršič Ja, ich konnte die "rohen" Kreiselwerte lesen und sie kommen wie erwartet heraus.
@lustful-rat Ich glaube nicht, dass ich seine Hardware mit ein paar verschiedenen Konfigurationen (MPU 6050, MPU 9150) ausprobiert habe und jedes Mal gute Werte für alles liefert, aber es scheint, dass der Kreisel seltsam skaliert ist.

Antworten (1)

Es stellt sich also heraus, dass meine DMP-Paketstruktur von der Spezifikation abweicht.

Der DMP gibt ein 48-Byte-Paket zurück, und die ausgegebenen Beschleunigungsmesser- und Gyroskopwerte sind 32-Bit-Ganzzahlen. Bei unsachgemäßer Handhabung ergibt dies skalierte und falsche Daten.

    /* ================================================================================================ *
 | Default MotionApps v4.1 48-byte FIFO packet structure:                                           |
 |                                                                                                  |
 | [QUAT W][      ][QUAT X][      ][QUAT Y][      ][QUAT Z][      ][GYRO X][      ][GYRO Y][      ] |
 |   0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  |
 |                                                                                                  |
 | [GYRO Z][      ][MAG X ][MAG Y ][MAG Z ][ACC X ][      ][ACC Y ][      ][ACC Z ][      ][      ] |
 |  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  |
 * ================================================================================================ */
Vielleicht haben Sie Probleme mit Endianess. Wenn Sie nach Bsp. Quaternion W kommt in 0, 1, 2, 3 Byte, das ist 32-Bit, aber möglicherweise lesen Sie sie zum Beispiel vertauscht. die Ausgabe ist Big Endian und Sie lesen als Little Endian.