Forum: Mikrocontroller und Digitale Elektronik Erfahrungswerte L3G4200D (Offset)


von Florian K. (f-kae)


Lesenswert?

Hallo, mal wieder geht es für mich um das Gyroscope L3G4200D!

Hat jemand Erfahrungswerte mit diesem Gyroscope gesammelt?

Ich hänge an der Offset Eliminierung.

Folgendermaßen habe ich versucht den Offset raus zu rechnen:
1
float X_Offset = 0;
2
3
void Clean_Offset(void)
4
{
5
  for(uint8_t i = 0; i<200; i++)
6
  {
7
    uint8_t XH = ReadByteSPI(OUT_X_H);
8
    uint8_t XL = ReadByteSPI(OUT_X_L);
9
    X_Offset += (((XH << 8) | XL));
10
  }
11
  X_Offset /= -200;
12
}
13
14
float Refresh_Gyro_Data_X(void)
15
{
16
  uint8_t XH = ReadByteSPI(OUT_X_H);
17
  uint8_t XL = ReadByteSPI(OUT_X_L);
18
  X = ((((XH << 8) | XL)+X_Offset) * 0.00875);
19
  return X;
20
}
X wird alle 10ms (über Refresh_Gyro_Data_X) neu ausgelesen und soll dann 
der Wert in dps sein!

Dann wird ebenfalls alle 10ms zusätzlich folgende Zeile ausgeführt um 
die ausgeführte Drehung in Grad zu erhalten:
1
float refresh_time = 0.01;
2
float X_add = 0;
3
float X;
...
1
X = Refresh_Gyro_Data_X();
2
X_add += X*refresh_time;     //<-- diese Zeile

Nach dieser Berechnung treten trotzdem immer wieder Offsets bis zu 1Grad 
pro Sekunde auf, was nun doch recht viel ist.

Sieht jemand einen grundlegenden Fehler in der Berechnung, oder ist 
diese in Ordnung so?

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.