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/

 

¿Soldadura en pasta?

En más de una ocasión me han preguntado si es mejor utilizar el estaño en pasta para soldar los componentes SMD. Está claro que para un fabricante la respuesta sería muy clara, porque la soldadura en pasta permite abaratar los costes de producción, y además es posible reducir el tamaño de los dispositivos electrónicos al máximo.

Arrastre de soldadura

Para las reparaciones y pequeños montajes, yo nunca he utilizado el estaño en pasta. En todas las reparaciones que se puedan hacer a mano, siempre he utilizado estaño en hilo y un soldador resistivo convencional. Lo más importante es elegir la punta del soldador, y el estaño más adecuados a la soldadura que se tenga que realizar. Con esto me refiero al diámetro y aleación del estaño, el tamaño de la punta del soldador, su temperatura, y el uso de flux en en algunos casos.

Soldando SMD-TQFP

Plancha de calor para soldar

Para hacer una prueba práctica, soldé un chip TQFP de 44 pines junto con 3 componentes SMD, en un PCB nuevo. Utilicé pasta de soldadura especial para utilizar con máscara (muy densa para dosificar con una jeringuilla), y una placa de calor de 400W.

Plancha de calor para soldar

La temperatura de esta placa es suficiente para fundir el estaño en pasta, y la temperatura máxima que pude medir en la superficie del circuito integrado fue de 210ºC.

Máscara (Stencil) con CNC

Como es muy complicado aplicar la pasta de soldar en un chip de 44 pines, con la ayuda de la CNC hice una máscara (Stencil). Como material utilicé una plancha de cobre de 0,2 mm de espesor, y para los otros 3 componentes SMD apliqué la pasta de soldar a mano.

Máscara TQFP44 con CNC

Para hacer las perforaciones en la máscara con la CNC, tomé todas las medidas del Datasheet del fabricante del chip, y las dibujé en el software SketchUp. Los cortes en la CNC los hice con una punta de grabado de 0,3mm., tamaño ligeramente inferior a las perforaciones de 0,4 mm.

Máscara TQFP44 en SketchUp

Resultado final

El funcionamiento de la plancha de calor fué bastante bueno, pero el exceso de pasta provocó que apareciesen bolas de estaño encima de los pines del circuito integrado… quizás tendría que haber reducido el ancho de las perforaciones de la máscara TQFP44 que hice con la CNC. El exceso de estaño lo tuve que retirar al final con un soldador convencional,  malla de desoldar y flux en gel.

Soldadura en pasta

También había un exceso de pasta en los demás componentes en los que apliqué la pasta de soldar con una pequeña espátula. Al ser una pasta bastante densa, no se puede utilizar una jeringilla, y es bastante complicado dosificar la pasta con una espátula.

Exceso de soldadura en pasta

Aunque resutado final de la soldadura con pasta es bueno, sigo pensando que me habría costado menos tiempo soldar todo a mano.

¿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/

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

 

Nuevo PCB + Sorteo

Diseño de un nuevo circuito impreso con 2 dígitos de 7 segmentos, LED SMD, incluyendo los dos puntos separadores y el punto decimal. Este circuito impreso es compatible con el anterior de un sólo dígito que utilicé en el ‘Reloj SMD’. Así se pueden utilizar ambas placas en el mismo montaje y construir cualquier tipo de display, sin la necesidad de tener que pegar más diodos en el PCB.

Construye un Reloj SMD

Reloj serie con el nuevo PCB

Display de 4 dígitos

El display del último reloj que hice, estaba construido con 4 circuitos impresos  de un dígito de 7 segmentos. Cada uno del los dígitos permite el control de encendido de un punto decimal, el cuál se incluye en cada PCB. Sin embargo, este reloj utiliza además del punto decimal un separador central, formado por dos puntos LED. Como es lógico, para poder controlar 2 signos es necesario utilizar la salida del control decimal de 2 dígitos. Por otra parte, en los PCBs no estaba contemplada la posibilidad de montar los dos puntos separadores. La solución fue la de colocar 2 LED entre las dos placas centrales, pegando uno en cada tarjeta.

Pegar LED en el display

Ambos LED van conectados en serie. El ánodo de esta serie, como es el punto común, va conectado con la alimentación al +12V.

Cableado LED

El cátodo de la serie lo tuve que cablear hasta la salida de control del punto decimal del dígito anterior (el punto decimal del dígito de la izquierda no se utiliza en este reloj).

Nuevo PCB

A pesar de que la solución que tomé es válida, no queda muy elegante hacer semejante ‘engendro’ en un diseño nuevo. Al final decidí hacer otro circuito impreso, con los dos puntos además del punto decimal, y que fuera totalmente compatible con los circuitos impresos que ya tenía fabricados.

PCB: 2 dígitos de 7 segmentos

Este nuevo circuito impreso contiene 2 dígitos, y los dos puntos LED están montados entre ambos dígitos. Este circuito impreso va montado en el centro del display del reloj de 4 dígitos, ocupando los 2 dígitos centrales; y a cada lado va montada otra placa de un sólo dígito.

Nuevo display del Reloj

¿Dónde fabricar el PCB?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos, 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. Por suerte, se puso en contacto conmigo el fabricante de circuitos impresos PCBWay, preguntando si quería hacer una colaboración con ellos. Lo primero que hice es visitar su página Web, y me pareció muy interesante su manera de trabajar.

Proyectos compartidos en PCBWay

https://www.pcbway.com/project/shareproject/

Esta empresa, aparte de ser grande y tener muy buenos precios, dispone de un apartado en su Web para alojar los diseños y poder compartirlos. Creo que la idea es muy buena para ambas partes. El diseñador recibe un porcentaje de las ventas que se realicen de sus diseños y el fabricante aumenta sus ventas.

Link of my shared project: 
PCB from PCBWay

Lote PCBs

Sorteo por cortesía de: PCBWay

Sorteo patrocinado por PCBWay

El sorteo se realizará el próximo día 23 de Diciembre de 2017, y habrá 3 ganadores. Cada ganador recibirá un cupón de regalo para mandar a fabricar sus propios PCB’s. Los circuitos impresos podrán ser de una o dos caras, y con un tamaño máximo de 100×100 milímetros… con transporte incluido.

PARTICIPANTES

El sorteo se realizará entre los suscriptores de este canal, que dejen un comentario en la línea de comentarios del video (YouTube). Si quieres participar, no te olvides de dejar sin marcar en tu cuenta de YouTube la casilla: ‘Mantener todas mis suscripciones en privado’ (por lo menos el día 23 de Diciembre).

Logo: PCBWay
https://www.pcbway.com/

CIRCUITOS IMPRESOS (PCB)

Archivos GERBER para fabricar este nuevo PCB, con 2 dígitos de 7 segmentos:

PCB_Display_2x7.zip

Construye un Reloj SMD

Fabricación de un Reloj-Cronómetro-Temperatura, encadenando 4 módulos SMD de 7 segmentos con control serie. El controlador de este reloj está construido a partir del micro controlador AT89S52, con encapsulado TQFP de 44 pines (SMD).

Hora en el display

ESQUEMAS

CPU: Reloj SERIE

 

Display: Reloj SERIE

Módulo RTC: DS1302

Las comunicaciones entre el micro-controlador y el chip de reloj DS1302 se realizan mediante 3 hilos:

  1. Reloj (SCLK)
  2. Entrada/Salida de datos (I/O)
  3. Habilitación (CE)
Módulo RTC: DS1302
Módulo RTC: DS1302

El módulo RTC ya incluye el cristal de cuarzo que necesita el chip DS1302, y una pila de 3V para mantener sus datos cuando falta la alimentación. La conexión entre este módulo y la CPU es de 5 hilos, 2 de la alimentación y 3 de control.

Comunicaciones con DS1302
Comunicaciones con DS1302

Sensor de temperatura: DS18B20

El control de este sensor de temperatura es bidireccional y se realiza mediante un sólo pin, así su encapsulado sólo tiene 3 pines: VCC, GND y Datos.

Sensor: DS18B20
Sensor: DS18B20

El DS18B20 se puede comprar con encapsulado normal, su aspecto es el de un transistor, o ya montado dentro de una cápsula de acero inoxidable. El encapsulado en acero inoxidable permite sumergir el sensor en líquidos, y también es muy aconsejable para utilizarlo en el exterior.

El chip DS18B20 es un sensor temperatura digital,  su resolución es configurable entre 9 y 12 bits. Por defecto, de fábrica está configurado con 12 bits. A máxima resolución, sus últimos 4 bits se corresponden con las lecturas decimales de: 0,5°/ 0,25° / 0,125° / 0,0625°.  Puedes ver más detalles técnicos de este sensor en el siguiente artículo:

Firmware Reloj LED #2 (Temperatura, Hora de Verano)

FUENTE DE ALIMENTACIÓN

Para alimentar este reloj se necesita una fuente de alimentación de 12 VDC, con una corriente mínima de 200 mA. La solución más barata y eficaz, es incluir dentro de la caja del reloj una pequeña fuente de alimentación conmutada de 12V / 400 mA.

Fuente conmutada 12V

CONFIGURACIÓN

Para cambiar los datos de fecha, hora, cronómetro y el resto de parámetros de configuración, se utilizan dos pulsadores:

  1. MODE
  2. PLUS

Para modificar los datos del reloj, seguir el siguiente diagrama de configuración:

Configuración RELOJ SERIE

SELECCIONAR MODO: RELOJ/CRONÓMETRO

El modo de funcionamiento RELOJ/CRONÓMETRO se determina durante la fase de arranque, mientras se está mostrando en el display  un mensaje de texto rotando, en la que se muestra la versión del firmware. Si no se toca ningún pulsador, el modo de funcionamiento será: RELOJ. Para cambiar a modo CRONÓMETRO en cualquier momento, seguir los siguientes pasos:

  • Pulsar los dos botones a la vez: RESET
  • Cuando aparezca el mensaje rotante, mantener pulsado el botón 1 (MODE)

Cronómetro en el display

Una vez que que hayamos entrado en el modo CRONÓMETRO, ya podremos configurar sus parámetros de funcionamiento. Estos valores se guardarán en el chip de memoria del reloj (DS1302), y estos serán los nuevos valores de arranque del cronómetro. Al igual que sucede con los parámetros del reloj, tendremos que tener conectada la pila de tampón en el chip, si no queremos perder todos los datos cuando falte la alimentación.

Detalles de la presentación del Display

Cuando se está funcionando en modo RELOJ, es posible seleccionar entre 3 tipos de presentación. La información que muestra el display se cambia mediante una breve pulsación del botón 2 (PLUS):

  1. Hora / (*) Alterno: Hora y Temperatura
  2. Temperatura
  3. Alterno: Hora, Fecha y Temperatura

(*) El modo alterno de la presentación 1ª, se muestra en caso de que se active la alarma de temperatura en el menú de configuración. En caso contrario, la presentación 1ª mostrará la hora de forma permanente.

Temperatura en el display

Cuando se active el modo de presentación alterno, la temperatura se mostrará de forma síncrona con el reloj, y lo hará cada 5 segundos. Entre el segundo 5 y el 55 de cada minuto, nunca se mostrará en el segundo ‘0’ de cada minuto. La temperatura sólo aparecerá durante un segundo de cada 5, en total 11 veces en cada minuto.

Alarma de Temperatura

La lectura del sensor de Temperatura se realiza cada 10 segundos. De manera que entre dos presentaciones sucesivas de 5 segundos, sólo una de las lecturas será en tiempo real. Cuando está utilizando la presentación 1ª en modo alterno, los segundos acabados en ‘0’ mostrarán la temperatura leída anteriormente, excepto en el segundo ‘0’ de cada minuto que no se muestra. En el caso de que la temperatura sobrepasara alguno de los dos umbrales de alarma, el aviso acústico se realizará cuando el valor acaba de ser leído. Es decir, la alarma de temperatura sólo sonaría en los segundos acabados en ‘5’.

Alarmas horarias

El reloj permite configurar 2 alarmas horarias, sin prioridad entre ellas pero siguiendo este criterio: Cuando una de las dos alarmas se dispara, mientras permanezca en su periodo activo, la otra alarma nunca podrá dispararse. 

Las dos alarmas horarias pueden valer para los 7 días de la semana, o estar limitadas a los 5 días laborables, quedando inactivas todos los Sábados y Domingos. En modo RELOJ, el punto decimal del dígito de la derecha (esquina inferior derecha del display) esta asociado a la alarma horaria. Las alarmas horarias pueden configurarse para que suenen una sola vez (1 minuto si no se silencia antes) o con repeticiones. Las repeticiones se realizarán cada 5 segundos. Para silenciar el sonido de una alarma, realizar una breve pulsación en el botón 2 (PLUS). Si después de sonar una alarma se quieren anular todas sus repeticiones sin cambiar la configuración del reloj, es necesario pulsar los dos botones a la vez (RESET).

Estados posibles del LED indicador de alarma horaria:

  • APAGADO: No existe ninguna alarma horaria en las próximas 24 horas
  • PARPADEANDO: Existe alguna alarma horaria dentro de las próximas 24 horas.
  • FIJO: Alarma ACTIVA, sonando o dentro del periodo de repetición.

Hora: Verano/Invierno

En algunos países existen dos tipos horarios:

  1. Horario estándar, el que corresponde con el huso horario (Horario de invierno).
  2. Horario de verano:

El cambio de hora se aplica una vez al año, haciendo que del horario estándar (o de invierno) se pase al horario de verano. Aunque la primera vez que se aplicó este cambio de hora fue durante la Primera Guerra Mundial, dejo de aplicarse hasta la crisis del petróleo de 1973. El objetivo es el de aprovechar mejor la luz solar, consumiendo menos electricidad.

Cambios horarios (Invierno/Verano)
Cambios horarios (Invierno/Verano)

HORARIO DE VERANO

Último domingo de MARZO:  A las 2:00 AM  se adelanta a las 3:00 AM

… se adelante 1 hora el reloj

HORARIO DE INVIERNO

Último domingo de OCTUBRE: A las 3:00 AM  se atrasa a las 2:00 AM

… se atrasa 1 hora el reloj

FIRMWARE

El firmware de este reloj se programa una vez montado el micro controlador (AT89S52) en su circuito impreso, a través de su interface de programación serie ICSP. Lo ideal sería utilizar un programador que tuviera dicho interface, pero si no lo tienes, puedes hacerlo con ARDUINO.

Programador ICSP con ARDUINO

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

J_RPM_v1_RELOJ_SERIE.HEX

FABRICAR LA CAJA CON UNA CNC

Archivos para cortar la madera tipo DM de 10 mm, en una CNC, y fabricar la caja de este reloj:

Caja_CNC_RELOJ_.zip

Piezas cortadas para montar la caja

CIRCUITOS IMPRESOS (PCB)

Archivos GERBER para fabricar el PCB de la CPU:

PCB_CPU_RELOJ.zip

PCB: CPU del Reloj SERIE

Archivos GERBER para fabricar el PCB de la CPU (v2):

PCB_CPU2.zip

PCB: CPU del Reloj SERIE (Modificada)

En esta versión se corrige el tamaño de los taladros, se incluye la posibilidad de utilizar dos tipos de conector en sus salidas y se añade una toma auxiliar de +5V

Archivos GERBER para fabricar el PCB del Display ( 1 dígito de 7 segmentos):

PCB_Display_RELOJ.zip

PCB: Display 7 segmentos serie

Si quieres ver los detalles de fabricación, configuración y puesta en marcha de este reloj, echa un vistazo al siguiente video:

 

Caja a medida con CNC

Diseño y fabricación de una caja a medida, cortando las piezas con la ayuda de una fresadora digital (CNC). El diseño de las piezas lo hice con el software SketchUp. Tuve que corregir el archivo que genera SketchUp para poder utilizarlo en la CNC. Para comprobar el código ‘G’ y corregir el archivo, utilicé el simulador por software CAMotics

Con el fin de controlar los display’s de 7 segmentos SMD que tengo, he mandado fabricar otro circuito impreso para montar la CPU.

PCB de la CPU

Esta CPU está basada en el micro-controlador AT89S52 de ATMEL. Como este micro-controlador se puede programar sin desmontarlo del circuito impreso, a través de su interface ICSP, he elegido el encapsulado de tipo SMD. El circuito impreso tiene una altura muy parecida a la del  display de 7 segmentos, y la idea es la de fabricar una caja de madera a medida, para construir un display con 4 dígitos.

SketchUP

Para cortar las piezas de madera con precisión, he utilizado una fresadora digital (CNC). Para dibujar las piezas a medida y poder exportar los datos a la CNC, he utilizado el software SketchUp.

Software SketchUp

A pesar de que este software funciona muy bien, he encontrado un problema a la hora de generar los archivos de código ‘G’. Los archivos contienen una serie de instrucciones adicionales que dañan las piezas a fabricar. Para localizar el lugar exacto donde se encuentran estas instrucciones para eliminarlos, he utilizado otro software que emula el funcionamiento de la CNC.

CAMotics 

El software CAMotics permite la ejecución del código ‘G’ de forma visual, y esto facilita la localización de las instrucciones que se deben eliminar.

Software CAMotics

El software permite la edición de los archivos y su posterior visualización, para comprobar que los cortes que hará la CNC sean los correctos.

Construcción de la caja

Después de la fase de diseño de la caja y conversión de sus datos en código ‘G’, el trabajo de corte y fresado de todas las piezas lo realiza la CNC. Si queremos obtener un buen acabado y precisión, es importante que los cortes se realicen en capas, no en una sola pasada.

Fresado de la caja

También es importante incluir unas pequeñas zonas en cada cara de las piezas, en las que la fresadora no realice el corte por completo. Estos pequeños puntos de sujeción evitarán que se muevan las piezas de su estructura durante el corte, evitando su desplazamiento y marcado por la fresa.

Montaje de la caja

Una vez cortadas todas las piezas que componen le caja, incluido su frontal de metacrilato, la pegamos con cola blanca (dejando la tapa lateral derecha sin pegar). La tapa lateral derecha irá sujeta con 2 tornillos, y es la que nos dará el  acceso al montaje y desmontaje de todos sus componentes en el interior. Para obtener un buen acabado, se sellan las juntas de todas las uniones que van pegadas, con cola blanca y serrín de la misma caja, suavizando todas las aristas con una lija especial para madera.

Ajuste de los PCB's en la caja

Para terminar se pinta la caja en color negro mate, con pintura en spray, y se comprueban los soportes colocando los circuitos impresos en su lugar y cerrando la caja.

 

¿Programar con interrupciones?

Elegir el modo de programar un microprocesador: consultando de forma cíclica el estado de cada periférico (Polling), o creando una interrupción por cada periférico a controlar. Métodos a seguir para programar el microprocesador AT89S52 con 2 interrupciones y una consulta cíclica. Posibles efectos indeseados cuando se programa con interrupciones.

Interrupciones AT89S52

Cuando se programa un microprocesador con la finalidad de tomar decisiones, dependiendo del estado de alguno o varios dispositivos periféricos, como podrían ser: pulsadores, un reloj en tiempo real (RTC), termómetros, alarmas, etc… existen dos formas posibles de hacerlo:

-> La forma más sencilla y clásica sería consultar de forma cíclica el estado de cada periférico.

-> Lo ideal sería habilitar una interrupción en el procesador por cada periférico a controlar.

Consulta secuencial y periódica

En este proceso de consulta, también conocido como polling en inglés, es el propio procesador el que determina el momento en el que realiza la consulta.

Consulta secuencial

Este método tiene el inconveniente de ser poco eficiente, porque el procesador consume muchos recursos realizando las instrucciones de sondeo… y además en algunas aplicaciones, una pequeña demora de tiempo afecta a la precisión de la medida o produce efectos indeseados. Por ejemplo, un error en la precisión cuando se utiliza un temporizador del procesador como patrón de tiempo de un reloj o cronómetro. Efectos indeseados, como podrían ser parpadeos, cuando se genera una señal PWM para el control de brillo de un display… o inestabilidad  si se utiliza esta misma señal PWM para  regular la velocidad de un motor.

Programar con interrupciones

Una interrupción sirve para detectar en tiempo real el momento en el que se debe realizar la consulta a cada periférico. Con la interrupción, es el periférico quien se encarga de avisar al procesador, y mientras tanto el procesador puede realizar otras tareas.

Habilitación de las interrupciones

El orden de prioridad de todas las interrupciones se pueden programar en el procesador. Así el procesador decidirá si un proceso se debe interrumpir o no, en caso de que se produzca una interrupción mientras se está atendiendo a otra, o cuando se produzcan dos o más interrupciones de forma simultánea. Un mal uso de la prioridad en las interrupciones, también podría provocar efectos indeseados.

Prioridad de las interrupciones

En la imagen anterior, al no tener la prioridad de interrupción el Timer que genera la señal PWM, se producen fluctuaciones en el ancho de impulso generado.

 

 

Temporizador digital para insoladora

Construcción de un temporizador para la insoladora. Como este programador es programable entre 1 segundo y 100 minutos, no lo he integrado dentro de la insoladora. Así es posible utilizarlo para temporizar cualquier dispositivo que vaya conectado a la red eléctrica.

Temporizador digital terminado

Este temporizador está construido con el micro-controlador AT89S52 y se puede programar sin desmontarlo de la placa de circuito impreso, utilizando el interface ICSP . Si no dispones de un programador, puedes hacerlo con Arduino.

Programador ICSP con ARDUINO

 Firmware

El archivo necesario para programar el micro-controlador AT89S52 de este temporizador digital, puedes descargarlo desde el siguiente enlace:

 J_RPM_v1_TEMP_LUZ.HEX

Esquema

Este circuito se alimenta con una tensión continua de 5V. Podría utilizarse cualquier fuente de alimentación convencional o cargador de un dispositivo móvil. Al final he decidido  incorporar en este montaje una pequeña fuente de alimentación conmutada de 5V, ya que son muy baratas y se pueden integrar muy bien dentro del mismo circuito impreso del temporizador.

Temporizador digital: ESQUEMA

Para el control de salida de tensión he utilizado un relé controlado por un transistor. De esta manera no habrá problemas con el tipo de carga, resistiva o reactiva, ni la potencia a conectar. Sólo habrá que elegir el relé más adecuado a la corriente máxima que necesitemos controlar.

Circuito impreso

El circuito impreso lo puedes realizar siguiendo el proceso que más te convenga, por transferencia desde el papel con la plancha o utilizando una placa de circuito impreso fotosensible. A continuación os dejo la imagen del circuito impreso, tanto en positivo como en negativo, con el tamaño adecuado para imprimir a escala 1:1, utilizando papel o transparencia de tamaño A4.

PCB
PCB para imprimir en A4

Hay que tener cuidado al hacer el contacto y no ponerlo al revés… las letras se tienen que leer mirando la cara del cobre (cara de soldaduras)

Montaje

El montaje de los componentes en el circuito impreso es muy sencillo, son muy pocos componentes y ninguno de ellos es SMD (montaje superficial). Sólo hay que prestar atención al colocar en su posición algunos componentes: condensadores electrolíticos, diodo, transistores, circuito integrado y zumbador.

PCB del temporizador montada

Con el fin de facilitar el montaje y no confundir las conexiones del circuito impreso con el display, os dejo el siguiente esquema de montaje:

Plano de montaje

Instrucciones de funcionamiento

Este temporizador digital es programable entre 1 segundo y 100 minutos, pero siempre arranca con un tiempo prefijado de 5 minutos. Al conectar la alimentación, lo primero que aparecerá es la versión del firmware.

Temporizador digital (Versión)

A continuación aparece la pantalla EDICIÓN con el valor por defecto de 5 minutos.

Modo: EDICIÓN

El cursor parpadea en la posición en la que puede modificarse el valor , mediante la pulsación del botón rotulado con la flecha hacia arriba (ON/OFF).

El botón con la flecha hacia la derecha (SET), desplaza el cursor al siguiente dígito y almacena el valor anterior. Si no se quiere cambiar el tiempo que muestra el display, sólo hay que ir pulsando el botón SET hasta que desaparezca el cursor por la derecha y salga del modo edición.

Modo: FUNCIONAMIENTO

Cuando el temporizador está en modo FUNCIONAMIENTO,  en la línea superior del display se muestra la posición del contacto del relé de forma gráfica. Pulsando el botón ON/OFF se alterna el arranque y parada del tiempo.

Temporizando tiempo

Si se detiene el tiempo antes de finalizar la cuenta -tiempo prefijado a la derecha de la línea inferior del display- se guarda el valor del tiempo contabilizado hasta el momento, pudiendo continuar la cuenta con la siguiente pulsación. El valor de tiempo prefijado se puede modificar en cualquier momento pulsando el botón SET, pero teniendo en cuenta que el temporizador tendrá que estar parado.

El botón SET con el cronómetro en marcha no actúa

 

 

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.

Termostato de precisión #2

Construcción de un termostato digital, para controlar temperaturas con una precisión de 0,1ºC. Este termostato utiliza el sensor DS18B20, está controlado con el microprocesador AT89S52, y permite regular temperaturas entre -40 y +100ºC. También es posible controlar de forma simultánea los dos circuitos de un climatizador, el de frío y calor. Este termostato podría utilizarse como climatizador en un automóvil, controlar la temperatura de un edificio, la del agua de una piscina, incluso la de una incubadora. En esta segunda parte, se realizan los ajustes del termostato y se comprueba su funcionamiento.

CPU del termostato

La CPU del termostato la he montado en un circuito impreso de tipo universal. Para facilitar el montaje, todos los periféricos utilizan conectores. Se utilizan clemas de conexión para la entrada de alimentación (5 VDC), la conexión del sensor de temperatura DS18B20, los dos pulsadores y las dos salidas de control hacia los relés. Para el display LCD se utiliza un conector de 16 pines. El led de actividad utiliza la conexión de 2 pines macho y la otra conexión de 6 pines macho es para programar el micro controlador AT89S52 sin tener que extraerlo del circuito impreso, conexión ICSP.

CPU del Termostato

Firmware

Antes de conectar el circuito a la alimentación, es necesario programar el micro controlador AT89S52. El archivo hexadecimal (firmware) lo puedes descargar de forma gratuita desde el siguiente enlace:

Termostato de precisión (v1.00)

Si no dispones de un programador, podrías utilizar Arduino:

Programador ICSP con ARDUINO

Ajustes y calibración

El único ajuste de hardware que se necesita hacer es el del contraste del display, y se hace moviendo el ajuste del potenciómetro hasta conseguir un contraste óptimo. Luego se debería fijar la temperatura de trabajo del termostato, utilizando los dos pulsadores del frontal. El termostato permite fijar valores de temperatura entre -39,9 y +99,9ºC, con una precisión de 0,1ºC.  Al menú de configuración se accede pulsando el botón SET, y mediante el otro pulsador se pueden recorrer todos los valores posibles. Para cambiar de posición el cursor y guardar el valor anterior, se pulsa nuevamente el botón SET. A continuación se accede al menú de calibración del sensor de temperatura DS18B20.  Desde este menú es posible modificar la temperatura medida por el sensor con intervalos de 1ºC. Este ajuste permite seleccionar valores offset comprendidos entre -5 y +4ºC.   Para realizar esta calibración, sería conveniente utilizar un termómetro de precisión.

Calibrado del sensor DS18B20

Pruebas de funcionamiento

Para comprobar el correcto funcionamiento del termostato he simulado su conexión en una incubadora, fijando la temperatura de control  en 24,0ºC. El sistema de calefacción (para estas pruebas) consiste en una bombilla de filamento de 40W, conectada a 230 VAC a través del circuito 2 del termostato. El sistema de refrigeración es un pequeño ventilador de 12 VDC, controlado por el circuito 1 del termostato. Dependiendo de la distancia que exista entre los sistemas frío/calor y el termostato, es posible que se generen ciclos de histéresis: sobrepasando levemente la temperatura cuando esté conectada la bombilla, o disminuyendo cuando esté conectado el ventilador. Estos ciclos de conexión/desconexión tendrán un intervalo mínimo de 5 segundos, ya que este es el intervalo de medida y refresco del termostato.

Prueba del termostato

A continuación se prueba el sensor a temperaturas límites, con el fin de comprobar el correcto funcionamiento del circuito. El termostato guarda los valores de temperatura máxima-mínima, y también los puede mostrar en la línea superior del display LCD. Mediante la pulsación del botón verde, se alternan las dos presentaciones posibles en la línea superior del display, la presentación inferior no cambia. Los valores de máxima-mínima se reinician cada vez que se entra en el menú de configuración, o cuando baja la alimentación del pin 40 (VCC) del micro controlador por debajo de 2V. Para evitar la pérdida de los valores de configuración mientras está funcionando el termostato, es necesario mantener conectada la batería de 3,6 V NiMH que se incluye en el circuito. La conexión se realiza mediante un puente de conexión (jumper), o un pequeño interruptor deslizante con acceso desde el exterior.

Temperaturas máxima y mínima

En caso de no utilizar el termostato, es conveniente desconectar la batería del circuito.