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?
microcontroller
time
Kestis
fonte
fonte
Respostas:
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.
fonte
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:
O problema é que leva um tempo finito para redefinir o timer. Isso causa dois problemas:
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.
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.
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.
fonte
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).
fonte