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
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.
@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.
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?
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?
Moin!
ich habe mir das Pollin Modul besorgt und etwas damit rumgespielt. Ich
habe die I2C Kommunikation mit dem Sensor mal in BASCOM implementiert.
Wer dran interessiert ist, findet hier ein paar Infos:
http://www.mtahlers.de/index.php/elektronik/sensoren/mmc2120mg
Viele Grüße!
Malte
@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
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
@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
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
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.
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.