menghitung kecenderungan menggunakan accelerometer?

16

saya punya perangkat analog accelerometer ADXL203 pada papan lebar dan ingin menggunakan ini untuk mengukur kecenderungan beberapa peralatan pada frekuensi yang cukup tinggi (20-30 Hz). Saya mengaitkannya dengan logger campbells cr3000 untuk melakukan sensing. Apakah ada yang punya petunjuk tentang cara menafsirkan output sensor. Terima kasih

troy jensen
sumber
terima kasih untuk semua orang atas komentarnya. salam yang sangat membantu TROY
troy jensen
Saya tahu saya memiliki yang tertinggi, tetapi jika Anda tidak menyukai milik saya, setidaknya menerima seseorang.
Kortuk

Jawaban:

12

Saya memiliki beberapa hal untuk dikatakan di sini, dan beberapa di antaranya melibatkan setuju dengan pingswept dan beberapa dengan penjuin.

cr3000

Pengambilan sampel CR3000 pada 16 bit dan 100 Hz akan menjadi sampel agak lambat bagi Anda untuk dengan mudah menghilangkan noise dari data Anda tetapi pada presisi yang jauh lebih tinggi maka akan dapat digunakan. Saya ragu Anda bisa mendapatkan 13 atau 14 bit presisi tanpa beberapa algoritma penyaringan yang cukup bagus. Accelerometers telah mengajari saya bahwa getaran adalah iblis, peledakan phonon.

Kapasitor Keluaran

Anda perlu memastikan Anda melakukan seperti yang dikatakan lembar data dan dicate teori sinyal. Mengutip datasheet:

Output dari ADXL103 / ADXL203 memiliki bandwidth khas 2,5 kHz. Pengguna harus memfilter sinyal pada titik ini untuk membatasi kesalahan alias. Bandwidth analog harus tidak lebih dari setengah frekuensi sampling analog ke digital untuk meminimalkan alias. Bandwidth analog dapat dikurangi lebih lanjut untuk mengurangi kebisingan dan meningkatkan resolusi.

Ini berarti Anda harus memilih kapasitor untuk menjaga tingkat Anda di bawah 50Hz. Jika Anda menempatkannya di atas ini, Anda bisa mendapatkan aliasing, dan aliasing menjadikan getaran sebagai setan yang Anda tandatangani. Mereka menyatakan bagaimana cara menghitung tingkat kebisingan dari perangkat, dan pada bandwidth 50Hz puncak ke puncak kebisingan 0,006 * Gravity bahkan tidak akan diperhatikan jika Anda memiliki ini pada perangkat dengan getaran.

Menafsirkan Data

Ini mungkin yang paling Anda minati, dan relatif mudah dilakukan. Anda perlu menandai waktu di mana perangkat berada pada posisi netral, ini terjadi ketika flat dan Anda memilikinya relatif diam. Berikan satu atau dua detik pada titik ini, dan kemudian Anda dapat mengambil median data ini untuk menentukan tegangan no-G. Kemudian Anda dapat menggunakan ini sebagai titik Anda membandingkan perangkat. Sekarang, dari titik ini, saya bisa langsung mengutip lembar data:

Ketika accelerometer tegak lurus terhadap gravitasi, outputnya berubah hampir 17,5 mg per derajat kemiringan .

Jadi Anda bisa menggunakan perkiraan ini jika Anda tidak akan terlalu banyak memiringkannya, tetapi Anda harus menggunakan geometri jika Anda berencana untuk memiringkannya ke kedua arah dan dalam sudut yang tidak terlalu kecil.

Jika Anda akan menjadi lebih besar, mereka bahkan memiliki persamaan yang dijabarkan sebagai:

PITCH = ASIN (AX / 1 g)
ROLL = ASIN (AY / 1 g)

Sejauh yang saya bisa tel perangkat Anda memberikan perubahan 1V per 1G akselerasi ditempatkan di atasnya. Jika Anda telah melakukan fase kalibrasi, maka Anda harus dapat melakukan pengukuran, kurangi offset, dan Anda memiliki jumlah G yang sedang dialami.

Berhenti Membaca Di Sini kecuali Anda mengalami masalah atau Anda ingin lebih banyak informasi untuk meningkatkan pendekatan.

Saya menambahkan sedikit lebih layak berbicara tentang pendekatan dan metode lain untuk meningkatkan pendekatan Anda untuk sistem yang berubah cepat atau sistem di mana Anda akan memprogram perangkat melakukan sampel.

Frekuensi pengambilan sampel

Anda perlu mengambil sampel secara signifikan lebih cepat daripada kecepatan perangkat Anda mengubah arah percepatan, karena Anda harus mengukur orientasi 20-30 kali per detik. Anda harus dapat mengukur cukup cepat untuk menyaring kebisingan getaran dan akselerasi karena pengaruh lainnya, yang saya temukan cukup besar ketika bekerja dengan accelerometer.

Accelerometer 3-sumbu

Kedua, jika Anda memiliki accelerometer tiga sumbu, maka Anda dapat dengan mudah mengenali kapan satu sumbu kehilangan bagian dari percepatan karena gravitasi (mis. Ketika sumbu z memiliki magnitudo turun sebesar 2m / s ^ 2, Anda tahu bahwa gain yang Anda lihat di sumbu lain adalah gravitasi). Ini masih akan berantakan, tetapi secara umum akan ada penambahan akselerasi yang memberikan kecepatan yang diperlukan untuk mengubah orientasi Anda dan kemudian perubahan akselerasi karena perubahan orientasi, sering memungkinkan Anda untuk mengenali orientasi.

Masalah dengan 2-axis

Ini akan menjadi, seperti yang dikatakan penjuin, hampir mustahil dengan akselerometer 2 sumbu, dan paling tidak samar jika Anda memiliki sistem yang dapat memiliki 20-30 orientasi berbeda per detik, atau jika Anda perlu memiliki ukuran orientasi yang tepat pada setiap saat. Saya yakin mahasiswa master dapat menulis tesis yang cukup bagus tentang ini, atau gelar Doktor dapat menulis disertasi tentang peningkatan algoritma ini.

Kebisingan Getaran

Untuk menambahkan lebih banyak, jika Anda dapat menempatkan perangkat Anda di atas sesuatu yang akan membuatnya tetap terkunci secara statis pada gerakan perangkat Anda, tetapi mengurangi getaran, Anda akan mendapatkan angka yang jauh lebih baik dan tidak memerlukan banyak penyaringan perangkat lunak. Beberapa padding jenis busa sederhana dapat ditempatkan di antara accelerometer dan perangkat Anda, dan jika digital, ini seharusnya tidak meningkatkan kebisingan listrik dan membantu menyerap beberapa kebisingan getaran. Ini hanya boleh dilakukan jika Anda melihat masalah dengan getaran getar.

Akselerometer Digital

Saya akan menyarankan accelerometer digital yang dapat Anda gunakan untuk menghubungkan ke SPI. Data dapat dikeluarkan pada tingkat yang sangat tinggi dan Anda dapat bekerja di latar belakang karena SPI Anda melakukan pekerjaan yang terus-menerus memuat kumpulan nilai berikutnya. Anda perlu memiliki mikrokontroler yang bagus jika itu akan dilakukan secara digital. Jika Anda dapat memberikan saya spesifik yang lebih baik tentang apa yang ingin Anda lakukan, saya dapat memberikan umpan balik yang lebih baik. Jika Anda ingin peringatan yang didasarkan pada deteksi kemiringan maka itu harus sangat mudah dilakukan dengan semua analog, tetapi jika Anda ingin mengukur posisi dan sudut peralatan selama operasi, bersiaplah untuk beberapa pekerjaan.

Harap beri tahu saya jika ada sesuatu yang dapat saya tambahkan untuk membuat jawaban ini lebih jelas atau berlaku untuk apa yang Anda cari.

Kortuk
sumber
1
Sebagai catatan, jawaban ini epik.
pingswept
1
Kortuk, Ph.D dalam akselerometer! :-)
Jay Atkinson
Saya menulis jawaban ini karena saya terus berpikir saya telah melupakan sesuatu, kemudian saya menyadari bahwa itu agak panjang, dan menambahkan cara cepat yang sebenarnya untuk menjawabnya, tetapi tampaknya orang-orang lebih memilih jawaban yang panjang.
Kortuk
Pada kebisingan getaran, saya mungkin memiliki jumlah yang lebih besar selama waktu pengoperasian karena kehadiran Motor Brushless DC (BLDC), tetapi sebelum dinyalakan masih ada angka getaran yang signifikan.
Kortuk
3

Saya telah menulis dan menulis ulang jawaban ini beberapa kali dengan banyak ide matematika yang gila, tetapi saya jujur ​​tidak berpikir ini dapat dilakukan dengan akurasi. Anda dapat melakukan beberapa matematika vektor, tetapi bagaimana jika:

  • Objek berhenti bergerak
  • Objek memiliki kecepatan konstan
  • Objek menabrak benjolan / Anda menabraknya
  • Gaya yang dihasilkan bergerak ke atas lereng di bawah resolusi sumbu Z

Meskipun saya yakin ada beberapa solusi gila untuk melakukan hal semacam ini, saya tidak yakin itu akan sia-sia; akselerometer sama sekali tidak dirancang untuk tugas ini (setidaknya setahu saya). Untuk apa yang Anda mencoba untuk mencapai, saya akan menyarankan pendekatan gyroscopic menggunakan salah dari ini , yang semuanya akan cukup tahan terhadap semua masalah di atas.

penjuin
sumber
Accelerometer dirancang untuk ini sebenarnya, ada seluruh bagian tentang cara melakukannya. Accelerometer adalah biaya yang sangat sangat rendah dalam banyak kasus dan kadang-kadang biaya adalah masalah yang lebih besar daripada fungsionalitas yang sempurna.
Kortuk
3
Saya selalu mencoba menjelaskan ini kepada siswa, dan saya akan menambahkannya di sini karena saya pikir ini adalah konsep yang penting. Rekayasa tidak selalu tentang melakukannya dengan cara terbaik, ini tentang melakukannya sedemikian rupa sehingga pengguna tidak dapat membedakan apa pun kecuali label harga.
Kortuk
2
Ada sesuatu yang bisa dikatakan untuk melakukannya pertama kali, dan ada banyak yang bisa dikatakan untuk melakukannya lebih baik daripada orang terakhir.
Kortuk
Saya setuju, tapi itu tergantung pada motif Anda (yang troy belum nyatakan); apakah Anda ingin itu berfungsi dengan baik, atau Anda ingin belajar? Mereka tidak harus saling eksklusif, tetapi Anda tidak akan menulis kompiler Anda sendiri hanya untuk berkedip LED kecuali Anda secara khusus ingin belajar tentang desain kompiler.
penjuin
Ya, saya menambahkan itu untuk membahas jawaban Anda, secara umum jika dia harus dapat memberi tahu orientasi yang berbeda 30 kali per detik, itu akan memiliki akselerasi raksasa di atasnya, yang pada gilirannya berarti Anda membutuhkan lebih dari 100 sampel dan kedua.
Kortuk
3

Jika saya memahami lembar data dengan benar, output untuk setiap sumbu akan bervariasi antara 1,5 V dan 3,5 V saat Anda memiringkan sekitar sumbu. Ketika perangkat datar (mengabaikan kesalahan penyelarasan paket ± 1 derajat), kedua output harus membaca 2,5 V.

Jika Anda hanya perlu mengukur kemiringan dalam satu arah, Anda dapat mengambil arcsin deviasi dari 2,5 V untuk mendapatkan sudut dalam radian, kemudian konversikan ke derajat. Jika perangkat dapat memiringkan ke segala arah, Anda dapat menghitung dua sudut, dan kemudian menghitung sudut gabungan dari itu.

Secara eksplisit: sudut sekitar satu sumbu = (180 / π) * arcsin (Vout - 2.5)

Untuk mendapatkan respons frekuensi yang baik, Anda perlu kapasitor keluaran kecil, Cx dan Cy. Dari catatan kaki 6 pada hal. 3 dari lembar data, sepertinya 0,02 uF akan memberi Anda bandwidth 250 Hz, yang mungkin tepat untuk laju sampel Anda. Anda mungkin bisa mencapai setinggi 0,1 uF, membatasi bandwidth hingga 50 Hz, tetapi sinyal Anda akan mulai dilemahkan.

pingswept
sumber
Saya tidak berpikir itu akan melemahkan sinyal, kecuali jika Anda merujuk pada frekuensi yang lebih tinggi, yang merupakan titik tutupnya. Dia harus pergi ke 50Hz atau lebih rendah untuk mencocokkan perangkat pengambilan sampel datanya.
Kortuk
1
Ah, saya belum memikirkannya dari perspektif aliasing. Saya masih berpikir bahwa topi besar akan menipiskan sinyal frekuensi tinggi, tapi itu sebenarnya hal yang baik dalam kasus ini. Jadi ya, mengatur bandwidth sekitar 50 Hz bagus.
pingswept
3

Saya menambahkan jawaban kedua, karena jawaban saya yang lain besar, dan Anda mungkin ingin yang sederhana.

Tutup filter Anda harus 0,10 uF atau lebih besar agar Anda di bawah tingkat aliasing Anda (50Hz). Anda perlu memberikan fase kalibrasi beberapa detik dengan perangkat Anda duduk sejajar dengan semua percepatan Gravitasi di arah Z, ini untuk menentukan titik nol G Anda.

Tegangan yang Anda ukur untuk titik nol G Anda, mungkin akan berbeda untuk arah X dan Y, tidak mewakili apa pun. Ambil saja tegangan apa pun yang Anda dapatkan dan kurangi itu. Tegangan ini, dengan offset dikurangi adalah jumlah G yang Anda dapatkan ke arah itu.

Ambil arcsin dan Anda akan mendapatkan sudut Anda ke arah itu.

Ini mengabaikan kebisingan dan akselerasi lainnya. Bersiaplah untuk NaN sebagai hasilnya jika Anda memilikinya sepenuhnya miring dan ada kebisingan.

Kortuk
sumber
0

Untuk mendapatkan sudut mana pun, Anda perlu mengukur percepatan gravitasi di arah X dan Y. kurangi tegangan tengah (2.5V) sehingga nol adalah "tidak ada akselerasi."

Sekarang Anda dapat menemukan sudut dengan arcsin (y / x). Tapi itu menjengkelkan untuk digunakan, karena pembagian, dan karena tandanya ambigu, jadi apa yang Anda inginkan adalah fungsi C atan2 (y, x). atan2 () mendapatkan tanda yang tepat untuk semua 360 derajat.


Di luar topik, karena Anda tidak menggunakan mikro: Jika Anda mencari atan2 () untuk digunakan pada mikrokontroler, ada generator atan2 () di situs web saya: http://vivara.net/cgi-bin/ cordic.cgi

markrages
sumber
Ini bukan 2.5 V dijamin untuk 0G. karena dia mungkin akan menggunakan komputer untuk melakukan matematika saya ragu bahwa metode yang dia gunakan untuk melakukan matematika akan mater.
Kortuk