Moin Leute!
Auf dem Weg zu einem netten kleinen Projekt möchte ich einen Lage-Beschleunigungssensor benutzen.
Ich habe den Sensor MPU 6050 auf einen Breakout-Chip und alles verbunden, alles eingerichtet und ich bekomme
auch Werte.
Nun wird auf diversen Seiten/Foren und auch auf dem Datasheet die RohWerte-Verarbeitung erläutert.
Dort ist jedoch immer davon zu lesen, dass die Werte z.B. für das Accelometer von -32750 (oder so) bis +32750 geliefert werden
und je nach eingestellter Empfindlichkeit dann in die jeweiligen g oder winkel/s werte umgerechnet werden müssen.
So: Lese ich meinen Chip aus, dann erhalte ich aber werte von 0 bis +65500 (=32750*2)....
Erst dachte ich: Easy! Einfach -32750 rechnen und fertig. Dann habe ich aber festgestellt, dass z.b. der accel bei "positiver" neigung
von 0 bis ~32750 arbeitet und bei negativer "springt" und von 65500 rückwärts (!!) bis ~ 32750 ausgibt. Das ist aber
a) schei** (sry)
b) doof zu lesen, falls es überlapp gibt (irgendwie...kp)
und c) wäre die obige alternative einfach cooler.
Kann da jemand helfen?
Datenblatt des MPU 6050: http://invensense.com/mems/gyro/documents/RM-MPU-6000A.pdf
und mein bescheidener Quellcode:
float get_akt_gx(int dev)
{
uint8_t a,b;
uint16_t accelx=0;
float accel_x;
a=wiringPiI2CReadReg8(dev, 0x3C);
b=wiringPiI2CReadReg8(dev, 0x3B);
accelx= ( b << 8) | a;
accel_x= (float) accelx;
accel_x = accel_x / 16384; // weil 2g
if(accel_x>2){accel_x=accel_x-4;}
return accel_x;
}
Display More
Heraus kommen werte, die faaaast passen (manchmal beschleunigungen größer 2g, was irgendwie sinnlos ist . Aber sonst schon mal "funktionabel".
Nur für mein Projekt hätte ich es gerne nicht fast, sondern richtig
jaaa... irgendwie wäre das ohne den unteren Teil etwas netter wenn ihr wisst, was ich meine.
Ich bin kein Pro, das bitte bei den Antworten berücksichtigen! Danke!
_lego2minecraft