Forum: Mikrocontroller und Digitale Elektronik HMC5883L keine durchgängigen Werte


von Magneto (Gast)


Lesenswert?

Hallo Zusammen,
ich versuche gerade den HMC5883L beim Auswerten einer Drehbewegung zu 
nutzen. Ansteuerung und auslesen klappt soweit.
Um den Winkel zu berechnen, habe ich diese Formel gefunden:
winkel = atan2((Magnetic_data_Y,Magnetic_data_X) *180/PI +180;

Das gibt mir dann auch schön 0-360° aus.
Nur, das die 0-360° keine volle Umdrehung ist (ca. 4/5). In der 
kompletten Umdrehung gibt es noch einmal den Bereich 360<->342<->360.
Darauhin habe ich die Rohdaten der einzelnen Achsen angeschaut:

X:
0 <-> -435 <-> 0 <-> 40 <-> 0

Y:
0 <-> -417 <-> 0 <-> 52 <-> 0

z:
-517 <-> -546

Z ändert sich, obwohl der Sensor nur horizental gedreht wird. Ist das 
das Problem? Wie kann man das mit reinrechnen?

Kennt jemand das Phänomen?

Dank im Voraus.

von RP6conrad (Gast)


Lesenswert?

Die Rohdaten von HMC mussen erst korrigiert werden mit den "offset" von 
jede Achse. Hierzu muss du einfach die min und max Werte von  jede Achse 
vermessen bei eine komplette Umdrehung. Der offset X ist dan 
x.max/2+x.min/2. Das für jede Achse. Diese offset wird dan verrechnet :
Winkel= Atan2(x_raw-x_offset,y_raw-y_offset)+180.
Google auch nach "Hard iron kalibration".

von Magneto (Gast)


Lesenswert?

Danke für die Antwort!

wenn ich es richtig verstehe, wäre das in meinem Fall:

X_offset = 40/2+(-435)/2
y_offset = 52/2+(-417)/2

von Magneto (Gast)


Lesenswert?

So, ich habe das mal versucht und es funktioniert auch!
Jetzt habe ich eine 0-360° Ausgabe.

Jetzt habe ich aber noch ein weiteres Problem, das mir jetzt erst 
auffällt:
Bisher bin ich nur von einer reinen horizontalen Bewegung ausgegangen. 
Ich habe aber noch eine Drehung/Neigung nach vorne und nach hinten. Ca. 
+- 10°. Das hat ja wieder Auswirkungen auf mein Ergebnis.
Gibt es da eine Möglichkeit die Änderung der „Neigung“ in der 
Horizontalen  rauszurechnen?

von RP6conrad (Gast)


Lesenswert?

Ja, das geht. Aber dan brauchst du zusatzlich noch information ueber die 
Neigung von HMC ! Rein allein von Magnetsensor geht das nicht. Meistens 
verwendet men ein 3 Achsen ACC sensor um die Neigung gegenueber die 
Senkrechte zu vermessen. Google nach "6 DOF IMU", kompass inclination.

von Magneto (Gast)


Lesenswert?

Ah ja, ich verstehe! Das hilft mir weiter.
Ich benutze ja so ein Sensorboard mit HMC5883L, ADXL345 und L3G4200D 
drauf.
Die Hauptarbeit erledigt bisher der Gyro, was auch gut funktioniert. Nur 
sehr langsame Drehbewegungen registriert der Gyro nicht. Der Kompass 
schon.
Ok, nochmal Danke, jetzt denke/hoffe ich, dass es wird...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.