power draw

Capstan
Posts: 4
Joined: Mon Dec 21, 2015 5:10 pm

power draw

Postby Capstan » Thu May 05, 2016 7:11 pm

Have measurements been done to evaluate the power consumption of the ESP32 in various situations? Such as when transmitting WiFi and Bluetooth, with radios turned on and off, in sleep modes, etc?

WiFive
Posts: 3529
Joined: Tue Dec 01, 2015 7:35 am

Re: power draw

Postby WiFive » Fri May 13, 2016 7:29 am

We don't know much, but ...
The typical stand by power consumption is ~25uA with the ULP-Coprocessor running at a 1% duty cycle.
So we know at least some people are getting docs. :cry:

Capstan
Posts: 4
Joined: Mon Dec 21, 2015 5:10 pm

Re: power draw

Postby Capstan » Thu Jun 09, 2016 6:36 pm

Its odd that not much authentic info is being posted to this forum. :cry:

omoh12
Posts: 4
Joined: Mon Jan 09, 2017 11:33 am

Re: power draw

Postby omoh12 » Fri Jan 20, 2017 9:34 am

Hey all,

are there some news concerning power consumption? Yesterday I put the maincore into deep sleep and measured 5mA with everything switched off. This is far away from 25uA.

I used this code. Have I done something wrong? Of course I measured with all other power draining components removed.

I

Code: Select all

void app_main() 
{
    assert(CONFIG_ULP_COPROC_RESERVE_MEM >= 260 && "this test needs ULP_COPROC_RESERVE_MEM option set in menuconfig");
    memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
    const ulp_insn_t program[] = {
        I_MOVI(R0, 0),                  // R0 is LED state
        I_MOVI(R2, 16),                 // loop R2 from 16 down to 0
        M_LABEL(4),
            I_SUBI(R2, R2, 1),
            M_BXZ(6),
            I_ADDI(R0, R0, 1),          // R0 = (R0 + 1) % 2
            I_ANDI(R0, R0, 0x1),
            M_BL(0, 1),                 // if R0 < 1 goto 0
            M_LABEL(1),
                I_WR_REG(RTC_GPIO_OUT_REG, 26, 27, 1), // RTC_GPIO12 = 1
                M_BX(2),                // goto 2
            M_LABEL(0),                 // 0:
                I_WR_REG(RTC_GPIO_OUT_REG, 26, 27, 0), // RTC_GPIO12 = 0
            M_LABEL(2),                 // 2:
            I_MOVI(R1, 100),            // loop R1 from 100 down to 0
            M_LABEL(3),
                I_SUBI(R1, R1, 1),
                M_BXZ(5),
                I_DELAY(32000),         // delay for a while
                M_BX(3),
            M_LABEL(5),
            M_BX(4),
        M_LABEL(6),
        I_END(1)                        // wake up the SoC
    };
    const gpio_num_t led_gpios[] = {
        GPIO_NUM_2,
        GPIO_NUM_0,
        GPIO_NUM_4
    };
    for (size_t i = 0; i < sizeof(led_gpios)/sizeof(led_gpios[0]); ++i) {
        rtc_gpio_init(led_gpios[i]);
        rtc_gpio_set_direction(led_gpios[i], RTC_GPIO_MODE_OUTPUT_ONLY);
        rtc_gpio_set_level(led_gpios[i], 0);
    }
    size_t size = sizeof(program)/sizeof(ulp_insn_t);
    ulp_process_macros_and_load(0, program, &size);
    ulp_run(0);
    esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
    esp_deep_sleep_enable_ulp_wakeup();
    esp_deep_sleep_start();
}

ESP_igrr
Posts: 2072
Joined: Tue Dec 01, 2015 8:37 am

Re: power draw

Postby ESP_igrr » Fri Jan 20, 2017 12:22 pm

From what i see, ULP is running at 100% duty cycle here, and RTC_IO and RTC_PERIPH are powered up.
So that explains (25uA - 5uA) * (100% / 1%) = 2 mA.
As for the rest (3mA), don't know for sure. Hopefully I'll be doing some power measurements next week, if the 2.0 release goes smoothly.

matiasjara
Posts: 2
Joined: Fri Dec 16, 2016 2:09 pm

Re: power draw

Postby matiasjara » Fri Jan 20, 2017 1:33 pm

Hello,

I made the following test and measured 30 uA. I used the ESP32 dev board, so I cutted the CP2102 suppy and remove the voltage regulator as here: https://tinker.yeoman.com.au/2016/05/29 ... revisited/. If not, the current consumption was never below 2.3 mA.

Code: Select all

//file: main.cpp
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "Arduino.h"
#include "esp_deep_sleep.h"

extern "C" void app_main()
{
    initArduino();
	int i=0;
    uint64_t sleep_timeout = 5000000;
	
	while(i!=5)
	{
		delay(1000);
		i++;		
	}
	
	esp_deep_sleep_enable_timer_wakeup(sleep_timeout);
	esp_deep_sleep_start();

}

Who is online

Users browsing this forum: No registered users and 52 guests