Añadir cargador de batería a ESP8266 y ESP32 (bien hecho)

Modificado por última vez hace 3 meses

En este tutorial te voy a enseñar a añadir batería y cargador a cualquier proyecto basado en microcontrolador, esté basado en Arduino, ESP8266, ESP32, o cualquier otro, de forma correcta, sin peligro, fácilmente y por muy poco dinero.

Además, el fin de este proyecto no es solo montarlo, sino comentar algunas cosas por el camino, muy importantes para el aficionado al cacharreo que quiere dotar a sus montajes de batería. Y es que, ¿has notado lo de «bien hecho» en el título?

Los usos son interminables y, aunque voy a utilizar como ejemplo mi proyecto de Medidor de CO2 Casero, puedes utilizarlo en cualquier otro proyecto.

No son pocas las ocasiones en que nos gustaría utilizar nuestro medidor de CO2 con baterías (al menos a mí me pasa a menudo). Incluso para calibrarlo en exterior periódicamente, me viene bien que sean autónomos. Hasta ahora había utilizado para este fin un powerbank (alimentador recargable con batería), de los utilizados normalmente para alimentar teléfonos móviles, pero he pensado que ya era hora de una solución un poco más integrada.

¿Y qué es eso de que está bien hecho?

Poner una batería a un chisme que funciona a 5V (o, para el caso, 3.3V) parece una de las cosas más sencillas del mundo, ¿verdad?

Tengo un secreto: Este artículo no trata solo de decirte como «montar» la batería, sino enseñarte por qué es importante hacerlo de determinada manera, por eso es tan extenso (y, créeme, podría ser mucho más extenso si entráramos mucho más al detalle).

Te pido un favor: Aunque creas que esto es muy sencillo y que hay demasiada palabrería en este artículo para algo tan fácil, por favor, lee el artículo completo (no vayas solo «al montaje»), puede que ya lo sepas todo, pero, a lo mejor, te sorprendes.

Yo creo que a estas alturas todo el mundo sabe que las baterías de Iones de Litio (Li-Ion) y las de polímero de litio (Lithium Polymer o «Lipo») son delicadas y pueden llegar a ser incluso peligrosas. Seguro que muchos recordáis lo de los patinetes que salían ardiendo solos por la calle, no hace demasiado tiempo.

Convivimos con estas baterías y no suele pasar nada, pero eso es porque la inmensa mayoría de aparatos comerciales que las utilizan conocen sus riesgos y las gestionan adecuadamente.

El peligro no proviene de la batería en sí (bueno, un poco sí) si no, sobre todo, del uso que se haga de ella.

El problema suele estar en que la mayoría de la «gente no especialista» no sabe (y es lógico, no tiene por qué saberlo) qué es eso de «el uso que se haga de ella» y menos aun cuando confían en que si cogen una batería y cogen un cargador y los enchufan con cuidado, nada malo puede pasar.

¡ERROR!

Hay un tipo de uso que es especialmente delicado y estoy harto de ver proyectos con un diseño que pone tu batería, tu aparato y tu casa en peligro.

Este tipo de uso es, sobre todo, cuando quieres que usar el aparato y cargar la batería a la vez.

Piénsalo, no hay tantos aparatos que hagan eso. Podemos pensar en los teléfonos y, que estén realmente extendidos, pocos más…

Nosotros queremos que la batería de nuestro medidor esté siempre cargada, queremos que nuestro aparato funcione mientras que la batería se está cargando. No queremos tener que apagar el medidor unas horas mientras se carga la batería.

Los mandamientos de las baterías Li-ion y Li-po

Estos son los diez mandamientos más importantes + 1 cuando se trabaja con baterías Li-ion y Li-po (y luego siguen otros):

  1. No sobrecargues la batería
  2. No sobrecargues la batería
  3. No sobrecargues la batería
  4. No sobrecargues la batería
  5. No sobrecargues la batería
  6. No sobrecargues la batería
  7. No sobrecargues la batería
  8. No sobrecargues la batería
  9. No sobrecargues la batería
  10. No sobrecargues la batería
  11. No cortocircuites la batería (este si es tan importante como los 10 anteriores)
  12. No sobredescargues la batería por debajo de un punto
  13. No permitas que se caliente la batería
  14. No pongas baterías en paralelo si no son iguales y tienen la misma carga

No son los únicos, pero son los que puede hacer que tu casa salga ardiendo con más facilidad.

El pecado de la mayoría de proyectos

La mayoría de proyectos que se ven por internet cometen un error grave y voy a contarte cuál es de una forma sencilla para que puedas entenderlo rápidamente.

Si recuerdas, los diez primeros mandamientos decían: «No sobrecargues la batería». Esto quiere decir que, en el proceso de carga de la batería, hay un punto determinado en el que tienes que dejar de cargarla y no pasar de ahí. Seguir cargando la batería, pasado ese punto, es peligroso.

Como puedes imaginar, del párrafo anterior se desprende que el proceso de carga de una batería es muy delicado y los cargadores para baterías de Li-ion y Li-po (al contrario de lo que sucede con baterías de plomo, de níquel-cadmio o de níquel-metal, que aguantan más barrabasadas) son aparatos muy precisos.

No voy a explicar con todo detalle como es el proceso de carga de una batería Li-ion y Li-po (quizá en otro artículo) pero si voy a darte las líneas principales de lo que hace un cargador:

Proceso de carga de batería con TP4056
  1. Primero el cargador hace comprobaciones de seguridad para asegurarse de que la batería no está conectada al revés, que está dentro de un rango de voltajes determinados, etc.
  2. A continuación, el cargador realiza un «pre acondicionamiento», en el que comprueba, de una forma muy controlada y suministrando corrientes bajas, que la batería «absorbe» la corriente que se espera que absorba, que sube su voltaje al darle corriente y cosas así.
  3. Empieza la carga a corriente constante, que dura casi todo el proceso de carga. Eso quiere decir que el cargador irá cambiando el voltaje que suministra a la batería como sea necesario, de forma que ésta siempre absorba la misma intensidad.
  4. Cuando el cargador detecta que la batería está cerca de los 4.2 voltios, que marcan su voltaje máximo, empieza a reducir la intensidad de corriente que suministra a la batería.
  5. Cuando la corriente es menor a un valor determinado, el cargador detiene la carga. Ha terminado.

Bien, pues el problema está en que en la mayoría de proyectos, el último punto no se alcanza nunca y la batería se carga, y se carga, y se carga… hasta… hasta que la batería aguanta.

¿Te has fijado cuantos aparatos que funcionan a batería dan problemas con la misma? Pues ahí tienes un buen motivo.

¿Y por qué no para de cargar? Pues también te lo voy a explicar a continuación.

El sistema de alimentación habitual y (muy) mal hecho

Lo que hacen en muchos (muchísimos) proyectos es lo siguiente:

Partimos de un proyecto, que se alimenta de forma normal a 5 voltios.

Lo siguiente sería añadir una batería con su cargador (una pequeña placa basada en el circuito integrado TP4056, que funciona estupendamente y es capaz de cargar la batería con una precisión del 1,5%), y que se podría llegar a dejar conectado siempre para mantener la batería cargada permanentemente:

Claro, en el ejemplo anterior tendríamos una batería cargada pero esa batería nos daría un voltaje de entre unos 3 y 4.2 voltios, dependiendo de lo cargada que esté, y no podríamos utilizarlo directamente para alimentar nuestro circuito (que necesita 3.3 o 5 voltios para funcionar).

Lo que hace nuestro avispado diseñador es conectar, en paralelo con la batería, un circuito llamado «step up down» (entre otras curiosas combinaciones de palabras como booster o SEPIC), al que le podemos aplicar a la entrada cualquier voltaje (dentro de unos límites que dependen del circuito exacto que utilicemos, digamos entre 2.5 y 30 voltios) y que a la salida siempre nos dará unos estupendos 3.3 o 5 voltios estabilizados:

Pero, ¡oh!, nuestro diseñador aficionado se da cuenta a cabo de poco tiempo (cuando se le muera la batería u ocurra un desastre, lo que antes pase, pero que no tardará mucho), de que aquí faltan cosas para que su circuito funcione correctamente y pueda dormir tranquilo por la noche.

  1. Una protección contra sobredescarga, porque si deja su aparato conectado demasiado tiempo y la batería se descarga por debajo de un punto, la batería morirá (algunas baterías llevan esta protección integrada).
  2. Una protección contra cortocircuitos, porque, seamos serios, en cualquier momento (y más en un circuito de aficionados, que es lo que somos) un cable puede tocar con otro, y… se escapa el humo que traen dentro todos los componentes electrónicos… (en el mejor de los casos).
  3. Otras protecciones que posiblemente no provoquen que el montaje o la casa salga ardiendo, pero que es conveniente tenerlas.

De manera que vuelve al tablero de diseño y cambia el cargador simple que había utilizado por un cargador más completo, que incluya las protecciones necesarias (atento a las conexiones al cargador, son muy parecidos, pero no iguales: el anterior tenía solo dos terminales de salida y este tiene cuatro terminales independientes, dos para la batería y otros dos de salida):

Llegados a este punto, nuestro diseñador aficionado ya tiene lo que quería. Un sistema de alimentación que funciona con batería, que puede cargar la batería y alimentar el dispositivo a la vez y que tiene las protecciones necesarias…

Lo prueba y ¡funciona! y tan contento lo publica…

Pero ese diseño (tan sumamente extendido, búscalo en Google si quieres y lo verás a cientos) oculta un oscuro secreto, un pecado mortal que nos puede poner en peligro:

¡EL CARGADOR NUNCA TERMINA DE CARGAR LA BATERÍA, INCUMPLIENDO ASÍ LOS PRIMEROS 10 MANDAMIENTOS!

¿Y por qué ocurre esto?

La clave la tenemos en el primer punto del datasheet del circuito integrado TP4056:

«El TP4056 termina automáticamente el ciclo de carga cuando la corriente de carga cae a 1/10 del valor programado después de alcanzar la tensión final de flotación.»

Esto quiere decir que el TP4056 va a parar de cargar la batería solo cuando el voltaje final haya llegado a 4.2V y la corriente de carga caiga a una décima parte de la corriente de carga programada.

Por defecto, en la mayoría de placas con el TP4056 (y otras similares) la corriente de carga programada es de 1 Amperio (se puede modificar cambiando una resistencia), lo que supone que hasta que no haya un consumo inferior a 100mA el proceso de carga no se interrumpirá y, como tenemos un circuito adicional conectado, «colgando del cargador«, el cargador se verá «confundido» por ese consumo adicional y no parará nunca de cargar la batería.

Si la corriente de carga programada fuera de 500mA. el cargador solo terminaría de cargar la batería cuando el voltaje hubiera llegado a 4.2V y el consumo fuera inferior a 50mA.

La solución básica

La solución al problema anterior pasa por conseguir que los circuitos de carga de la batería y alimentación de nuestro dispositivo sean independientes.

Fíjate en el siguiente diagrama, imagina que tuviéramos ese conmutador en nuestro circuito y que cambiara automáticamente dependiendo de si está la alimentación externa conectada o no.

Aquí lo tenemos con la alimentación externa conectada. Como ves la batería sigue cargándose, pero no tiene conexión con nuestro circuito:

Y aquí lo tenemos solamente con la batería:

Esto, electrónicamente, se suele hacer mediante un transistor MOSFET y un diodo, funcionando de forma conjunta, de forma que entre los dos son capaces de dirigir la corriente por el camino correcto, dependiendo de si hay alimentación externa o no:

Básicamente tenemos el mismo circuito prohibido de antes, pero ahora tenemos ese «conmutador automático» que elige el camino correcto para la corriente.

Este es el camino que toma la corriente cuando la alimentación externa está conectada. Como ves la carga de la batería y la alimentación de nuestro dispositivo son completamente independientes:

Cuando no hay alimentación externa, nuestro dispositivo se alimenta únicamente de la batería:

Además, de esta forma también le damos prioridad a la alimentación externa sobre la batería cuando el aparato está alimentado por cable, de manera que evitaremos que nuestro circuito provoque la carga y descarga continua de la batería (lo que acortaría mucho su vida).

Las imágenes anteriores son de una excelente nota de aplicación del fabricante Microchip, donde nos habla precisamente del diseño de cargadores de baterías Li-Ion y de los circuitos «load sharing» (carga compartida) o «power path» (camino de la corriente). Si tienes interés en saber más te recomiendo su lectura, aquí.

¿Y cómo lo hacemos bien?

Hace unos años hubiéramos necesitado un montón de componentes: Varios para las protecciones de la batería, varios para el cargador, varios para el «load sharing». Ahora contamos en el mercado con circuitos integrados que hacen todas esas funciones en la cuarta parte de un centímetro cuadrado.

La solución que te traigo en esta ocasión se basa en uno de esos circuitos integrados. El circuito integrado MCP73871.

Te dejo aquí el datasheet del MCP73871.

Al ser tan pequeño es realmente muy difícil de soldar para un aficionado. La buena noticia es que podemos comprar una placa que tiene el integrado MCP73871 y todos los componentes que necesita para funcionar por menos de 2€. ¡Así que el proyecto es superfácil!

He preparado un completo tutorial en video donde lo explico todo, todo y todo, paso a paso.

No te lo pierdas si en algún momento piensas añadir batería y cargador a alguno de tus proyectos.

Por cierto, antes de que se me olvide, y como cuento en el video, este circuito es completamente compatible con la carga de la batería mediante paneles solares (de 5.5 y 6V), ya que cuenta con la inteligencia necesaria para no cargar demasiado el panel solar y extraer de él la máxima energía que sea posible en cada momento. Más abajo puedes leer más sobre esta funcionalidad, llamada VPCC.

IMPORTANTE (ACTUALIZACIÓN DESDE EL PRIMER VIDEO):

Si vas a utilizar esta placa alimentándola con un cargador o alimentador, te recomiendo que la conectes como te indico a continuación (entrada de corriente a los terminales + y – en lugar del terminal PWR, fíjate bien en la fotografía para no confundir los dos pines marcados como «+» que hay bastante juntos):

Comprueba además abajo, y en el segundo video, como debes modificar la placa para optimizarla para su uso con alimentador o cargador.

El tutorial está dividido en dos videos:

En el primer video verás la explicación y montaje general.

En el segundo video verás las modificaciones recomendables para que el cargador funcione correctamente con un alimentador o cargador externo (en lugar de un panel solar).

Los videos son un poco largos porque están explicados con mucho detalle y están repletos de consejos e informaciones que creo que pueden ser interesantes.

Hacer estos videos lleva mucho trabajo. Si te gusta el video no te olvides de darle a «Me gusta» y suscribirte al canal. Eso me motivará a seguir haciendo más videos como estos.

Para saber cómo medir el voltaje de la batería con ESP Easy, no dejes de ver el siguiente tutorial:

Los materiales del tutorial

En el tutorial he utilizado materiales muy baratos y sencillos de conseguir.

Te dejo los enlaces donde he comprado los componentes y materiales que he utilizado para hacer el tutorial:

👉 Placa gestión energía, cargador MCP73871 DIY More
👉 Placa elevadora step up (booster)
👉 Placa protección batería
👉 Cables de silicona
👉 Flux para soldar RMA-223
👉 Conector Micro-USB con placa PCB para cablear

Características beneficios y funcionalidades de nuestro sistema de alimentación con batería

Existen otras maneras de abordar este problema, pero la que te propongo en este tutorial tiene muchas ventajas. Estas son algunas de ellas:

  • Compartición de la carga del sistema y gestión de la carga de la batería integradas (load sharing/power path).
  • Alimentación simultánea del sistema y carga de la batería de iones de litio
  • El control de corriente proporcional a la tensión (VPCC) garantiza que la carga del sistema tenga prioridad sobre la corriente de carga de la batería de iones de litio
  • Gestión de la ruta de alimentación de bajas pérdidas con funcionamiento de «diodo ideal»
  • Controlador de gestión de carga lineal completo
  • Transistores de paso integrados
  • Protección de descarga inversa integrada
  • Fuentes de alimentación de entrada seleccionables: Puerto USB o adaptador de pared AC-DC

Dispones además de múltiples opciones adicionales (para algunas de ellas deberás comprobar el datasheet del circuito integrado para saber cómo utilizarlas):

Opciones de voltaje de carga de alta precisión preestablecido:

  • Carga de batería a 4,10V, 4,20V, 4,35V o 4,40V
  • Tolerancia de regulación del 0,5%.
  • Corriente constante / Tensión constante (CC/CV)
  • Control de la corriente de entrada total de 1,8A como máximo (con disipador). Sin disipador es recomendable no exceder 1Amp.
  • Corriente de carga rápida programable por resistencia. Control: 50 mA a 1A
  • Punto de ajuste de terminación de carga programable por resistencia
  • Control de corriente de entrada USB seleccionable. Máximo absoluto: 100 mA (L) / 500 mA (H)
  • Recarga automática
  • Control automático de fin de carga
  • Temporizador de seguridad con control de activación/desactivación del temporizador
  • Preacondicionamiento de 0,1C para celdas muy agotadas
  • Control de la temperatura de las celdas de la batería
  • Bloqueo por baja tensión (UVLO)
  • Indicador de estado de batería baja (LBO)
  • Indicador de estado de alimentación (PG)
  • Indicadores del estado de la carga y de los estados de error

Además, con las mejoras introducidas en el segundo video, conseguiremos:

  • Optimizado para uso con cargador o alimentador externo
  • Protección contra cortocircuito
  • Protección de sobrecarga
  • Protección contra sobredescarga
  • Protección contra sobrecorriente
  • Medición del voltaje de la batería desde ESP8266

Análisis y pruebas prácticas

Os dejo con la primera prueba práctica.

Me llamaba mucho la atención el hecho de que esta placa dispusiera de un condensador tan sumamente grande (4700uF 25V), sobre todo, cuando el fabricante del chip recomienda en su datasheet el uso de un condensador de 4.7uF.

Me parece que la respuesta está en el propio datasheet y os la marco a continuación.

Claro, dice «cualquier buen condensador de filtro de salida» y un «buen condensador» no es barato, por lo que el fabricante parece haber decidido ahorrar costes utilizando un condensador mediocre pero mucho más grande.

Para comprobar si esto era así, he realizado las siguientes dos pruebas:

Con el condensador original de 4700μF 25V. Con una entrada de 5V de un powerbank.

Y el resultado es el siguiente:

Con un condensador de tántalo de 4.7μF 25V, como indica el fabricante del chip.

El resultado es el siguiente:

Como podéis ver, el resultado es prácticamente el mismo (ligeramente mejor con el de tántalo de 4.7μF 25V, al ser un condensador de mejor calidad).

En ambos casos el resultado es muy bueno, más teniendo en cuenta que probablemente parte del ruido observado sea del propio osciloscopio, que además está en un entorno bastante ruidoso eléctricamente.

Estas han sido unas pruebas rápidas sin carga. Podría ser que a medida que aumente la carga el condensador de 4.7μF no sea suficiente y haya que poner uno mayor. Haré más mediciones cuando tenga tiempo y las pondré aquí.

También es muy posible que este condensador mayor solo sea necesario cuando se utilizan paneles solares.

Análisis de la placa de carga con MCP73871

Actualización (23/3/2021): Ya está resuelto el misterio. Los problemas que comento a continuación estaban provocados por un VPCC mal configurado. Si vas a utilizar la placa con alimentador o cargador USB, lee abajo el punto «Modificando la placa para su uso con cargador/alimentador (modificar VPCC)» para saber más.

Esta placa de carga es un poco misteriosa.

Parece una versión económica de una placa de Adafruit «USB, DC & Solar Lipoly Charger» que, con el mismo chip y las mismas características tiene un precio de 17€. Adafruit ya no vende esta placa, la ha sustituido por otra similar con el chip BQ24074.

La realidad es que después de tener el medidor con el que he escrito este artículo y grabado el video funcionando durante varias semanas sin ningún problema (enchufado a la red principalmente, con muy poco uso mediante batería), a raíz de un comentario de un usuario, que decía que no le funcionaba el medidor si no tenía una batería instalada (cosa que teóricamente no sería un problema, según el datasheet del MCP73871) me puse a investigar y encontré algunas cosas un poco extrañas

El caso es que no he tenido tiempo todavía de hacer comprobaciones en el medidor que monté (ya habéis visto en el video que está todo con pegamento y bastante apretado, por lo que hay que desmontar bastante) pero he hecho un montaje de pruebas compuesto por: Una fuente de alimentación de laboratorio a la entrada Power, una batería 18650 de unos 2800mAh de capacidad en la entrada BAT y una carga electrónica controlada por ordenador en la salida.

Los resultados de las pruebas iniciales han sido muy misteriosos…

Con la fuente ajustada a 5.0V y limitada a 1A, la batería cargada (4.15V) y una carga que se iba incrementando desde 0.1A hasta 1.2A en incrementos de 0.1A cada 2 segundos, el resultado ha sido este:

Como ves según aumenta la carga (línea roja) va bajando el voltaje que suministra la placa (línea azul) de manera que cuando la carga es de 0.5A el voltaje suministrado es de 3.79V y cuando la carga es de 1.2A el voltaje baja ya hasta los 3.16A.

Por desgracia el fabricante de la placa (DIY More) no ha publicado el esquema ni documentación sobre su uso, por lo que toca hacer ingeniería inversa con microscopio, polímetro y datasheet del MCP73871.

Actualizado 23/3/2021: Gracias al usuario jcomas tenemos disponible el esquema de la placa de DIY More. (¡Gracias Josep!)

Actualización (23/3/2021): Ya está solucionado. Como comento arriba, si vas a utilizar la placa con alimentador o cargador USB, lee abajo el punto «Modificando la placa para su uso con cargador/alimentador (modificar VPCC)» para saber más.

Actualización (1/4/2021): Publicado segundo video con modificación VPCC, mejoras, optimizaciones, protección.

Algunos pines del MCP73871

El integrado MCP73871 dispone de varios pines que, dependiendo de si se ponen a nivel lógico alto o bajo cambian las características de funcionamiento del chip, activan y desactivan opciones, etc.

En el datasheet puedes encontrar la descripción detallada de lo que hace cada uno de ellos.

A continuación, te detallo algunas comprobaciones, medidas y pruebas que he realizado en algunos pines en ese esfuerzo de ingeniería inversa que te decía.

Pin SEL (3) – Funcionamiento desde puerto USB o alimentador

Este pin permite que el MCP73871 funcione en dos modos, «USB» o «alimentador».

Cuando se pone a nivel bajo el modo de funcionamiento es USB y, en este modo, el MCP73871 limitará el consumo de corriente para no dañar el puerto USB al que esté conectado (según el estándar USB estos puertos tienen unas limitaciones de energía relativamente bajas).

Con el pin a nivel alto el modo de funcionamiento será de «alimentador». En este caso, el MCP73871 elimina las limitaciones de consumo de corriente de entrada y llegará a consumir hasta 1.8A del alimentador al que esté conectado.

La placa por defecto viene con el pin a nivel alto (a través de una resistencia de 10K) por lo que su modo de funcionamiento es de alimentador, pudiendo llegar a consumir 1.8A de la fuente.

La placa cuenta en la parte inferior con un pad marcado SEL que nos permite modificar el nivel de este pin fácilmente (fácilmente cuando sepa cómo se usa, claro, lo tengo pendiente de investigar para ver como es el esquema de esta zona porque no he encontrado ninguna explicación).

Pin PROG2 (4) – Corriente máxima del puerto USB cuando SEL=LOW

Este pin permite, cuando el MCP73871 está funcionando en modo USB (pin SEL a nivel bajo), elegir si queremos que el chip llegue a consumir hasta un máximo de 100mA o de 500mA (nivel bajo = 100mA, nivel alto = 500 mA).

Este pin está accesible por la parte inferior de la placa, en un pad marcado PROG2.

Pin PROG1 (13) – Programación de la corriente de carga

La corriente de carga de la batería puede ser programada mediante la resistencia conectada al pin PROG1 del circuito integrado MCP73871, de esta forma es posible variarla entre 100mA y 1000mA.

La placa es suministrada de fábrica con una resistencia de 2K, que programa el MCP73871 para cargar la batería con 500mA. Sustituyendo la resistencia de 2K por una resistencia de 1K conseguiríamos una corriente de carga de 1000mA y si la cambiamos por una de 10K la carga se haría a 100mA.

En la siguiente gráfica puedes ver cuál sería la corriente de carga para diferentes valores de la resistencia conectada a PROG1 de forma que puedas elegir la que más te convenga.

Ten en cuenta que siempre hay que respetar la intensidad máxima de carga indicada por el fabricante de la batería. Cuando ese dato no está disponible, el valor aceptable sería de la mitad de la capacidad de la batería (esto es, si la batería es de 1200mAh es aceptable cargarla a 600mA).

Pin VPCC (2) – Control de carga proporcional al voltaje (importante para paneles solares)

Este pin es importante para el funcionamiento del MCP73871, ya que de él depende una de las principales características de este chip, que lo diferencian de otros chips similares.

El MCP73871 permite la carga de la batería utilizando paneles solares (maximizando su eficiencia para aprovechar al máximo la energía que estos paneles pueden proporcionar), y una de las características de los paneles es que según vas cargando más un panel solar (pidiéndole más intensidad de salida) hay un punto crítico en el cual el panel «colapsa»; su voltaje cae de golpe y la energía que puede entregar también.

Esto quiere decir que tenemos que tener cuidado para que el panel no colapse. Dicho de otra forma: hay que tratar de obtener de él la máxima intensidad posible, pero justo antes del punto de «colapso» y ese punto va variando continuamente con la energía solar que haya en ese momento y con el consumo del circuito que tenemos conectado…

La característica VPCC que incluye el chip MCP73871 sirve para optimizar esto y funciona de la siguiente manera (explicación breve y sencilla, para que entiendas de que va, para saber más mira el datasheet donde está explicado en detalle):

El MCP73871 monitoriza el voltaje que entrega el panel a través de un divisor de voltaje que se conecta al pin VPCC. El divisor de voltaje hay que calcularlo de forma que en el pin VPCC haya 1.23V cuando el voltaje del panel solar es el óptimo que permite que dé la máxima energía.

Cuando el voltaje en el pin VPCC baja de 1.23V el chip reduce la intensidad demandada del panel, bajando la intensidad de carga de la batería para dar prioridad a la salida (al aparato conectado a su salida) y suministrando la intensidad que sea necesaria desde la batería, si la del panel solar no es suficiente, hasta completarla.

Esta función podemos desactivarla, uniendo el pin VPCC a IN.

Por ejemplo, si tenemos un sistema diseñado para paneles que proporcionan 5.5V con ±0.5V de tolerancia (que es bastante habitual), tendremos que seleccionar el peor escenario, que en este caso serían 5.0V, para calcular la tensión que debemos aplicar al pin VPCC a través del divisor.


Este divisor de tensión que puedes ver en el ejemplo es muy parecido al que trae de fabrica nuestra placa. La diferencia es que en nuestra placa en vez de una resistencia de 330K tenemos una de 270K y en lugar de una de 110K tenemos una de 100K.

La placa que hemos elegido viene configurada de fábrica para optimizar el funcionamiento como cargador con un panel solar, y no con un alimentador o puerto USB.

Como nuestra placa viene de fábrica optimizada para su uso con paneles solares con un voltaje de 5.0V, es posible que, si la conectamos a un cargador o alimentador USB, la tensión baje de 5.0V (por la caída de tensión en los cables y las tolerancias de los componentes) lo que supondría que el MCP73871 limitaría la intensidad que demandaría del alimentador, complementando la energía que falte para alimentar el circuito desde la batería.

Importante: Si vas a utilizar este circuito con paneles solares y vas a alimentar equipos de 5V, en vez de un «step up», es recomendable que utilices un «step up down», ya que los paneles solares pueden dar hasta 5.5 o 6V a pleno rendimiento. El «step up» solo sube el voltaje (por lo que el voltaje de entrada debe ser inferior al de salida), mientras que el «step up down» es capaz de subirlo o bajarlo, dependiendo de si el voltaje de entrada es más bajo o más alto que el deseado.

Modificando la placa para su uso con cargador/alimentador (modificar VPCC)

Si vamos a utilizar habitualmente nuestra placa de carga alimentada mediante un cargador o alimentador, (y aunque en muchas ocasiones todo funcione correctamente porque el voltaje se mantenga por encima de los 5V) es recomendable reducir el VPCC, modificando el divisor de voltaje o deshabilitarlo mediante la conexión del pin VPCC a IN.

Como te he comentado en el punto anterior, la placa, tal y cómo viene de fábrica, está optimizada para carga mediante paneles solares, con el VPCC ajustado para que disminuya la corriente de carga cuando la alimentación baje de 5V.

Esto, cuando utilizamos la placa con alimentador o cargador USB, es una lotería ya que dependiendo de varios factores que ya he comentado, es fácil que la alimentación baje de los 5V, con lo que la corriente de carga se reduciría drásticamente.

Para solucionar este problema, tienes dos opciones:

  1. Puedes deshabilitar por completo el VPCC, uniendo el pin VPCC a IN.
  2. Puedes cambiar el divisor de tensión del VPCC para reducir el voltaje a partir del cual se reduce la carga.

Te voy a explicar aquí como puedes deshabilitar por completo el VPCC fácilmente (opción 1).

No te voy a explicar paso a paso la opción 2 por dos motivos: El primero es que normalmente no es necesario si vas a utilizar la placa con cargador o alimentador USB. El segundo es que, al ser un uso avanzado, se supone que sabes lo que haces y en el punto anterior ya te he explicado como calcular tú mismo el divisor de tensión.

Deshabilitando el VPCC del MCP73871

Como te comenté anteriormente, podemos desactivar esta funcionalidad, uniendo el pin VPCC a Vin.

¿Y esto cómo lo hacemos?

Bueno, pues es sencillo: Como te expliqué antes, el pin VPCC está conectado a la entrada de alimentación a través un divisor de tensión de la siguiente manera:

Este divisor de tensión que puedes ver en el ejemplo es muy parecido al que trae de fabrica nuestra placa. La diferencia es que en nuestra placa en vez de una resistencia de 330K tenemos una de 270K y en lugar de una de 110K tenemos una de 100K.

Esta es la posición de las dos resistencias que nos interesan en nuestra placa (R1 y R5 es la serigrafía que hay en la placa, aunque ahora no la verás bien porque están las resistencias encima de la serigrafia, ocultándola):

Como lo que tenemos que hacer es conectar el pin VPCC directamente a Vin, solamente tenemos que quitar ambas resistencias y en el lugar que ocupaba la resistencia de 270K hacemos un puente con una gotita de estaño o un trocito de cable (donde estaba la de 100K dejamos el hueco). ¡Ya está!

Tienes instrucciones paso a paso para realizar esta modificación en el segundo video, que puedes encontrar más arriba.

El step up y optimización del consumo

Tras bastante investigación, parece que el step up utilizado está basado en el circuito integrado MT3608 (o una versión china).

Una cosa interesante de este chip es que cuenta con un pin ENABLE (habilitar), lo que te permite «encender y apagar» a voluntad el step up desde tu microcontrolador, y de esa forma puedes apagar y encender los sensores o actuadores que tengas conectados a él con el fin de ahorrar energía.

En funcionamiento es muy sencillo: cuando este pin está conectado a VCC, el step up está funcionando y a su salida obtendremos la tensión prevista. Cuando el pin está unido a GND, el chip estará «apagado» y a su salida obtendremos 0 voltios (lo que en la práctica supone apagar lo que tengamos conectado a él).

Esto es fundamental para el ahorro de energía.

La placa del step up no tiene este pin accesible y viene de fábrica conectado a VCC de forma permanente (de manera que el step up está siempre funcionando), por lo que si quieres utilizar este pin, tendrás que realizar una pequeña modificación, que consiste en cortar la pista que le une a VCC y conectar el pin a un pin de tu microcontrolador, mediante un cablecillo.

Cuando el pin de tu microcontrolador esté a nivel 1 (encendido) pondremos en marcha el step up y cuando esté a nivel 0 lo detendremos.

Es una operación un poco delicada, dado el pequeño tamaño de los componentes, pero, como siempre digo, nada que no se pueda conseguir con un poco de determinación.

En las siguientes fotografías puedes ver la pista de la placa de circuito impreso que tienes que cortar para desconectarla de VCC, así como el cablecillo soldado al pin ENABLE que deberás conectar al pin de tu microcontrolador que quieras que encienda y apague el step up.

Aquí tienes el datasheet del MT3608, por si quieres saber más sobre él:

Esto seguirá creciendo…

Con esto ya puedes empezar, aunque han quedado muchas cosas en el tintero.

Hay más cosas que iré añadiendo a esta página a medida que las vaya preparando, ya que el video me estaba quedando muy largo y hay «mucha tela que cortar».

Quiero enseñar otras placas similares, pruebas, medidas y análisis de funcionamiento realizados con osciloscopio, carga electrónica y otros instrumentos de medida.

Y, ya sabes, si quieres que amplíe algún aspecto en especial sobre este tema, déjalo en los comentarios.

Suscríbete ahora a la newsletter y únete al grupo de Telegram y no te lo pierdas.

28 comentarios en «Añadir cargador de batería a ESP8266 y ESP32 (bien hecho)»

  1. Pues estamos deseando que acabes el artículo, ya te comenté en el grupo de Telegram que me gustaría poner una cámara de aeromodelismo emitiendo en 5.8 Ghz y alimentarla con una placa solar. Nos vendría muy bien para usarla como baliza y hacer pruebas de antenas.
    Me admira tu capacidad de comunicar cosas complejas de manera sencilla que las podamos entender toda clase de personas.
    Enhorabuena !
    Saludos.

    Responder
  2. Otro que está quemando el F5 esperando a que actualices el artículo 🙂 Ya tengo un medidor en el cole y acabo de encargar materiales para otro para mí, este tenía idea de hacerlo con batería.
    Al menos podías dejarnos la lista de la compra, que luego tarda mucho en llegar.. jeje
    Muchas gracias por el curro que te pegas! y lo que aprendemos.

    Responder
    • Hola José.
      Entre las muchas placas que compré y probé para hacer ese artículo, compré dos de estas (las de 1 y 2 celdas). No tienen load sharing y consumen un montón en vacío.

      Responder
  3. Primero, darte las gracias Mario por el pedazo articulo que has creado y que poco a poco vas ampliando.
    Segundo, podrías nombrar algunas placas que funcionasen correctamente sin cargarnos la batería y pudieran ser alimentadas vía externa pensadas para dispositivos IoT.

    Un saludo y de nuevo, gracias por la información y por tu tiempo

    Responder
    • Hola Miguel.

      Muchas gracias por tu comentario.

      La verdad es que no he encontrado ninguna placa con ESP8266 que esté bien optimizada para su uso con batería y que sea asequible y fácil de conseguir.

      Yo te recomiendo utilizar directamente un ESP12 con un sistema de gestión de energia como el que he descrito aquí.

      En el artículo del blog Experimentos con ESPEasy (ESP8266) y bajo consumo – v1.0, que puedes encontrar aquí: https://emariete.com/experimentos-con-esp-easy-esp8266-y-bajo-consumo-v1-0/ puedes encontrar mucha información útil sobre la optimización del hardware para usarlo con batería (aunque el software de los ejemplos esté basado en ESPEasy da igual).

      Responder
  4. Hi, thank you for this article which has helped me enormously, however I still cant get my project to work fully. I am using the MCP73781 to feed a raspberry pi with a camera attached and a 10,000maH lipo battery. It will be connected to a solar panel so I have adjusted the input voltage to 5.5 volts to simulate a solar panel being connected for testing purposes. The problem is that it appears that the raspberry pi can demand up 700mA but the MCP73781 cant provide that amount (or so it seems). I ordered the MCP73781 as a solar charger so I haven’t changed anything on the MCP73781. Does the MCP73781 limit the current when only using the battery (ie night time).? Kind regards

    Responder
    • Hi Donald.

      In this post the IC used is the MCP73871 not the MCP73781 so you will have to check the MCP73781’s datasheet or the datasheet for the specific board you are using.

      Anyway, I have not experimented with this chip and high currents. The chip’s datasheet says it has a Maximum 1.8A Total Input Current Control but for this current you will have to take an eye on the termal design considerations (also on the datasheet). I’m not sure if this is the right chip for a Raspberry Pi kind of UPS, probably not.

      Responder
  5. Great explanations…bravo.
    You did mention : «The plate has at the bottom with a pad marked SEL that allows us to modify the level of this pin easily (easily when you know how to use it, of course, I have yet to investigate to see what the scheme of this area is like because I have not found any explanation).»
    there is also a pad for PROG2…
    Did you have time to investigate more on: how to use these pads…(to toggle HIGH or LOW logic for SEL & PROG2.
    I noticed SEL is connected to Vcc thru a 10K resistor (so set HIGH) .
    If I want to set it LOW, do i need to connect the pad to GND? (cannot believe it is so simple..)

    Responder
    • Hi David.

      Sorry for the bad translation. It was (mostly) an automatic translation. Now I took the time to do a (mostly) manual correction/translation to have a better translation to English, so I hope you and other English-speaking people can understand better the post.

      I had no time to test that but yes, it looks like it’s as easy as connecting the pad to GND. Nothing more needed…

      I have pending to do some more tests and extend the article but didn’t had the time.

      Best regards.

      Responder
  6. Hola señor Mariete: todo lo del tutorial esta bastante claro, mi proyecto usara un arduino NANO, y mi objetivo es que cuando el arduino este alimentado por la bateria (o sea, la salida del step up conectada al pin de 5v del arduino), yo pueda cargarle un programa al arduino por el usb de este «SIN DESCONECTAR EL CARGADOR».

    debemos tener en cuenta que esta recibiendo 5v desde el step up y cuando conecte el usb para cargarle el programa desde la pc, por este puerto habra otros 5v.

    Esta forma es prudente o necesito otra circuiteria para hacer esto?

    Gracias

    Responder
    • Hola Elliot.

      La verdad es que no conozco el esquema del Arduino Nano por lo que no te puedo responder con exactitud.

      Si te puedo decir que, aunque la mayoría de las placas están protegidas mediante un diodo para que cuando lo alimentas por el pin de 5V estos no salgan por el puerto USB, no suele ser así al revés y normalmente cuando alimentas por USB salen los 5V por el pin de 5V. Por este motivo no es muy aconsejable, en general, hacer lo que sugieres porque no sé cómo se comportará el step up cuando le metas estos 5V por su salida (y es muy probable que no le siente nada bien).

      A ver si algún usuario lo conoce con mayor detalle y te puede responder mejor. De momento, mi recomendación es que desconectes la alimentación por el pin de 5V cuando vayas a programarlo.

      Un saludo.

      Responder
  7. Hola!
    Antes que nada, felicitaciones por el artículo, completísimo y muy instructivo. Tengo una duda sobre el uso del step-up para generar 5V luego de la placa, ya que si el panel solar entrega cerca de 6V, la tensión de salida (Load) es de unos 5,7V, con lo que el voltaje de entrada del step-up es mayor al valor pretendido a la salida. Con una placa del tipo MT3608, esa tensión de entrada produce 5,5V en la salida, lo que puede llegar a ser excesivo en algunos casos..

    Gracias!

    Responder
    • Hola Ernesto.

      Tienes razón. El voltaje de entrada con un panel solar podría llegar a ser demasiado alto para el step up que se nombra en el post, aunque en mis pruebas, y las de algunos usuarios, no hay problema y el step up ha aguantado bien el ligero aumento de voltaje, por encima de specs, sin problema. Hay que tener en cuenta que en el momento en que hay una carga conectada el voltaje del panel cae rápidamente.

      De todas formas, ya que lo comentas y para evitar posibles problemas, voy a incluir en el post una recomendación para que los usuarios que utilicen paneles solares usen un «step up down» que les permita aplicar voltajes de entrada mayores con más seguridad.

      Un saludo y muchas gracias por tu aporte.

      Responder
  8. Respondiste muchas preguntas que hace tiempo buscaban respuestas
    Muchas gracias

    Nota: quise puntuarte con 5 estrellas y no se por qué saltó con la primera, sirva como disculpa

    Responder
  9. Good explanations. I see the MCP73871 has five pins in one side which purpose I can’t find. .They are marked +.-,D,+,C and the conectors reads «CN1». Do you know what are they used for?

    Responder
  10. I will answer myself.
    First +,- are connected ,respectively, to same PWR,GND pins in input power connector.
    D = discharging
    Next + goes to input power supply pin19 in chip
    C= charging

    So this pins can be read with a pill-up resistor to know the device state.

    Responder
  11. Muy buen proyecto. Una consulta, en el caso de querer programar la ESP32, seria necesario desconectar la alimentación por batería, o seria posible solo conectando el cable usb ? Gracias

    Responder
  12. Buenas tardes! Antes que nada, mil gracias tanto por los vídeos como por este post, son muy buenos.
    Tengo una pregunta, se podría usar dos baterías en paralelo para aumentar el tiempo de uso?

    Un saludo y gracias!

    Responder
  13. Could the board be powered from a solar panel and an external supply at the same time? Would it be safe to operate?

    Thanks for your effort on explaining these topics.

    Responder
  14. Could the board be powered from a solar panel and an external supply at the same time? Would it be safe to operate?

    Thanks for your effort on explaining these topics.

    Responder
  15. If I wanted to use the micro usb port on the esp32 for the power input could I connect the boards 3v3 and ground to the input on the TP4056?

    Responder
  16. Hi, thank you for a comprehensive guide and all the effort you put into this!

    Could you help me understand more about the Low/High variable pins on the chip?
    You state that SEL for example is by default set to High (AC-DC) through a 10k resistor. In the datasheets we see that the leakage of all four of these pins is at max 1μΑ.
    That means the Voltage Drop of the resistor is 0.01V, thus they are all set to high. Do you think it is safe to remove the corresponding capacitors (thus breaking the connection to VDD) and then connecting the tabs to GND in order to set them to Low?

    Responder
  17. Actually this is contradictory of the video of the renounced youtuber bigclivedotcom called TP4056 myth busting

    Please check and if necessary adjust your article to refclect the safe usage of this popular and easy to implement module.

    Also what is missing there, please include a proper way to hold the battery level at 80% or 4V – is it with 2 parallel diodes or some other way.

    Responder
    • Both are right.

      The problem is not that the battery will charge above 4.2V, the problem is that the battery will be continually floating around 4.2V with continuous charging and discharging. This is one of the biggest enemies of these batteries. The battery will quickly degrade and that is where the main danger comes in. A battery of this type that is not in good condition is dangerous.

      Li-ion and li-op batteries can’t stand this treatment.

      Responder

Deja un comentario