Saya akan mengukur waktu yang sangat singkat seakurat mungkin. Perangkat akan mendapatkan satu pulsa pertama dan dalam 150 mikrodetik enam lagi, masing-masing pada kabel mereka sendiri. Waktu antara sinyal pertama dan masing-masing dari enam sinyal lainnya harus diukur seakurat mungkin. Akurasi harus setidaknya 100 nanodetik tetapi lebih banyak lebih baik.
Mikrokontroler mana yang terbaik untuk ini? Saya telah menemukan ini . Mereka tampaknya memiliki timer dengan periode 4 nanodetik. Itu akan cukup akurat untuk saya.
Apakah beberapa mikrokontroler lain akan lebih baik untuk melakukan ini? Bisakah ini dilakukan dengan AVR?
microcontroller
time
Kestis
sumber
sumber
Jawaban:
Kecepatan mikrokontroler tidak selalu menjadi faktor pembatas. MSP430 dapat menjadi solusi yang tepat, bukan karena faktanya hanya berjalan hingga 25MHz, tetapi karena beberapa perangkat MSP430 memiliki perangkat Timer D yang memungkinkan hingga periode waktu 4ns (256MHz). Ini lebih cepat daripada hampir semua mikrokontroler di luar sana. Bahkan STM32 dalam versi terbarunya (F4) hanya dapat melakukan 180MHz.
Timer D tersedia pada perangkat MSP430F51x1 dan MSP43051x2 seperti MSP430F5131.
Namun, itu hanya bisa memecahkan waktu. Pertanyaan besarnya adalah apa yang Anda lakukan dengan itu karena pemrosesan itu sendiri akan lebih lambat. Anda dapat mencicipi waktu antara dua pulsa, tetapi Anda tidak akan dapat melakukan pemrosesan apa pun di antara keduanya, jika itu yang Anda maksudkan.
sumber
Pengaturan waktu hingga resolusi 100ns memerlukan timer yang beroperasi pada 10MHz. Banyak mikrokontroler harus mampu menjalankan timer yang cepat.
Masalahnya muncul ketika Anda mencoba menghitung waktu kedatangan 6 sinyal. Apakah semua sinyal ini berada pada kabel yang sama, atau masing-masing pada kabel yang berbeda?
Jika mereka semua berada di kabel yang sama, maka dimungkinkan untuk melakukan ini secara akurat pada MCU dengan timer 10MHz tunggal. Secara naif, kode untuk melakukan ini akan terlihat seperti ini:
Masalahnya adalah bahwa dibutuhkan waktu terbatas untuk mengatur ulang timer. Ini menyebabkan dua masalah:
Waktu yang diukur akan menjadi salah oleh beberapa 100ns, tergantung pada implementasi Anda. Namun, mereka harus konsisten salah. IE salah dengan jumlah yang persis sama setiap kali. Ini berarti Anda dapat dengan mudah menggantinya dengan menambahkan sejumlah kecil ke setiap pengukuran.
Akan ada waktu minimum yang bisa Anda ukur. Jika pulsa apa pun tiba 100ns setelah yang sebelumnya, maka Anda mungkin akan melewatkannya. Saya tidak tahu apakah ada yang dapat Anda lakukan tentang hal itu di dalam perangkat lunak. Anda harus menemukan mikrokontroler yang dapat menangani beberapa pulsa dalam perangkat keras.
Mikrokontroler mana yang dapat menangani beberapa pulsa dalam perangkat keras? The Cypress PSoC ! Ini adalah mikrokontroler yang juga berisi blok digital yang dapat dikonfigurasi, artinya Anda dapat dengan mudah menjalankan 6 timer terpisah, masing-masing pada 60MHz, memberikan Anda resolusi yang lebih baik dari 20ns.
Berikut ini contoh yang saya pecahkan dengan cepat untuk menunjukkan kepada Anda hal-hal yang dapat Anda lakukan dengannya. Saya punya 6 timer terpisah, semuanya berjalan dari jam bus, yang bisa mencapai 67MHz. Ada pin pemicu yang memulai semua penghitung waktu berjalan, dan 6 pin lainnya, yang masing-masing menyebabkan acara penangkapan di penghitung waktu. Register status memungkinkan kode Anda untuk memantau timer mana yang menangkap pulsa. Kode dapat membaca nilai dari penghitung waktu.
sumber
Jawaban revisi : Osiloskop penyimpanan digital cepat atau perangkat penghitung frekuensi.
Jawaban lama :
Secara sederhana, "mikrokontroler tercepat yang dapat Anda temukan", dengan alasan bahwa semakin cepat jam / pengambilan sampel Anda, semakin akurat Anda. MSP430 bukan perangkat yang cepat.
STM32 32-bit dan akan berjalan lebih cepat, plus memiliki papan dev & alat murah yang sama tersedia, tetapi bahkan itu cukup lambat dibandingkan dengan beberapa hal yang lebih kuat yang tersedia (Raspberry Pi @ 800MHz - 1GHz (Overclocked)). Namun secara umum, semakin cepat Anda menjalankan semakin rumit prosesor sehingga dapat terjadi pertukaran dalam kurva pembelajaran.
Ditambahkan: Benji benar, Anda (mungkin) juga memerlukan osilator yang akurat untuk mikro jika Anda ingin pengukuran yang sangat akurat (Anda tidak benar-benar menentukan batas kesalahan dalam pertanyaan Anda).
sumber