En resumen:
A pesar de configurar mi registrador de datos IMU en SUEÑO e ir a deepSleep (0) en el ESP sin ningún otro periférico de IC, además del convertidor Buck y 2 LED desactivados, sigo midiendo el consumo de corriente de 2,5 mA mientras que las hojas de datos predicen 108uA. ¿Qué podría ser la causa?
Versión detallada:
Estoy usando un ESP12F / ESP12S como un registrador de datos pequeño. Conectados al módulo hay un regulador de señal Renesas ISL85415 configurado a una salida de 3.3 V (conectado a una batería LiIon), una IMU MPU9250 (sobre I2C) y 2 LED (activo ALTO) con sus respectivas resistencias de ~ 300 Ohm. Tengo un conjunto de resistencias pullup / pulldown, a saber, 10k PU en el reinicio, pines CH_PD, GPIO0 y GPIO2, dos PU de 4.7k en las líneas I2C y un PD de 10k en GPIO15.
Estoy usando Arduino-ESP para programar el chip.
Después del encendido, el ESP establece los pines del LED en SALIDA BAJA, intenta inicializar la IMU, recopila algunos datos, se conecta a un punto de acceso WiFi, envía algunos mensajes UDP, configura la IMU para que descanse utilizando el bit SLEEP en su PWR_MGMT_1 se registra y va a Deep Sleep.
De acuerdo con las hojas de datos, el convertidor Buck debe dibujar una corriente de reposo de 80uA (en el modo de operación de carga ligera), el ESP debe dibujar 20uA y la IMU 8uA. Con un multímetro barato obtengo 2.5 mA (2.4 y 2.8 con otras versiones del mismo circuito), y el tiempo de ejecución de la batería sugiere un consumo de ~ 2 mA.
Mido una diferencia de ~ 2.5 mA cuando la IMU está en modo de suspensión vs. no, por lo que estoy bastante seguro de que la IMU realmente se va a dormir. ¿De dónde viene este sorteo adicional?
He visto Esta pregunta similar pero no se responde a partir de ahora.
EDITAR:
Pudereproducirelproblemaconelsiguientecódigomínimo:
#include<Wire.h>voidsetup(){//InitI2CWire.begin(4,5);delay(10000);//ForinitialmultimetermeasurementssleepMPU9250();ESP.deepSleep(0);}voidloop(){}//SettheIMUtosleepmode,hopefullyreducingcurrentdrawvoidsleepMPU9250(){writeByte(0x68,0x6B,0x40);//PutMPU9250tosleepdelay(100);//Waitforallregisterstoreset}voidwriteByte(uint8_taddress,uint8_tsubAddress,uint8_tdata){Wire.beginTransmission(address);//InitializetheTxbufferWire.write(subAddress);//PutslaveregisteraddressinTxbufferWire.write(data);//PutdatainTxbufferWire.endTransmission();//SendtheTxbuffer}
TambiénmedílosvoltajesdelospinesESP12duranteelsueñoprofundosegúnlorecomendado:RST,CH_PD,GPIO16,VCC(duh),SDA,SCL,GPIO0yGPIO2tienenVCC,ADCestáa1VcuandoVBAT=4,1V,ytodoslosdemáspinesestánacero.
ElesquemaESP12Sseencuentra