Очень точное измерение времени


13

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

Какой микроконтроллер подойдет для этого? Я нашел это . Кажется, у них есть таймер с периодом 4 наносекунды. Это было бы достаточно точно для меня.

Был бы какой-нибудь другой микроконтроллер лучше сделать это? Можно ли это сделать с помощью AVR?


2
Я думаю, что вы говорите о точности, а не о точности. Что если у вас точность с точностью до наносекунды, но базовые часы выключены на 10%? Тогда измерения не точны.
Каз

Как далеко друг от друга находятся шесть импульсов? Они поступают на общий вход или на шесть отдельных?
звездный синий

У них есть все свои входы. Иногда импульсы могут приходить все одновременно, но обычно они приходят в разное время.
Кестис

Ответы:


8

Скорость микроконтроллера не всегда является ограничивающим фактором. MSP430 может быть подходящим решением не потому, что он работает только на частоте до 25 МГц, а потому, что несколько устройств MSP430 имеют периферийное устройство Timer D, которое обеспечивает период времени до 4 нс (256 МГц). Это быстрее, чем почти все микроконтроллеры. Даже STM32 в его последних версиях (F4) может работать только с частотой 180 МГц.

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

Однако это только решает возможность захватить время. Большой вопрос, что вы будете делать с ним, потому что сама обработка будет медленнее. Вы можете определить время между двумя импульсами, но вы не сможете выполнить какую-либо обработку между ними, если вы это имеете в виду.


Мой плохой, не полностью RTFM MSP430, в основном потому, что на сайте TI вызывает павловские конвульсии ненависти.
Джон У,

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

Обработка не проблема. Существует много секунд, чтобы выполнить вычисления после того, как время захвачено, а алгоритмы даже не сложны. Может ли один MSP430 обрабатывать все шесть импульсов или их должно быть больше?
Кестис

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

4

Время до разрешения 100 нс требует таймера, работающего на 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 нс, в зависимости от вашей реализации. Тем не менее, они должны быть последовательно неправильно. То есть неправильно каждый раз на одну и ту же сумму. Это означает, что вы можете легко компенсировать это, добавляя небольшое количество к каждому измерению.

  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.