Hallo! Ich versuche aktuell mittels BM1422AGMV Magnetsensor einen Kompass zu bauen. Ich bis bereits soweit, dass ich mit einem Raspberry Pi die Werte für X, Y und Z bekomme. Der Offset ist auch schon grob kalibriert. Aber wie fahre ich nun mit diesen Werten fort? Ich habe überlegt, eine Feinkalibrierung zu machen, indem das Gerät in allen Achsen um 360° gedreht wird, währenddessen pro Achse Max und Min Werte erfasst werden und am Ende der Kalibrierung ein Fein-Offset berechnet wird, das dann immer von den Messwerten abgezogen wird. Dies habe ich auch schon realisiert, aber irgendwie führt das nicht zum gewünschten Ergebnis. Die Winkelwerte (die auch schon berechnet werden) passen einfach nicht und weichen auch nach jeder Kalibrierung irgendwie anders ab. Hat jemand eine Idee, was ich vom Prinzip her falsch mache? Bin für alle Ratschläge dankbar, inkl. Links, Libraries, etc... Danke für jeden Hinweis im Voraus!
Dein problem ist dass je nach wohnort das magnetfeld schräg in die erde geht. Je nördlicher je steiler. Schau mal wo x= maximal und y,z=minimal hinzeigt. Richtig, nach schräg unten. Lösen kannst du das indem du zum äquator umziehst. Oder indem der sensor mit wasserwaage ausgerichtet wird und du Z vernachlässigst.
:
Bearbeitet durch User
Alt G. schrieb: > Lösen kannst du das indem du zum äquator umziehst. Wenn man keine Ahnung hat, einfach mal die ...... halten. https://de.wikipedia.org/wiki/Datei:World_Magnetic_Inclination_2010.pdf
W.A. schrieb: > Wenn man keine Ahnung hat, einfach mal die ...... halten. und du meinst du kannst "DEINE" um so weiter aufreisen :-( Alt G. schrieb: > Lösen kannst du das indem du zum äquator umziehst. > Oder indem der sensor mit wasserwaage ausgerichtet wird und du Z > vernachlässigst. Diese Aussage ist richtig ! Das heisst ja nicht, dass dies die einzige Lösung sein muss.
Zuerst muss man einen Ort finden, an dem das Erdmagnetfeld unverfälscht wirkt. In Gebäuden ist das oftmals nicht der Fall. Prüfen kann man das, indem man mit einem Kompass (mit Kompassnadel) die angezeigte Nord-Richtung feststellt. Ändert sich diese, wenn man den Kompass verschiebt, ist das Erdmagnetfeld in Richtung und vermutlich auch Stärke beeinflusst. Wenn man nun um eine Achse dreht, müssen die andere Achsen vollkommen stabil bleiben. Das geht, wenn man einen Drehteller auf einer festen Fläche montiert. Die Fläche muss dann abwechselnd horizontal oder vertikal ausgerichtet sein, wobei sie für jede Messreihe möglichst exakt um 90° gedreht bzw. gekippt werden muss. Dass die für die Fläche, den Drehteller und die Halterung nur unmagnetische Materialien verwendet werden dürfen, sollte klar sein. (Gern werden dabei Schrauben, Kugellager, Schraubzwingen o.ä. übersehen und auch ein im Handwerk üblicher Winkelmesser hat oftmals magnetische Teile.)
Gaussi schrieb: > Diese Aussage ist richtig ! Das heisst ja nicht, dass dies die einzige > Lösung sein muss. Hast du dir die verlinkte Inklinationskarte überhaupt angesehen? Auch am Äquator weicht die Inklination teilweise um mehr als 20° von der Senkrechten ab. https://www.ngdc.noaa.gov/geomag/WMM/data/WMM2010/WMM2010_I_MERC.pdf
Danke schon mal für alle Antworten! Ich glaube, ich kann jetzt besser vorstellen, wo das Problem liegt. (Schiefes Magnetfeld...) Wenn ich das Gerät beim Kalibrieren einfach am Tisch herumdrehe, kommen danach schon recht gute Winkelwerte heraus. Das Problem ist aber, dass das Gerät so ähnlich wie ein Handy, lageunabhängig messen soll, also auch wenn es dann hochkant oder in einem bestimmten Winkel geneigt steht und nicht mehr einfach am Tisch liegt. Wenn ich es richtig verstehe, sollte man dann trotzdem immer die Werte in der horizontalen Ebene messen, richtig? Also müsste ich den Neigungswinkel des Gerätes miteinbeziehen (dieser wird glücklicherweise ebenfalls gemessen) und das Koordinatensystem transformieren? Gibt es eine fertige Library für sowas? Ich werde vermutlich nicht der erste Mensch sein, der sowas macht... Danke für alle weiteren Hinweise im Voraus!
IMU. Heisst du verkuppelst gyro, acc umd mag werte. Findet sich bei jeder opensource quadcopter-soft die magnetsensor kann. Darum sind bei mpu9050 z.b. auch alle 3 sensoren in einem chip drin.
:
Bearbeitet durch User
Hallo! Gyroskop habe ich leider nicht verbaut nur Magnetsensor und Beschleunigungssensor. Dafür ist das Gerät, wenn gemessen werden soll, in Ruhe. Und das gerne für 1-2 Minuten. Ich habe mich an folgende Anleitung gehalten: http://robo.sntiitk.in/2017/12/21/Beginners-Guide-to-IMU.html und folgende Formeln in meinen Code eingepflegt: pitch = 180 * atan2(accelX, sqrt(accelY*accelY + accelZ*accelZ))/PI; roll = 180 * atan2(accelY, sqrt(accelX*accelX + accelZ*accelZ))/PI; mag_x = magReadX*cos(pitch) + magReadY*sin(roll)*sin(pitch) + magReadZ*cos(roll)*sin(pitch) mag_y = magReadY * cos(roll) - magReadZ * sin(roll) yaw = 180 * atan2(-mag_y,mag_x)/M_PI; Dabei habe ich darauf geachtet, dass ich die Werte der Achsen der einzelnen Chips so in die Formeln einpflege, dass es die Werte für die Achse des gesamten Gerätes sind. (z.B. hat der Magnetsensor seine x-Achse in Richtung -y des Gerätes, also wird statt dem y-Wert -x eingespielt.) Ebenso habe ich darauf geachtet, dass die Winkelwerte in Radianten in die entsprechenden Funktionen eingespeist werden. Auch habe ich beim Magnetsensor die Werte normiert, also durch (max-min) dividiert. Roll und Pitch passen auch, soweit ich das beurteilen kann. Yaw passt, solang das Gerät am Tisch steht. wenn Pitch und Roll zunehmen, passt es nicht mehr. Wieso?
Vorgehen ist einen vektor aus MAG und einen aus ACC zu bilden. Dann projezierst du den MAG vektor auf die XY ebene des ACC vektors. Das ist dann nord. Anders ausgedrückt du musst den MAG vektor, der im sensor koordinatensystem ist, in das ACC koordinatensystem drehen. Das ist eine 3D vektor rotation. Erst dann machst du den atan2(x,y). Deine formeln funktionieren auf dem tisch weil da die sensor XY ebene da mit der ACC xy ebene übereinstimmt.
:
Bearbeitet durch User
Hmmm… Ich dachte, dass das genau für diesen Zweck fertige Formeln sind!? Sind die Richtigen irgendwo beschrieben?
Frager schrieb: > Sind die Richtigen irgendwo beschrieben? Die kommen sogar im Vernünftigen Schulunterricht bei der Vektorrechnung dran - Skalarprodukt und 3D-Drehmatrix.
my2ct schrieb: > Frager schrieb: >> Sind die Richtigen irgendwo beschrieben? > > Die kommen sogar im Vernünftigen Schulunterricht bei der Vektorrechnung > dran - Skalarprodukt und 3D-Drehmatrix. Wo gibt es noch vernünftigen Schulunterricht? Oder was machen die älteren Semester, bei den das schon zu lange her ist? Also ich schau da immer in meinen "Bronstein" (Taschenbuch der Mathematik, Verlag Harri Deutsch) -- und finde da das Kapitel "Analytische Geometrie des Raumes" mit dem Unterkapitel "Transformation rechtwinkliger Koordinaten". Sollte auch antiquarisch für einen schmalen Euro erhältlich sein.
Mir ist natürlich bewusst, dass man das alles mathematisch selber herleiten kann und ich denke schon, dass ich das noch schaffen würde, aber soetwas muss es doch schon fertig geben? Man muss ja auch nicht Schaltungen diskret aufbauen, die es schon als fertige ICs gibt!? Außerdem schauen die Formeln, die ich aus der Anleitung kopiert und auch hier gepostet habe, für mich so aus, als würden die genau das machen. Es wird ja Roll und Pitch mithilfe des Beschleunigeungssensors errechnet und dann in die Formeln danach eingesetzt. Warum würde man sonst Roll und Pitch für die Berechnung der Himmelsrichtung brauchen, wenn nicht, um den Magnetfeld-Vektor in die Ebene zu bringen, die horizontal zum Boden ist?
Denkst du irgendwer hat lust für lau deine fomeln zu checken? Warum schaust du nicht wie andere das machen? Betaflight IMU? Ardupilot IMU? Jede opensource kompass-android app? Hier Mimimi zu schreien bringt nix.
:
Bearbeitet durch User
So. Hab's gelöst. Da ihr so viel geholfen habt, poste ich euch meine Lösung:
Frager schrieb: > Hab's gelöst. Da ihr so viel geholfen habt, poste ich euch meine > Lösung Toll für dich. Hab leider keine zeit das durchzusehen. Hast ja recht lange gebraucht. Ein narkolepsie problem?
:
Bearbeitet durch User
Frager schrieb: > So. Hab's gelöst. Da ihr so viel geholfen habt, poste ich euch meine > Lösung: ???
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.