Después de algunas desventuras, fallos tontos y errores de cálculo al fin tengo un diseño que cumple con los requisitos iniciales, a saber:
- Ultra bajo consumo entre lecturas.
- Configurable desde el mismo dispositivo de una forma sencilla.
- Completamente estanco.
- Muy bajo consumo en las lecturas.
Entre los últimos problemas que he resuelto están los siguientes (junto con las soluciones):
- Por algún motivo si se utiliza el sensor de ultrasonidos con un solo GPIO parece funcionar solo a ratos. La verdad es que durante todo el desarrolo se lo atribuí a un problema de contactos debido a la mala calidad de la placa de prototipos, pero en los primeros prototipos en PCB seguía presentando el mismo fallo. Sinceramente no he investigado mucho, podía liberar uno de los pines de la RFM95W y es lo que he hecho, liberar el GPIO5 y utilizarlo para el lector de ultrasonidos. Para el que tenga interés en como liberar el PIn que nos faltaba aqui está el secreto.
- El problema de tensión de la batería en vacio provocado por el bajo consumo, pues es un problema doble y tonto. Por un lado si que la tensión de alimentación puede ser un poco alta (aunque la hoja de especificaciones de la pila habla de un máximo de 3,65v en vacio). Por otro lado, y por un motivo que no alcanzo a entender, el medidor de tensión del ESP no funciona bien su ni está encendida la WiFi, a mi me da valores más altos. Encontré el TPS782 de Texas, un regulador LDO de 3V 150 mA con un dropout Voltage de 150mV y un consumo en vacío de 0,42 uA. El coste es de unos 40 céntimos más el de dos condensadores cerámicos de 1 uF. Resolvemos el tema de las sobretensiones, podemos añadir la «feature» de desconectar con un imán (que ahora no lo vamos a hacer) y confirmo mi teoría de que al reducir la tensión que le llega al micro reducimos el consumo en deep-sleep en mayor medida del que añadimos con el LDO. Es más, como en el ensamblaje de PCB’s la reducción en el número de componentes diferentes es un plus he cambiado el driver triestado por uno de estos chips y lo controlo por la puerta EN, con lo que ahora el consumo en sleep de los sensores es de 18 a 130 nA (si nano, 1 dividido por 1000000000).
- Para resolver el de la medida de la batería lo que he hecho es un divisor y lo he conectado a la puerta analógica del ESP8266, no hay problema de consumo en deep sleep porque está conectado despues del LDO, es decir, no hay consumo en el divisor si no está activado.
- Por último el problema de consumo con la resistencia del bus onewire del termómetro. No he logrado entenderlo, la verdad, pero he visto que si lo ponemos a la salida del primer LDO (que es la alimentación del ESP8266) en lugar de a la alimentación de los sensores consume lo que tiene que consumir (aunque lo haga todo el rato en lugar de apagarse). Comos según el datasheet la corriente en standby es de 750 nA vamos a dejarlo así. Además no le ponemos resistencia de pullup al bus porque tenemos la del GPIO0, en lugar de 5K son 10K, pero parece que funciona (si dejara de hacerlo la podríamos cambiar el la placa, no creo que afecte mucho al consumo).
En resumidas cuentas lo hemos cambiado casi todo, pero ahora tenemos un consumo en deep sleep de entre 22 y 23 uA y todo funciona a las mil maravillas. Este es el resumen con las nuevas medidas:
Cálculo del consumo energético Capacidad batería 2600 mAh Autodescarga (%/año) 0,75% Intervalo de sleep entre Lecturas (s) 600 s Tiempo lectura (s) 0,275 s Consumo promedio durante lectura (mA) 21 mA Envio RF (cada x lecturas) 6 veces Duración de un envio RF (s) 2,49 s Consumo promedio durante envio (mA) 24,74 mA Cosnumo deep Sleep (mA) 0,023 mA Consumo promedio arranque 33,6 mA Tiempo arranque 0,09 s Resultados Número de lecturas diarias 144 Lecturas/día Número de lecturas /hora 6 lecturas/hora Tiempo dedicado lecturas/día 39,6 segundos Consumo energet diario lecturas 0,231 mAh /día Envios RF diarios 24 Envios/día Tiempo dedicado a envios RF 59,76 segundos Consumo envios RF/día 0,4107 mAh/día Inicios micro al día 144,00 Arranques Consumo inicios micro/día 0,1210 mAh/día Tiempo en Sleep al día 86301 segundos/día Consumo Sleep/día 0,5514 mAh/día Autodescarga diaria batería 0,0534 mAh/día Total Consumo diario 1,3674 mAh/día Días teóricos de autonomía 1901 días Años (teoricos) de autonomía 5,2 Años