MPU-60X0 Gyro_ FiFO liefert immer wieder falsche Werte

Persönliche Seite #3915505
Lesenswert?

Hallo zusammen,

um die Lage eines Quadrocopters zu bestimmen möchte ich über einen Gyro 
wie aktuelle Lage/Winkel im verhältniss zur Startposition bestimmen.

um diesen Wert möglichst genau zu bekommen lese ich bei dem MPU6000 die 
aktuelle Winkel-Geschwindigkeit, über das FiFo register aus und 
Intrigiere die.

Dieser Vorgang Funktioniert auch so weit und ich erhalte Messwerte die 
eig nurnoch vom Rauschen verändert werden.

jedoch erhalte ich immer wieder ganze FIfo-Blöcke in denen einfach 
komplett falsche Zahlen drinnen stehen.

hat einer von euch eine Idee warum immer wieder das gesamte FiF voll mit 
falsche Werte ist?

Programm logig :

Gyro Fehler berechen (200 Messwerte)

FIFO_enable

While (1){
...

Fifo counter auslesen //wie Viele FIFO werte insgesammt vorhanden sind

 FOR (Counter /6 ){//(da pro sample 6 gyrowerte gespeichert werden 
g,y,z)


      FIFO Burst read mit 6 Byts // auslesen eines Samples
      Daten berechnen und aufsummieren

}
}

nun kommt es vor das alle werte die aus solch einer FOR-Schleife 
ausgelesen werden komplett falsch sind
Persönliche Seite #3916230
Lesenswert?

wie meinst du Off-by-one?

Sensor_reset(); Register : 107 Inhalt:  128

Sensor_cykle(); Register : 107 Inhalt:  32

Sensor_sleep_disable(); Register : 107 Inhalt:  0 // Kein Speep etc...

gyro_kalibrieren(); // falsch Messungen analysieren
    //liest "XXX" sensortwerte beim Start einmalig , um dadurch den 
mittleren Fehler zu bestimmen.

fifo_enable();  Register : 106 Inhalt:  64 //fifo Enbale
                Register : 35 Inhalt:  112 //XYZ Achsen enable
#3916264
Lesenswert?

Bitte etwas detaillierter. Und gewöhnt dir mal Hex-Schreibweise an und 
nicht dezimal, kann ja keine lesen :) Mit hex sieht man sofort welche 
Bits gesetzt sind. Und irgendwie glaube ich immernoch dass du uns 
verheimlichst was tatsächlich in den Registern landet.

Ich schreibe ja auch nicht "ich initialisiere meinen Sensor 
folgendermaßen: init_mpu6050()"
Gast #3916457
Lesenswert?

Mein Eindruck von dem MPU-6000 ist, dass der wohl scheinbar Bugs hat.
Das aktuelle Datenblatt enthält weniger Features als ältere Versionen, 
da wurde wohl scheinbar im nachhinein was rauskorrigiert was nicht ganz 
wie erwartet funktioniert hat.

Ein Ersatz wäre der MPU-9250.
Oder vielleicht auch ein BMI-055 von Bosch.

Aber während der MPU-9250 schon schwierig von Hand zu löten ist,
den BMI-055 kann man garnicht mehr konventionell löten.
Persönliche Seite #3916896
Lesenswert?

Ich schreibe es so da der Prozessor ein AT32 ist und der Register Syntax 
komplett anders ist als bei den AVR-Prozessoren ist.
das mit den Hex-Zahlen läst sich einrichten.

für den Fall das es wirklich notwendig den Sensor zu ersetzen wäre es 
mir wichtig das der Gyro ein möglichst geringes Rauschen hat.
Beim BMI-055 finde den Rauschfaktor aber zum MPU 9250  nicht.
hatt da einer einen Wert bzw Erfahrung mit dem Sensor?
Gast #3916906
Lesenswert?

Schau mal erstmal, ob Du ein älteres Datenblatt findest und was dort zu 
den FIFOs steht.
FIFO hatten wir garnicht benutzt, unser Controller war sehr schnell wach 
und den SPI haben wir auf 10MHz laufen lassen.
Aber das Wecken per Schwellwert des Beschleunigungs-Sensors und 
zumindest das wurde entfernt.
Persönliche Seite #3917612
Lesenswert?

um die Hex-Werte noch nachzureichen :)


    [0]  0x000000c8  int@0x0014
    [1]  0xffffc000  int@0x0018
    [2]  0xffffb900  int@0x001c
    [3]  0xffffaa00  int@0x0020
    [4]  0xffffa200  int@0x0024
    [5]  0xffff9b00  int@0x0028
    [6]  0xffff9c00  int@0x002c
    [7]  0xffff9f00  int@0x0030
    [8]  0xffffa200  int@0x0034
    [9]  0xffffad00  int@0x0038

hier scheint es so das nach dem ersten Datensatz alle weiteren Werte 
"Falsch" sind.

beim auslesen des nächsten FIFO-counters stimmen die werte aber wieder.
Gast #3918799
Lesenswert?

Sebastian Balz schrieb:
> und müsste dies nicht auch die Genauigkeit des Sensors erhöhen, da ich
> dann weniger Fehler durch eigen-rausche auslese ´(da weniger Messwerte)

Dann nehm ich eine Messung vor und die stimmt dann....neeee, so nicht!
Das Rauschen ist doch immer da, auch wenn du nur einen verrauschten Wert 
aufnimmst...da wird nix besser...

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