Habe gerade ein problem mit dem Endergebnis. Es rauscht extrem obwohl die Messwerte nicht rauschen?!
ACC_X = ACC_X - 3520; <<< Messwert - Offset
ACC_X = ACC_X / 4; <<<Differenz "entrauschen"
ACC_Y = ACC_Y - 3520;
ACC_Y = ACC_Y / 4;
ACC_X = ACC_X * 0.01564; <<< Differenz * Beschleunigungsfaktor = Beschleunigung
ACC_Y = ACC_Y * 0.01564;
float rollAcc = atan2f((float)ACC_X, (float)ACC_Y) * 180 / M_PI; <<< Umwandlung in einen Winkel
Die Werte ACC_X und ACC_Y geben im Stillstand "0" aus. Und trotzdem schwankt der winkel rollAcc von -13 bis sogar 60.
Bin noch nicht so der Profi was C angeht...fehlt mir vllt eine Kleinigkeit?!
P.s: alle Variablen sind floats
Edit2:
Hab eben mal folgendes aus einem Forum probiert:
Wenn Du einen z.B. einen +/-1.7G Sensor hast, der in Mittellage 2.5V ausgibt, bei -1.7G=0V und bei +1.7G = 5V dann hättest Du bei +1G=(2.5V/1.7)+2.5V = 3.97V und bei -1G=(2.5V/1.7)+2.5V = 1.03V
+/-1G hast Du dann, wenn Du den Sensor genau 90° seitlich kippst. Der Verlauf der Spannung folgt dabei der Sinus-Funktion im Bereich 0..90°. Im Bereich von ca. +/-15° ist der Verlauf der Sinus-Kurve recht linear, da kann man - je nach Anforderung an die Genauigkeit - fast ohne Kompensation der Ausgangsspannung leben. Darüber hinaus KANN man die Ausgangsspannung entsprechend kompensieren. Wenn man das z.B. mit einem Mikrocontroller macht, dann muss man eingangsseitig schon sehr fein auflösen (z.B. mit 14 bit), um ausgangsseitig noch eine annehmbare Auslösung (z.B. 8..10 bit) erzielen zu können.
Das funktioniert gerade sehr gut.
Lesezeichen