Saya telah mencari di forum ini sedikit tentang giroskop L3G4200D, dan belum melihat masalah ini disebutkan, tetapi saya telah melihat orang lain membicarakannya di forum lain. Saya melihat nilai besar yang aneh dalam output saya ketika giroskop itu diam. Sayangnya tidak ada yang bisa menjawab mengapa ini terjadi, jadi saya pikir saya akan bertanya-tanya
Jadi, saya mengumpulkan data dari gyro menggunakan i2c pada 400kHz (mode cepat), mengumpulkan data gyroscope menggunakan multibyte read (enam byte setiap kali). Pengambilan sampel pada 100Hz (mencoba 800Hz teratas juga), juga mencoba dengan penyaringan aktif dan nonaktif pada nilai yang berbeda. Saya tidak menggunakan pin interupsi, tetapi saya menggunakan atribut 'blok data pembaruan' di GYRCTRLREG4, sehingga data tidak dikeluarkan sampai LSB dan MSB dibaca. 2000dps penuh dan tidak melakukan apa pun dengan FIFO. Saya dapat memposting nilai register saya yang tepat jika itu membantu, tetapi angka sebagian besar dari Anda tidak akan memiliki lembar data.
Gambar di bawah ini menunjukkan masalah saya. Data yang dihasilkan bagus, dihitung dengan benar (sepengetahuan saya) dan kebisingan umum sangat bisa diterima. Tapi kemudian saya perhatikan 'blip' yang mengganggu ini muncul secara acak ketika perangkatnya diam. Jika saya membiarkannya diam selama beberapa detik, saya akan mendapatkan salah satu paku ini, selalu sama dengan sekitar 250-255 (dengan demikian ~ 18 ketika dikonversi, menggunakan '(output * 70) / 1000'). Paku, seperti yang saya katakan, acak, dapat muncul di bidang apa saja (pada gambar di bawah ini Anda dapat melihat lonjakan pertama di bidang X, kedua di Y), selalu di sekitar nilai yang sama, dan satu, dua, atau semua ketiganya bisa terjadi pada saat bersamaan. Nilai besar hanya untuk satu sampel, lalu kembali normal.
Saya melihat di utas lain di suatu tempat bahwa saya harus menggunakan fungsi tunggu data blok di GYRCTRLREG4, seperti yang saya sebutkan sebelumnya, tetapi tidak ada perubahan. Saya telah mempersempit masalahnya menjadi ketika MSB nol atau lebih tinggi, yaitu angka positif, lalu ketika MSB dan LSB digabungkan, saya mendapatkan angka-angka besar ini. Misalnya, saya ambil dua byte yang diperlukan untuk bidang X, saya mendapatkan -6 di LSB, dan 0 di MSB, menggabungkannya memberi saya 250, kemudian mengonversikan memberi (250 * 70) / 1000 = 17,5 dps ( yaitu terlalu besar untuk stasioner / salah). Dalam sampel yang sama, dua byte untuk bidang Y adalah -3 LSB dan -1 MSN, menggabungkannya memberi -3, dan mengonversi memberi -0,21 (yaitu yang diharapkan / benar).
Sudah dalam masalah ini selama berhari-hari sekarang, saya juga melihat sedikit lonjakan acak ini dengan magnetometer saya, jadi saya pikir saya salah membaca perangkat (via i2c)?
Ada saran atau hal yang harus dicoba!