Hacer un cronómetro automático para corredores, atletas y deportistas

Hacer un cronómetro automático para corredores, atletas y deportistas

En esta publicación vamos a construir un cronómetro que automáticamente inicia el cronómetro cuando el corredor comienza a correr y el cronómetro se detiene cuando el corredor llega al final. El tiempo transcurrido entre el punto inicial y el final se muestra en una pantalla LCD de 16 x 2.

Primero, comencemos por aprender a configurar un circuito de cronómetro Arduino simple y extremadamente preciso.

Un cronómetro es un dispositivo de reloj de tiempo controlado manualmente diseñado para medir la cantidad de tiempo que puede haber transcurrido desde un punto de tiempo en particular cuando se activó y para cuando finalmente se desactivó. Una variante más grande del mismo dispositivo se llama el cronómetro que se utiliza para controlar la acción a distancia y que normalmente se encuentra en estadios deportivos, etc.



Cronómetro mecánico vs electrónico

Anteriormente, los cronómetros mecánicos de mano tradicionales eran más comunes y todos los usaban con ese propósito.

En el sistema mecánico teníamos dos pulsadores para ejecutar las funciones de cronómetro. Uno para iniciar el cronómetro presionando una vez, y para detener el tiempo presionando el mismo botón una vez más para registrar el tiempo transcurrido ... el segundo botón se usó para reiniciar el reloj a cero.

El cronómetro mecánico funcionaba básicamente a través de la fuerza del resorte, lo que requería un período de cuerda manualmente girando la perilla moleteada en la parte superior del dispositivo del reloj.

Sin embargo, en comparación con los cronómetros digitales modernos, los tipos mecánicos pueden considerarse significativamente primitivos e inexactos en el rango de milisegundos.

Usando un Arduino

Y hoy, con la llegada del microcontrolador, estos cronómetros se han vuelto extremadamente precisos y confiables en el rango de microsegundos.

El circuito de cronómetro Arduino presentado aquí es uno de estos modernos diseños impulsados ​​por microcontroladores que es el más preciso que se puede esperar que esté a la par con los modernos dispositivos comerciales de cronómetro.

Aprendamos cómo construir el circuito de reloj de parada de Arduino propuesto:

Necesitará la siguiente lista de materiales para la construcción:

Hardware requerido

Un protector de teclado LCD Arduino (SKU: DFR0009)

Un protector de teclado LCD Arduino (SKU: DFR0009)

Una placa Arduino ONE

Arduino UNO

Un cable USB Arduino

arduino usb cable

Una vez que haya adquirido el material anterior y los haya conectado entre sí, solo se trata de configurar el siguiente código de boceto en su placa Arduino y observar la magia de las funciones del cronómetro.

El código

|_+_|

Agregar una pantalla de 7 segmentos

Ahora procedamos con los detalles sobre la construcción de un circuito de cronómetro usando una pantalla LED de 7 segmentos y Arduino. Exploraremos los conceptos relacionados con las interrupciones y los circuitos integrados de controladores de pantalla que son cruciales para comprender este proyecto. Este proyecto fue sugerido por el Sr. Abu-Hafss, quien es uno de los ávidos lectores de este sitio web.

Como ya sabemos, Stopwatch es un dispositivo que ayuda a rastrear un breve período de tiempo desde horas hasta un rango de milisegundos (principalmente). Casi todos los relojes de pulsera digitales baratos equipados con función de cronómetro, pero ninguno de los relojes puede dar el entusiasmo de hacer uno para nosotros y también encontrar un cronómetro con pantalla LED de 7 segmentos es excepcional.

El Sr. Abu-Hafss nos sugirió diseñar un cronómetro con 4 pantallas, dos para minutos y dos para segundos (MM: SS). Pero para la mayoría de nosotros puede que no sea un diseño factible, por lo que agregamos dos pantallas más para el rango de milisegundos, por lo que ahora el diseño propuesto estará en configuración MM: SS: mS.

Si solo necesita la configuración MM: SS por alguna razón, no necesita conectar las pantallas de 7 segmentos de rango de milisegundos y sus circuitos integrados de controlador, toda la funcionalidad del circuito aún no se verá afectada.

El circuito:

El cronómetro propuesto consta de seis IC 4026 que son controladores de pantalla de siete segmentos, seis pantallas LED de 7 segmentos, una placa Arduino, un par de botones y un par de resistencias de 10K.

Ahora entendamos cómo conectar el IC 4026 a la pantalla de 7 segmentos.

La pantalla de 7 segmentos puede ser cualquier pantalla de cátodo común de cualquier color. La pantalla de 7 segmentos puede apagarse fácilmente con un suministro de 5 V, por lo que es obligatoria una resistencia de 330 ohmios en cada segmento de la pantalla.

Ahora veamos el diagrama de pines de IC 4026:

  • El pin # 1 es la entrada de reloj.
  • El pin # 2 está desactivado por reloj, deshabilita el recuento en la pantalla si este pin es alto.
  • El pin # 3 está habilitado para visualización si este pin está bajo, la pantalla se apagará y viceversa.
  • El pin # 5 es de ejecución, que se vuelve alto cuando IC cuenta 10.
  • Los pines 6, 7, 9, 10, 11, 12, 13 son salidas de pantalla.
  • El pin # 8 es GND.
  • El pin # 16 es Vcc.
  • El pin n. ° 15 se restablece, si subimos este pin, la cuenta se vuelve cero.
  • Los pines n. ° 4 y n. ° 14 no se utilizan.

Diagrama de conexión de pantalla:

Diagrama de conexión de la pantalla LCD:

Cualquiera de los pines GND de la pantalla de 7 segmentos se puede conectar a tierra. El IC debe estar alimentado por una fuente de 5V o el pin de salida de 5V de Arduino.

El esquema anterior para una sola pantalla, repita lo mismo para otras cinco pantallas.

Aquí está el resto del esquema:

Cronómetro con Arduino con pantalla de 7 segmentos

El circuito se puede alimentar con una batería de 9V. Aquí se proporcionan dos botones, uno para iniciar el tiempo y otro para detener. Al presionar el botón de reinicio en Arduino, el recuento de tiempo se reiniciará a cero en la pantalla.

Los dos pulsadores están conectados a los pines n. ° 2 y n. ° 3 que son interrupciones de hardware del microcontrolador Arduino / Atmega328P.

Entendamos qué es la interrupción:

Hay dos tipos de interrupciones: interrupción de hardware e interrupción de software. Aquí estamos usando solo la interrupción de hardware.

Una interrupción es una señal para el microcontrolador, que hará que el microcontrolador responda inmediatamente a un evento.

Solo hay dos pines de interrupción de hardware en las placas Arduino con los pines n. ° 2 y n. ° 3 del microcontrolador ATmega328P. Arduino mega tiene más de dos pines de interrupción de hardware.

Los microcontroladores no pueden realizar dos funciones al mismo tiempo. Por ejemplo, comprobar la presión de un botón y contar números.

Los microcontroladores no pueden ejecutar dos eventos simultáneamente, si escribimos un código para verificar la presión del botón y contar los números, la presión del botón se detectará solo cuando el microcontrolador lea el código de detección de la presión del botón, el resto del tiempo (cuenta los números) el el botón no funciona.

Por lo tanto, habrá un retraso en la detección de la presión del botón y, por alguna razón, si el código se detiene temporalmente, es posible que la presión del botón nunca se detecte. Para evitar este tipo de problemas se introduce la interrupción.

La señal de interrupción siempre tiene la máxima prioridad, la función principal (líneas principales de código) se detendrá y ejecutará la función (otra pieza de código) asignada para esa interrupción en particular.

Esto es muy importante para aplicaciones de tiempo crítico como cronómetros o sistemas de seguridad, etc., donde el procesador necesita tomar medidas inmediatas en respuesta a un evento.

En Arduino asignamos interrupción de hardware como:

attachInterrupt (0, inicio, RISING)

  • “0” significa el número de interrupción cero (en los microcontroladores todo comienza desde cero) que es el pin # 2.
  • 'Inicio' es el nombre de la función de interrupción, puede nombrar cualquier cosa aquí.
  • “RISING” si el pin # 2 (que es la interrupción cero) sube, la función de interrupción se ejecuta.

attachInterrupt (1, Stop, RISING)

  • “1” significa la interrupción número uno que es el pin # 3.
  • 'Detener' es el nombre de la interrupción.

También podemos reemplazar 'RISING' con 'FALLING', ahora cuando el pin de interrupción pasa a BAJO, la función de interrupción se ejecuta.

También podemos reemplazar 'RISING' con 'CHANGE', ahora siempre que el pin de interrupción va de alto a bajo o de bajo a alto, se ejecuta la función de interrupción.

La función de interrupción se puede asignar de la siguiente manera:

void start () // start es el nombre de la interrupción.

{

// programa aquí

}

La función de interrupción debe ser lo más corta posible y la función delay () no se puede utilizar.

Eso concluye que la interrupción del software de interrupción de hardware relacionada con Arduino se explicará en un artículo futuro.

Ahora sabe por qué conectamos los botones pulsadores de inicio y parada para interrumpir los pines.

Conecte el circuito según el diagrama, el resto del circuito se explica por sí mismo.

Programa:

|_+_|
Ahora que concluye el código.

Cronómetro especialmente desarrollado para los atletas

Finalmente, aprendamos cómo los conceptos anteriores pueden actualizarse realmente para los atletas que desean desarrollar sus habilidades para correr sin depender de otros para el inicio y la detención necesarios del temporizador / cronómetro. Es mejor iniciar automáticamente el temporizador detectando su movimiento que si alguien inicia / detiene el cronómetro, lo que también puede agregar su tiempo de reacción.

NOTA: Este proyecto está diseñado para medir el tiempo entre el punto 'A' y el punto 'B' cubierto por UN usuario a la vez.

La configuración consta de dos láseres colocados en el punto de inicio y el punto final, dos LDR también se colocan frente a dos módulos de láser. Cuando el atleta interrumpe el láser de 'inicio', el tiempo comienza a calcular y cuando el atleta llega al final, interrumpe el láser de 'finalización' y el cronómetro se detiene y muestra el tiempo transcurrido entre dos puntos. Este es el método utilizado para medir el tiempo transcurrido en la idea propuesta.

Veamos todos y cada uno de los componentes del circuito en detalle.

Detalles de funcionamiento de los componentes

El circuito se mantiene bastante simple, consta de un módulo LCD de 16 x 2, algunas resistencias, dos LDR y un botón pulsador.

La interfaz entre LCD y arduino es estándar, podemos encontrar una conexión similar en muchos otros proyectos basados ​​en LCD.

Se utilizan dos pines analógicos A0 y A1 para detectar interrupciones del láser. El pin analógico A2 está conectado con un pulsador que se utiliza para armar el cronómetro.

Tres resistencias, dos 4.7K y una 10K son resistencias desplegables que ayudan a que los pines de entrada permanezcan bajos.

Se proporciona un potenciómetro de 10K para ajustar el contraste en el módulo LCD para una visibilidad óptima.

El circuito propuesto se ha diseñado con mecanismo de detección de fallas para láseres. Si alguno de los láser tiene fallas o no está alineado correctamente con LDR, muestra un mensaje de error en la pantalla LCD.

· Si el láser de INICIO no funciona, muestra 'el láser de inicio no funciona'

· Si el láser STOP no está funcionando, muestra 'el láser 'stop' no funciona'

· Si ambos láseres no funcionan, muestra 'Ambos láseres no funcionan'

· Si ambos láseres funcionan correctamente, se muestra 'Ambos láseres funcionan bien'

El mensaje de error aparece hasta que el módulo láser se fija o se alinea correctamente con LDR.

Una vez que este paso está libre de problemas, el sistema pasa al modo de espera y muestra '-sistema en espera-'. En este punto, el usuario puede armar la configuración presionando el botón en cualquier momento.

Una vez que se presiona el botón, el sistema está listo para detectar el movimiento del usuario y muestra 'El sistema está listo'.

El corredor puede estar a pocos centímetros del láser de 'inicio'.

Si el láser de 'inicio' se interrumpe, el tiempo comienza a contar y aparece 'El tiempo se está calculando ...' El tiempo se calcula en el fondo.

El tiempo transcurrido no se mostrará hasta que el corredor alcance / interrumpa el láser de 'parada'. Esto se debe a que mostrar el tiempo transcurrido en la pantalla LCD, como lo hace el cronómetro tradicional, requiere que se ejecuten varias instrucciones adicionales en el microcontrolador, lo que deteriora significativamente la precisión de la configuración.

NOTA: Presione el botón de reinicio en arduino para borrar las lecturas.

Cómo configurar el circuito en pista de atletismo:

Utilice cables gruesos para conectar entre los LDR y el circuito arduino, ya que la distancia entre estos dos puede estar a varios metros de distancia y el voltaje no debe caer significativamente. La distancia entre LDR1 y LDR2 puede ser de unos cientos de metros como máximo.

Cómo montar LDR:

El LDR debe montarse dentro de un tubo hueco opaco y la parte frontal también debe estar cubierta y solo se hace un orificio de pocos milímetros de diámetro para permitir la entrada del rayo láser.

El LDR debe protegerse de la luz solar directa, ya que no puede diferenciarse del rayo láser y otras fuentes de luz y es posible que no registre el movimiento del usuario.

Código de programa:

|_+_|

Prototipo del autor:

Actualización con una función de temporizador dividido

El circuito de cronómetro automático propuesto con temporizador dividido es una extensión del circuito de cronómetro automático, donde el cronómetro registra el tiempo automáticamente tan pronto como el corredor solo abandona el punto de inicio y el temporizador se detiene y muestra el tiempo transcurrido cuando el corredor llega al punto final.

Introducción

Este proyecto fue sugerido por uno de los ávidos lectores de este sitio web, el Sr. Andrew Walker.

En este proyecto, estamos introduciendo 4 LDR más para medir el tiempo parcial del corredor en solitario. Hay 6 LDR en total, todos pueden colocarse en la pista de atletismo con una distancia uniforme entre ellos o según las circunstancias y la elección del usuario.

La mayor parte del hardware se mantiene sin cambios, excepto la adición de 4 LDR, pero el código ha sufrido una gran modificación.

Diagrama esquemático que muestra el tiempo fraccionado:

Cronómetro automático con tiempo fraccionado

El circuito anterior consta de pocos componentes y es apto para principiantes. No se requiere más explicación, solo cablee según el diagrama del circuito.

Cómo cablear LDR:

El LDR 2 se muestra en el diagrama del circuito principal, conecte 4 LDR más en paralelo como se muestra en el diagrama anterior.

Diagrama de distribución:

Lo anterior es la disposición básica sobre cómo colocar el láser. Tenga en cuenta que la distancia entre los LDR puede ser elegida por el usuario en función de la longitud de la pista.

Programa:

|_+_|

Cómo operar este cronómetro automático:

• Con la configuración completa, encienda los láseres primero y luego encienda el circuito Arduino a continuación.
• Si todos los láseres están alineados correctamente con los LDR, la pantalla no mostrará mensajes de error. Si los hay, alinéelos correctamente.
• Ahora el circuito muestra 'El sistema está en espera'. Ahora presione el botón 'Inicio' y se mostrará 'El sistema está listo'.
• En este punto, cuando el jugador en solitario interrumpe el haz de luz LDR 1, el temporizador comienza y muestra 'Se está calculando el tiempo ...'
• Tan pronto como el jugador alcanza el punto final, es decir, LDR 6, el temporizador se detiene y muestra el tiempo fraccionado de 5 registrados por el circuito.
• El usuario tiene que presionar el botón de reinicio en el arduino para reiniciar el temporizador.
¿Por qué este cronómetro automático no puede mostrar el tiempo en vivo en la pantalla como lo hace el cronómetro tradicional (sino que muestra un texto estático 'El tiempo se está calculando ...')?
Para mostrar el tiempo en tiempo real, Arduino tiene que ejecutar instrucciones adicionales en la pantalla LCD. Esto agregará unos microsegundos a unos pocos milisegundos de retraso al fragmento de código de seguimiento del tiempo principal, lo que dará lugar a resultados inexactos.

Si tiene más consultas, exprese a través de la sección de comentarios.




Anterior: Arduino LCD KeyPad Shield (SKU: DFR0009) Hoja de datos Siguiente artículo: Circuito generador de luz RGB aleatorio Arduino