Medición de tiempo muy precisa

12

Voy a medir tiempos muy cortos con la mayor precisión posible. El dispositivo recibirá primero un pulso y, en 150 microsegundos, seis más, cada uno con sus propios cables. El tiempo entre la primera señal y cada una de las otras seis señales debe medirse con la mayor precisión posible. La precisión debe ser de al menos 100 nanosegundos, pero más es mejor.

¿Qué microcontrolador sería mejor para esto? He encontrado esto . Parece que tienen un temporizador con un periodo de 4 nanosegundos. Sería lo suficientemente preciso para mí.

¿Sería mejor otro microcontrolador para hacer esto? ¿Se puede hacer esto con AVR?

    
pregunta Kestis

3 respuestas

7

La velocidad del microcontrolador no es siempre el factor limitante. El MSP430 puede ser una solución adecuada, no por el hecho de que solo funciona hasta 25MHz, sino porque varios dispositivos MSP430 tienen el periférico Timer D, que permite hasta 4ns de tiempo (256MHz). Esto es más rápido que casi todos los microcontroladores que hay. Incluso el STM32 en sus últimas versiones (F4) solo puede hacer 180MHz.

El temporizador D está disponible en dispositivos MSP430F51x1 y MSP43051x2 como el MSP430F5131.

Sin embargo, eso solo soluciona poder capturar el tiempo. La gran pregunta es qué hacer con él porque el procesamiento en sí será más lento. Puede muestrear el tiempo entre dos pulsos, pero no podrá hacer ningún procesamiento entre ellos, si eso es lo que quiere decir.

    
respondido por el Gustavo Litovsky
4

La sincronización a una resolución de 100ns requiere un temporizador que funcione a 10MHz. Muchos microcontroladores deben ser capaces de ejecutar un temporizador tan rápido.

El problema surge cuando intentas cronometrar la llegada de 6 señales. ¿Todas estas señales están en el mismo cable, o cada una en un cable diferente?

Si están todos en el mismo cable, entonces es posible hacerlo con precisión en cualquier MCU con un solo temporizador de 10 MHz. De manera ingenua, el código para hacer esto se vería así:

wait for trigger signal
reset timer

wait for first signal
save timer value
reset timer

....

wait for sixth signal
save timer value
reset timer

El problema es que lleva un tiempo limitado para restablecer el temporizador. Esto causa dos problemas:

  1. Los tiempos medidos serían incorrectos por unos pocos 100 ns, dependiendo de su implementación. Sin embargo, deberían estar constantemente equivocados. ES DECIR. mal por exactamente la misma cantidad cada vez. Esto significa que puede compensarlo fácilmente agregando una pequeña cantidad a cada medición.

  2. Habría un tiempo mínimo que podrías medir. Si el pulso llegó 100 ns después del anterior, entonces probablemente lo extrañará. No sé si hay algo que puedas hacer al respecto en el software. Tendrá que encontrar un microcontrolador que pueda manejar múltiples pulsos en hardware.

¿Qué microcontrolador puede manejar múltiples pulsos en hardware? El Cypress PSoC ! Este es un microcontrolador que también contiene bloques digitales configurables, lo que significa que puede tener fácilmente 6 temporizadores separados funcionando, cada uno a 60MHz, lo que le brinda una resolución mejor que 20 ns.

Este es un ejemplo que hice rápidamente para mostrarte el tipo de cosas que podrías hacer con él. Tengo 6 temporizadores separados, todos funcionando fuera del reloj del bus, que pueden llegar hasta 67MHz. Hay un pin de activación que inicia la ejecución de todos los temporizadores y otros 6 pines, cada uno de los cuales provoca un evento de captura en el temporizador. Un registro de estado le permite a su código monitorear qué temporizadores capturan el pulso. El código puede leer los valores de los temporizadores.

    
respondido por el Rocketmagnet
0

Respuesta revisada : un osciloscopio de almacenamiento digital rápido o, posiblemente, un dispositivo de contador de frecuencia.

Respuesta anterior :

En términos simples, "el microcontrolador más rápido que puede encontrar", ya que cuanto más rápido sea su reloj / muestreo, más preciso podrá ser. Los MSP430 no son dispositivos rápidos.

Los STM32 son de 32 bits y se ejecutarán más rápido, además de tener tableros de desarrollo y amp; herramientas disponibles, pero incluso eso es bastante lento en comparación con algunas de las cosas más potentes disponibles (Raspberry Pi @ 800MHz - 1GHz (Overclocked)). Sin embargo, en general, cuanto más rápido se vaya, más complicado será el procesador, por lo que puede haber una compensación en la curva de aprendizaje.

Añadido: Benji tiene razón, usted (quizás) también necesite un oscilador preciso para el micro si quiere mediciones muy precisas (en realidad no especifica los límites de error en su pregunta).

    
respondido por el John U

Lea otras preguntas en las etiquetas