ESP32 절전 모드(저전력 모드)와 각 모드의 전력 소비 정리
ESP32의 다양한 절전 모드가 왜 필요한가?
1. ESP32는 다른 Arduino 보드에 비해 훨씬 더 높은 주파수에서 실행되는 매우 강력한 마이크로컨트롤러
2. WiFi, Bluetooth 및 무선 지원 기능을 갖추고 있어 전력 소모가 훨씬 더 많은 마이크로컨트롤러
3. 일부 IoT 애플리케이션의 경우 배터리 수명은 신중하게 관리해야 하는 매우 중요한 리소스
4. ESP32를 사용하여 애플리케이션에 필요한 기능을 달성하고 장시간 작동 동안 배터리 수명을 유지하는 동안 절전을 극대화하는 방법
ESP32 절전 모드 및 전원 모드
1. ESP32 전원 관리 기능은 사용자에게 구성 및 선택 가능한 5가지 전원 모드를 제공한다.
2. 시스템 설계자로서 우리는 애플리케이션의 요구 사항에 따라 5가지 전력 모드 중에서 선택해야 한다.
3. 작동하는 동안 프로그래밍 방식으로 한 모드에서 다른 모드로 전환할 수도 있는데, 이는 코드에서 주의 깊게 구현되어야 한다.
ESP32 전원 모드는 다음과 같다.
1. 활성 모드
2. 모뎀 절전 모드
3. 가벼운 절전 모드
4. 딥 슬립 모드
5. 최대 절전 모드
ESP32 저전력 모드는 다음과 같다. (모뎀 절전, 얕은 절전, 최대 절전 및 최대 절전 모드)
각 ESP32 절전 모드에는 특정 수준의 전력 소비를 달성하기 위해 활성화된 기능과 비활성화된 기능의 자체 목록이 있다.
애플리케이션의 요구 사항에 따라 배터리 수명을 최대한 연장하고 필요한 작업을 수행하기 위해 가장 편리한 전원 모드를 선택하게 된다.
ESP32 활성 모드
ESP32 활성 모드는 모든 주변 장치가 작동하고 WiFi 및 Bluetooth가 활성화되며 칩이 전송, 수신 또는 청취할 수 있는 일반 작동 모드이다.
활성 모드에서 일부 전력을 절약하는 유일한 방법은 CPU가 실행되는 클록 주파수를 제어하거나 애플리케이션의 요구 사항과 다음 표에 따라 RF 작동 모드를 변경하는 것이다.
방법 | 현재 소비 |
WiFi TX, DSSS 1Mbps, POUT = +19.5dBm | 240mA |
WiFi TX, OFDM 54Mbps, POUT = +16dBm | 190mA |
WiFi TX, OFDM MCS7, POUT = +14dBm | 180mA |
WiFi RX(듣기) | (95~100)mA |
BT/BLE TX, POUT = 0dBm | 130mA |
BT/BLE RX(듣기) | (95~100)mA |
ESP32 활성 모드 전류 소비량은 WiFi/BLE 모드, 마이크로컨트롤러를 작동하는 CPU 클럭 속도에 따라 (95~240)mA이다 .
이는 ESP32 활성 모드가 전력 효율이 가장 낮은 모드이며 애플리케이션에 필요하지 않은 한 다른 저전력 모드에서 실행하여 사용하지 않는 기능을 비활성화하는 것을 고려해야 함을 분명히 보여준다.
ESP32 모뎀 절전 모드
모뎀 절전 모드에서는 ESP32 코어가 작동하고 시계를 구성할 수 있으며 비활성화된 라디오, WiFi 및 Bluetooth를 제외한 다른 모든 주변 장치가 작동한다.
따라서 이 모드의 전류 소비는 전적으로 CPU 클럭 속도에 따라 달라진다.
클록 주파수를 줄이면 전류 소비가 줄어들고 그 반대도 마찬가지이다.
ESP32 모뎀 절전 모드 전류 소비는 (2~4)mA @ 2MHz "느린 속도", (20~25)mA @ 80MHz "정상 속도", (30~50)mA @ 240MHz "최대 속도"이다.
ESP32 모뎀 절전 모드 깨우기 대기 시간은 즉시 발생한다.
ESP32 모뎀 절전 모드를 다음과 같이 해석할 수 있다.
라디오, Bluetooth 및 WiFi를 비활성화하려는 경우 전류 소비를 더욱 줄이기 위해 CPU 주파수에 달려 있다.
이는 마이크로컨트롤러 절전 모드와 동일하다.
하지만 여전히 Wi-Fi가 필요한 경우 액세스 포인트(AP)에 성공적으로 연결한 후 주기적으로 활성 모드와 절전 모드 사이를 계속 전환해야 한다.
모뎀 슬립 모드에서는 전력 소모를 줄이기 위해 라디오, WiFi, BT가 꺼집니다. ESP32 장치(스테이션)는 모뎀 절전 모드에서 AP와의 연결을 유지할 수 있다.
이는 DTIM (배달 교통 표시 메시지)을 사용하는 것이다.
DTIM 비콘 기술의 기본 아이디어는 비콘을 통해 주기적으로 메시지를 보내는 것이다.
이는 모든 스테이션에 절전 상태에서 깨어나고 네트워크의 모든 구성원 간에 동기화하도록 알린다.
DTIM 비콘 간격 시간은 ESP32가 AP로부터 DTIM 프레임을 수신하기 위해 다시 "활성"으로 전환되기 전에 "모뎀 절전 모드"에 있는 절전 시간을 나타낸다.
이 프로세스는 다소 자주 발생할 수 있으며, 이로 인해 "모뎀 절전 모드"의 2가지 추가 파생 항목이 출현하게 된다.
이 두 가지 모드는 다음과 같다.
- 최소 모뎀 절전 : 최소 모뎀 절전 모드에서 ESP32는 비콘을 수신하기 위해 DTIM마다 깨어난다. 방송 데이터는 DTIM 이후에 전송되기 때문에 손실되지 않는다. 하지만 DTIM이 AP에 의해 결정되기 때문에 DTIM이 짧다면 더 많은 전력을 절약할 수 없다.
- 최대 모뎀 절전 : 최대 모뎀 절전 모드에서 ESP32는 비콘을 수신하기 위해 청취 간격마다 깨어난다. ESP32가 DTIM 시간에 절전 모드에 있었을 수 있으므로 방송 데이터가 손실될 수 있다. 청취 간격이 길어지면 전력은 더 절약되지만 방송 데이터는 손실될 가능성이 높다.
ESP32 가벼운 절전 모드
ESP32 Light Sleep 모드는 모뎀 절전 모드와 매우 유사하다.
그러나 유일한 차이점은 가벼운 절전 모드에서는 CPU는 물론 대부분의 RAM 및 디지털 주변 장치도 정지(클럭 게이트)된다는 것이다.
더 많은 전력을 절약하기 위해 공급 전압도 감소한다.
ESP32 절전 모드 전류 소비량 : ~0.8mA
ESP32 Light Sleep 모드의 웨이크업 대기 시간은 1ms 미만이다.
1. 디지털 주변 장치, RAM 및 CPU를 클록 게이팅하면 컨텍스트나 데이터 손실 없이 중지된다.
2. 전류 소비가 거의 800μA로 낮아진다.
3. Light Sleep을 종료하면 디지털 주변 장치, RAM 및 CPU가 작동을 재개하고 내부 상태가 유지된다.
ESP32 딥 슬립 모드
ESP32 딥 슬립 모드에서는 APB_CLK에서 클럭되는 CPU, 대부분의 RAM 및 모든 디지털 주변 장치의 전원이 꺼진다.
칩의 유일한 활성 부분은 RTC 메모리, RTC 컨트롤러 및 ULP 보조 프로세서이다.
초저전력(ULP) 보조 프로세서는 센서나 RTC GPIO에서 오는 데이터 읽기와 같은 몇 가지 간단한 작업을 계속 수행할 수 있다.
DeepSleep모드에서 장치를 깨우기 위해 RTC 주변 장치(타이머, GPIO 등)등을 사용하여 다양한 Wake Up이벤트를 생성할 수 있다.
※ 참고
Deep Sleep 모드에서는 CPU 컨텍스트가 손실되고 CPU가 "Deep Sleep"에서 깨어날 때마다 프로그램 실행이 처음부터 다시 시작한다.
RTC 전력 도메인()은 "딥 슬립"으로 들어가기 전에 컨텍스트를 유지하는 마이크로컨트롤러의 유일한 섹션이다.
"Deep Sleep" 후에 데이터를 저장하고 검색해야 하는 경우 RTC 메모리에 저장해야 한다.
예: RTC_DATA_ATTR int data = 0; // 이 전역 변수는 깊은 잠에서 깨어난 후에도 값을 유지한다.
ESP32 딥 슬립 모드 전류 소비는 다음 표에 따라 활성화되는 기능에 따라 ~(10-150)μA
ESP32 딥 슬립 모드 웨이크업 지연 시간 : 1ms 미만
전원 모드 | 활성화된 기능 | 현재 소비 |
깊은 잠 | ULP 보조 프로세서가 켜져 있습니다. | 150μA |
ULP 센서 모니터링 패턴 | 100μA | |
RTC 타이머 + RTC 메모리 | 10μA |
ESP32 최대 절전 모드
ESP32 최대 절전 모드에서는 모든 발진기, RTC 주변 도메인 및 RTC 메모리가 모두 비활성화되고 ULP도 비활성화된다.
남은 활성 부분은 장치를 최대 절전 모드에서 깨우기 위한 RTC 타이머 1개와 특정 RTC GPIO 몇 개뿐이다.
이는 지금까지 가장 강력한 저전력 모드이며 5μA만큼 낮은 전류 소비 수준을 달성할 수 있다.
ESP32 최대 절전 모드 전류 소비량 은 ~5μA
ESP32 최대 절전 모드 깨우기 대기 시간 : 1ms 미만
※ 참고
ESP32 최대 절전 모드는 "딥 슬립 모드"와 매우 유사하다.
그러나 최대 절전 모드에서는 느린 시계에서 1개의 RTC 타이머만 사용할 수 있으며 "깊은 절전"의 경우처럼 모든 RTC GPIO가 아닌 특정 RTC GPIO만 활성화된다.
이것이 두 모드의 주요 차이점이다.
ESP32 전원 끄기
이는 작동 모드가 아니다.
왜냐하면 소프트웨어로 접근할 수 없고 외부 컨트롤러가 정의된 하드웨어 메커니즘에 의해 이 작동을 처리하지 않는 한 전원을 껐을 때 절전 모드가 해제되지 않기 때문이다.
전원을 끄려면 CHIP_PU 핀을 LOW로 설정해야 하며 결과적으로 칩의 전원이 꺼진다.
전류 소비는 0.1μA 까지 대폭 감소한다 .
전원 끄기 및 켜기 메커니즘의 구현 복잡성과 하드웨어 수정의 필요성으로 인해 많은 경우 실용적이지 않다.
CHIP_PU 핀은 ESP32의 RESET 핀 역할을 하며 맞춤 하드웨어를 변경하지 않는 한 대부분의 ESP32 개발 보드에서 프로그래밍 방식으로 제어할 수 없기 때문이다 .
※ 참고
위의 모든 전류 소비 값은 전체 ESP32 개발 보드가 아닌 기본 ESP32 칩에 대한 값이다.
모든 ESP32 개발 보드는 온보드 LED, 저항기, 기타 패시브 소자로 인해 전력 소비량이 훨씬 더 높으며, 이는 이 문서 이후에 나열된 값보다 더 큰 전류 소비량을 합산한다.
저전력 애플리케이션의 경우 최소한의 전력 소비로 필요한 기능을 달성하려면 최소한의 온보드 수동 소자를 갖춘 ESP32 대상 마이크로컨트롤러가 포함된 맞춤형 PCB 설계가 필요하다.
ESP32 절전 모드 개발 시 주의
이 글에 나열된 전류 소비 값을 ESP32 개발 키트에서 수행할 수 있는 측정값과 비교할 수 없다는 사실이고 이는 측정 프로세스를 방해하고 더 어렵게 만드는 온보드 추가 하드웨어 수동 구성 요소가 있기 때문이다.
ESP32 칩을 분리하거나 저전력 애플리케이션을 대상으로 하는 경우 맞춤형 ESP32 PCB를 이상적으로 설계할 수 있는 경우에만 비교할 수 있다.
출처
https://deepbluembedded.com/esp32-sleep-modes-power-consumption/
https://ciksiti.com/ko/chapters/13145-esp32-sleep-modes--their-power-consumption
'임베디드 관련 > ESP32' 카테고리의 다른 글
[ESP32] 주요 딥슬립함수 (0) | 2024.11.04 |
---|
댓글