Tal como os comentaba hace un par de artículos el consumo en deep sleep no parecía ser el esperado. Me ha llegado el microamperímetro de 200 uA que compre por ebay. Viene sin instrucciones, en una caja arrugada y simplemente no funciona o, por lo menos, no me sirve para mis propósitos. La única opción sería conseguir un picoamperímetro que es un instrumento muy específico (y caro) o hacerlo, pero tampoco es una opción porque incluye muchos componentes muy complicados de encontrar.
Pero espera!!!!, si ahora que me fijo el polímetro que tengo tiene una escala de 2000 uA con una resolución de 1 uA. Lo pruebo y efectivamente la lectura que obtengo es de 240 y pico uA en modo deep sleep. Es una corriente muy pequeña, pero no nos sirve para un dispositivo que pretendemos que tenga una batería con una duración de 5 años. Solo en deep sleep, sin encenderlo la batería nos duraría 1,2 años.
El problema está relacionado con la resistencia de pullup del bus onewire del termómetro, la saco y quito los leds y el multímetro marca entre 23 y 24uA, que es lo que podíamos esperar, aprox 20uA del ESP8266, un poco del driver y otro poco de la radio RFM95W. Esto si que es una buena noticia!!!!.
Realmente, mirando el esquema no entiendo lo que pasa, el termómetro está conectado al GPIO0, que lleva una resistencia de pullup de 10K para que pueda arrancar el micro. La resistencia del bus onewire de 4,7K conecta la alimentación (la de la salida del driver) con el GPIO0, teóricamente montamos un bufer triestado para que la alimentación de los sensores estuviera en alta impedancia si no estaban activos, pero se comporta como si no estuviera en alta impedancia. De hecho, según la ley de ohm si la línea de alimentación de la salida del buffer estuviera a 0V la corriente que debería de absorber el circuito es de 3.4V/14700 ohm, eso son exactamente 231 mA que coincide de forma aproximada con el valor que obtenemos. Eso sí, sacando la resistencia de 4,7K el valor del consumo en deep sleep es exactamente el que buscábamos. Además sin la resistencia el termómetro mide (lógico, porque tiene la resistencia de pullup del GPIO0).
Pruebo de cambiar el termómetro de puerto y el resultado es el mismo, intento de nuevo leer la temperatura de la radio Lora para eliminarlo y no lo consigo (solo se puede leer en modo FCSK), intento leer la tensión de alimentación de la radio Lora para liberar un puerto analógico y poner un termómetro analógico, pero tampoco lo consigo. Al final creo que la mejor opción es dejarlo como está funcionando con la resistencia de pullup del GPIO0, las pistas son cortas y la corriente por una resistencia de 10K suficiente, si falal reduciré el valor de la resistencia de pullup del GPIO0 y ya está.
El rest parece que funciona correctamente, he hecho mediciones más precisas del consumo leyendo los sensores y enviando y actualizaremos el Excel.