Ich habe dieses Forum ein wenig in Bezug auf das Gyroskop L3G4200D durchsucht und dieses Problem nicht erwähnt, aber ich habe andere in anderen Foren darüber sprechen sehen. Ich sehe einen seltsam großen Wert in meiner Ausgabe, wenn das Gyroskop stationär ist. Leider scheint niemand in der Lage zu sein zu antworten, warum dies so ist, also dachte ich, ich würde herumfragen
Ich sammle also Daten aus dem Kreisel mit i2c bei 400 kHz (schneller Modus) und sammle die Gyroskopdaten mit Multibyte-Lesevorgang (jeweils sechs Bytes). Abtastung bei 100 Hz (versuchte auch die oberen 800 Hz), versuchte auch das Ein- und Ausschalten der Filterung bei verschiedenen Werten. Ich verwende nicht den Interrupt-Pin, aber ich verwende das Attribut 'Blockdatenaktualisierung' im GYRCTRLREG4, sodass die Daten erst ausgegeben werden, wenn sowohl LSB als auch MSB gelesen werden. Volle 2000dps und nichts mit dem FIFO gemacht. Ich kann meine genauen Registerwerte veröffentlichen, wenn es hilft, aber die meisten von Ihnen haben das Datenblatt nicht zur Hand.
Das Bild unten zeigt mein Problem. Die ausgegebenen Daten sind gut, korrekt berechnet (meines Wissens) und allgemeines Rauschen ist sehr akzeptabel. Aber dann bemerkte ich, dass diese nervigen "Blips" zufällig auftauchten, wenn das Gerät stationär ist. Wenn ich es ein paar Sekunden lang stehen lasse, erhalte ich eine dieser Spitzen, die immer zwischen 250 und 255 liegt (also ~ 18 bei der Konvertierung mit '(Ausgabe * 70) / 1000'). Die Spitzen sind, wie gesagt, zufällig und können in jeder Ebene auftreten (im Bild unten sehen Sie die erste Spitze in der X-Ebene, die zweite in der Y-Ebene), immer um den gleichen Wert und eins, zwei oder alle drei können gleichzeitig passieren. Der große Wert gilt nur für eine einzelne Stichprobe und kehrt dann zum Normalwert zurück.
Ich habe irgendwo in einem anderen Thread gesehen, dass ich die Blockdaten-Wartefunktion in GYRCTRLREG4 verwenden sollte, wie ich bereits erwähnt habe, aber keine Änderung. Ich habe das Problem auf das Problem eingegrenzt, wenn das MSB Null oder höher ist, dh eine positive Zahl. Wenn dann das MSB und das LSB kombiniert werden, erhalte ich diese großen Zahlen. Zum Beispiel greife ich nach den zwei für die X-Ebene erforderlichen Bytes, erhalte im LSB eine -6 und im MSB eine 0, wenn ich sie kombiniere, erhalte ich 250, und beim Konvertieren ergibt sich (250 * 70) / 1000 = 17,5 dps ( dh zu groß für stationär / falsch). In derselben Stichprobe sind die beiden Bytes für die Y-Ebene -3 LSB und -1 MSN, wobei die Kombination -3 ergibt und die Konvertierung -0,21 ergibt (dh erwartet / korrekt).
Ich bin schon seit Tagen mit diesem Problem beschäftigt und sehe auch ein paar dieser zufälligen Spitzen mit meinem Magnetometer. Ich denke also, ich lese das Gerät (über i2c) falsch?
Anregungen oder Versuche sind herzlich willkommen!