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.
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:
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.
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.
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.
En caso de no utilizar el termostato, es conveniente desconectar la batería del circuito.
Construcción de un Bingo electrónico de grandes dimensiones, para colgarlo en la pared de un salón social. El panel tiene unas dimensiones de 1 metro de ancho por 80 centímetros de alto, y está construido con la tapa de madera de un cajón de embalaje. En esta segunda parte, se finaliza el montaje del Bingo y se realizan pruebas de funcionamiento.
Rotulación
Para rotular los 90 números en el panel he construido una plantilla para centrar los números en cada cuadro, y otra para los números. El primer paso es rotular todos los números en la madera.
Una vez rotulados todos los números, con la ayuda de un pincel de punta fina, especial para la rotulación, se pinta el interior de los números. Yo utilicé esmalte metálico de color verde.
Mecanizado
A continuación se taladran los 90 agujeros para montar los diodos LED. Aunque el diodo es de 10 mm, es conveniente hacer el agujero a 9 mm y ajustar el hueco con la ayuda de una lima, o utilizando una pequeña fresa y un taladro de mano.
Los diodos LED se colocan por la parte trasera del mural, y se fijan con adhesivo termo fundible.
Conexiones
Para cablear la matriz, hay que conectar los ánodos de los diodos LED de las 9 líneas (sus resistencias limitadoras), y los cátodos de las 10 columnas. Al final se conecta un cable de cinta plana para los cátodos (10 hilos) y otro para los ánodos (9 hilos). Es importante identificar la primera línea y la primera columna, conectando el hilo que lleva la marca roja en esta posición.
Por finalizar, se monta un anclaje para la CPU y se fija el display y el pulsador en el mural. El conexionado es muy rápido, porque todas las conexiones se hacen con terminales y no es necesario utilizar el soldador.
Funcionamiento
Al conectar el panel aparece un texto en el display, mostrando la versión del firmware, y se iluminan los 90 diodos LED del panel durante unos segundos.
En el siguiente video se muestran todos los detalles de montaje y funcionamiento de este Bingo electrónico.
Recopilación de todos los videos relacionados con el reloj LED (FC-209), explicando por encima lo que se puede encontrar en cada uno de ellos. Además se presenta la última actualización del firmware, tanto para el kit FC-209 como para el reloj de pared. También se crean ambas versiones de firmware con los textos en inglés.
Se describe el montaje del kit de reloj en una carcasa de plástico semitransparente, en la cual se alberga una batería de litio (recuperada de un PC), con el fin de alimentar el reloj de forma autónoma. Se empieza describiendo con el esquema y de forma básica el funcionamiento del reloj. Posteriormente se explica el funcionamiento del módulo ‘Step Up’, utilizado para elevar la tensión de la batería de litio y conseguir los 5V estabilizados que alimentan el reloj. También se instala un módulo de carga TP4056 con protección, el cual se explicó con detalles entre el video Power Bank #1 y Linterna LED #2 – MEJORAS. Se mide el consumo del reloj, y se calcula la autonomía máxima de la batería, a partir de su capacidad. Finalmente se muestra la construcción de la serigrafía frontal, realizada con una CNC y se describe el funcionamiento y ajustes de este kit de reloj, utilizando el firmware con el que viene programado el reloj de fábrica.
Se realiza un nuevo firmware para sustituirlo por el que viene instalado de fábrica, es la versión 1. Después de realizar un estudio de todo el hardware, se decide elevar la frecuencia del reloj de cuarzo, y sustituir el sensor de temperatura original DS18B20, por otro de mayor precisión. Al realizar estos cambios, la versión 1 del firmware no es compatible con el kit original, porque sería necesario sustituir estos dos componentes. Posteriormente se detalla a fondo el funcionamiento del chip DS1302, RTC o reloj en tiempo real, y se explica el proceso a seguir para reprogramar el micro-controlador utilizando el puerto ICSP (In-Circuit Serial Programming) que incorpora dicho kit. Finalmente se detallan todas las funciones y mejoras incorporadas en el nuevo firmware, explicando el modo de configuración y su funcionamiento.
Se actualiza el firmware anterior, incorporando la posibilidad de que el reloj realice el cambio automático de la hora inverno/verano. Esta es la versión 2, y tampoco es compatible con el kit original. Se analiza a fondo el funcionamiento y comunicaciones entre el sensor de temperatura y el micro-controlador, comparando las diferencias que existen entre el sensor original DS18B20 y el instalado. Finalmente se calibra el sensor de temperatura mediante el menú de configuración y se detalla el proceso que sigue el reloj cuando tiene que actualizar la hora, estando apagado y encendido, comprobando también su funcionamiento.
Se actualiza de nuevo el firmware, incorporando la posibilidad de programar las horas en las que el display reduce su brillo. Con esto se evitan las molestias por exceso de iluminación, cuando se utiliza como despertador en una habitación oscura. Esta es la versión 3, y tampoco es compatible con el kit original. Se realizan de nuevo medidas de consumo del reloj, pero ahora con bajo brillo, y se calcula el incremento de la autonomía de su batería, debido a la reducción del consumo.
Debido a las numerosas peticiones que recibo, realizo un nuevo firmware totalmente compatible con el kit de reloj FC-209. Esta es la versión 4, y es la primera que se puede utilizar con el kit original. A pesar de que el sensor de temperatura original es menos preciso, con el DS18B20 se amplía el rango de medidas, pudiendo mostrar temperaturas entre -10 y 125ºC. Como existe la posibilidad de sustituir el chip de temperatura por otro externo con encapsulado metálico, es posible utilizar un sensor externo para medir la temperatura de componentes electrónicos o fluidos.
Se incorpora la posibilidad de utilizar el kit FC-209 como reloj o cronómetro. La opción de cronómetro se debe habilitar pulsando el botón central MODE, en la fase de arranque. En caso de no tocar nada, el módulo arrancará en modo reloj y tendrá las mismas funciones que tenía en la versión anterior, versión 4. Esta es la versión 5, y también es compatible con el kit FC-209. Una vez que se entra en el modo cronómetro, es posible configurar el modo del contador, pudiendo contar el tiempo hacia delante o hacia atrás. La resolución del cronómetro es de centésimas de segundos, mostrando este valor al final, en modo alterno cuando se detiene la cuenta.
Se muestra un nuevo diseño de reloj, utilizando las mismas características del kit FC-209, pero ampliando su tamaño para que pueda utilizarse como reloj de pared. Este firmware NO es compatible con el kit de reloj FC-209. Esta es la versión 6, exclusiva para este modelo de reloj, pero funciona exactamente igual que la versión 5 en el kit FC-209.
Al ampliar de tamaño el display, es mejor construir todo el frontal con diodos LED, en lugar de utilizar display’s de 7 segmentos. Con este aumento de tamaño se acentúa el efecto de parpadeo, provocado por la baja velocidad del procesador, por lo que se aumenta la frecuencia del cristal de cuarzo, igual que se hizo en las 3 primeras versiones del firmware, pero en este caso se mantiene el mismo modelo de sensor de temperatura. Otra modificación, es el uso de una batería recargable en lugar de la pila de botón. En este firmware se habilita el control de carga de la batería tampón, a través del chip DS1302. Para poder alimentar más de dos diodos en serie, como es el caso, se necesita subir la tensión de alimentación por encima de 5V, por lo que también se necesita instalar un módulo Step-UP.
En el video se muestran los detalles de construcción del circuito impreso que se necesita, así como el ensamblado de los diodos led en el frontal y sus cableados. Finalmente se realizan las pruebas de funcionamiento.
Se construye la carcasa frontal del reloj de pared, y se monta un anclaje para poder colgarlo. También se muestra el grabado de la serigrafía y mecanizado del frontal, realizado todo con una CNC. Luego se pinta la serigrafía, y se muestra el reloj ya colgado y funcionando.
Se utiliza un nuevo kit de reloj, para poder utilizarlo principalmente como medidor de temperatura de componentes electrónicos y fluidos. Se sustituye el chip de temperatura original, por otro externo del mismo modelo, pero encapsulado en acero inoxidable. También se realiza el mecanizado con la CNC, pero como en este caso se utilizará el kit con un alimentador externo de 5V, su tamaño es bastante reducido y fácil de transportar. Finalmente se realiza el calibrado del sensor de temperatura, utilizando como referencia los 0ºC que tiene el hielo en fusión.
Debido a las múltiples peticiones que recibí de algunos seguidores no hispanos, hice una versión del último firmware del kit FC-209, pero traduciendo todos sus textos en inglés.
Última actualización del firmware del reloj LED
Se incorporan un par de sugerencias que he recibido en los últimos meses. La primera de ellas y la más solicitada, es la posibilidad de presentar la temperatura en modo alterno con la hora, y la otra es la opción de poder mostrar los CEROS de las decenas de hora en el display, es decir, que se encienda el cero de la izquierda de las horas entre las 0 y las 9 de la mañana. Ambas opciones serán configurables, de manera que se podrá elegir entre la presentación anterior o la nueva.
Existe una variante entre el firmware del kit de reloj FC-209 y el reloj de pared, aunque sus prestaciones son las mismas. De manera que hay dos modelos de firmware, uno para cada modelo.
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, y lo hago así con el fin de mostrar siempre el cambio del minuto al paso por el segundo ‘0’ y no interrumpir la escucha de las señales horarias en caso de que estuvieran activadas. La temperatura sólo aparecerá durante un segundo de cada 5, en total 11 veces en cada minuto.
Por otra parte, como la lectura de la temperatura requiere de un tiempo y no es conveniente utilizar interrupciones cuando se está realizando la lectura, la presentación del display se detiene durante ese período de tiempo, siempre inferior a 1 segundo, pero provoca que la aparición de la temperatura en el display sea inferior a 1 segundo. Dependiendo de la velocidad del sensor de temperatura ese efecto podría pasar desapercibido, cosa que no sucede con el chip original que se incluye en el kit, ya que es demasiado lento. Me refiero al sensor de temperatura DS18B20 que se incluye en el kit de reloj.
Por ese motivo, con el fin de mejorar la visibilidad de la temperatura, la lectura sólo se realizará cada 10 segundos, de manera que entre dos presentaciones sucesivas, una de ellas siempre será instantánea y aparecerá durante 1 segundo completo. Dependiendo del segundo en el que se arranque el reloj, la lectura podría coincidir en los segundos acabados en ‘0’ o en ‘5’, ya que la primera vez que pase por alguno de ellos tendrá que leer el valor, pero al paso por el segundo ‘0’ se sincronizará y siempre leerá en los segundos acabados en ‘5’. Los segundos acabados en ‘0’ mostrarán la temperatura leída anteriormente, excepto en el segundo ‘0’ de cada minuto como ya he mencionado antes. Por otra parte, en el caso de que la temperatura sobrepase alguno de los dos umbrales de alarma, el aviso acústico se realizará sólo cuando el valor acaba de ser leído. Es decir, la alarma de temperatura sólo sonará en los segundos acabados en ‘5’
Personalización de los textos y gráficos que aparecen en el Stick LED, modificando el firmware con un editor hexadecimal. Instalación del software de control Stick.exe y programación del texto que se almacena en la memoria RAM del Stick LED.
Puedes descargar este software de forma gratuita desde el siguiente enlace: Install_Stick_v1.04.rar
Este programa funciona bajo Windows. Para instalar hay que descomprimir el archivo .rar y ejecutar el archivo .exe siguiendo las indicaciones del instalador.
Para modificar los textos fijos de la memoria ROM, es necesario editar el fichero del firmware antes de programar el micro controlador AT89S52. Podemos utilizar cualquier editor hexadecimal, o hacerlo desde el propio interface de programación. En total se pueden modificar 19 mensajes, los 4 primeros dobles (8 mensajes) y los 11 siguientes simples. La matriz completa de cada mensaje está compuesta por 48 columnas y 16 filas (número de diodos LED del Stick). La imagen completa tiene una resolución de 16×48 = 768 pixel. Para poder escribir los textos de forma sencilla, el firmware utiliza un Font de caracteres de 16×6, y así los textos se introducen en ASCII, pudiendo editarse directamente desde el teclado del PC.
Editar ROM
Como puede apreciarse en la imagen anterior, todos los caracteres deben escribirse en la ROM con letras mayúsculas. Los caracteres de la tabla que se muestran con el fondo de color verde, están asociados a los gráficos que se almacenan en la ROM. En total hay 6 gráficos almacenados, y cada uno de ellos ocupa 4 códigos de la tabla. La correspondencia de los códigos de algunos caracteres en minúscula de la tabla ASCII, son traducidos en gráficos cuando se muestran en el Stick LED.
Interface RS-232
Para poder modificar el mensaje doble que se almacena en la memoria RAM, es necesario intercalar un interface entre el Stick y el PC o dispositivo móvil. En este caso he utilizado un interface convencional RS-232 (ver imagen anterior). También podría utilizarse un interface TTL-USB, TTL-Bluetooth, etc.
Software: Stick.exe
En la imagen anterior se muestra la pantalla del software de programación Stick.exe. Una vez conectado el puerto serie del PC con el Stick siempre encendido y mediante el interface, sólo sería necesario editar los dos textos y enviarlos. El software mostrará un acuse de recibo al final del envío, o mostrará un mensaje de error en caso de que no se reciba la confirmación desde el Stick.
Montaje del kit Shake Stick Flash, de 16 LED por columna. El circuito original incluye el micro controlador AT89S52, y ya viene programado con 4 imagenes diferentes. Lo interesante de este kit es que se incluye el conector ISP (In-system programming), y esto facilita su uso como plataforma de desarrollo para realizar prácticas con este tipo de micro controladores. Principios de funcionamiento del Stick LED (persistencia del ojo humano), descripción del esquema eléctrico, montaje y diseño de un nuevo firmware. Este firmware permitirá la presentación de 16 imagenes diferentes (gráficos o textos) y uno de sus mensajes podrá reprogramarse a través del puerto serie. Los otros 15 mensajes, almacenados en ROM, podrán modificarse editando el archivo del firmware de forma muy simple.
STICK: persistencia del ojo humano
El principio de funcionamiento del Stick LED está basado en la persistencia que tiene el ojo humano. El ojo hace que cualquier imagen vista se grabe en la retina durante 100 mSeg. aproximadamente. Si desplazamos la columna del Stick con los 16 diodos LED encendidos a una velocidad inferior a 100 mSeg., nuestra retina apreciará una imagen continua y plana, con la forma del movimiento que hemos descrito. Si durante ese tiempo (<100 mSeg.) hacemos que los diodos LED se enciendan y apaguen con un intervalo de tiempo fijo, veremos el mismo arco luminoso, pero mostrando la mitad de las líneas verticales apagadas. Para mostrar gráficos o letras, sólo tendremos que codificar los puntos de cada columna y presentarlos en el intervalo de tiempo adecuado… y eso es lo que hará el micro controlador.
Este firmware se puede descargar de forma gratuita desde el siguiente enlace: J_RPM_v1_STICK.HEX
Montaje: Stick 16 LED
Este kit incluye un portapilas para utilizarlo con dos baterías de tipo AAA. Esto supone que si utilizamos dos pilas de 1,5 V estaríamos alimentando el circuito con 3V. Aunque con esta tensión podría llegar a funcionar el micro controlador, estaría funcionando muy cerca del umbral mínimo… y dejaría de funcionar en cuanto las pilas estuvieran un poco descargadas. Además, la luminosidad que obtendríamos del Stick sería bastante baja. Para evitar estos problemas, la mejor solución es alimentar el circuito con una batería recargable, y añadir un circuito de carga con protección (TP4056) junto con otro circuito ‘Step UP’ que eleve y estabilice la tensión de salida hasta 5V.
Esquema: Stick Flash
En el esquema se muestra la numeración de los componentes, según aparece en la serigrafía del PCB (circuito impreso). Si queremos programar el micro controlador utilizando el conector ISP (In-system programming), es conveniente sustituir la resistencia del circuito Reset, original de 1K5, por otra de 10K.
Con el nuevo firmware que se adjunta, es posible mostrar 16 imágenes diferentes, 5 de ellas son dobles. Al final dispondremos de 4 imágenes dobles y 11 simples almacenadas en la memoria ROM, y otra imagen doble almacenada en la memoria RAM. Esta última podremos reprogramarla cuantas veces queramos, enviando los datos desde un PC o dispositivo móvil. Para ello tendremos que intercalar un interface (RS232, RS485, IR, Bluetooth, etc) y conectarlo a las líneas RX/TX del Stick (UART). Los textos de la memoria ROM también podremos sustituirlos, pero lo haremos con un editor hexadecimal, modificando los textos del firmware antes de programar el micro controlador.
Intervalos de tiempo (Stick LED)
Con el fin de mejorar la presentación de los mensajes más cortos, el micro controlador modificará los intervalos de tiempo en función del número de caracteres-columnas que tenga que presentar (ver la imagen anterior).