Construí un proyecto usando un microcontrolador Arduino para administrar fotografías de alta velocidad de un rifle de aire, como globos.
Tengo un interruptor de contacto en el gatillo. Cuando eso introduce un 1 lógico en mi programa Arduino, le digo a la cámara que dispare el obturador, apago las luces LED de la habitación y empiezo a buscar el pellet del rifle de aire para romper un rayo de luz LED que se encuentra frente al cañón de la pistola. Cuando eso sucede, mi programa cronometra la cantidad de tiempo que tarda el pellet en romper una segunda viga que está exactamente 2 pulgadas pasada la primera. Mi programa usa la demora entre los 2 eventos para calcular la velocidad del pellet y multiplica por la distancia al objetivo que he ingresado en el Arduino.
A la hora calculada, mi plataforma utiliza un aislador óptico de estado sólido para cerrar el contacto en un instante.
Todo funciona bien, hasta cierto punto. Escribí el código Arduino que trata con los puertos de E / S directamente en lugar de utilizar las funciones de Arduino para minimizar la latencia de las entradas.
Sin embargo, el Arduino es relativamente lento y se necesitan varios ciclos de instrucciones para responder a un evento desencadenante. Eso significa que mi tiempo calculado está limitado a múltiplos del tiempo de respuesta, lo que significa que mi tiempo para disparar el flash a menudo está apagado en una cantidad pequeña pero importante.
Lo que me gustaría hacer es tener un chip de reloj en tiempo real programable preciso de microsegundos que pueda disparar en una señal de flanco ascendente, hacer que mida la demora al segundo sensor, calcular la velocidad del proyectil y la demora requerida hasta que el proyectil alcanza la distancia designada para apuntar, y luego dispara una lógica 1 en ese momento con una precisión de microsegundos.
La mayoría de los chips de reloj en tiempo real que he visto emiten el tiempo sobre una línea serie, lo cual sería demasiado lento para esta aplicación. Incluso para mi aplicación de rifle de aire, el pellet se atascaría en la "trampa de bala" al final del objetivo antes de que el primer valor haya terminado de enviarse a mi microcontrolador.
Actualmente estoy trabajando con rifles de aire comprimido, pero espero cambiar a balas de calibre .22, que pueden moverse a una velocidad mayor que la del sonido.
¿Hay algún chip de reloj en tiempo real programable de alta precisión que pueda usar para esta aplicación? ¿O quizás un circuito que podría construir con un cristal de cuarzo, un contador digital y una matriz de puertas programables?
P.S. Aquí hay un enlace a algunos de los resultados de mi configuración actual. Cuando funciona, los resultados son muy atractivos: