Pengukuran waktu yang sangat akurat

13

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?

Kestis
sumber
2
Saya pikir Anda berbicara tentang presisi, bukan akurasi. Bagaimana jika Anda memiliki ketepatan nanosecond, tetapi clock yang mendasarinya mati sebesar 10%? Maka pengukurannya tidak akurat.
Kaz
Seberapa jauh jarak enam pulsa? Apakah mereka tiba pada input yang sama atau pada enam input yang terpisah?
starblue
Mereka memiliki semua input mereka sendiri. Denyut nadi kadang-kadang bisa datang sekaligus pada waktu yang sama tetapi biasanya datang pada waktu yang berbeda.
Kestis

Jawaban:

8

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.

Gustavo Litovsky
sumber
Buruknya saya, belum sepenuhnya RTFM dari MSP430, terutama karena situs web TI memicu gejolak kebencian Pavlovian.
John U
@ JohnU: Tidak pernah bereaksi seperti itu. Yang benar adalah OP tidak merinci banyak informasi tentang apa yang dia lakukan sehingga sulit untuk memberikan saran yang tepat.
Gustavo Litovsky
Pemrosesan tidak masalah. Ada banyak detik untuk melakukan perhitungan begitu waktu telah ditangkap dan algoritmenya bahkan tidak rumit. Bisakah satu MSP430 menangani keenam pulsa atau haruskah ada lebih dari itu?
Kestis
@Kestis: Timer D berisi register menangkap perbandingan 6, dan beberapa MSP430 memiliki lebih dari satu modul Timer D, sehingga harus sesuai dengan kebutuhan Anda.
Gustavo Litovsky
4

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:

wait for trigger signal
reset timer

wait for first signal
save timer value
reset timer

....

wait for sixth signal
save timer value
reset timer

Masalahnya adalah bahwa dibutuhkan waktu terbatas untuk mengatur ulang timer. Ini menyebabkan dua masalah:

  1. 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.

  2. 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.

6 Pengatur Waktu PSoC Cypress

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.

Roket
sumber
PSoC itu sepertinya sangat menarik. Namun saya lebih suka AVR atau MSP430 karena mereka jauh lebih umum.
Kestis
0

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).

John U
sumber
Pada dasarnya, ada jenis timer lain, selain mikrokontroler yang mengambil sampel sinyal dalam satu lingkaran.
Nick Alexeev
Dan itu akan membantu jika mikrokontroler memiliki osilator eksternal yang sangat akurat / kristal terpasang.
BenjiWiebe
Anda berdua benar, saya sudah mengedit.
John U