@Bastler: Michael (s. o.) hat recht. Die Horizontalkomponente des
Erdmagnetfelds verläuft in Deutschland nahezu in Nord-Süd-Richtung, in
vertikaler Richtung jedoch mit nahezu 50 Grad zur Erdoberfläche. Der
Sensor misst in X- und Y-Richtung jeweils die anteilige Komponente eines
Magnetfelds. Um nun die X- und Y-Komponenten in Winkelgrade umzurechnen,
muss man die Arcustangens-Funktion bemühen: alfa = arctan (sin(alfa) x B
/ cos(alfa) x B). Wie man sieht, kürzt sich B heraus, die Messung wird
unabhängig von der Stärke des Magnetfelds, die Messung sollte aber in
einem vernünftigen Aussteuerbereich des Sensors stattfinden. Die
Arcustangens-Funktion läßt sich mit wenigen Stützstellen in einer
Tabelle ablegen, funktioniert so aber dummerweise nur vernünftig von 0
.. 45°. Oberhalb 45° bemüht man dann die Arcuscotangens-Funktion alfa =
arccot (cos(alfa) x B / sin(alfa) x B). Als Kriterium für die Auswahl
der Berechnung zieht man das Kriterium heran, ob die X- oder die
Y-Komponente des Magnetfeldsignals größer ist. Die kleinere Komponente
muss im Zähler stehen. Die übrigen drei Quadranten werden ebenfalls in
jeweils zwei Sektoren zerlegt, so daß die ganze Kreisrechnerei in acht
Ohtanden aufgeteilt werden muss. Entsprechend den Vorzeichen der Signale
müssen zu den berechneten Rohwinkeln noch 90, 180 oder 270° addiert
werden, was eine ellenlange Fallunterscheiderei bei der Programmierung
ist. Ich hatte schon mal die ehrenvolle Aufgabe in einem
Frequenzumrichter auf einem DSP solch eine ATAN2-Funktion mit
32-Bit-Ergebnis zu programmieren, was der Chip tatsächlich in wenigen
Mikrosekunden bewerkstelligte. Was nun dieser Chip und die Rechnung
nicht kann ist den Chip horizontal zue Erdoberfläche zu halten. Aufgrund
der starken Vertikalkomponente kommt es zu erheblichen bis
katastrophalen Messfehlern der Nordrichtung, wenn der Chip nicht
horizontal positioniert ist.