Erfahrungswerte L3G4200D (Offset)

OP #2945421
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren