Kompassmodul HDMM01 von Pollin

Gast #2323990
Lesenswert?

Hallo Forum,

hat schon jemand mit dem Kompassmodul HDMM01 von Pollin gespielt und 
wenn ja, taugt es was als solches? Weiß jemand, welcher Chip darauf 
verbaut ist? Ich will einen digitalen Kompass bauen, er muss nicht 
hochpräzise sein. Aber einfach nur 2 um 90° zueinander versetzte 
AMR-Sensoren? Da bin ich skeptisch!

Gruß,
Sven
Gast #2338672
Lesenswert?

Jede Achse mißt eine Komponente des Magnetfeldvektors (z.B. x und y) und 
liefert einen entsprechenden Wert, d.h. man muß nur von cartesischen 
Koordinaten in Polarkoordinaten umrechnen, um den Winkel zu bekommen.
Gast #2341765
Lesenswert?

@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.
Gast #2344022
Lesenswert?

Das Modul hab ich auch gesehen.

Ich möchte mir einen Quadrokopter bauen. Mit eingebauten elektrischen 
Kompass. Die horizontale Ausrichtung kann ich hierbei jedoch komplett 
vergessen :-(

Bringt es mir was, wenn ich zwei dieser Chips kaufe und sie um 90° 
versetzt einbaue? Dann hab ich einen Sensor, der mir die X und Y-Achse 
liefert und der andere liefert mir die X und Z-Achse. Die doppelte 
X-Achse benutze ich zum umrechnen.

Dann könnte ich doch alle drei Achsen auswerten, oder?

Wie ist es dabei dann mit dem Programieraufwand?

Oder wäre ein drei-Achsen-Sensor die bessere Variante (finanziell und 
programiertechnisch)?

Viele Grüße
Maxi



PS: Oder kann ich mit den sowieso eingebauten Gyro was regeln?
Gast #2344554
Lesenswert?

Maxi schrieb:
> PS: Oder kann ich mit den sowieso eingebauten Gyro was regeln?
Ich glaube dass das die bessere lösung für einen Quadrokopter ist.
Bei einem Gyro ist der Programmieraufwand erheblich leichter und 
warscheinlich nicht so störanfälig.

Wenn ich die Rechnerei in Bascom Realiesiren könnte wäre es ein guter 
anfang.
Hat jemand das Teil schon einmal ausprobiert?
Gast #2345953
Lesenswert?

@bastler:
Rechnerei ist maßlos übertrieben, dass sind im Grunde nur zwei 
Subtraktionen und einmal der atan2, das ist schon alles :-). Ja, aktuell 
läuft das auf dem PC, ist ein simples selbstgeschriebenes Matlab-Skript. 
Es sollte aber absolut kein Problem sein, das mit auf den µC auszulagern 
- mach ich vielleicht nachher nochmal.

@michael:
siehe Kommentar auf meiner HP ;-)

Viele Grüße!
Malte
#2346662
Lesenswert?

Hallo Malte,

vielen Dank für Deinen Kommentar! Ich bastel momentan an einem Tricopter 
und die Lageregelung funktioniert schon. Für den nächsten Schritt, die 
Geschwindigkeitsregelung brauchts dann schon GPS und vor allem ein 
Magnetometer das Lagekompensiert sein sollte. Anbei mal zwei Application 
Notes zu diesem Thema ... vllt. kanns jemand brauchen ...

Viele Grüße,
Michael
Angehängte Dateien:
#2350119
Lesenswert?

@Horst Pehnis: Von besser hat keiner was gesagt. Meine Funktion rechnet 
mit Ganzahlen (fixed point) und einer Lookup-Tabelle.

Ich gehe aber davon aus, dass das keine ersthafte Frage war und möchte 
Dich auf folgendes hinweisen: Das menschliche Körperteil zwischen Deinen 
Testikeln wird ohne "h" geschrieben.

Grüße,
Michael
Gast #2352403
Lesenswert?

Michael K. schrieb:
> Ich gehe aber davon aus, dass das keine ersthafte Frage war und möchte
> Dich auf folgendes hinweisen: Das menschliche Körperteil zwischen Deinen
> Testikeln wird ohne "h" geschrieben.

Der heisst scheint's wirklich so, wenn das stimmt, kann er ja nix dafür. 
Dadurch wird die Qualität seiner Beiträge aber auch nicht besser.

Gruss Reinhard
Gast #2357702
Lesenswert?

Hallo

Rührt sich hier noch etwas?

Funktioniert die ATAN2 Rechnung schon in Bascom?
Ich verstehe den Rechenweg nicht so ganz sonsst htte ich es schon Selbst 
gemacht und aus der C datei Werde Ich auch nicht besonders Schlau da Ich 
C nicht kann.
Gast #2490969
Lesenswert?

Hab jetzt auch so ein Teil. Funktioniert aber glaub nicht so richtig.
Hab den Bascom Code von 1:1 übernommen.
Es kommen Werte Zwischen 1850 und 2250 heraus egal wie ich das Teil 
drehe und wen ich mit nem Magneten hingehe kommen plötzlich Nullen 
heraus ist das Normal? Oder ist das Teil Hinüber? Versorgungung über 
STK500 mit 5cm Leitung 10K Pullup.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren