Medição de tempo muito precisa

13

Vou medir tempos muito curtos com a maior precisão possível. O dispositivo receberá primeiro um pulso e dentro de 150 microssegundos mais seis, cada um com seus próprios fios. O tempo entre o primeiro sinal e cada um dos outros seis sinais deve ser medido com a maior precisão possível. A precisão deve ser de pelo menos 100 nanossegundos, mas mais é melhor.

Qual microcontrolador seria melhor para isso? Eu encontrei isso . Eles parecem ter um timer com período de 4 nanossegundos. Seria preciso o suficiente para mim.

Algum outro microcontrolador seria melhor fazer isso? Isso pode ser feito com o AVR?

Kestis
fonte
2
Eu acho que você está falando sobre precisão, não precisão. E se você tiver precisão de nanossegundos, mas o relógio subjacente estiver desativado em 10%? Então as medições não são precisas.
Kaz
A que distância estão os seis pulsos? Eles chegam em uma entrada comum ou em seis entradas separadas?
starblue
Eles têm todas as suas próprias entradas. Às vezes, os pulsos podem ocorrer todos ao mesmo tempo, mas geralmente ocorrem em momentos diferentes.
Kestis

Respostas:

8

A velocidade do microcontrolador nem sempre é o fator limitante. O MSP430 pode ser uma solução apropriada, não pelo fato de ser executado apenas até 25MHz, mas porque vários dispositivos MSP430 possuem o periférico Timer D, que permite um período de tempo de até 4ns (256MHz). Isso é mais rápido do que quase todos os microcontroladores existentes. Até o STM32 em suas versões mais recentes (F4) pode fazer apenas 180MHz.

O timer D está disponível nos dispositivos MSP430F51x1 e MSP43051x2, como o MSP430F5131.

No entanto, isso só resolve ser capaz de capturar o tempo. A grande questão é o que você faz com isso, porque o processamento em si será mais lento. Você pode experimentar o tempo entre dois pulsos, mas não poderá processar nenhum deles, se é isso que você quer dizer.

Gustavo Litovsky
fonte
Meu mal, não tinha totalmente RTFM do MSP430, principalmente porque o site da TI desencadeia convulsões pavlovianas de ódio.
John U
@ JohnU: Nunca tive essa reação. A verdade é que o OP não especificou muita informação sobre o que está fazendo, por isso é difícil dar uma sugestão adequada.
26613 Gustavo Litovsky
Processar não é problema. Há muitos segundos para fazer os cálculos depois que os tempos foram capturados e os algoritmos nem são complexos. Um MSP430 pode lidar com todos os seis pulsos ou deve haver mais deles?
Kestis
@ Kestis: O Timer D contém 6 registros comparativos de captura, e alguns MSP430 têm mais do que apenas um módulo Timer D, portanto, ele deve atender às suas necessidades.
26513 Gustavo Litovsky
4

O tempo para uma resolução de 100ns requer um temporizador rodando a 10 MHz. Muitos microcontroladores devem ser capazes de executar um timer tão rápido.

O problema surge quando você está tentando cronometrar a chegada de 6 sinais. Esses sinais estão todos no mesmo fio ou em um fio diferente?

Se eles estiverem todos no mesmo fio, é possível fazer isso com precisão em qualquer MCU com um único temporizador de 10 MHz. Ingenuamente, o código para fazer isso seria algo como isto:

wait for trigger signal
reset timer

wait for first signal
save timer value
reset timer

....

wait for sixth signal
save timer value
reset timer

O problema é que leva um tempo finito para redefinir o timer. Isso causa dois problemas:

  1. Os tempos medidos estariam errados em alguns 100ns, dependendo da sua implementação. No entanto, eles devem estar constantemente errados. Ou seja, errado exatamente pela mesma quantidade todas as vezes. Isso significa que você pode compensar facilmente adicionando uma pequena quantidade a cada medição.

  2. Haveria um tempo mínimo que você poderia medir. Se o pulso chegou 100ns após o anterior, você provavelmente sentirá falta. Não sei se há algo que você possa fazer sobre isso no software. Você precisará encontrar um microcontrolador capaz de lidar com vários pulsos no hardware.


Qual microcontrolador pode lidar com múltiplos pulsos no hardware? O Cypress PSoC ! Este é um microcontrolador que também contém blocos digitais configuráveis, o que significa que você pode facilmente ter 6 temporizadores separados em execução, cada um a 60MHz, oferecendo uma resolução melhor que 20ns.

6 temporizadores PSoC Cypress

Aqui está um exemplo que eu liguei rapidamente para mostrar o tipo de coisas que você poderia fazer com isso. Eu tenho 6 temporizadores separados, todos funcionando no relógio do barramento, que podem ir até 67MHz. Há um pino de gatilho que inicia todos os cronômetros em execução e outros 6 pinos, cada um dos quais causa um evento de captura no cronômetro. Um registro de status permite que seu código monitore quais cronômetros capturam um pulso. O código pode ler os valores fora dos temporizadores.

Rocketmagnet
fonte
Esse PSoC parece muito interessante. No entanto, eu preferiria o AVR ou o MSP430, porque eles são muito mais comuns.
Kestis
0

Resposta revisada : Um osciloscópio de armazenamento digital rápido ou, possivelmente, um dispositivo de contagem de frequência.

Resposta antiga :

Em termos simples, "o microcontrolador mais rápido que você pode encontrar", alegando que quanto mais rápido seu relógio / amostragem, mais preciso você pode ser. MSP430 não são dispositivos rápidos.

Os STM32 são de 32 bits e rodam mais rápido, além de ter placas e ferramentas de desenvolvimento igualmente baratas disponíveis, mas mesmo isso é bastante lento em comparação com algumas das coisas mais poderosas disponíveis (Raspberry Pi @ 800MHz - 1GHz (Overclocked)). Geralmente, porém, quanto mais rápido você se torna, mais complicado é o processador, para que haja uma troca na curva de aprendizado.

Adicionado: Benji está certo, você (pode) também precisa de um oscilador preciso para o micro, se desejar medições muito precisas (na verdade, você não especifica limites de erro na sua pergunta).

John U
fonte
Fundamentalmente, existem outros tipos de temporizadores, além do microcontrolador que coleta o sinal em um loop.
Nick Alexeev
E ajudaria se o microcontrolador tivesse um oscilador / cristal externo muito preciso conectado.
BenjiWiebe
Vocês dois estão certos, eu editei.
John U