A manera de “evolución” de la fuente de alimentación anterior, además que surge a la inquietud de una aplicación mas “general”, les comparto la experiencia de diseño de esta versión (con todo y errores cometidos 🤷🏽♂️🤦🏽♂️).
Antecedente.
Un poco de “historia” del por que de esta fuente de alimentación. Cuando se diseñó la versión para la raspberry pi, se pensó como una solución específica, ya que resolvía un problema concreto. Pero ¿que pasaba con casos mas generales? en donde la raspberry es parte de un sistema mas complejo/completo con ruteadores, modems, switches o algún otro circuito de aplicación que requiera también estar encendido todo el tiempo y no necesariamente use 5V de alimentación. La primera solución que se viene a la mente es “bueno, pues ya usa algún no-break”, pero como en el caso anterior, el no-break, para mi gusto, tiene un objetivo mucho mas grande y general, como equipos de computo de alto rendimiento, impresoras, monitores, etc. Y cuando lo usas para equipo que no consume mucha energía, su eficiencia baja considerablemente, ya que cuando usa las baterias, primero es para generar una corriente alterna y luego regularla, después los dispositivos conectados vuelven a convertir esa corriente alterna en directa. Con el diseño del siguiente circuito, pretendo “ahorrarnos” ese paso de convertir corriente directa en alterna y de nuevo en directa, para mejorar la eficiencia de una fuente con respaldo de batería.
En fin, comencemos con el planteamiento de nuestra fuente. ¿Como serán nuestras especificaciones?. Bueno, la idea es poder suministrar energía continua a circuitos/dispositivos que requieran entre 5 y 12[V] con una corriente de consumo máximo de 2[A]. También queremos que nuestro circuito pueda usar cualquier fuente conmutada que suministre entre 12 y 19[V], es decir alguna fuente que tengamos para leds, algún cargador viejo de laptop, etc. Para el respaldo de baterías, queremos que pueda usar tanto de Litio-Ion, Li-Poli, como de Ácido-Plomo para poder aprovechar el tipo que tengamos a la mano.
Resumiendo, las características de nuestra fuente serían las siguientes:
- Voltaje de Entrada: 12-19[V]
- Voltaje de Salida: 5-12[V]
- Corriente Máxima de Consumo: 2[A]
- Capacidad de Carga de Baterías: 8.5~9[V] para baterías de Litio-Ion. 13.5~13.9[V] para baterias de Ácido-Plomo en “trickle charge”

Fuente Principal.
Nuestra “Fuente Principal” es cualquier fuente comercial o de laptop que puede ser de cualquier valor de voltaje de salida entre 12[Vdc] y 19[Vdc]. Básicamente estamos eligiendo estos voltajes por un par de razones: Si tenemos como batería de respaldo baterías de Litio (Li-ion, Li-poli) podremos usar cualquier voltaje de entrada que esté en el rango mencionado. Si pensamos usar una batería de Ácido-Plomo el voltaje de la Fuente Principal tendrá que estar en el rango de los 15[Vdc] a 19[Vdc]. La razón de esto lo veremos en el bloque “Cargador de Baterías”. En fin, esta es la parte mas “sencilla” de nuestro sistema.
Para hacer las pruebas de funcionamiento, conseguí estas dos fuentes de alimentación:


Cargador de Baterías.
Para esta sección de nuestro circuito, elegí el clásico cargador con el LM317. Es un arreglo básico pero bastante confiable (o como dijeran por ahí: “Es un hechizo simple, pero inquebrantable”🧙♂️) que es capaz de cargar tanto las baterías de Ácido-Plomo de manera directa, o bien las basadas en litio en arreglo serie (aquí usare 2S) usando un circuito BMS adicional.

Como se puede observar, para la batería de Ácido-Plomo no hay que hacer prácticamente nada especial, salvo configurar, por medio de la resistencia variable, el voltaje de carga “trickle charge” que para una batería de 12[Vdc] es ~13.7[Vdc].
Para el caso de las baterías de Litio-Ion, el “truco” está en usar la baterías con módulos BMS que, con el circuito del LM317 darán gestión de carga y descarga.

Por ejemplo, para las pruebas pienso usar un arreglo de dos baterías en serie (2S) con el modulo BMS correspondiente. Para cargar este arreglo, es necesario proporcionar un voltaje de 8.5-9[Vdc], que se ajusta por medio de la resistencia variable (10k) del circuito con el LM317. Veo también una ventaja al usar BMS, ya que cuando las baterías están completamente cargadas, el mismo BMS desconecta las baterías del circuito, evitando degradar las baterías.
Mezclador Fuente/Batería.
Es prácticamente una compuerta “OR” hecha con diodos Schottky. Esto es para hacer el cambio “rápido” de la fuente de alimentación principal y la batería en caso de que la fuente falle. Una vez que la fuente principal está nuevamente funcionando, cambia nuevamente. Obviamente la clave de que este circuito funcione bien, es que la fuente principal siempre será de un voltaje mas alto que el de la batería a usar.
Regulador de Voltaje (Convertidor DC/DC Sepic).
El circuito que hará la “magia” de mantener nuestros ruteador, módem o aplicación es un convertidor dc/dc con topología SEPIC. La pregunta ¿Por qué elegir este circuito? Bueno, es una topología que nos da una gran flexibilidad en cuanto a la relación de voltajes de entrada/salida, ya que es capaz de convertir valores de voltaje de entrada que pueden ser mayores o menores que el voltaje de salida seleccionado, lo que lo hace muy adecuado para cuando hay intercambio entre fuente principal y baterías. Además es muy fácil adaptarlo desde cualquier convertidor dc/dc boost. (No voy a entrar mucho en detalles sobre las topologías en este momento, lo haré en otro “post”, lo prometo 😉).

Como se puede observar en el diagrama, el corazón de ésta etapa es el integrado XL6009/XL6019 diseñado para topologías boost. Una de sus características, que lo hace “ideal” para nuestros propósitos, es su amplio rango de voltaje de entrada, de 5 a 40 [Vdc]. Si le echan un ojo a la hoja de especificaciones verán que pasar de una topología de boost a una sepic es razonablemente sencillo.
La resistencia variable de 10k nos permite limitar el voltaje de salida de 1.25[V] a aprox. 13.5[V] con lo que podemos fijar el voltaje de salida, para no ir mas allá de accesorios de 12[V].
Primera versión.
Habiendo contemplado y definido los módulos que conforman nuestro circuito, me dispuse a trasladar esas ideas y bosquejos en un esquemático en diptrace:

Se puede observar que hice algunos “extras” para complementar el diseño, por ejemplo: a la entrada del circuito hay una sección de transistores mosfet para la protección de un voltaje inverso y sobrevoltaje; se implementaron sensores de corriente ZXCT1107 para medir la corriente de entrada y de salida; se incorpora una sección de micro controlador para poder hacer las lecturas de voltaje y corriente en el circuito, etc. Todo esto para hacer un poco mas “formal” nuestro diseño.
Una vez conforme, lo mandé a fabricar a jlcpcb.com:





Como pueden observar, usé componentes de montaje superficial, para poder hacer mas pequeña la PCB, tratando de usar encapsulados no mas pequeños que un 1206 (todavía valoro mi vista 😅)
El error.
Ahora bien, vean detenidamente el esquemático, si en este punto ya descubrieron el error principal (hay varios jeje), pueden sentirse orgullosos de ustedes mismos y reírse con confianza, yo ya lo hice 🤣 (aunque primero maldije un poco 😅). Si no lo han descubierto, no se preocupen, les explico:
Cuando terminé de ensamblar el circuito, me dispuse a programar algo sencillo en el microcontrolador para poder ver las mediciones en “tiempo real”…
En este caso la fuente principal es de 19.5[V], con una batería de respaldo del tipo Ácido-Plomo de 12[V] y configurada la etapa de carga para suministrar 13.8[V] para probar en un ruteador TPlink que necesita 9[V] y un máximo de 0.6[A]. ¿Que les pareció el “demo”? Debo decir que el objetivo principal del circuito se cumple muy bien! Con o sin fuente principal, el ruteador sigue funcionando sin interrupción!. Pero… ¿se fijaron bien? ¿Qué notaron de raro en las mediciones? (Principalmente en las de corriente). Si aún no lo notaron, les puedo decir que me sorprendió ver que la corriente de salida la medía como 0.0[mA]. Primero pensé que era un problema de firmware, así que revisé el código enfocándome en la medición de las corrientes y no parecía haber nada fuera de lugar, que para ser un programa “express” sabia que le faltaban cosas, pero la funcionalidad estaba, ya que sí medía la corriente de entrada; después pensé que no había soldado bien algo y/o el sensor ZXCT1107 estaba defectuoso (ajá 😅), así que me dispuse a revisar hasta con lupa y microscopio la placa, pero al parecer no había “error”; por último empecé a revisar el esquemático y ¡di con el error! ¡Estaba ahí! ¡Me picaba los ojos desde el comienzo y no lo vi! ¡Que coraje! 🤦🏽♂️

Pues resulta que donde está colocada la resistencia R2, que según mide la corriente de salida, realmente solo esta midiendo la corriente de carga de los capacitores y no la corriente de consumo del dispositivo que alimentaría nuestra fuente, además y cómo está indicado en la hoja de especificaciones del XL6019, la frecuencia de operación es de 180[kHz], por lo que en la resistencia solo pasan “ráfagas” de corriente a esa frecuencia!! 🤦🏽♂️ Y que van variando dependiendo de la necesidad de regular el voltaje en los capacitores de salida.
Para no hacer el cuento (más) largo, decidí probar un pequeño remiendo en el PCB, haciendo un corte aquí y allá ademas de hacer algo de soldadura creativa 😝. Lo que en concreto hice fue, remover tanto la resistencia R2 junto con el sensor de corriente U1, cortar la pista que alimenta el conector de barril de salida, agregar en el corte la resistencia R2, y soldarle de manera directa en la resistencia el sensor U1 como puede verse en las siguientes imágenes:








Además, se agregan capacitores para estabilizar las mediciones de corriente y voltaje que llegan al ADC del microcontrolador.
Después de hacer los remiendos mencionados, hice una prueba para verificar que iba por buen camino 🤞🏽
Para ésta prueba, la fuente principal es de 12[V], un “pack” de baterías 18650 de litio-ion en arreglo 2S con su respectivo BMS, la configuración del voltaje de carga de batería en 8.9[V] y el voltaje de salida quedó establecido en 9[V]. Como se pudo apreciar, ya medía el voltaje y la corriente de forma “decente”, por lo que puedo decir que las correcciones fueron las adecuadas.
Bueno, el circuito hace lo que tiene que hacer, regular el voltaje de salida aun cuando se intercambien los voltajes de entrada. Pero ya me había emocionado en obtener un cierto resultado, así que hice los respectivos cambios en el esquemático y el PCB.
Segunda versión.



Entre las correcciones del diseño, están obviamente las que tenían que hacerse para poder medir mejor el voltaje y la corriente. Además, se agregaron modificaciones relacionadas con el control de la fuente por medio del microcontrolador al agregar un par de botones y el control del encendido/apagado del XL6019.
Y ya que estaba “encarrerado” haciendo rediseño, me aventé la “puntada” de hacer una versión “sencilla” del circuito. Básicamente le quite el microprocesador y solo dejé lo esencial, esto debido a que en las pruebas pasadas pudimos comprobar que regulaba bien el circuito y solo necesitaríamos ajustar las resistencias variables para ajustar la configuración de funcionamiento.


Ahora bien, voy a mandar fabricar las PCB a jlcpcb y en cuanto lleguen, actualizaré este texto. En vía de mientras les dejo el proyecto en GitHub 😉
Actualización:
Hace tiempo que llegaron las nuevas versiones de los pcb’s:
Y bueno, asi quedaron ensamblados:
Y bueno, una de las pruebas fue poder energizar una computadora:
Como pueden observar, parece que funciona de manera decente jeje..
Espero todo esto les sea de utilidad…
Argos.