HMC5883 Compass Richtung flippt wenn Pitch von + auf - wechselt

#1
Hallo,

Ich habe das Kompass-Modul HMC5883 an meinen Copter (Crius MultiWii Lite) per I2C Bus angeschlossen und kalibriert.

Soweit funktioniert er auch 1A (wenn ich den Copter mit der Schnauze etwas nach oben halte und dann drehe). Doch wenn ich mit der Pitch-Bewegung von + nach - komme (Schnauze runter), dann flippt der Kompass um 180° in die entgegengesetzte Richtung.

Ist denke ich nur ein klitzekleines config.h / def.h Problem, doch ich weiss nicht wo ich das umstellen muss.
 
#3
Nein, doch nicht.

Nach dem ich noch einmal auf ACC Cal und dann MAG Cal gedrückt habe... habeich das gleiche Problem wie vorher auch^^
 
#4
Gut das ich nicht auf "Write" gedrückt hatte. Habe den Copter vom Strom geklemmt und neu gestaratet, dann waren die alten Werte wieder da, und auch der Kompass funktioniert bei der Drehung ... wenn Mag calibriert ist auf:

Roll: 6
Pitch: 14
Yaw: -145

Aber sobald ich auf:

Roll: 0
Pitch: 0
Yaw: 0


Kalibriere... habe ich das 180° Problem.
 
#5
So, ich habe mal während dem Mag-Kalibrierprozess den Copter jeweils 180° in beide Achsen bewegt.

Jetzt flippt der Kompass erst wenn ich den Copter ca. 35° nach vorne neige.
Aber zur Seite (rechts links Neigung) flippt er jetzt schon bei 10° was vorher nicht war.

Kann mir einer erklären wie man das richtig macht mit dem Kompass? Denn irgendwie komme ich nicht weiter.


Noch ein Hinweis:

Über Kopf Drehungen (Pitch) haben ja zur Folge das sich die Copter-Anzeige im GUI um 180° in der N/S Ausrichtung dreht und der Copter auf dem Kopf dargestellt wird. Das funktioniert sehr gut beim hochziehen (neigen nach hinten) über Kopf bei 90°

Doch genau hier ist das Problem in der entgegen gesetzten Richtung (neigen nach vorne). Hier passiert dies schon bei 20° und nicht bei 90°

Das kann doch nur ein Bug in der MultiWii bei der Berechnung sein oder? Denn die Werte MAG Roll,Pitch, Yaw verändern sich proportional zu den ACC Werten (also alles ok).
 
Zuletzt bearbeitet:
#6
Ok, nun geht es. Das hier half (in der config.h):

#define FORCE_MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = -X; magADC[PITCH] = -Y; magADC[YAW] = Z;}


Danach CALIB_MAG in der GUI aktiviert und den Copter in alle Richtungen bewegt.
 
Zuletzt bearbeitet:
FPV1

Banggood

Oben Unten