Entrenador de Reflejos y Coordinación

Hace 6 años hice un entrenador de reflejos con 6 pulsadores.

ENTRENADOR DE REFLEJOS – IMPROVES YOUR REACTION TIME

Después hice un mural de madera, y cambié los pulsadores por otros de gran tamaño, pudiendo controlar todo desde un PC mediante un software hecho a medida.

Mural con pulsadores (Entrenador de reflejos)

Con el software Reflejos.exe es posible controlar los tiempos, mostrar los intervalos entre pulsaciones, modificar las secuencias de los pulsadores, almacenar los tiempos de hasta 25 jugadores y mostrar su progresión mediante gráficas.

Software:Reflejos.exe (Control del juego/Prácticas QWERTY)

Posteriormente  hice un reloj LED con tecnología SMD, diseñando los PCB’s de la CPU y los dígitos numéricos. El PCB de control del  reloj lo hice pensando en una placa de desarrollo, igual que Arduino, montando conectores en todos los pines del microcontrolador. La CPU del reloj está construída con el microcontrolador AT89S52, el mismo microcontralador que utilicé en el primer Entrenador de Reflejos que hice, pero con encapsulado SMD.

Construye un Reloj SMD

En esta ocasión he actualizado el firmware del Entrenador de Reflejos y el software de control, para adaptarlos a esta nueva CPU y mejorar su operatividad. El nuevo montaje también es diferente, más enfocado a la rehabilitación y coordinación de movimientos que al juego. En este caso, los 6 pulsadores se pueden accionar con las manos y con los pies, y la conexión entre la CPU y el software de control es inalámbrica,  utilizando el módulo Bluetooth HC-05.

Entrenador de Reflejos y Coordinación

Nuevo esquema del Entrenador de Reflejos

Este es el nuevo esquema del Entrenador de Reflejos, con todas las conexiones adaptas al PCB del Reloj:

Esquema: Entrenador de Reflejos y Coordinación

Debido a la gran versatilidad de este PCB, en la adaptación no ha sido necesario cortar ninguna pista del circuito impreso ni hacer puentes entre ellas. Este PCB ya dispone de terminales de conexión para todos los periféricos que se necesitan conectar: los LED de señalización, los pulsadores, el display LCD y el módulo Bluetooth. El avisador acústico ya se utilizaba con el reloj, y va montado en el mismo PCB.

PCB: CPU del Reloj SERIE (Modificada)

Para la señalización óptica de los pulsadores he utilizado 2 LED SMD blancos por pulsador, en paralelo y alimentados a 5V, intercalando en serie una resistencia limitadora de 220 Ohmios en cada LED. Así la corriente máxima de cada LED es de aproximadamente 10mA. Con el fin de proteger la alimentación frente a un posible cortocircuito en el cableado, los 5 voltios que van hacia los pulsadores se alimentan de dos hilos diferentes, cada línea alimenta 3 pulsadores, y cada uno de estos hilos limita el consumo máximo intercalando una resistencia de 22 Ohmios en serie.

Para alimentar todo el conjunto he utilizado un conector microUSB. Así es posible utilizar cualquier cargador USB que tengamos disponible en casa. El consumo máximo de todo el circuito es inferior a 200mA.

PCB: microUSB

La programación y actualización del firmware del microcontrolador AT89S52 se realiza una vez montados todos los componentes en la placa, a través del conector ICSP. Lo ideal sería utilizar un programador ICSP comercial, pero si no lo tienes, podrías convertir en un momento un módulo Arduino en programador ICSP:

Programador ICSP con ARDUINO

Bluetooth HC-05

El módulo Bluetooth HC-05 hay que configurarlo antes de montarlo en la CPU.

Módulo HC-05

Para su configuración es necesario conectarlo a través de un interface serie con un PC, y con cualquier software Terminal y mediante comandos AT configurar su modo de funcionamiento como esclavo, y la velocidad a 57600 bps. Si se quiere, también se pueden modificar el nombre del dispositivo y su PIN de acceso a la conexión. La manera más fácil de configurar todo esto es a través de Arduino, utilizando su interface de comunicaciones serie para enviar los comandos AT al módulo  HC-05 y configurarlo.

Conexiones Arduino y HC-05 (configuración)

Al principio del código de configuración del módulo HC-05 he anotado los comandos AT más importantes, así como el modo de entrar en modo comandos AT. Dependiendo del tipo de módulo HC-05, el acceso a modo comandos es diferente, porque algunos módulos llevan un pulsador y otros no.

Bluetooth HC-05: Comandos AT

Acceso a descargas

Firmware para cargar en AT89S52: REFLEJOS_SMD_v1_02.HEX 

Configuración del módulo HC-05 con Arduino – DropBox: HC-05.rar

PCB de la CPU – PCBWay: Multipurpose_CPU_with_AT89S52 

Software de control – DropBox: Install_Reflejos.zip

Caja 3D – Thingiverse: Reflexes and Coordination Trainer

¿Necesitas fabricar un PCB?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos (PCB), pero no en todas podemos conseguir pequeñas tiradas a buen precio. Por suerte, ahora disponemos de Internet y es mucho más fácil que antes. Podemos buscar empresas en cualquier parte del mundo, y es más fácil encontrar un fabricante que haga nuestros prototipos (PCB) a buen precio. Una de las empresas más grandes del sector es PCBWay.

Logo: PCBWay

Ahora también puedes encargar trabajos 3D, mecanizados con CNC y fabricación de cajas metálicas o de plástico inyectado.

https://www.pcbway.es/

 

Reloj con control remoto

Desarrollo de un nuevo firmware para el kit EC1204B, reloj LED con esfera rotante. Con esta actualización es posible controlar todas las funciones del reloj a distancia, utilizando un interface serie RS-232, USB o Bluetooth.

Reloj controlado por Bluetooth

Configuración manual del reloj

El reloj FC-209 se puede configurar en modo manual, utilizando los 3 pulsadores que lleva en su parte trasera. A continuación se muestra el diagrama de configuración, válido para este kit (FC-209) como para el reloj de pared, mediante el uso de sus 3 pulsadores.

Diagrama de programación
Diagrama de programación

Tipos de interface serie

Con esta última actualización del firmware (5.1), es posible controlar y programar el reloj a distancia. Lo único que se necesita es conectar un interface serie con el reloj, ya sea por cable (RS-232/USB) o inalámbrico (Bluetooth). En la siguiente imagen se muestran las conexiones necesarias, para conectar un interface RS-232 con el reloj.

Interface RS-232 básico

En la siguiente imagen se muestran las conexiones entre el reloj y el interface serie, utilizando uno de tipo USB y otro Bluetooth
Conexión del interface BT con el reloj

Interface serie Bluetooth

Antes de conectar un interface de tipo Bluetooth con el reloj, es necesario configurar como mínimo su velocidad. El sistema Bluetooth permite la comunicación inalámbrica entre dispositivos, transmitiendo la información a la máxima velocidad que le permita el sistema. El terminal BT receptor dispone de un buffer en el que almacena los datos recibidos, y los entrega al equipo remoto con la velocidad (bps) a la que haya sido programado. En este caso, el reloj espera recibir los datos  a 4800 bps (4800,N,8,1)

Configuración del interface Bluetooth

Configuración remota del reloj

A través del interface serie y mediante una aplicación instalada en un PC o dispositivo móvil, es posible configurar y controlar el reloj en modo remoto. Los datos que espera recibir el reloj son siempre caracteres de texto, facilitando así el uso de cualquier software ‘Terminal’ y tecleando las cadenas de texto en su editor.

Lista de comandos serie (4800,N,8,1)

En caso de recibir información serie, el reloj enviará una respuesta indicando si ha recibido información correcta o ha detectado algún error. Pero siempre hay que tener la precaución de enviar los valores correctos, porque el reloj no analiza los datos que recibe, solamente comprueba los caracteres de control de inicio (color rojo) y los comandos (color verde y negro) que le indican lo que debe hacer con la información que recibe y guarda en memoria (color azul).

Actualizar el firmware del reloj

Para programar el micro-controlador de este kit de reloj, podemos utilizar un interface serie (ISP: In-system programming / ICSP : In-Circuit Serial Programming) . En la imagen siguiente podemos ver el conexionado que se debería utilizar entre el programador TL866A y el reloj.

Lo ideal sería utilizar un programador que tuviera dicho interface, o desmontar el chip y programarlo fuera.  En caso de que no dispongas de un programador, podrías hacerlo por ICSP con ARDUINO.

El archivo que necesitas para programar este reloj (firmware), lo puedes descargar de forma gratuita desde el siguiente enlace:

J_RPM_v5.1_EC1204B.HEX

Circuitos impresos

PCBWay es un fabricante de circuitos impresos para electrónica, especializado en la fabricación de prototipos de calidad profesional a un precio muy reducido. Por ejemplo, ahora puedes encargar 10 circuitos impresos de 10×10 cms, a doble cara y con serigrafía, por tan sólo 5 dólares.

Logo: PCBWay

https://www.pcbway.es/

 

Reparación y programación CPU-SMD

Reparación y programación del firmware en una CPU de tipo SMD. Comprobación del estado de las soldaduras del microprocesador, con la ayuda de un microscopio.

Microscopio para electrónica

Con el paso del tiempo, todos los dispositivos electrónicos han ido adoptando la tecnología SMD,  pudiendo así integrar más funciones en espacios pequeños y reduciendo notablemente sus costes de fabricación. Al mismo tiempo, las herramientas de trabajo para electrónica han ido evolucionando, siendo necesario el uso de lupas de aumento, cuando se necesita inspeccionar el estado de las soldaduras de los componentes SMD en el circuito impreso. La alternativa a la lupa, es utilizar un microscopio que consiga mantener un buen foco y calidad de la imagen, dejando la distancia suficiente entre la óptica y el PCB para poder realizar trabajos de soldadura.

Inspección de la CPU con el microscopio

Microscopio para electrónica, con GearBest

Reparación de una CPU con tecnología SMD

Un fallo muy común en cualquier dispositivo electrónico, es una soldadura fría o una pista del circuito impreso abierta. A pesar de que esta CPU nunca ha funcionado, ya que se trata de un montaje nuevo, siempre es aconsejable comprobar que todos sus componentes electrónicos sean del valor adecuado, y que todas las soldaduras estén bien hechas.

CPU vista en el microscopio

La mejor forma de comprobar si una soldadura está bien hecha o no, es mover el componente electrónico mientras se observa el punto de soldadura. Cuan se trata de componentes de tipo SMD, es necesario utilizar un alfiler o punzón bien afilado para mover los terminales y comprobar que no se muevan.

Pin desoldado

En el siguiente video se muestra todo el proceso a seguir, para comprobar y programar la CPU de un reloj digital con tecnología SMD.

Programar sistema horario 12/24 (assembler)

Programación de un reloj LED, para que pueda mostrar la hora en cualquier formato (12h-24h). Esta modificación se realiza en un ‘Reloj-Fecha-Cronómetro-Temperatura‘ con 4 dígitos de 7 segmentos LED, de control serie. El controlador de este reloj está construido a partir del microprocesaror AT89S52, con encapsulado de 44 pines (SMD).

Sistema horario

El sistema horario de 24 horas es una convención de medición del tiempo, en la que el día se contabiliza de medianoche a medianoche. Con formato de 24 horas, las horas se empiezan a contar a partir de la medianoche, y se presenta con los números comprendidos entre el 0 y 23.

Sistema horario de 12/24 horas

El sistema de 24 horas es el más utilizado en la actualidad, y el sistema de 12 horas se utiliza principalmente para la comunicación oral, porque es más intuitivo. A pesar  de que el sistema de 24 horas es el más usado en comunicaciones escritas, en algunos países lo denominan como horario militar o astronómico, y prefieren realizar la presentación de la hora utilizando el sistema tradicional de 12 horas.

Esta actualización se realiza en el Reloj SMD que mostré anteriormente:

Construye un Reloj SMD

Planteamiento al programar el reloj

Cuando se programa el firmware de un reloj, es importante saber si el display de presentación es multiplexado o no, así como el valor de tiempo mínimo a mostrar.

  • Cuando el display es multiplexado, el microprocesador tiene que enviar la información con una cadencia mucho más rápida,  siempre superior a la persistencia del ojo humano. Si se quiere evitar el efecto de parpadeo, la frecuencia de refresco del display debería ser como mínimo de 50 Hz.
  • La cadencia de lectura de la información horaria debe ser igual o superior al valor del tiempo mínimo que se quiera mostrar en el display. Si el reloj muestra décimas de segundos, el microprocesador tendría que leer la información del chip RTC con una cadencia mínima de 1/10 segundos, cada 100 mSeg.

Funcionamiento del reloj

A pesar de que el Reloj SMD no es multiplexado, porque la presentación se realiza enviando los datos en serie (registro de desplazamiento), lo he programado con una frecuencia de refresco muy alta.

CPU: Reloj SERIE

 

Display: Reloj SERIE

Esto lo hice así, porque utilicé la estructura de programa del reloj de esfera rotante FC-209, el cuál si era multiplexado.

Reloj LED con 2 alarmas

Antes de presentar la hora en el display por primera vez, el microprocesador tiene que leer la información del chip RTC (DS1302). Y si el reloj muestra segundos, la lectura se debería hacer que como mínimo una vez por segundo.

Frecuencia de refresco del display

Aprovechando las prestaciones y velocidad del microprocesador que he utilizado, decidí insertar la rutina de lectura del chip DS1302 (RTC) dentro de la rutina de refresco del display. Como se puede ver en la gráfica anterior,  la lectura se está haciendo con una cadencia de 926 veces por segundo.

Actualización del firmware

La nueva actualización del Reloj SMD, la puedes descargar de forma gratuita desde el siguiente enlace:

J_RPM_v2_RELOJ_SERIE.HEX

Con esta actualización es posible configurar el sistema de presentación horaria en el display, pudiendo elegir el sistema de 12/24 horas.  Para incorporar esta función, he utilizado el método más sencillo de hacerlo: Internamente todo funciona en modo 24 horas, y dependiendo del modo en el que se deba mostrar la hora, el programa pasará o no a través de las rutinas de conversión a formato de 12 horas. Y esto lo hará sólo  antes de enviar la hora al display, porque los menús de configuración siempre mostrarán la hora utilizando el formato de 24 horas. Así no será necesario modificar los menús de configuración, ni cambiar el sistema horario del chip DS1302 (RTC). A continuación os muestro el código que he añadido en esta actualización.

Rutinas de programación en assembler

Funcionamiento de la subrutina: ValAB

Funcionamiento de la rutina Val_AB

Menús de configuración

Los menús de configuración de esta versión (v2), no cambian con respecto a la  versión anterior (v1). En esta versión aparece un nuevo menú, y es para configurar el sistema de presentación horaria (12/24) del reloj.

Menús de configuración del reloj

 

Interruptor temporizado

Construcción de un interruptor temporizado, ajustable entre 1 y 99 minutos. Este circuito permite un gran ahorro eléctrico, si lo utilizamos para desconectar de forma automática los equipos/electrodomésticos en periodos nocturnos. Por ejemplo una caldera eléctrica para el agua caliente, alumbrado permanente de una habitación infantil, equipos de calefacción o aire acondicionado en habitaciones, etc.

Funcionamiento del circuito

Este interruptor temporizado está construido a partir del micro-controlador AT89S52. Se ha utilizado este modelo  de 40 pines, con el fin de simplificar la construcción del circuito y permitir su programación sin necesidad de desmontar el micro-controlador del circuito.

CPU: Interruptor temporizado

Además, así es posible utilizar Arduino como programador ICSP:

Programador ICSP con ARDUINO

Firmware

El archivo necesario para programar el AT89S52, se puede descargar de forma gratuita desde el siguiente enlace:

Firmware: J_RPM_v1_TIEMPO.HEX

Este interruptor temporizado se activa mediante el cierre de un pulsador o interruptor. Al conectar la alimentación se recarga el contador de minutos, y empieza a descontar el tiempo. El tiempo (minutos)  se configura mediante el estado de los 8 interruptores DIP (ver la tabla binaria en el esquema), pero limitando el valor máximo a 99 minutos. El valor del temporizador se muestra en dos dígitos de 7 segmentos (ánodo común), mostrando la actividad mediante el parpadeo del punto decimal de la unidad. Este punto parpadea al ritmo de 1 segundo, indicando el correcto funcionamiento del micro-procesador. Si no se necesitara mostrar el tiempo, no sería necesario montar los dos dígitos de 7 segmentos. Pero en este caso, sería conveniente montar un diodo LED en la salida dP  de las unidades (pin 25), con el fin de mostrar el correcto funcionamiento y activación del temporizador.

Esquema: Interruptor temporizado

Cuando finaliza el tiempo programado, los dos dígitos de 7 segmentos muestran guiones, pero sólo serán visibles si el interruptor de activación se mantiene cerrado (conexión permanente). Si el interruptor o pulsador de activación estuviera abierto, al abrirse el contacto del relé (Relay) se desconectaría la alimentación del equipo conectado… y también la alimentación del propio temporizador.

El consumo en reposo de este interruptor temporizado es nulo

Fuente de alimentación

La alimentación de este circuito es de 5 VDC, pudiendo utilizar un cargador USB que tengamos sin uso, en lugar del circuito que se muestra en el esquema y se ha utilizado en el montaje (transformador, rectificador, filtro y regulador de 5V).

Interior del interruptor temporizado

La potencia máxima que puede controlar este circuito dependerá del tamaño de los contactos del relé y pulsador o interruptor de activación que utilicemos, sin olvidar la sección del cableado.