Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
APORTE [SpainLabsIoT2018] ESP8266 NodeMCU - Ajustando su consumo (hack)
#1
resim

resim

Reduciendo el consumo de los ESP8266 integrados (NodeMCU u otras series - Extrapolable a otras placas)

Os traigo un truquillo muy básico para aquellos que quieran usar las placas NodeMCU (del tipo que sean, ya que es aplicable a todo tipo de versiones). Lo que vamos a hacer es reducir drásticamente el consumo de nuestro hardware NodeMCU. Para ello vamos a atacar justamente donde esta uno de los principales problemas, su regulador. Este post va de transmitir la idea y que vosotros seáis capaces de hacer vuestros propios cambios, pues son diseños sencillos e integraciones inmediatas, pero existen variedades.

Estas placas suelen llevar un regulador de tipo LM1117 3v3, que es muy conocido dentro del mundo de Arduino y en general el mundo Maker, raro se me haría que fuera desconocido para alguien. El caso es que este regulador tiene un consumo "muy elevado de corriente" (parámetro Iq en los Datasheet). En nuestro famoso regulador, este valor ronda en torno a 5-10mA, y pensareis, pues no es tanto, vaya movida por unos pocos mA. Error muchachos!! Error!!!. Si nos enfocamos en el mundo del Internet of Things y afinamos a las aplicaciones que usan una batería. cada mA cuenta, y creerme que hablar de unos pocos mA de consumo es una barbaridad. Este tipo de cambio, aparentemente insignificante, es fácilmente extrapolable a otro tipo de placas que usen el mismo regulador LM1117, ya sean con pantalla, o el módulo ESP32, etc etc.

Voy a matizar esto, en las aplicaciones de bajo consumo donde nuestros sistemas no estén conectados a la red o a un panel solar (y aquí también es importante el consumo), la actividad del hardware se puede reducir a periodos muy cortos de tiempo (unos pocos segundos), por lo que el resto del tiempo, el dispositivo esta "durmiendo", es decir, nuestros famosos "DeepSleep". Así que es aquí donde si tenemos un micro, o en nuestro caso un ESP8266, con un consumo en DeepSleep de un puñado de uA (entorno a 20uA), os fijáis en el desperdicio? veis que hemos integrado un sistema que pasa de consumir unos uA a unos pocos mA? Veis la drástica reducción del tiempo que puede estar funcionando con una batería? Pues ahí es donde nos vamos a centrar, y remarcar que aunque la modificación del hardware valdría para todos los casos, esta mas pensada para usarse cuando queremos usar un NodeMCU con una batería y su conexión a una fuente externa es limitada o inexistente.

Con nuestro escenario mas o menos identificado, lo mismo que el problema, vamos a por una solución. Vamos a cambiar el regulador!!! Y alguno quizás se lance rápidamente a cambiarlo, pensando que la sustitución es inmediata, aquí os adelanto que no es así, el pinout del LM1117 es distinto al resto de reguladores LDO de bajo consumo (al menos los que he consultado). Así que nos toca hacer una PCB adaptadora, para soldar nuestro nuevo regulador en ella y posteriormente soldar el conjunto al hardware NodeMCU.

Os pongo una imagen donde he recortado un fragmento de un par de datasheets, concretamente el del regulador LM1117 original (http://www.ti.com/lit/ds/symlink/lm1117.pdf) y la prueba y comparación para el ejemplo la voy a realizar con el regulador MCP1700 (http://ww1.microchip.com/downloads/en/De...01826D.pdf). LM1117 parte superior y MCP1700 parte inferior. 

resim


Veis la diferencia en el consumo interno de ambos reguladores? Pues esto mata el desarrollo y la aplicación según cual usemos. Os he puesto este como ejemplo, pero hay reguladores LDO de bajo consumo (sin llegar a sobrepasar los 40uA) y capaces de suministrar mas mA. En nuestro caso el MCP1700 solo nos puede dar hasta 250mA, que frente a los 800mA del LM1117 hay diferencia, pero como he mencionado antes, hay mas opciones. Lo que si he visto, es que muchos suelen compartir pinout, por lo que una misma PCB adaptadora, podría valer para varios tipos (siempre y cuando ambos componentes compartan tipo de encapsulado).

Yo he realizado un diseño muy básico de PCB adaptadora, es mas, me equivoque con las medidas de los pines para soldar en la huella del LM1117, esto de las prisas y querer mandar a fabricar varios diseños pueden jugar malas pasadas :Triste Pero lo que me ha llegado, lo he podido apañar y me vale para validar la prueba. No obstante, os facilito los archivos gerber con el diseño corregido. Aquí podéis ver una serie de imágenes de las PCBs y como queda, en la sección de los archivos comentare alguna serie de puntos a tener en cuenta cuando mandéis a fabricar.

Fotos del material y como queda montado en el hardware NodeMCU. Primero os muestro unas fotos de la PCB y la PCB con el nuevo regulador soldado.

resim

resim

resim

Aquí os muestro el regulador desoldado del NodeMCU y con el nuevo regulador soldado.

resim

resim

resim

Como veis, el cambio es realmente una tontería. Decir que esa PCB no es el diseño correcto y que tiene un fallo con la posición de los pads que se usan para soldar al hardware. Los archivos que os proporciono ya tienen esto corregido.

Ahora vamos a ver el porque del cambio, para ello nos vamos a fijar en el "pinout" de ambos reguladores:

resim

Podemos apreciar claramente que los pines de Vin y Vout están intercambiados, por ellos no podemos sustituir directamente el regulador (al menos no de una forma sencilla y que no sea tirar de cablecitos).

Que reguladores podemos usar para reemplazar nuestro LM1117?

En este punto voy a destacar un punto importante, en muchos casos hablamos del modelo de regulador, pero debemos tener en cuenta que esto son familias y que dentro de cada una existen diferentes modelos, los cuales se ajustan a las diferentes tensiones de salia (1v, 2v, 3v, 3v3, 5v, etc) o incluso puede existir el caso de que sean regulables. Cuidado al comprarlos, porque hay que elegir el modelo exacto.

Con lo anterior aclarado, veamos que reguladores podemos usar. Para buscarlos tenemos que fijarnos, al menos, en que sean compatibles con su tensión de alimentación (en caso de la placa NodeMCU es de 5v si lo conectamos por USB, o si tiramos de la patilla Vin es importante tenerlo en cuenta para alimentar a una tensión correcta). Segundo parámetro, estamos buscando reguladores de tipo LDO y con la Iq mas baja posible, así que podéis ir revisando este parámetro en los datasheets de cada componente. Por ultimo, los reguladores LDO suelen tener un suministro de corriente en la salida bastante pequeño, generalmente de unos 250mA (bastante alejado de los 800mA que suele dar como poco el LM1117). Con los 250mA solemos tener mas que de sobra para un buen montón de aplicaciones, pero puede darse el caso de que necesitemos mas, y existen opciones (aunque algo mas caras) pero con una Iq algo mayor. Por ejemplo, el regulador LDO XC6210 (ojo que tiene submodelos), nos da unos 600mA y tiene un consumo Iq de unos 38uA. Este regulador lo voy a usar en el prototipo de Smart Sensors Shield, así que si no cumple os lo haré saber Guiño

Otros modelos, pues microchip tiene varios LDO bastante económicos, con una entrega de 250mA y una Iq<10uA (generalmente suele ser de 4uA pero en los datasheet su máximo es 10uA) nada mal para un regulador de bajo coste (y realmente es difícil encontrar otras opciones mejores con similar coste, o al menos yo de momento no las conozco). Las series de Microchip son las MCP170X, que suelen variar en su tensión de alimentación. MCP1700, MCP1701, MCP1702, MCP1703, etc. Os recomiendo echarle un ojo a algún datasheet.

Otros modelos pueden ser el HT7333, con una Iq algo mayor que la del MCP170X, pero tampoco algo excesivo, tiene un buen coste.

Y existen otros muchos modelos, que necesitaría toda la tarde para enumerarlos, así que ya os lo dejo a vuestra elección el investigar un poco mas y en caso de dudas, podéis postear lo y lo vemos. Un cambio rápido y económico es con los ya mencionados.

Encapsulados!!!

Punto importante, fijaros en el tipo de encapsulado del componente que compráis. Los reguladores suelen disponer varios tipos de encapsulados y están relacionados con la cantidad de corriente que pueden suministrar debido al tema de que tienen que disipar calor. La PCB que os propongo es compatible con los encapsulados SOT-89, recordar esto.

En caso de que queráis usar otros reguladores, podemos preparar el diseño de las PCBs. Es un proceso rápido y que no cuesta nada.

Archivos Gerber para fabricación

Os dejo el enlace al Github donde colocare los archivos para que podáis descargarlos y mandarlos a fabricar. Os adjunto un ZIP con los ficheros necesarios para mandar la PCB a fabrica.


Nota: He creado un archivo para el encapsulado del regulador tipo SOT-89. Cualquier otro que se quiera usar, comentarlo y os lo preparo en un momento.

Remarco lo siguiente, cuando seleccionéis el espesor de la PCB, recordar elegir el mas pequeño. En la foto es una PCB de 1,6mm y veis que queda algo desproporcionado, pero se puede fabricar con espesor de 1mm o incluso 0,6mm sin un coste extra.

El tamaño de las PCBs es realmente pequeño (6,3mm x 6,5mm), quizás alguien quiera panelizar para hacer un tamaño mayor, os dejo este software para hacer panelizados (no lo he probado): http://blog.thisisnotrocketscience.nl/pr...panelizer/

Pero no acaba aquí!

Recordar que esta simple y sencilla modificación la podéis usar en cualquier otro tipo de placa que no sea NodeMCU. Cualquier otra placa que lleve un regulador LM1117 es susceptible de poder realizar este cambio, con lo que obtendremos una mejoría en el consumo muy grande. Por ejemplo se me ocurren placas como cualquier que integre el ESP8266 o ESP32, cualquiera de estas que salen con radios extra como lora o LoraWan y pantallas oled de 0,96", etc etc. La idea es sencilla, asi que aplicarla donde queráis desplegar soluciones de bajo consumo Sonrisa

Y aquí acaba este post, que lo añado a la serie de SpainLabsIoT2018 por estar estrechamente relacionado con el IoT y las aplicaciones de bajo consumo. Cualquier pregunta, no dudéis en preguntar. Cualquier punto que no este claro, lo mismo. El post se puede ir completando con mas info Guiño

saludos.
Citar
#2
Que bueno. Todo un detalle como los anteriores.
Como siempre agradecido.
Citar
#3
Muy bueno! Creo que voy a lanzar un pedido de varias.

Enviado desde mi Mi Note 3 mediante Tapatalk
Citar
#4
Interesante, desde hace tiempo yo tambien he estado estudiando maneras de reducir los consumos para que duren mas las pilas o baterias a las que enganchamos nuestros cacharros. Estan las vias por software (deep sleeps con interrupciones, con el timer del watchdog.. etc) y las del hardware como el regulador de tension que comentas.
Otro de los grandes consumidores de potencia (relativamente hablando) en muchos arduino es el dichoso led de poweron que incluyen sobretodo placas como la micro y nano... yo generalmente los quito, sobretodo si voy a hacer uso del deep sleep porque acaba consumiendo mas ese led que el propio micro.

Por ultimo, aunque no tratado aqui (y no mucha gente lo sabe), si nos ponemos a frikear un poco, y por ejemplo cambiamos el preescaler del reloj del micro (o el cristal mediante hardware, aunque habria que tocar los fuses) podemos utilizar tensiones de alimentación desde 1.8v hasta la tensión maxima de alimentación del micro!
Hay una relaccion entre el voltaje y los Mhz a los que el micro puede trabajar de manera estable, si utilizasemos un micro de 5v por ejemplo y le bajasemos su frecuencia de reloj a 8mhz usando el preescaler en 1/2, con suministrarle un minimo de 2.4v al micro este funcionaria perfectamente... esto implicaria que por ejemplo podriamos prescindir totalmente de un regulador de tensión a la entrada y engancharle una pequeña bateria de 3.7v o algunas pilas que durarian bastante ya que no tendriamos perdida alguna de energia al no pasar por un regulador. (Si bajamos de 3v es necesario desactivar el brownout desde los fuses o el micro no arrancará)

Sabiendo esto tambien podriamos hacer funcionar un micro de 5v a 3.3v si nos es mas conveniente, habria que ver la frecuencia maxima de operacion del micro a esas tensiones (o experimentar, que es lo interesante).

Como cada micro es un mundo habria que estudiar cada modelo por separado, esto que comento se puede hacer con un atmega328, y evidentemente, si utilizamos los pines de salida y alimentamos a 2.7v, el high va a estar en 2.7v y el low en 0v. Si cambiamos el preescaler tambien se ven afectadas las temporizaciones pero no es nada que no se pueda solucionar con un poco de matematica.

Yo le veo bastantes posibilidades al asunto.
Citar
#5
Si, llevas razon en todo lo que dices. Unicamente el tema de alimentar sin regular un micro, no suele ser buena idea (aunque hay aplicaciones que se podra hacer), es preferible tener controlada la alimentacion.Muy buen aporte. Gracias.

Saludos
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  [Guia] ESP8266 (NodeMCU) + sensor BME280 + MQTT grafisoft 17 3,733 09-10-2018, 09:49 PM
Último mensaje: grafisoft
  [SpainLabsIoT2018] Caso real: Nodos ESP8266 grafisoft 38 4,379 03-08-2018, 11:45 PM
Último mensaje: grafisoft
  [SpainLabsIoT2018] InfluxDB + Telegraf grafisoft 7 1,605 25-07-2018, 03:42 PM
Último mensaje: grafisoft
  [SpainLabsIoT2018] Nodo ESP8266 - Smart Sensors Shield grafisoft 16 1,864 02-07-2018, 08:55 PM
Último mensaje: grafisoft
  Subir datos desde NodeMCU a ThingSpeak victormh 2 317 07-06-2018, 12:02 PM
Último mensaje: victormh