Deep sleep takes way too much power (no LDO/LED etc. involved)
Posted: Fri Mar 27, 2020 8:48 pm
Hi,
I am trying to get an ESP32 into deep sleep with occasional wakeups for a battery-powered device. According to the datasheet, it should consume just a few microamps while in deep sleep. I am observing a current of around 5 milliamps, so this is around a factor 1000 too big. I don't have too strict requirements, everything below 0.1mA should be fine, but this is simply too much.
My test setup is very simple: I have an EPS32-WROOM-32 module with minimal circuitry: two pullup resistors on EN and GPIO0 and two push buttons for the same pins. There is no LDO or so involved and also no LED, and I disconnect the UART interface as well during the measurement. The power is coming from a lab power supply, and I have added several capacitors of hugely different capacity (just to be sure).
I am using a very simple Arduino sketch to test:
I am measuring at 3.3V supply voltage with a standard multimeter. The power consumption is not very stable, it varies from 4 to 8 milliamps and usually stays around 5mA.
I have tried also more "complicated" code which actually wakes up the device after some seconds (via esp_sleep_enable_timer_wakeup()), and I can see in the serial boot messages that it reboots and the wakeup reason is DEEPSLEEP_RESET, hence I conclude I am successfully putting the device into deep sleep.
What could I possible be doing wrong? Are there some electrical considerations, e.g. do I need to pullup/pulldown some pin(s) to get a truly low power consumption? I have read somewhere (can't find the source any more, sorry) that someone discovered a missing pullup at the internal flash SS line, which might lead to a still-powered flash due to the floating signals from the ESP32. Is that true? Can I add this pullup without opening the case? I already tried pulling up the CMD pin without success.
PS: Sorry if this question was already answered somewhere - it is quite hard to search properly for it, because many questions get asked about high power consumption due to LDOs and serial interfaces...
I am trying to get an ESP32 into deep sleep with occasional wakeups for a battery-powered device. According to the datasheet, it should consume just a few microamps while in deep sleep. I am observing a current of around 5 milliamps, so this is around a factor 1000 too big. I don't have too strict requirements, everything below 0.1mA should be fine, but this is simply too much.
My test setup is very simple: I have an EPS32-WROOM-32 module with minimal circuitry: two pullup resistors on EN and GPIO0 and two push buttons for the same pins. There is no LDO or so involved and also no LED, and I disconnect the UART interface as well during the measurement. The power is coming from a lab power supply, and I have added several capacitors of hugely different capacity (just to be sure).
I am using a very simple Arduino sketch to test:
Code: Select all
void setup(){
esp_deep_sleep_start();
}
void loop(){
//This is not going to be called
}
I have tried also more "complicated" code which actually wakes up the device after some seconds (via esp_sleep_enable_timer_wakeup()), and I can see in the serial boot messages that it reboots and the wakeup reason is DEEPSLEEP_RESET, hence I conclude I am successfully putting the device into deep sleep.
What could I possible be doing wrong? Are there some electrical considerations, e.g. do I need to pullup/pulldown some pin(s) to get a truly low power consumption? I have read somewhere (can't find the source any more, sorry) that someone discovered a missing pullup at the internal flash SS line, which might lead to a still-powered flash due to the floating signals from the ESP32. Is that true? Can I add this pullup without opening the case? I already tried pulling up the CMD pin without success.
PS: Sorry if this question was already answered somewhere - it is quite hard to search properly for it, because many questions get asked about high power consumption due to LDOs and serial interfaces...