Memulihkan data dari accelerometer jenuh

10

Saya memiliki accelerometer ADXL345 dan memasangnya ke roket hybrid untuk diluncurkan. Sayangnya, saya lupa untuk mengatur rentang dari default-nya +/- 2g ke +/- 8g (kami harapkan 6g saat lepas landas).

Untuk rentang +/- 2g, lembar data mencantumkan resolusi keluaran 10 bit, dan untuk +/- 8g ia mencantumkan resolusi 12 bit.

Saya perhatikan ini di lembar data yang ditautkan di atas, di bawah DATA_FORMATregister (0x31):

Register DATA_FORMAT mengontrol penyajian data untuk Mendaftar 0x32 hingga mendaftar 0x37. Semua data, kecuali untuk rentang +/- 16g, harus dipotong untuk menghindari rollover. ( penekanan milikku )

Berdasarkan pernyataan ini dan diagram blok fungsional (sensor 3-sumbu terhubung ke "sense electronics", kemudian terhubung ke ADC), saya berharap ada cara untuk menyelesaikan data yang benar. Faktor skala terdaftar di halaman 3 lembar data.

Apakah ada cara saya bisa menyelesaikan data ini, setidaknya untuk 1 atau 2 angka penting? (Misalnya, saya memiliki deteksi 1,9414g - ini seharusnya sekitar 6). Saya tidak berpikir sensor jenuh, hanya nomor di register data - dan mengingat faktor skala dan beberapa bit-shifting kreatif (tidak sepenuhnya jelas bagaimana mereka mendapatkan 10-12 bit ketika mengubah resolusi), semoga saya bisa memulihkan sesuatu yang bermanfaat dari data saya.

Dang Khoa
sumber
Jika Anda memplot data Anda dengan asumsi layar 2g dengan roll over sehingga Anda melihat bagian bawah 2g kata yang lebih panjang, bagaimana tampilan sresult. Untuk naik, Anda harus melihat serangkaian gigi gergaji. 0-2 = 0-2. 2-4 = 0-2. 4-6 = 0-2.
Russell McMahon
Saya akan mencobanya setelah kita memulihkan roketnya. Data yang saya miliki tidak cukup karena kami kehilangannya di belakang awan ..
Dang Khoa

Jawaban:

7

Nilai apa yang sebenarnya Anda simpan ke "Daftarkan 0x31 — DATA_FORMAT"?

Saya akan menganggap Anda tidak menyimpan apa pun ke dalam register itu, jadi masih dalam nilai reset-nya 00. Dengan kata lain, saat Anda sedang mengumpulkan data (dari Tabel 16 dan juga halaman 17 dari lembar data ADXL345 ):

  • Daftarkan 0x31 — DATA_FORMAT == 00.
  • The FULL_RES == 0. Jadi perangkat dalam mode 10-bit, dan bit rentang menentukan rentang g dan faktor skala maksimum.
  • The Justify Bit == 0. Jadi mode justified dengan ekstensi sign.
  • Rentang Bit == 00. Jadi + - rentang 2g.

Hal pertama yang akan saya lakukan adalah memulihkan nilai 16 bit asli saat dibaca dari accelerometer. (yaitu, jika saya dengan sembarangan membuang data asli, dan yang tersisa adalah angka dalam satuan "g" yang dihitung dengan mengurangi offset dan dikalikan dengan faktor skala yang salah, saya akan menyalin data yang dikumpulkan ke dalam spreadsheet dan bagi dengan faktor skala yang sama (tidak benar) lalu tambahkan offset itu untuk mencoba memulihkan sesuatu yang mendekati nilai asli).

Kemudian saya akan membuat grafik data dan melihat apakah itu lebih mirip "saturasi", "linear", atau "roll-over" (seperti dijelaskan di bawah).

Lembar data secara kabur tidak jelas tentang apa yang terjadi ketika sensor mengalami akselerasi lebih dari 2 g.

kata-kata kasar tangensial

Apakah saya memberi tahu Anda betapa jengkelnya saya ketika para penulis teknis bersikeras untuk menulis dengan suara pasif? Ketika penulis menggunakan suara pasif dalam kalimat yang Anda kutip,

"Semua data, kecuali untuk rentang ± 16 g, harus dipotong untuk menghindari rollover." (halaman 17)

Saya tidak tahu siapa yang seharusnya melakukan kliping ini.

Banyak orang merekomendasikan menggunakan suara aktif . Ketika saya mengikuti rekomendasi itu, teks saya biasanya lebih jelas tentang siapa melakukan apa. Bukankah lebih baik ketika saya menulis hal-hal yang lebih mudah dipahami , daripada menggunakan gaya yang orang-orang telah tertipu untuk berpikir suara "lebih profesional" atau "lebih ilmiah"?

kliping otomatis

Dugaan terbaik saya adalah bahwa accelerometer secara otomatis melakukan kliping ini.

saturasi : Jika Anda melihat peningkatan percepatan melalui nilai-nilai yang masuk akal, kemudian secara misterius terjebak di dataran tinggi, jenuh pada atau dekat + 2g, maka accelerometer "membantu" memotong data untuk Anda. Setelah memotong, nilai "atas" tidak lagi menunjukkan "akselerasi yang sangat dekat dengan + 2g", tetapi sekarang menunjukkan "akselerasi setidaknya 2g, dan mungkin jauh, lebih banyak lagi - tidak ada cara untuk mengatakan".

Karena itu dalam mode 10-bit benar, ketika saya menafsirkan nilai-nilai 16 bit sebagai bilangan bulat ditandatangani 16 bit normal, saya berharap untuk melihat nilai mulai dari

  • 0x01FF = +511, menunjukkan lebih dari 1.992 g. Mungkin jauh lebih banyak.
  • 0x01FE = +510, menunjukkan 510/256 g ~ = 1,992 g
  • 0x01FD = +509, menunjukkan 510/256 g ~ = 1.988 g
  • ...
  • 0x0001 = +1, menunjukkan 1/256 g = 0,0039 g
  • 0x0000 = 0, menunjukkan 0 g
  • 0xFFFF = -1, menunjukkan -1/256 g = 0,0039
  • ...
  • 0xFE02 = -510, menunjukkan -510/256 = -1,992 g
  • 0xFE01 = -511, menunjukkan -511/256 = -1,996 g
  • 0xFE00 = -512, menunjukkan sesuatu yang lebih negatif -1,996 g. Mungkin jauh, jauh lebih negatif.

(Ya, saya tahu bahwa 4 tempat desimal presisi tidak beralasan untuk sensor ini). (Saya telah melihat beberapa perangkat jenuh di beberapa titik lain, seperti -511 atau -510. Saya biasanya dapat melihat data dan mencari tahu titik jenuh yang sebenarnya).

Anda dapat memulihkan beberapa data berguna dari kumpulan data yang terpotong ini. Anda dapat menggunakannya untuk mengukur, misalnya, berapa milidetik percepatan setidaknya 1,5 g. Sayangnya, ketika Anda melihat dataran tinggi dalam kumpulan data semacam ini, tidak mungkin untuk mengukur percepatan maksimum atau total impuls - yang terbaik yang dapat Anda lakukan adalah mengatakan, "baiklah, kami tahu bahwa percepatan maksimum setidaknya 2g dan mungkin lebih ", dan menghitung" dengan baik, kami menghitung bahwa total impuls setidaknya (sesuatu) newton * detik ".

alternatif

Seharusnya dimungkinkan untuk mengetahui apakah accelerometer tidak terpotong atau tidak dari data. (Saya telah menjelaskan "saturasi", "linear", dan "roll-over" dalam hal ramp up - dengan beberapa set data, mungkin lebih jelas untuk melihat ramp down sebagai gantinya).

linier : Jika Anda melihat peningkatan percepatan melalui nilai yang masuk akal, kemudian lanjutkan meningkatkan ke nilai yang lebih tinggi (nilai di atas 512, atau lebih negatif dari -512), maka Anda beruntung - accelerometer tidak benar-benar melakukan kliping, dan Anda memiliki data yang valid melalui seluruh jajaran.

roll-over : Jika Anda melihat peningkatan akselerasi melalui nilai-nilai yang masuk akal, dan tepat sebelum +2 g, itu langsung melompat ke nilai non-fisik-realistis dekat -2 g dan kemudian terus meningkat - mungkin terjadi melalui nol, kemudian mendekati + 2g lagi, dan melompat kembali ke dekat -2 g lagi - maka Anda memiliki roll-over wrap-around. Jika Anda beruntung, nilainya berubah sangat lancar, sehingga memungkinkan untuk mendeteksi setiap rollover dan "membuka" nilai-nilai ini untuk memulihkan kekuatan g yang sebenarnya.

ps: jangan ragu untuk mengedit Open Circuits: Rocket Computer .

davidcary
sumber
Bagus! segera setelah kami memulihkan roket saya akan mencoba ini. Sampai sekarang kita harus menyewa Cessna untuk membantu menemukannya .. tapi semoga kita beruntung.
Dang Khoa
Sepertinya kita tidak akan dapat memulihkan roket kita, jadi diskusi ini agak diperdebatkan (Saya hanya punya beberapa titik data dari stasiun darat). Tapi terima kasih
Dang Khoa
@davidcary, sirkuit terbuka: Tautan Komputer Rocket rusak
Mahendra Gunawardena
@ MahendraGunawardena: Terima kasih telah memberi tahu saya. Apakah ini berfungsi sekarang?
davidcary