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
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
Wie rechnet man das in Grad um wenn mann es mal geschaft hat es überhaupt erst einmal auszulesen?
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
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.
Hallo Malte, sehr schick! Was passiert denn, wenn Du Deine "Sensorboard" schräg ausrichtest (z.B. bei einem Rollwinkel von 30°)? Grüße, Michael
@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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.