Дуже точне вимірювання часу


13

Я буду вимірювати дуже короткі рази якомога точніше. Пристрій отримає спочатку один імпульс і протягом 150 мікросекунд ще шість, кожен по своєму проводу. Час між першим сигналом та кожним із шести інших сигналів слід вимірювати якомога точніше. Точність повинна бути не менше 100 наносекунд, але більше - краще.

Який мікроконтролер буде найкращим для цього? Я знайшов це . У них, здається, є таймер з періодом 4 наносекунди. Це було б для мене досить точно.

Чи краще було б це зробити якийсь мікроконтролер? Чи можна це зробити за допомогою AVR?


2
Я думаю, ти говориш про точність, а не точність. Що робити, якщо ви маєте наносекундну точність, але базовий годинник вимкнено на 10%? Тоді вимірювання не є точними.
Каз

Наскільки далеко один від одного шість імпульсів? Вони надходять на загальний внесок або на шість окремих?
starblue

У них є всі власні дані. Імпульси іноді можуть надходити все одночасно, але зазвичай вони приходять в різний час.
Кестіс

Відповіді:


8

Швидкість мікроконтролера не завжди є обмежуючим фактором. MSP430 може бути відповідним рішенням не тому, що він працює лише до 25 МГц, а тому, що декілька пристроїв MSP430 мають периферійний блок Timer D, який дозволяє тривалістю до 4ns (256 МГц). Це швидше, ніж майже всі мікроконтролери там. Навіть STM32 в останніх версіях (F4) може робити лише 180 МГц.

Таймер D доступний на пристроях MSP430F51x1 та MSP43051x2, таких як MSP430F5131.

Однак це вирішує лише можливість захоплення часу. Велике питання - що ви робите з цим, оскільки сама обробка буде повільнішою. Ви можете взяти вибірку часу між двома імпульсами, але ви не зможете зробити жодну обробку між ними, якщо це саме ви маєте на увазі.


Мій поганий, не мав повністю RTFM MSP430, головним чином тому, що веб-сайт TI викликає напівловій судоми ненависті.
Джон У

@JohnU: Ніколи не було такої реакції. Правда в тому, що ОП не вказала багато інформації про те, що він робить, тому важко дати належну пропозицію.
Густав Литовський

Обробка не проблема. Проводити обчислення потрібно багато секунд після того, як час був захоплений, а алгоритми навіть не складні. Чи може один MSP430 обробляти всі шість імпульсів або їх повинно бути більше?
Кестіс

@Kestis: Таймер D містить 6 регістрів захоплення порівняння, а деякі MSP430 мають більше, ніж один модуль Timer D, тому він повинен відповідати вашим вимогам.
Густаво Литовський

4

Час дозволу до 100ns вимагає таймера, що працює на частоті 10 МГц. Багато мікроконтролерів повинні бути здатні запускати таймер так швидко.

Проблема виникає, коли ви намагаєтесь вчасно отримати 6 сигналів. Це всі сигнали на одному дроті чи кожен на іншому дроті?

Якщо вони всі на одному дроті, можливо, це можливо зробити точно в будь-якому MCU з одним таймером 10 МГц. Наївно, код для цього виглядав би приблизно так:

wait for trigger signal
reset timer

wait for first signal
save timer value
reset timer

....

wait for sixth signal
save timer value
reset timer

Проблема полягає в тому, що для скидання таймера потрібно обмежений час. Це спричиняє дві проблеми:

  1. Виміряний час було б неправильним на кілька 100с, залежно від вашої реалізації. Однак вони повинні постійно помилятися. IE помиляється точно однаковою кількістю кожного разу. Це означає, що ви можете легко компенсувати це, додавши невелику кількість до кожного вимірювання.

  2. Існував би мінімальний час, який ви могли б виміряти. Якщо який-небудь імпульс прибув на 100н після попереднього, то ви, ймовірно, його пропустите. Я не знаю, чи можна щось зробити з цим програмним забезпеченням. Вам доведеться знайти мікроконтролер, який може обробляти декілька імпульсів апаратного забезпечення.


Який мікроконтролер може обробляти декілька імпульсів апаратних засобів? Cypress PSoC ! Це мікроконтролер, який також містить настроювані цифрові блоки, це означає, що ви можете легко працювати з 6 окремими таймерами, кожен з частотою 60 МГц, що дає вам краще роздільну здатність, ніж 20 секунд.

6 таймерів PSoC Cypress

Ось приклад, який я швидко зібрав, щоб показати вам те, що ви можете зробити з ним. У мене є 6 окремих таймерів, усі працюють на тактовій шині, яка може досягати 67 МГц. Існує тригерний штифт, який запускає всі запущені таймери, та 6 інших штифтів, кожен з яких викликає в таймері подію захоплення. Реєстр статусу дозволяє вашому коду відстежувати, які таймери фіксують імпульс. Код може читати значення з таймерів.


Цей PSoC здається дуже цікавим. Однак я вважаю за краще AVR або MSP430, оскільки вони набагато частіше зустрічаються.
Кестіс

0

Переглянута відповідь : Швидкий осцилограф або цифровий накопичувач частоти.

Стара відповідь :

Простіше кажучи, "найшвидший мікроконтролер, який ви можете знайти", виходячи з того, що чим швидше ваш годинник / вибірки, тим точніше ви можете бути. MSP430 - це не швидкі пристрої.

STM32 є 32-розрядні і працюватимуть швидше, а також доступні аналогічні дешеві плати та інструменти для розробників, але навіть це досить повільно порівняно з деякими більш потужними матеріалами (Raspberry Pi @ 800MHz - 1GHz (Overclocked)). Однак, як правило, чим швидше ви переходите, тим складніше процесор, тому може бути компроміс у кривій навчання.

Додано: Бенджі має рацію, вам (можливо) також потрібен точний осцилятор для мікро, якщо ви хочете дуже точні вимірювання (ви дійсно не визначаєте межі помилок у своєму питанні).


По суті, існують інші типи таймерів, крім мікроконтролера, що відбирає сигнал в циклі.
Нік Алексєєв

І це допоможе, якщо до мікроконтролера приєднаний дуже точний зовнішній генератор / кристал.
BenjiWiebe

Ви обоє праві, я відредагував.
Джон У
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.