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
Vielen Dank & Gruß
Chris
EDIT:
Hab gerade die AN00022_COMPASS gefunden (NXP). Darin sind die beiden benötigten Formeln enthalten:
Aber ich weiß nicht, ob und wie die Werte von ACC & Kompass genormt werden müssen!?Code: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
Ich denke mal, die Werte von Nick & Roll sollen in Grad angegeben sein. Bei den Kompass werten hab ich keine Ahnung.
Geändert von Che Guevara (05.02.2013 um 18:26 Uhr)
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.
Lesezeichen