Arduino, Inteligencia Artificial y el futuro del aprendizaje de la electrónica

La llegada de la Inteligencia Artificial ha cambiado completamente las reglas del juego. Hoy en día cualquier persona puede describir un proyecto a una IA y obtener en segundos un programa completo, esquemas de conexión e incluso explicaciones detalladas. Sin embargo, La Inteligencia Artificial puede escribir código, pero que no puede hacer es sustituir el conocimiento.

En este artículo se muestra un kit de aprendizaje de Arduino, acompañado por 16 módulos y sensores diferentes completamente integrados en una única plataforma. Con este kit no hay que cablear, no hay que soldar, no hay que buscar componentes y no hay que montar circuitos. Simplemente conectamos el cable USB incluido a nuestro PC, abrimos el entorno de programación de Arduino, y podemos empezar a experimentar inmediatamente.

La electrónica y RRSS en el siglo XXI

Vivimos en una época en la que muchas veces resulta más barato comprar un aparato nuevo que reparar uno averiado. Sin embargo, si todos actuamos únicamente pensando en el coste económico inmediato, acabaremos generando cantidades enormes de residuos electrónicos que después son difíciles y costosos de reciclar.

Aprender electrónica no sólo sirve para construir cosas nuevas. También sirve para comprender cómo funcionan los dispositivos que utilizamos cada día y para darles una segunda vida cuando es posible.

Durante todos estos años he publicado numerosos proyectos basados en microcontroladores. Siempre he compartido los esquemas y el código fuente para que cualquiera pudiera utilizarlos como punto de partida para sus propios desarrollos.

Sin embargo, con el paso del tiempo observé algo curioso: muchas personas no utilizaban esos proyectos para aprender cómo funcionaban. Simplemente copiaban exactamente el mismo montaje y después pedían en los comentarios modificaciones específicas adaptadas a sus necesidades particulares.

Y ahí aparecía un problema: yo comparto los proyectos para fomentar el aprendizaje, no para realizar desarrollos personalizados de forma gratuita. Mi intención siempre ha sido proporcionar herramientas para que cada uno pueda crear sus propias soluciones.

Inteligencia Artificial (IA)

La llegada de la Inteligencia Artificial ha cambiado completamente las reglas del juego. Hoy en día cualquier persona puede describir un proyecto a una IA y obtener en segundos un programa completo, esquemas de conexión e incluso explicaciones detalladas.

Desde ese punto de vista, ya no tiene mucho sentido dedicar semanas a desarrollar y grabar un proyecto específico para después publicar el código, porque la IA puede generar una solución adaptada exactamente a las necesidades de cada usuario.

Sin embargo, después de reflexionar bastante sobre ello, he llegado a una conclusión importante. La Inteligencia Artificial puede escribir código. Lo que no puede hacer es sustituir el conocimiento.

Si no entiendes la electrónica ni la programación, tampoco podrás saber si el código que te ha proporcionado la IA es correcto, si contiene errores, si está optimizado o si puede provocar comportamientos inesperados. La IA es una herramienta extraordinaria, pero sigue siendo necesario comprender los fundamentos.

Evolución de la electrónica

Cuando yo empecé a aprender electrónica, las prácticas eran muy diferentes a las actuales. Había que utilizar soldadores, placas de prototipos, cables, resistencias y multitud de componentes. En algunos centros de formación donde trabajé se utilizaban entrenadores didácticos fabricados sobre paneles aislantes que permitían realizar conexiones mediante cables banana para reproducir montajes reales.

Aquellos sistemas eran muy útiles porque permitían llevar la teoría a la práctica. Sin embargo, también requerían tiempo, material y experiencia.

Maletín entrenador de ELECROW

Lo primero que me llamó la atención del maletín entrenador de ELECROW, es que elimina prácticamente todas esas barreras. Aquí encontramos un Arduino Nano R4 acompañado por 16 módulos y sensores diferentes completamente integrados en una única plataforma.

  • No hay que cablear.
  • No hay que soldar.
  • No hay que buscar componentes.
  • No hay que montar circuitos.

Simplemente conectamos el cable USB incluido al ordenador, abrimos el entorno de programación y podemos empezar a experimentar inmediatamente.

Y esto tiene una ventaja enorme: el alumno puede concentrarse en comprender la programación y el funcionamiento de los sensores sin perder tiempo resolviendo problemas de cableado o montaje.

Entre los módulos incluidos encontramos LEDs, pulsadores, sensor ultrasónico, sensor PIR, servo, relé, zumbador, potenciómetro lineal y muchos otros elementos que permiten desarrollar una gran variedad de prácticas. Todo ello utilizando exactamente el mismo hardware.

Kit ELECROW:All-in-one Starter Kit for Arduino NANO R4 with 20 lessons and 16 modules

Manual:User_Manual_for_All-in-one_Kit_for_Arduino_Nano_R4

Manual traducido al Español

Github link:All-in-one-Starter-Kit-for-Arduino-Nano-R4

Conclusión

Desde el punto de vista educativo, creo que aquí está el verdadero valor de este producto.

  • Permite experimentar.
  • Permite equivocarse.
  • Permite probar ideas nuevas.
  • Y permite aprender de forma práctica desde el primer momento.

Después de probar este maletín , creo que su mayor potencial no está únicamente en los aficionados a la electrónica. Su verdadero potencial está en la enseñanza.

Un adolescente que disponga únicamente de un ordenador puede empezar a aprender programación, robótica y electrónica sin necesidad de herramientas adicionales.

Y lo más importante: puede hacerlo experimentando.

  • La Inteligencia Artificial puede ayudarte a escribir código.
  • Puede explicarte conceptos.
  • Puede resolver dudas.

Pero el aprendizaje real aparece cuando ejecutas ese código, observas el resultado, detectas errores y comprendes por qué las cosas funcionan.

Este tipo de entrenadores permiten precisamente eso. Transforman la teoría en algo tangible. Por eso considero que herramientas como ésta pueden convertirse en un excelente complemento para aprender electrónica y programación en una época en la que la Inteligencia Artificial está cambiando la forma en que trabajamos y aprendemos.

La IA puede generar el programa. Pero entenderlo sigue siendo responsabilidad nuestra. Y ahí es donde comienza el verdadero aprendizaje.

ESP_NTP_Weather (v1.14) & Timestamp UNIX

Actualización del firmware de la miniestación meteorológica, añadiendo la previsión del tiempo y salida/puesta del sol. El firmware puede compilarse tanto para ESP8266 como para ESP32 utilizando el IDE de Arduino. Incluye autodetección de librerías y configuración automática según el microcontrolador. Explicación del tiempo UNIX, Epoch y timestamp. Funcionamiento del protocolo NTP y problema del año 2038 (Y2038).

Estación Meteorológica NTP con ESP: reloj sincronizado por NTP y estado del tiempo local

Origen de los servidores horarios y el tiempo UNIX

En los sistemas informáticos y de telecomunicaciones, mantener la coherencia temporal entre dispositivos distribuidos geográficamente es esencial. Desde los años 60, con la expansión de redes y sistemas electrónicos interconectados, surgió la necesidad de una referencia temporal común y precisa.

Para resolver este problema se estableció el Tiempo Universal Coordinado (UTC) y se creó el concepto de epoch UNIX, una referencia absoluta desde la cual se mide el tiempo en segundos.

El epoch UNIX comienza el 1 de enero de 1970 a las 00:00:00 UTC. Desde ese momento, el tiempo se mide como el número de segundos transcurridos, conocido como timestamp UNIX.

Por ejemplo:

1700000000 (timestamp UNIX) → 14/11/2023 06:13:20 UTC

Este formato simplifica el cálculo de diferencias horarias, conversiones y sincronizaciones entre sistemas. Es utilizado por la mayoría de los sistemas operativos modernos, bases de datos y servidores.

El NTP (Network Time Protocol) fue desarrollado en 1985 por David Lennox Mills. Es un protocolo que permite sincronizar los relojes de los dispositivos conectados a Internet con una precisión de milisegundos, consultando servidores jerárquicos (llamados stratum). Los servidores NTP de alto nivel (stratum 1) están directamente conectados a relojes atómicos o señales GPS.

Un esquema simplificado del funcionamiento de NTP sería:

Los microcontroladores (ESP32, ESP8266) utilizan esta infraestructura para sincronizar su hora local mediante bibliotecas que interpretan y corrigen el timestamp UNIX recibido.

La conversión entre UTC y hora local depende del desplazamiento horario y de la aplicación de horario de verano. El desplazamiento se expresa en segundos (por ejemplo, +3600 segundos para UTC+1).

localTime = utcTime + timezoneShift;

Problema del año 2038 (Y2038)

El problema del año 2038 (Y2038) es un fallo de desbordamiento de la representación de tiempo en sistemas que almacenan la marca temporal (timestamp) como un entero con signo de 32 bits que cuenta los segundos desde el 1 de enero de 1970 00:00:00 UTC (tiempo Unix). Este entero alcanzará su valor máximo el 19 de enero de 2038 a las 03:14:07 UTC. Un segundo después, el valor se desbordará y provocará comportamientos erróneos en sistemas que no gestionen correctamente el desbordamiento.

Causa del problema

El tipo de dato ‘time_t’ se utiliza ampliamente en sistemas Unix y en lenguajes como C y C++ para representar tiempos. En arquitecturas de 32 bits, ‘time_t’ se implementa como un entero con signo de 32 bits, cuyo rango es de -2.147.483.648 a 2.147.483.647. Este último valor corresponde exactamente al 19 de enero de 2038 a las 03:14:07 UTC. Al sumarse un segundo más, el valor se desborda y se convierte en negativo, lo que produce fechas incorrectas (por ejemplo, en 1901) o fallos del sistema.

Escenarios de fallo típicos

  1. Logging: marcas de tiempo incorrectas en los registros.
  2. Expiración de credenciales o tokens errónea.
  3. Jobs programados que fallan o se ejecutan en el pasado.
  4. Bases de datos con índices temporales incorrectos.
  5. Dispositivos embebidos en bucles de reinicio por errores de tiempo.

ESP_NTP_Weather (v1.14)

En esta actualización se ha priorizado el mantener la compatibilidad con el ES8266, teniendo que realizar algunos procesos mucho más elaborados de los que se requieren con el ESP32. Aunque el ESP32 puede manejar JSON completos con facilidad, el objetivo del proyecto era mantener compatibilidad total con ESP8266.

El ESP8266 tiene una memoria RAM reducida (≈40 KB disponibles), lo que impedía almacenar la respuesta JSON completa del forecast, que supera fácilmente los 15–25 KB.

Problemas detectados:

  • Fragmentación del buffer al intentar usar ArduinoJson.
  • Reinicios por Watchdog al manipular cadenas grandes.
  • Pérdida de datos cuando el parsing se hacía de forma secuencial.

Solución:

La solución que adopté al final fue realizar la lectura por streaming, procesando el JSON “en bruto” mediante búsqueda de fragmentos relevantes con indexOf() y extracción manual. Con este método se redujo en gran medida el uso de memoria, pero a cambio este método requiere una lógica mucho más precisa y sensible a errores. Utilicé un sistema de ventanas dinámicas, relocalizando la búsqueda y “recortando” el buffer cuando superaba cierto tamaño, manteniendo solo la región útil y sincronizando la búsqueda, usando el campo dt_txt como “ancla”.

Utilizando ‘OpenWeatherMap’


Descargar el firmware

Puedes descargar de forma gratuita el firmware, accediendo al siguiente enlace: ESP_WeatherClock_NTP

¿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. Una de las empresas más grandes del sector es PCBWay.

Logo: PCBWay

https://pcbway.com/g/r7N1ct

Estación Meteorológica NTP con ESP: reloj sincronizado por NTP y estado del tiempo local

Este proyecto presenta una miniestación meteorológica con reloj NTP integrado, basada en el módulo ESP01 y un display OLED de 0,96 pulgadas. El kit, disponible a bajo coste en plataformas como AliExpress, permite mostrar la hora exacta sincronizada por Internet y datos meteorológicos actualizados en tiempo real.

Sin embargo, el firmware original del kit presenta varias limitaciones: deriva horaria si se está lejos de China, falta de cambio automático de horario estacional, servidor meteorológico fijo en China y una interfaz web muy limitada. Para solucionar estos problemas, decidí desarrollar un nuevo firmware completamente mejorado, compatible con ESP01, ESP8266 y ESP32, capaz de conectarse a cualquier servidor NTP y a servicios meteorológicos globales como OpenWeatherMap.

⚙️ Montaje del kit

El kit consta de tres placas principales:

  1. PCB base, donde se sueldan los componentes SMD (regulador de tensión y 2 condensadores de desacoplo) y tres conectores.

  2. Display OLED, que requiere la soldadura de su conector de 4 pines.

  3. Módulo ESP01, completamente ensamblado y programado.

La alimentación se realiza mediante un conector micro-USB, utilizando únicamente los pines de tensión. El kit incluye además tornillería, caja protectora y el cable USB.

Sincronización NTP y funcionamiento básico

Al encender el dispositivo, este se conecta automáticamente a la red WiFi configurada y sincroniza la hora con un servidor NTP.


El display muestra la fecha y hora local exactas, junto con una previsión meteorológica de tres días.

Limitaciones del firmware original

  • El firmware original no realiza cambio automático entre horario de verano e invierno y solo permite configurar manualmente una zona horaria.
  • Además, depende de servidores chinos, lo que genera retardo al sincronizar la hora y datos meteorológicos inexactos fuera de Asia.
  • Su interfaz web apenas permite ajustar la hora y la ubicación, sin acceso remoto ni visualización de datos.

Nuevo firmware mejorado

El nuevo firmware permite:

  • Sincronización con cualquier servidor NTP.

  • Ajuste automático de horario estacional.

  • Conexión con OpenWeatherMap para obtener datos meteorológicos globales.

  • Acceso completo a la estación desde la red local mediante una interfaz web avanzada.

  • Compatibilidad con pantallas OLED de 0,96” (128×64) y 0,6” (64×48).

De esta forma, el kit se convierte en una estación meteorológica completa, fiable y adaptable a cualquier necesidad.

Configuración del firmware original

El video explica detalladamente cómo configurar el firmware original mediante la conexión WiFi del kit y la web qweather.com, donde deben generarse las credenciales y API keys necesarias.


Este proceso resulta complejo y limitado, motivo por el cual decidí desarrollar el nuevo firmware.

Configuración del nuevo firmware

La nueva versión del firmware simplifica todo el proceso:

  • La estación se conecta automáticamente a la red WiFi configurada.

  • Se accede al servidor web local para seleccionar zona horaria, API key y ciudad.

  • El firmware se sincroniza automáticamente con OpenWeatherMap para mostrar datos de temperatura, humedad, presión, viento y estado del cielo.

Compilación y programación

El firmware puede compilarse tanto para ESP8266 como para ESP32 utilizando el IDE de Arduino.
Incluye autodetección de librerías y configuración automática según el microcontrolador.
Solo es necesario definir la resolución del display en la librería Adafruit SSD1306.h.

Para programar el ESP01, se recomienda emplear su programador USB específico o un adaptador FTDI, asegurando el modo “programación” conectando GPIO0 a GND antes de alimentar el módulo.

Conclusiones

Con este nuevo firmware, el pequeño kit meteorológico se transforma en una estación completa, precisa y personalizable, capaz de funcionar con distintos módulos ESP y pantallas OLED.
El proyecto mantiene un bajo consumo y una gran flexibilidad, ideal para quienes buscan un reloj-estación meteorológica sincronizado por Internet.

Descargar el firmware

Puedes descargar de forma gratuita el firmware, accediendo al siguiente enlace: ESP_WeatherClock_NTP

¿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. Una de las empresas más grandes del sector es PCBWay.

Logo: PCBWay

https://pcbway.com/g/r7N1ct

ESP32: Reloj / Cronómetro

Construcción de un Reloj/Cronómeto de precisión, controlado con un módulo ESP32. Este cronómetro dispone de un pulsador, permitiendo su manejo en modo local y también a distancia. Para el control remoto se puede utilizar cualquier teléfono móvil o PC, que esté conectado a la misma red local que el módulo ESP32.

Hasta ahora, todos los relojes que he construido con el ESP32 necesitaban un acceso a Internet vía Wi-Fi para funcionar. En este caso, cuando el reloj funcione en modo cronómetro no será imprescindible disponer del acceso Wi-Fi. A través de su pulsador se pueden controlar todas las funciones del cronómetro,  y lo único que se perdería sin el acceso a Wi-Fi es el control remoto.

Reloj Pac-Man con ESP32 & UTF-8

Crono_ESP32.ino

Al principio del fichero Crono_ESP32.ino están los comentarios, indicando algunos link de compra de los módulos y descarga de librerías

hw_timer_t >>> Es la variable del ‘timer’ que se utiliza para crear las interrupciones de 100 mSeg del cronómetro

has_expired >>> Es la variable booleana que gestionará el ‘void loop’ para incrementar con precisión los 100mSeg. del cronómetro cuando esté en marcha.

Mode_CRONO >>> Es la variable booleana necesaria para gestionar si está funcionando como reloj o cronómetro.

pinPulsa >>> Define el pin GPIO donde está conectado el pulsador del cronómetro.

WifiManager.h >>> Es la librería necesaria para configurar le red WiFi a la que irá conectado el módulo ESP32.

Void IRAM_ATTR >>> Es la rutina de la interrupción, que se ejecutará siguiendo con precisión un intervalo de tiempo. Cada 100mSeg. se pondrá en alto la variable booleana: has_expired

void setup()

Se inicializa el puerto serie y se carga la configuración del reloj, almacenada en la memoria EEPROM del módulo ESP32.

Se configura el LED azul del módulo ESP32 como salida, para indicar de forma visual los incrementos y estado del cronómetro. También se configura el pin al que va conectado el pulsador como entrada en modo Pull-Up.

timer = timerBegin(0, 80, true) >>> Como el cristal de cuarzo del ESP32 es de 80 MHz, dividimos entre 80 para tener como referencia 1MHz, para que el Timer 0 se desborde cada microsegundo.

timerAttachInterrupt(timer, &timerInterrupcion, true) >>> Aquí activamos la interrupción del timer, y hacemos la llamada a la rutina: void IRAM_ATTR timerInterrupcion() 

timerAlarmWrite(timer, 100000, true) >>> Aquí activamos el disparo del timer cada 100.000 uSeg. = cada décima de segundo se producirá la ejecución de la rutina: void IRAM_ATTR timerInterrupcion() 

timerAlarmEnable(timer) >>> Se habilita la alarma del timer.

Librerías personalizadas

En la misma carpeta del proyecto se incluyen dos librerías, personalizadas para este Reloj/Cronómetro:

fonts_es.h >>> Contiene las dos fuentes de caracteres que utiliza el reloj, incluyendo los caracteres especiales que se utilizan en español, como son las letras acentuadas, Ç y Ñ; tanto en minúsculas como en mayúsculas .

max7219.h >>> Contiene las rutinas necesarias para mostrar y animar los caracteres en las 4 matrices LED, gestionadas en serie con sus respectivos circuitos integrados MAX7219.  Es importante indicar en esta librería la posición en las que van montadas las matrices LED sobre el circuito impreso… en este caso van rotadas 90º.

https://github.com/J-RPM/ESP32_Crono/

ESQUEMA

En el esquema se muestran con las conexiones que tenemos que hacer entre el módulo ESP32 y el PCB que contiene las 4 matrices LED. Son las mismas conexiones que tenía el anterior firmware del reloj, lo único nuevo son los dos hilos de conexión del pulsador con el módulo ESP32.

Caja 3D

Para hacer la carcasa del Reloj/Cronómetro utilicé el mismo diseño 3D que hice para el reloj, sin diseñar el tamaño y posición del agujero del pulsador. Así es posible mecanizar la caja a gusto de cada uno, para utilizar cualquier modelo de pulsador, eligiendo su posición… o mecanizar un paso de cable en la caja para colocar un pulsador en el exterior.

Caja 3D, para el PCB de 8 dígitos LED de 7 segmentos

https://www.thingiverse.com/thing:4655690

¿Necesitas fabricar un circuito impreso?

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.

 https://www.pcbway.es/

Logo: PCBWay

Plata Coloidal, PCB y Firmware

Actualización del firmware del generador de Plata Coloidal y diseño de su PCB. En la nueva versión del firmware (v1.3), el generador sigue midiendo la conductividad del agua al principio para calcular el tiempo de la electrolisis, pero cada 5 minutos realiza una nueva medida para corregir de forma automática el tiempo restante, en función del nuevo valor TDS que haya medido. Este reajuste también se puede hacer en modo manual en cualquier momento, mediante el pulsador. Aprovechando que este generador mide la conductividad del agua, ahora incluye una tabla con los valores TDS del agua y puede mostrar su valor en el display.

Generador de Plata Coloidal con Arduino

Para ensamblar los componentes  electrónicos del Generador de Plata Colidal que monté hace unas semanas, utilicé 2 PCBs de tipo universal. Realicé todas las conexiones por debajo, estañando hilos y siguiendo el esquema del montaje.  Como entiendo que esto muy laborioso para gente que no acostumbra a utilizar el soldador, he diseñado un PCB con el fin de facilitar su construcción y mejorar su acabado final. Y de paso, también le he dedicado un poco más de tiempo al firmware para mejorar sus prestaciones.

PCBs del Generador de Plata Coloidal

Nuevo firmware (v1.3)

En la versión anterior (v1.2), el generador realizaba una medida de la conductividad del agua al iniciar el proceso, con el fin de ajustar el tiempo total de la electrolisis en función de las PPM de la Plata Coloidal que queramos obtener.

Esquema del diseño: Generador de Plata Coloidal

Como pudimos comprobar en artículo anterior, la conductividad del agua aumentaba con la temperatura. Además, el valor TDS del agua también iba subiendo durante la electrolisis. Así la conductividad del agua irá subiendo durante la electrolisis, pero al mismo tiempo también irá bajando si hemos calentado el agua al empezar, hasta alcanzar la temperatura ambiente.

Aunque no es tan importante conseguir la medida exacta de las PPM en la Plata Coloidal, es muy sencillo corregir este problema. En la nueva versión del firmware (v1.3), el generador sigue midiendo la conductividad del agua al principio para calcular el tiempo de la electrolisis, pero cada 5 minutos realiza una nueva medida para corregir de forma automática  el tiempo restante, en función del nuevo valor TDS que haya medido. Este reajuste también se puede hacer en modo manual en cualquier momento, mediante el pulsador. Esto sería útil si se interrumpiera el proceso de la electrolisis, con el fin de remover el contenido o limpiar los electrodos, porque en estos casos suele variar ligeramente la conductividad del agua.

Aprovechando que este generador mide la conductividad del agua, he añadido en el firmware una tabla  con los valores TDS para poder mostrarlos en el display. Así no sería necesario comprar un medidor TDS, y podremos comprobar siempre la calidad del agua que vayamos a utilizar. Hay que tener en cuenta que esta medida TDS sólo es válida si se respetan todas las características de este montaje: el tipo de electrodos, separación entre ellos y su circuito limitador de corriente.

El rango de medidas TDS que permite mostrar este generador no es muy amplio, porque su circuito limitador de corriente interfiere en la medida comprimiendo su escala. De todas formas tiene una buena resolución con valores bajos del TDS,  entre 0 y 16ppm.

Ahora también, durante el proceso de la electrolisis, cada 30 segundos el generador mide el valor TDS del agua y lo muestra en la línea superior del display. Esta medida se alterna con el valor PPM actual de la Plata Coloidal.

Fuente de alimentación

Durante el montaje del primer generador me encontré con un problema en la alimentación, porque al conectar el relé que alimenta el circuito Step-Up se producía un pico de consumo, y en algunas ocasiones se bloqueaba o reiniciaba el micro controlador. Este problema se solucionó cuando monté 2 condensadores de 1000uF en la línea de alimentación de 5V. Lo extraño, es que se sigue apreciando una pequeña fluctuación en la iluminación del display cuando se conecta el relé.

Para salir de dudas, antes de elegir la fuente de alimentación a montar en el nuevo PCB, hice algunas medidas de consumo con el osciloscopio.

Medida de consumos con dos fuentes de alimentación conmutadas

Para obtener una gráfica de corriente al alimentar el relé y el circuito Step-Up a la vez, puse una resistencia de 0,8  Ohmios en serie con la alimentación de 5V.

Las puntas del osciloscopio del canal 1 las puse en la salida de la fuente de alimentación que estaba midiendo, con el fin de comprobar el comportamiento de cada fuente, con carga y sin carga. Y las puntas del canal 2 del osciloscopio las puse en paralelo con la resistencia de 0,8 ohmios.

Para obtener el valor de la corriente, sólo hay que dividir la tensión que muestre el osciloscopio entre el valor de la resistencia.

Si observamos las gráficas de corriente:

  • Con la fuente antigua se produce un pico de corriente de 1,67A de muy corta duración, pero suficiente para que la fuente de alimentación pudiese cortar su salida, ya que esta fuente es de 700mA. Después consume 288mA durante 81mS, el tiempo que tarda el módulo Step-Up en cargar sus condensadores y estabilizar la tensión de salida. El consumo en funcionamiento del relé y el módulo Step-Up, alimentados con la fuente de 5V es de 116mA.
  • Con la fuente pequeña, que es la versión moderna y también de 700mA según el fabricante, la gráfica de corriente es muy parecida. El pico de arranque es de 1,1A (también de muy corta duración) baja a 250mA y se mantiene durante 97mS, tiempo muy parecido al de la otra fuente, luego baja la corriente a 118 mA. que sería la corriente de funcionamiento con la fuente cargada.

Si comparamos ahora lo que ha sucedido con la tensión en ambas fuentes al conectar la carga:

  • Con la fuente antigua la tensión cae desde 5,1V hasta 4,49V y con la nueva desde 4,9V hasta 3,7V. Cuando se estabiliza el consumo, la caída de tensión de la fuente antigua es de 50mV, y si lo dividimos por el consumo de 116mA -> Ri =  0,43 Ohm.
  • Con la fuente nueva, la caída de tensión es de 120mV, y si lo dividimos por el consumo de 118mA -> Ri = 1 Ohm.

Lo que también se aprecia, es que la nueva versión de la fuente filtra mucho más las frecuencias transitorias que se montan sobre la tensión continua, pero a cambio su tensión de salida es menos estable.   

Teniendo en cuenta que el transformador de la fuente de alimentación nueva es más pequeño que el de la antigua, no parece muy lógico que ambas fuentes sean de 3,5W.

Test con el nuevo PCB

Durante las pruebas iniciales que hice en este nuevo montaje, se volvió a repetir el mismo problema que tuve en el montaje anterior. Al cerrarse relé, en algunas ocasiones se reiniciaba el ATMega328P. Como lo único que cambia con respecto al montaje anterior es el PCB, lo primero que hice es revisar las vías de alimentación y sus desacoplos.

Red +5V en el PCB

En el diseño de este PCB coloqué los dos condensadores de 1000uF separados en dos zonas, uno a la salida de la fuente de alimentación y el otro en las proximidades del relé, porque son los dos puntos de mayor consumo de todo el circuito.  Así la poca resistencia de la línea de positivo que une ambos condensadores, junto con ellos, forman un filtro PI. A continuación del segundo condensador de 1000uF está la vía que alimenta el display, el transistor de control del relé, el circuito Reset y la alimentación del ATMega328P.

El condensador de desacoplo de 100nF del ATMega328P lo puse al final de la red de +5V del PCB, para suprimir cualquier posible inducción entre el segundo condensador electrolítico y el final de la red de +5V. Lo único que cambia con respecto al montaje anterior, es que los dos condensadores electrolíticos de 1000uF están muy cerca del ATMega328P, y además sus conexiones las hice con hilo y estaño, y su sección es mucho mayor que la vía de este circuito impreso.

Medida VCC en ATmega328P

Aunque ya había hecho las pruebas del comportamiento de la fuente de alimentación, me faltaba por comprobar qué sucede con la tensión que le llega al ATMega328P en el PCB, con los dos condensadores de 1000uF conectados y todo funcionando.

Pico de consumo

Al medir con el osciloscopio me encontré con algo que no esperaba. El pico de consumo tan alto que se produce al alimentar el circuito Step-Up, descarga los condensadores y provoca que la tensión baje hasta 2,93V durante 27,4mS., hasta que se recupera la fuente y se vuelven a cargar los condensadores. Como el umbral de indecisión del microcontrolador está en el 50% de su tensión de alimentación, 2,93V están muy próximos al punto donde actúa el circuito reset del ATMega328P.

En estos casos el problema se debería resolver donde se produce, y se debería sustituir la fuente de alimentación por otra que soportara mejor los picos de consumo. Este es el problema de la fuentes de alimentación conmutadas, que se protegen y provocan cortes a su salida.

Como el pico de caída de tensión cambiaría muy poco aunque se aumentase la capacidad de los condensadores electrolíticos, colocando un condensador de 10uF entre los pines 7 y 8 del ATMega328P, se evita que entre cualquier pico transitorio y se reinicie, porque al estar alimentado con 5V no debería reiniciarse hasta que bajara su tensión a 2,5V.

Piezas 3D

La base de la caja ahora está hecha con una sola pieza, porque la serigrafía inferior apenas se daña con los soportes de impresión 3D, y así se simplifica el montaje.

Con el fin de facilitar la inserción y ajuste de los soportes de los electrodos en la base de la caja, he diseñado otra pieza 3D. Es una guía para alinear correctamente los electrodos, y mantener su inclinación de 5º durante el montaje.  Después también servirá para proteger los electrodos cuando no se use el generador, y no será necesario desmontar siempre los electrodos  después de cada uso.

Pieza guía 3D para los electrodos del generador

El diseño de las piezas 3D que necesitas para fabricar la caja y el soporte de este montaje, las puedes descargar de forma gratuita desde el siguiente link:

https://www.thingiverse.com/thing:6403044

¿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. Una de las empresas más grandes del sector es PCBWay.

Logo: PCBWay

 

PCBs del Generador de Plata Coloidal

Los dos PCBs que he utilizado en este montaje, los puedes conseguir a través de los siguientes enlaces:

Colloidal Silver Generator

Adapter for 2×16 LCD