L3G4200Dジャイロスコープに関してこのフォーラムを少し検索しましたが、この問題について言及したことはありませんが、他のフォーラムで他の人がそれについて話すのを見てきました。ジャイロスコープが静止していると、出力に奇妙な大きな値が表示されます。残念ながら、これがなぜだか誰も答えることができなかったようです。
したがって、私はi2cを使用して400kHz(高速モード)でジャイロからデータを収集し、マルチバイト読み取り(一度に6バイト)を使用してジャイロスコープデータを収集しています。100Hzでのサンプリング(上位800Hzも試した)、また、異なる値でのフィルタリングのオンとオフを試してみました。割り込みピンは使用していませんが、GYRCTRLREG4の「ブロックデータ更新」属性を使用しているため、LSBとMSBの両方が読み取られるまでデータは出力されません。フル2000dps、FIFOで何もしていません。正確であれば、正確なレジスタ値を投稿できますが、データシートが手元にない場合がほとんどです。
下の画像は私の問題を示しています。出力されているデータは適切であり、(私の知る限り)正しく計算されており、一般的なノイズは非常に許容範囲です。しかし、デバイスが静止しているときに、これらの迷惑な「ブリップ」がランダムに表示されることに気付きました。数秒間そのままにしておくと、これらのスパイクの1つが得られ、常に約250〜255になります(つまり、((output * 70)/ 1000 'を使用して変換すると〜18)。私が言うように、スパイクはランダムであり、任意の平面に表示できます(下の画像では、X平面の最初のスパイク、Yの2番目のスパイクを見ることができます)。 3つが同時に発生する可能性があります。大きな値は単一のサンプルの場合のみであり、通常に戻ります。
別のスレッドで、前述のように、GYRCTRLREG4のブロックデータ待機関数を使用する必要があることを確認しましたが、変更はありませんでした。私は、MSBがゼロ以上、つまり正の数である場合に問題を絞り込んだ後、MSBとLSBを組み合わせると、これらの大きな数が得られます。たとえば、X平面に必要な2バイトを取得します。LSBで-6を取得し、MSBで0を取得します。これらを組み合わせると250になり、変換すると(250 * 70)/ 1000 = 17.5 dps(つまり、静止/不正確には大きすぎます)。同じサンプルで、Yプレーンの2バイトは-3 LSBと-1 MSNで、これらを組み合わせると-3になり、変換すると-0.21になります(つまり、期待値/正しい)。
私はこの問題に何日も取り組んでいますが、磁力計でこれらのランダムなスパイクが少し表示されているので、(i2cを介して)デバイスを誤って読み取っているのだと思いますか?
提案や試してみたいことは本当に大歓迎です!