tpl5110 temporizador de bajo consumo para arduino y esp8266 5d07f7c0ec83f - Electrogeek

TPL5110 temporizador de bajo consumo para Arduino y ESP8266 Deja un comentario

El TPL5110 es un temporizador de bajo consumo basado en controlador MOSFET (transistor). Básicamente lo que hace este dispositivo es, a través del MOSFET, activar o desactivar la alimentación.

Se puede decir que es un relé que te permite cortar la alimentación de la batería y activarlo por tiempo. En el TPL5110 se puede configurar un tiempo entre 100 ms a 2 horas.

Lo interesante de este dispositivo es que cuando está desactivado sólo consume 35 nA, una corriente muy pequeña. Esto hace que cuando alimentamos un Arduino con baterías, podamos ahorrar mucha energía.

Por ejemplo, si tienes una estación meteorológica con un NodeMCU que toma medidas cada hora, en estado de reposo o ahorro de energía puedes llegar a consumir entre 1 mA y 6 mA durante la hora de inactividad. Con este componente reduces este consumo hasta los 0.000035 mA.

En este tutorial te mostraré cómo puedes trabajar con el TPL5110 con diferentes placas como Arduino UNO, la gama de Arduino MKR, Adafruit Feather HUZZAH ESP8266, NodeMCU y Wemos D1 Mini.

Elige tu placa preferida y prepárate a alargar la vida de tus pilas o baterías con Arduino.

tpl5110 bajo consumo arduino esp8266

Cómo calcular la duración de una pila o batería

Lo primero que tenemos que tener claro es calcular, aproximadamente, cuánto nos puede durar unas pilas o unas baterías según el consumo. Para ello necesitas conocer el consumo medio de tu proyecto.

Hablo de proyecto y no sólo de la placa ya que con las pilas o la batería también vas a tener que alimentar los sensores.

Todo esto es importante conocerlo si quieres tener una estimación precisa de lo que durarán unas baterías o pilas. Lo ideal sería tener un amperímetro preciso. Tomar la medida durante un tiempo prolongado y calcular la media.

Una vez tengas ese valor, ya puedes calcular la duración de la batería aproximada. Vamos a ver un ejemplo.

Imagínate que tras calcular la media obtienes que el consumo medio de tu proyecto es de 20 mA. Si tienes una batería que tiene una capacidad de 2.000 mAh, la fórmula para calcular la duración sería

duracion_{bateria}=frac{capacidad_{bateria}}{consumo_{promedio}}times0.7

Se activa un factor de corrección de 0,7 debido a factores externos que pueden afectar a la batería como descarga profunda, estrés mecánico, uso de la batería, etc…

Con los datos que tenemos el resultado sería

duracion_{bateria}=frac{2.000mAh}{20mA}times0.7 = 70 horas = 2,91 dias

Como ves, aunque sólo consuma 20 mA la duración de la batería no llega a los 3 días. Esto es inviable.

Si por ejemplo queremos que la batería dure 1 año (8760 horas) tendrías que hacer que tu proyecto consuma menos de 0,15 mA.

¿Esto es posible? Pues con un TPL5110 lo es. Veamos cómo.

Temporizador de bajo consumo TPL5110

Me gusta siempre comentar que yo no soy ningún experto en electrónica. Lo que suelo explicar tanto en el blog como el podcast es lo que voy aprendiendo leyendo diferentes blogs y por mi propia experiencia.

Desde hace tiempo vivo obsesionado por hacer que las placas de Arduino y ESP8266 consuman lo mínimo posible. Muchas veces, con las placas tal cual vienen de fábrica es imposible. Lo normal es modificarlas eliminando conexiones y componentes que no afectan al funcionamiento normal.

Por ejemplo, puedes ver este artículo de SpainLabs donde Grafisoft consigue reducir el consumo de un NodeMCU de mA a 40 μA.

Sin embargo, esto puede ser una tarea muy complicada si no tienes los conocimientos suficientes y las herramientas adecuadas (como es mi caso).

En estos casos hay que buscar soluciones prácticas. Una de ellas es el temporizador TPL5110 de Adafruit. Lo puedes comprar por unos 8€.

TPL5110

Y aunque yo soy un fan incondicional de la marca Adafruit, hay que decir que a vece sno todo funciona como debería. Un ejemplo es esta placa.

A lo largo de este artículo verás los casos en los que no es aconsejable utilizar un TPL5110. Pero antes vamos ver el funcionamiento básico de este componente.

Cómo funciona el TPL5110

Como ya te he comentado no soy ningún experto en electrónica así que te diré a grandes rasgos cómo el TPL5110 es capaz de hacer que nuestro proyecto del IoT sólo consuma 0,02mA en estado de reposo.

La idea es sencilla. El TPL5110 es un temporizador que activa o desactiva el paso de corriente. Funciona como si fuera un relé pero que se controla por tiempo. El tiempo de activación es seleccionable desde los 100 ms hasta las 2 horas.

Básicamente el TPL5110 se activa periódicamente cada cierto intervalo de tiempo configurado mediante un potenciómetro que lleva incorporado en la placa o a través de un valor de resistencia conectado al pin Delay.

Una vez encendido esperará a recibir una señal a través del pin Done para apagar el TPL5110. Si el TPL5110 no recibe esa señal en el tiempo establecido con el potenciómetro o resistencias, se reiniciará el dispositivo de forma automática.

Pines del TPL5110

Lo primero es conocer las conexiones. Tenemos acceso a 5 pines:

  • VDD: pin de alimentación tanto del TPL5110 como de la placa que queramos controlar. Admite un rango de voltaje de 3V a 5V. Cuando pase el tiempo y se active el TPL5110, derivará la corriente desde este pina al pin DRV.
  • GND: toma de tierra común.
  • Delay: este es el pin de control de retardo. Podemos modificar cada cuánto se activa la salida del TPL5110 de dos formas. La configuración por defecto permite ajustar el tiempo con el potenciómetro incorporado en la placa. Pero también puedes ajustar el tiempo conectando una resistencia a este pin y luego a GND. Para utilizar esta configuración, tienes que cortar la conexión de la parte trasera de la placa donde pone Trim Enable.
  • DRV: es el pin de salida de alimentación. Cuando se active el TPL5110, por este pin saldrá el mismo voltaje que tengamos en el pin VDD.
  • Done: este es el pin donde se enviará la señal para indicar que se desactive el TPL5110. Desde un pin de la placa tendremos que pasar de un estado LOW a HIGH como señal de desactivación.

Como he comentado, el pin Delay es el pin de control de retardo. En la parte trasera del TPL5110 puedes cortar la conexión Trim Enable para configurar con una resistencia a GND el temporizador.

TPL5110

En el caso de que no quieras utilizar una resistencia conectada al pin Delay del TPL5110, puedes utilizar el potenciómetro de la propia placa.

TPL5110

Si vas a utilizar tiempos muy bajos, se recomienda no utilizar el potenciómetro ya que es complicado ajustar correctamente para obtener una buena precisión.

Para que te hagas una idea, estos serían algunos valores de tiempo según la resistencia utilizada.

Tiempo Resistencia
10 segundos 11,2 kΩ
50 segundos 20,047 kΩ
1 minuto 22,02 kΩ
10 minutos 57,44 kΩ
50 minutos 115,33 kΩ
1 hora 30 minutos 149,39 kΩ
2 horas 170 kΩ

La relación entre el tiempo y la resistencia no es lineal. Es un algoritmo complejo que puedes consultar en la hoja de características del TPL5110.

Para este tutorial he cortado la conexión Trim Enable y utilizaré una resistencia de 10 kΩ que aplica un tiempo de entre 7 y 8 segundos.

Por último, en la parte de atrás también hay una conexión que pone  LED Enable. Si cortas esa conexión lo que hará es desactivar el LED que hay en la propia placa. Este LED indica cuando el TPL5110 está activo (encendido) y cuando no (apagado).

TPL5110

Para que el TPL5110 consuma todavía menos, es recomendable desconectar el LED cortando la conexión  LED Enable.

Ahora vamos a hacer las pruebas para comprobar cómo funciona con diferentes placas. Antes vamos a ver un esquema general de conexionado.

Esquema eléctrico TPL5110

El esquema básico de conexión del TPL5110 sería el siguiente. Luego verás cómo adaptar este esquema a diferentes placas.

TPL5110 conexión

La parte de alimentación puede ir conectado a una pila o a una batería de entre 3V y 5V. Hay que tener en cuenta que este voltaje es el que alimentará a la placa y por lo tanto, si nuestra placa sólo admite 5V, en el pin VDD tenemos que alimentar con esos 5V.

El pin de Delay indica el tiempo que estará apagado el TPL5110. Para hacer estas pruebas he cortado la conexión Trim Enable y he conectado una resistencia de 10 kΩ que equivalen a 7 segundos de tiempo.

El pin DRV sirve para alimentar la placa o componente que quieras encender y a apagar. En principio este pin irá conectado a los pines de alimentación de Arduino o ESP8266.

Por último el pin Done es el que recibirá la señal para desactivar el TPL5110 y que entre en modo ahorro de energía. La señal debe ser un paso de LOW  a HIGH.

Creo que con esto queda todo más claro así que vamos a probar con diferentes placas.

Voy a utilizar una una fuente de alimentación MB102 que puede suministrar 3V3 o 5V para las pruebas.

TPL5110 con Arduino UNO

El material necesario para esta práctica es el siguiente:

Este sería el circuito para utilizar el TPL5110 con un Arduino UNO

TPL5110 ARDUINO UNO - Electrogeek

El circuito es muy sencillo y se repetirá a lo largo de los ejemplos que vemos en este tutorial. De la fuente MB102 que suministra 5V sacamos un cable quE va al pin VDD del TPL5110. Conectamos también GND de la fuente con GND del TPL5110.

Del pin Delay conectamos una resistencia de 10 kΩ que va conectada a GND.

Del pin DRV sale un conexión al pin Vin del Arduino UNO. Este pin sirve para alimentar la placa.

Por último el pin de control Done se conecta con el pin 7 del Arduino.

Sólo falta ver el código que será muy parecido en todos los ejemplos.

Código TPL5110 y Arduino UNO

El código es muy simple ya que lo que pretende es mostrar el funcionamiento del TPL5110. Lo único que hace es ejecutarse y parpadear el LED integrado dentro de la placa durante 2 segundos.

Luego pone el pin de control (en este caso el 7) en estado LOW y luego en estado HIGH. Esta es la señal que se envía al pin Done del TPL5110 para que se ponga en modo ahorro de energía. Es importante recalcar que durante este tiempo, el consumo pasa a ser aproximadamente de 0,02 mA.

Aquí te dejo el código que tienes que cargar.

Para cargar el código desconecta el cable que va del pin DRV del TPL5110 al pin Vin del Arduino UNO. Una vez lo tengas desconectado conecta el cable USB a la placa y carga el código.

Cuando termine, desconecta el cable USB y vuelve a conectar el cable del Vin.

Enciende la fuente de alimentación MB102 y comprueba qué sucede.

Verás que el funcionamiento es correcto.

  1. Se enciende la luz verde del TPL5110 indicando que está activo y que está alimentando el Arduino UNO.
  2. El Arduino UNO ejecuta el código y hace parpadear el LED (enciende y apaga) y luego manda la señal de desactivación al TPL5110.
  3. El TPL5110 se desactiva y entra en modo ahorro de energía (0,02 mA).
  4. Cuando pasan aproximadamente 7 segundos (resistencia de 10 kΩ) el TPL5110 se activa y deja pasar la corriente a Arduino UNO iniciándose de nuevo el programa. Lo puedes comprobar porque se enciende el LED integrado en el TPL5110.

Este es el proceso normal que realizará el TPL5110 conectado a cualquier placa. Con Arduino UNO funciona perfectamente, vamos a probar con otra placa como un Arduino MKR1000.

TPL5110 con Arduino MKR

Reducir el consumo de un Arduino UNO de esta manera está muy bien pero quizás quieras montar un dispositivo del IoT. Entonces necesitarás una placa con conexión a una red WiFi como Arduino MKR1000 o Arduino MKR1010, a una red LPWAN como Arduino MKRFOX o Arduino MKRWAN o con conexión GSM como Arduino MKRGSM.

En todos estos casos el consumo es un gran reto. El TPL5110 puede ser un gran aliado así que vamos a probarlo.

El material necesario es el siguiente:

El circuito sería el siguiente.

TPL5110 ARDUINO MKR

Si quieres probar con otra placa de la gama MKR el pineado es exactamente el mismo. Sólo tienes que sustituir una placa por otra.

Código TPL5110 y Arduino MKR

El código es el mismo que hemos utilizado para probar el Arduino UNO. Esa es la magia de esta plataforma, haces un código para una placa y es portable a placas compatibles con Arduino.

He probado en casi todas las placas de la familia de Arduino MKR y en todas funciona correctamente el TPL5110. Se nota cuando las placas son de calidad.

Ahora vamos a dar el paso a las placas basadas en el ESP8266. Vamos a empezar por la placa de Adafruit Feather HUZZAH ESP8266.

TPL5110 con Adafruit Feather HUZZAH

La placa Adafruit Feather Huzzah ESP8266 es la placa de la marca basada en este SoC que más éxito a tenido. Es una placa muy completa, con muchas funcionalidades extra y que ofrece un rendimiento excelente como todos los productos de Adafruit.

Este tutorial no hablaré de las características de esta placa (eso lo dejo para otro artículo), lo único que me interesa ahora es saber si funciona correctamente con el TPL5110.

El material necesario que vas a necesitar es:

Este sería el circuito que tienes que montar.

TPL5110 ADAFRUIT FEATHER HUZZAH ESP8266

La novedad en este circuito es que he incorporado un condensador para que el voltaje que deriva por el pin DRV sea más estable. Si quitas el condensador, el TPL5110 no pasa nunca a un estado activo y no permite pasar la corriente.

Código TPL5110 y Adafruit Feather HUZZAH

Aquí tienes el código completo para cargar a la placa Adafruit Feather HUZZAH. Es idéntico al utilizado para las placas de Arduino salvo que el pin Done en esta ocasión es el pin 4.

Una vez cargado el código haz las conexiones con el TPL5110 y comprobarás como hace el ciclo de encenderse y apagarse automáticamente. Parece que con la incorporación del condensador todo funciona correctamente.

La alimentación se hace por el pin USB de la placa Adafruit Feather HUZZAH que puede ser hasta 5V. Esta placa recomiendan alimentarla a través del conector JST de la batería que viene incorporado. Quedaría hacer una prueba utilizando este conector.

La siguiente placa que voy a probar va a ser la Wemos D1 Mini.

TPL5110 con Wemos D1 Mini

Aunque todavía no he hablado específicamente de la placa Wemos D1 Mini en el blog, si que me habrás oído decir que es una de mis placas favoritas. Es una placa muy versátil y compacta.

Sin embargo, al contrario que todas las placas que hemos visto anteriormente, esta placa tiene muy poca documentación. Además, encontramos placas de diferentes fabricantes y calidades. Esto hace que sea dificultoso poder trabajar con ella.

wemos d1 mini

Con esta placa es con la que más dificultades he encontrado a la hora de utilizar el TPL5110. He dedicado varios días a probar diferentes configuraciones y no ha sido posible utilizar el TPL5110 con esta placa.

También es cierto que tengo que decir que la placa que he utilizado no es la oficial de Wemos. Es de una marca china que se llama WAVGAT. Haré las mismas pruebas con la placa oficial Lolin D1 Mini (haré también el tutorial complejo 🙂

La siguiente placa será la última. Es la más que conocida NodeMCU de la cual suelo hablar a menudo en el blog y en el podcast.

TPL5110 con NodeMCU V2

La última placa que voy a probar es la placa NodeMCU V2. He hablado en repetidas ocasiones sobre esta placa en el blog. La versión más común es la V2, con la que voy a trabajar en este ejemplo.

Para utilizar el TPL5110 con la placa NodeMCU vamos a necesitar el siguiente material

La versión de la placa NodeMCU o el fabricante es muy importante. La que recomiendo comprar es una versión oficial de Amica.

El circuito sería el siguiente.

TPL5110 NODEMCU

En este caso con las pruebas realizadas no ha hecho falta conectar un condensador de desacoplo en el pin DRV.

Código TPL5110 y NodeMCU

A continuación te dejo el código completo para conectar el TPL5110 y la placa NodeMCU.

Tras cargarlo a la placa NodeMCU y hacer las conexiones con el TPL5110, el funcionamiento ha sido correcto.

Con esta placa damos por terminado este tutorial.

Conclusiones temporizador TPL5110 de bajo consumo con Arduino y ESP8266

En este tutorial has visto una forma fácil y sencilla de reducir el consumo de tus proyectos basados en Arduino y ESP8286. Ahora sólo falta que lo pongas en práctica.

Queda pendiente que escriba otro tutorial para medir de forma precisa el consumo de nuestras placas para así poder predecir cuánto va a durar la batería o pilas.

Prueba con las diferentes placas que tengas por casa y comparte el resultado con todos. Lo puedes hacer en los comentarios de este artícuo.

¿Conoces alguna otra técnica para reducir el consumo de tus proyectos con Arduino o ESP8266?

 

Comparte este Post

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Abrir el chat
0

Tu carrito