Ich versuche gerade einen G-Force-Meter zu bauen, im Einsatz ist ein MEGA2560 i.V.m. einem ADXL345, also einem 3-Achsen Beschleunigungssensor sowie ein LCD.
Ziel ist eine Anzeige ähnlich dieser:
Jetzt möchte ich aber den Sensor an beliebiger Position und damit auch in beliebiger Ausrichtung im 3D-Raum im Fahrzeug befestigen können. Und jetzt geht die Rechnerei los....
Zuerst zur geplanten Vorgehensweise:
Vor der Installation die einzelnen Achsen ausmessen und die Kalibrierungswerte fest einprogrammieren
Einbau
Programmstart und Auslesen der Werte im Stand
Die einzige in diesem Moment wirkende Kraft ist die Gravitation, deren Richtung (nach unten) und Stärke (1g) sind bekannt
Das Fahrzeug starten und gerade nach vorne (virtuelle Y-Achse) beschleunigen
Damit habe ich zwei Vektoren, Y und Z, lotrecht zu diesen beiden Achsen ist X, das muß also auch berechenbar sein.
Nur wie?
Ich zermattere mir meine alten grauen Zellen und google mir den Wolf, aber ich komm nicht auf die Lösung. Vielleicht weil ich auch nicht genau weiß wonach ich suchen muß...
Wer kann mir einen Lösungsansatz liefern? Wie muß man bei der Berechnung der entsprechenden Korrekturwerte zum Finden des Nullpunktes vorgehen?
ich spiele auch gerade mit einem ADXL345 rum. Man findet dazu eigentlich viel im Netz. Ich hatte dafür nach "ADXL345 Winkel" gesucht. Die Winkelberechnung erfolgt eigentlich so. Vom Gefühl haut das auch hin bei mir.
Roll und Pitch sind die errechneten Winkel. Die 4.0 und 1024 sind Werte je nach eingestellter Auflösung und Range.
Frage mich jetzt nicht wofür man den "Höhenwert" Z-Achse zur Winkelberechnung benötigt. Der bleibt ja konstant beim kippen. Habe von Vektorrechnung keine Ahnung.
Edit:
moment, du suchst nur nach G Kräften. Na dann brauchste nur deine nackten Sensorwerte mit Range und Auflösung zuverrechnen. Wenn zum Bsp. +/-4g eingestellt sind, mußte dafür 8 einsetzen. 1024 stehen für 10Bit.
danke für deine Antwort. Jedoch hilft mir das leider nicht viel weiter, denn wie ich die Daten aus dem ADXL raus bekomme war mir schon bekannt. Nur, wie muß ich die dann miteinander verrechnen um
Einen quasi „Nullzustand“ zu haben von dem aus ich
Die Beschleunigung des Fahrzeugs ausrechnen kann
Ich muß den Sensor ja erst rechnerisch „nullen“ um daraus dann die dynamische Komponente errechnen zu können.
Also im Ausgangszustand wo nur die Erdanziehung wirkt teilt sich das 1G von mir aus zu 81% auf Z, 12% auf Y und 7% auf X auf, nur wie komme ich auf diese Werte? Messen? Ok.
Und dann kommt ja noch die Umrechnung der einzulernenden „Y-Dynamik“ dazu. Optimalerweise teilt sich diese beim Einlernen ebenfalls auf alle drei Vektoren auf. Wie verrechnen ich das mit der Gravitation?
Und dann erst kann ich ja die eigentliche Fahrdynamik darstellen.
Mir geht es hier erstmal nur um’s Verständnis, die Lösung möchte ich ja selbst erarbeiten…
Wenn du den Sensor nicht mechanisch ausrichten kannst, musst du dich mit
Vektorrechung und Koordinatentransformation auseinandersetzen.
so dass im kalibrierten System deine Beschleunigung im Ruhezustand in Richtung (0/0/-1) geht. ( oder wie auch immer du dein Koordinatensystem definierst )