PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MPU6050 Drehrichtung in Multiwii 2,31 invertiert



Wolle62
24.06.2019, 13:38
Ich bin mit meinen Experimenten schon etwas weiter und beschäftige mich gerade mit einer 2,4GHz Fernsteuerung.
Dabei ist auch ein Beschleunigungssensor MPU6050 im Spiel.
Zum Testen habe ich das Ganze auf einem Breadboard mit Arduino Uno / NRF2401 und zur Visualisierung Multiwii 2.31 auf dem PC.
Ein, nach Internetfund, gebauter Sender, auch mit NRF2401 steuert alles.

Das funktioniert soweit. Die Lageänderungen nach vorn seitlich und hinten werden von der Multiwii conf Software korrekt dargestellt.
Aber wenn ich alles in der waagerechten liegend drehe, dann ist die Drehrichtung auf dem Bildschirm genau entgegengesetzt wie in der Realität.

Die Platine mit dem MPU6050 liegt waagerecht und steht auch nicht auf dem Kopf. Ich finde das Problem einfach nicht.
Kann man das im Multiwii Sketch des Arduino einstellen?
Oder kann man das mit der Windows Software umstellen?

Vielleicht weiß hier noch jemand mit der Multiwii Sache Bescheid.
Danke!

Ceos
24.06.2019, 13:49
>Kann man das im Multiwii Sketch des Arduino einstellen?

Hast du eine Quelle (source Code, ich fand beim googeln nur eine 800MB library zu dem Stichwort Multiwii) zum nachlesen?! sollte ja nicht so spannend sein das anzupassen :)

Wolle62
24.06.2019, 16:21
Hast du eine Quelle

Ja klar, ich habe diese Website gefunden:
http://www.electronoobs.com/eng_arduino_tut23.php

Nach dieser Anleitung bin ich vorgegangen. Da ist auch der Sender beschrieben.

Hier:
http://www.electronoobs.com/eng_arduino_tut23_3.php
ist dann der Downloadlink für das Multiwii Paket. In dem ist der Sketch und die PC Software.

In dem Tab "config" des Sketches nimmt man die Anpassungen vor.
Bei allen Anleitungen im Netz funktioniert das scheinbar auf Anhieb richtig.
Da sollte eigentlich keine Anpassung nötig sein.

Ceos
24.06.2019, 18:08
kannst du sagen welcher Wert genau falsch herum istr? pitch, roll, yaw? acc oder gyro ?



/* NEW: not used anymore for servo coptertypes <== NEEDS FIXING - MOVE TO WIKI */
#define YAW_DIRECTION 1
//#define YAW_DIRECTION -1 // if you want to reverse the yaw correction direction



falls es yaw ist

Wolle62
24.06.2019, 18:41
Ja ,die Gierachse, also Yaw ist gemeint.
Diesen Parameter habe ich schon getestet, eben gleich nochmal, da ändert sich leider nichts.
Mir ist noch nicht klar, warum das nichts tut. Andere Parameter kann ich erfolgreich ändern.

Ok ich habs, das Ding erkennt da was falsch. Man kann die Richtungen manuell überschreiben:

/* enforce your individual sensor orientation - even overrides board specific defaults */
//#define FORCE_ACC_ORIENTATION(X, Y, Z) {imu.accADC[ROLL] = Y; imu.accADC[PITCH] = -X; imu.accADC[YAW] = -Z;}
#define FORCE_GYRO_ORIENTATION(X, Y, Z) {imu.gyroADC[ROLL] = -Y; imu.gyroADC[PITCH] = X; imu.gyroADC[YAW] = -Z;}
//#define FORCE_MAG_ORIENTATION(X, Y, Z) {imu.magADC[ROLL] = X; imu.magADC[PITCH] = Y; imu.magADC[YAW] = Z;}


Die 2. Zeile auskommentieren, Z auf -Z, und schon stimmt es. Außerdem ist dann Roll und Pitch vertauscht. Das kommt mir gelegen.

Danke für den Denkanstoß!