PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 3-Achs Compass kompensieren



Che Guevara
05.02.2013, 16:39
Hi,

ich habe einen HMC5883L (3-Achs Kompass I2C), welcher auch funktioniert. Außerdem befindet sich am selben Bus auch noch ein MPU6000 (3-Achs Gyro & ACC).
Jetzt möchte ich den Kompass Neigungskompensieren, weiß jedoch nicht wie. Hab schon einiges gegoogelt, aber bis jetzt noch keine Formel gefunden.
Wäre nett, wenn jemand einen Link, eine Formel oder eine Beschreibung hätte :D

Vielen Dank & Gruß
Chris

EDIT:
Hab gerade die AN00022_COMPASS gefunden (NXP). Darin sind die beiden benötigten Formeln enthalten:


Hxe = HXC * cos(nick) - HYC * sin(nick) * sin(roll) - HZC * sin(nick) * cos(roll)
Hye = HYC * cos(roll) + HZC * sin(roll)
Kompass = atan(Hye/Hxe) / PI * 180

Aber ich weiß nicht, ob und wie die Werte von ACC & Kompass genormt werden müssen!?
Ich denke mal, die Werte von Nick & Roll sollen in Grad angegeben sein. Bei den Kompass werten hab ich keine Ahnung.

RoboHolIC
05.02.2013, 22:18
Ohne mich mit der Materie auseinandergesetzt zu haben, sagt mir die Mathematik, dass ich die Winkelargumente in der selben Einheit - Grad, rad etc. - verwenden muss in der auch die Winkelfunktion arbeitet. Vielleicht ist das Zahlenformat in der Programmiersprache einstellbar. Wenn der Sinus im Grad-System berechnet wird, muss das Argument als Winkelgrad (0..360°) formatiert sein, wenn als goniometrisches Zahlenformat rad gilt, dann müssen die Winkel im Bereich 0..2pi sein (oder eben nur ein Quadrant, entsprechend 0..90° oder 0..pi/2)

"Ich denke mal" hilft nicht weiter. Dafür gibt es die Datenblätter; die müssen darüber eindeutige Auskunft geben. Die Zahlenformatierung im Codebeispiel darfst du an dieser Stelle nicht als Gesetz nehmen. Das "PI * 180" korreliert mit dem Einheitensystem, in dem der atan() arbeitet und nicht(!) mit den Feldstärke-Messwerten des Kompassbausteins.