Geralmente existem seis modos de energia em um MCU:
- Correr: No modo de execução total, um MCU consome corrente total. Este modo é mais adequado para aplicações onde a eficiência energética não é essencial.
- Cochilar: Como sabemos, a potência aumenta proporcionalmente à frequência. Portanto, podemos concluir que velocidades de clock mais altas tendem a um maior consumo de energia. O modo Doze ajuda a reduzir o consumo de energia. No modo Doze, a CPU e a memória Flash funcionam a uma frequência de clock mais baixa do que o resto do chip, pois o Flash e a CPU são componentes que consomem muita energia.
- Parado: No modo inativo, a CPU e o Flash param e o restante do chip continua a operar.
- Dormir: No modo sleep, podemos economizar mais de 90% da energia consumida em Run. Normalmente, os MCUs atingem o menor consumo de energia no modo de suspensão, consumindo nano amperes ou microamperes de corrente. A CPU, o Flash e a maioria dos periféricos ficam desabilitados ou off-line neste modo. Estão disponíveis alguns periféricos, como A/D, UART Interrupt e alguns temporizadores, que permitem ao MCU realizar algum trabalho no sistema, despertando-o em um horário específico.
- Sono de baixa tensão: Neste modo, um segundo regulador pode ser empregado para reduzir a tensão nas portas lógicas. Isso reduz significativamente a corrente de fuga do MCU.
- Sono profundo: Neste modo, a CPU, flash, RAM e quase todos os periféricos estão desabilitados. Apenas periféricos de baixo consumo de energia, como o relógio em tempo real, o Deep Sleep Brown-out para detectar queda de bateria, um temporizador de vigilância e o recurso de despertar com consumo de energia ultrabaixo, permanecem ligados. Com a alimentação removida da maior parte do chip, o consumo de corrente pode ser tão baixo quanto 20nA.
Nesta série, apresentaremos três experimentos para entender melhor o modo de baixo consumo de energia.
Experiência 1
Mirar
Para executar um MCU no modo de baixo consumo de energia, leia a leitura de temperatura e umidade usando o sensor AHT10 e envie a leitura por WiFi.
Requisitos
- UCM: ESP32-WROOM-32D (módulo genérico Wi-Fi + Bluetooth + Bluetooth LE MCU)
- Sensor: AHT10 (sensor de temperatura e umidade)
- Bateria: Bateria AA MX1500 (3,6V, 2700mAh)
Teoria
Neste experimento, estamos usando o MCU ESP32-WROOM-32D. Aqui aprenderemos como usar um timer para despertar o ESP32. O ESP32 permanecerá no modo ativo por 2 a 3 segundos, fará a leitura de temperatura e umidade e a enviará por WiFi. Depois disso, o ESP32 voltará ao modo de hibernação profunda. Ele permanecerá no modo deepsleep por cinco minutos.
Modos de energia ESP32
O chip ESP32 possui principalmente dois tipos de processadores, o principal e o de ultrabaixa potência, ou processador ULP. O ESP32 geralmente consome cerca de 75mA de corrente em operação normal e cerca de 240mA durante a transmissão de dados por WiFi. O modo de suspensão profunda ESP32 reduzirá o consumo de energia e aumentará a vida útil da bateria, pois cada mA é crítico para uma bateria. Cinco modos de energia configuráveis gerenciam o consumo de corrente do ESP32.
- Ativo
- Suspensão do modem
- Sono leve
- Sono profundo
- Hibernação
A tabela abaixo detalha os modos de energia:
No modo de hibernação profunda, o controlador RTC (relógio em tempo real), os periféricos e as memórias estão no modo ativo. A maior parte da RAM com todos os periféricos digitais e a CPU está desligada no modo de hibernação profunda. Apenas o módulo RTC está ativo, o que resulta na perda de dados não presentes inicialmente na memória de recuperação do RTC. Se o coprocessador ULP estiver ligado, o consumo de corrente cai para 0,15 mA – 10 µA. Observe que o sistema não pode entrar automaticamente no modo de suspensão profunda.
A função que pode ser usada para ativar o sono profundo assim que as fontes de despertar forem configuradas imediatamente é:
“esp_deep_sleep_start ”
Fontes de despertar ESP32
Existem várias maneiras de despertar a placa ESP do modo de hibernação profunda.
- Temporizador, acorde. Acordar seu ESP32 em períodos de tempo predefinidos, o que é conseguido através da função: “(esp_sleep_enable_timer_wakeup(sleep_time_in_us)”
- Ativação do pino de toque. Podemos despertar o ESP32 do sono profundo usando os pinos de toque obtidos com a seguinte função:
“esp_sleep_enable_touchpad_wakeup ”
- Despertar externo. Podemos ativar o ESP32 usando vários GPIOs RTC. Existem duas funções lógicas diferentes.
Ative o ESP32 se algum dos pinos selecionados estiver alto.
Ative o ESP32 se todos os pinos selecionados estiverem baixos.
Precisamos usar a seguinte função:
“esp_sleep_enable_ext1_wakeup(bitmask, modo)”
Esquemático
Neste esquema, você pode reconhecer funções que estudamos em artigos anteriores para reduzir o consumo de energia. Operamos o circuito com uma fonte de baixa potência (3V). O valor do resistor com o LED é de valor alto (1K), e o pull up do pino Enable também é de valor alto (20K). Não usamos os pull-ups para a conexão I2C porque, em vez disso, usaremos os pull-ups internos do ESP32.
![](https://storage.googleapis.com/medium-feed.appspot.com/images%2F9353691196%2Fdf1937fe17711-1718586493_508_Como-obter-maior-duracao-da-bateria-do-MCU-com-modo.png)
Fig: 1 Esquema do modo de suspensão profunda MCU
Configuração do experimento
Abaixo está a imagem que mostra a configuração do experimento.
![](https://storage.googleapis.com/medium-feed.appspot.com/images%2F9353691196%2F10fe7ee9d654b-Como-obter-maior-duracao-da-bateria-do-MCU-com-modo.jpg)
Fig: 2 Configuração do experimento
Código
Mesa de observação
![](https://storage.googleapis.com/medium-feed.appspot.com/images%2F9353691196%2F01f56adcca265-1718586496_649_Como-obter-maior-duracao-da-bateria-do-MCU-com-modo.jpg)
Fig: 3 Consumo de corrente por módulo
- O consumo de corrente pelo ESP32 em modo ativo é de aproximadamente 123 mA.
- A capacidade da bateria é de 2700 mAh.
- De acordo com a ficha técnica da bateria, sua vida útil é de cerca de sete anos.
- A taxa mensal de autodescarga da bateria alcalina AA é de 0,3%.
Capacidade da bateria (mAH) * Taxa de autodescarga / 100 = Corrente de autodescarga (mAH)
2700 mAh * 0,3/100 = 8,1 mAh
Isso significa que uma bateria de 2.700 mAH irá descarregar automaticamente 3% de perdas ou 8,1 mAH de sua capacidade após um mês.
Prazo de validade = 2700 mAH /( 8,1 mAH) = 333,3 meses = ~ 27 anos
- Cálculo da vida útil da bateria,
![](https://storage.googleapis.com/medium-feed.appspot.com/images%2F9353691196%2F8b515448e9137-1718586497_671_Como-obter-maior-duracao-da-bateria-do-MCU-com-modo.png)
Fig: 5 Cálculo da vida útil da bateria
Resultados
Abaixo estão os resultados dos dados do dispositivo enviados para a plataforma ThinkSpeak.
![](https://storage.googleapis.com/medium-feed.appspot.com/images%2F9353691196%2Fef4432cbc0925-1718586498_936_Como-obter-maior-duracao-da-bateria-do-MCU-com-modo.png)
Fig: 6 Leituras de temperatura do sensor AHT10 (esquerda). Leituras de umidade do sensor AHT10 (direita)
De acordo com o exposto, a bateria com capacidade de 2700mAH terá uma vida útil de aproximadamente 261 dias se a corrente retirada da bateria for de 123mA durante o modo ativo.