Forum: Mikrocontroller und Digitale Elektronik Kompassmodul HDMM01 von Pollin


von Sven (Gast)


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

von Timmo H. (masterfx)


Lesenswert?

Wenn man die Bilder etwas reinzoomt sieht man MEMSIC C2120M, müsste also 
dieser sein: 
http://www.memsic.com/products/sensor-components/magnetometers.html

Datenblatt gibts wohl auf der HP nicht, aber google hat da eins: 
http://gettheworkdone.net/images/NerdKits/Projects/I2C/Compass/MEMSIC%20documentation%201172-compass/MMC2120MG.pdf

von Bastler (Gast)


Lesenswert?

Wie rechnet man das in Grad um wenn mann es mal geschaft hat es 
überhaupt erst einmal auszulesen?

von Michael (Gast)


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.

von nerd62 (Gast)


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.

von Maxi (Gast)


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?

von Bastler (Gast)


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?

von Malte (Gast)


Lesenswert?

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

von Bastler (Gast)


Lesenswert?

Hast du die Kompassoftware am PC selbst geschrieben?
Dann könnte man ja die rechnerei ja auch leicht im AVR implementiern un 
in Grad ausgeben.

von Michael K. (mmike)


Lesenswert?

Hallo Malte,

sehr schick! Was passiert denn, wenn Du Deine "Sensorboard" schräg 
ausrichtest (z.B. bei einem Rollwinkel von 30°)?

Grüße,
Michael

von Malte (Gast)


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

von Michael K. (mmike)



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

von Malte (Gast)


Lesenswert?

Danke für die ANs! Malte.

von Michael K. (mmike)


Lesenswert?

Gern ;-)

von noch ein Bastler (Gast)


Lesenswert?

Hatt jemad schon die ATAN2 rechnung in Bascom Realisiert?

von Michael K. (mmike)


Angehängte Dateien:

Lesenswert?

Nein, aber in C .. siehe Anhang.

Grüße,
Michael

von Michael K. (mmike)


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

von Reinhard Kern (Gast)


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

von Bastler (Gast)


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.

von ??? (Gast)


Lesenswert?

Wie werden die Dinger den Kalibriert?

von Bastler (Gast)


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.

von Tobias B. (derbruno)


Lesenswert?

So schlecht klingen die Werte nicht schau mal hier die Plotts an:

http://www.mtahlers.de/index.php/elektronik/sensoren/mmc2120mg

Gruß
Der Bruno

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.