반응형
ESP32의 실시간 시계(RTC)와 내부 ULP 코프로세서가 작동하려면 2.3V에서 3.6V 사이의 안정적인 전압이 필요합니다. 메인 3.3V 전원이 끊겼을 때 RTC를 계속 구동하기 위한 백업용으로는 일반적인 3V CR2032 코인 전지나 충전식 3.3V LIR2032 배터리를 주로 사용합니다.
핵심 전압 사양
- 동작 전압 범위: 2.3V ~ 3.6V
- 딥 슬립 전류 소비: 약 5 uA ~ 150uA(개발 보드의 전원 레귤레이터 성능에 따라 차이가 날 수 있습니다.)
- 최대 허용 전압: 절대 최대 전압은 3.6V입니다. 감압 레귤레이터 없이 5V나 충전된 3.7V Li-Po 배터리를 RTC 전원 핀에 직접 연결하면 안 됩니다.
배터리 백업 구현 방법
정전 시 ESP32의 내부 RTC에만 전원을 공급하려면 배터리를 VDD3P3_RTC 핀(ESP32-S3나 P4 같은 최신 칩은 VBAT 핀)에 연결해야 합니다.
- 회로 분리: 쇼트키 다이오드(Schottky Diode)나 P-채널 MOSFET을 사용하여 메인 3.3V 전원과 백업 배터리 전원을 자동으로 전환하도록 회로를 구성합니다. 메인 전원이 켜지면 배터리 소모를 차단합니다.
- 개발 보드의 한계: 시중의 흔한 ESP32 개발 보드(예: DOIT DevKit 등)는 VBAT나 RTC 전용 전원 핀이 외부로 핀헤더가 나와 있지 않은 경우가 많습니다. 이 경우 보드 전체의 3.3V 라인에 전원을 공급하거나, DS3231 같은 외장 RTC 모듈을 추가로 연결하는 것이 훨씬 편리합니다.
배터리 전압 측정하기
백업 배터리가 방전되어 2.3V 이하로 떨어지는 것을 막으려면 ESP32의 아날로그 핀(ADC)으로 배터리 전압을 감시해야 합니다.
- 배터리 전압이 ESP32 ADC의 입력 한계 전압(기본 1.1V 내외)보다 높으므로, 반드시 전압 분배 저항(예: 100kΩ 저항 2개)을 거쳐 전압을 절반으로 낮춘 뒤 GPIO 핀(예: GPIO 35)으로 읽어야 칩이 손상되지 않습니다.
현재 사용 중이신 ESP32 보드의 정확한 모델명(예: ESP32-WROOM-32E, ESP32-S3, ESP32-CAM 등)을 알려주시면, 알맞은 핀맵과 회로도 구성 방법을 더 자세히 안내해 드릴 수 있습니다. 어떤 보드를 사용하고 계신가요?
ESP32-S3는 이전 세대 ESP32와 전원 구조가 다르며, 단독으로 시간만 유지하는 독립된 VBAT(배터리 전용) 핀이 칩 자체에 존재하지 않습니다. [1]
따라서 ESP32-S3에서 RTC 전원 공급 및 배터리 전압을 측정하려면 다음 세 가지 핵심 사항을 반영하여 회로를 구성해야 합니다.
1. ESP32-S3 전원 구조의 특징
- 통합 전원 핀: ESP32-S3 칩 내부의 RTC 부하(내부 클럭, RTC 메모리)는 20번 핀인 VDD3P3_RTC를 통해 전원을 공급받습니다. [1]
- 설계 한계: 메인 CPU 전원(VDD3P3_CPU)과 RTC 전원이 내부적으로 일부 연동되어 있어, 메인 전원을 완전히 차단하고 VDD3P3_RTC에만 배터리를 물리는 방식은 오작동을 유발할 수 있습니다. [1, 2]
- 해결책: 메인 3.3V 라인 전체를 배터리로 백업하거나, ESP32-S3를 딥 슬립(Deep Sleep) 모드로 진입시켜 소비 전류를 수십 uA 단위로 낮추는 방식을 사용해야 합니다. [1]
2. 하드웨어 회로 구성 (전원 전환 및 전압 측정)
일반적인 3.7V 리튬 이온(Li-Po) 배터리나 3V 코인 배터리를 안전하게 연결하고 측정하는 표준 회로 구성입니다.
① 전원 자동 전환 및 공급 (듀얼 다이오드 방식)
USB 전원(5V)이 들어올 때는 배터리 소모를 막고, USB 전원이 끊기면 즉시 배터리로 구동되도록 쇼트키 다이오드를 사용합니다. [1]
- USB 5V 라인 → 쇼트키 다이오드 → 3.3V LDO 레귤레이터 입력 → ESP32-S3 3.3V 핀
- 배터리(+) 라인 → 쇼트키 다이오드 → 3.3V LDO 레귤레이터 입력
② 배터리 전압 측정 회로 (전압 분배)
ESP32-S3의 ADC 전압 입력 범위는 최대 3.1V~3.3V 수준(11dB 감쇠 설정 시)입니다. 만약 리튬 배터리(최대 4.2V)를 측정한다면 전압을 절반으로 낮춰야 합니다. [1]
- 저항 구성: 배터리(+) → 100kΩ 저항 → [측정 노드] → 100kΩ 저항 → GND
- 핀 연결: [측정 노드]를 ESP32-S3의 아날로그 핀인 GPIO 1 또는 GPIO 2에 연결합니다.
3. 배터리 전압 측정 아두이노 코드 예시 (ESP32-S3)
ESP32-S3는 내부 ADC 특성에 맞춰 감쇠(Attenuation) 설정을 지정해야 배터리 전압 영역대(최대 4.2V, 분배 후 2.1V)를 정확히 읽을 수 있습니다.
cpp#define BAT_ADC_PIN 1 // 배터리 전압 분배 저항이 연결된 GPIO 핀 번호
void setup() {
Serial.begin(115200);
// ESP32-S3 ADC 설정 (0V ~ 3.1V까지 측정 가능하도록 11dB 감쇠 설정)
analogSetAttenuation(ADC_11db);
}
void loop() {
// ADC 값 읽기 (기본 12비트 해상도: 0 ~ 4095)
int rawAnalog = analogRead(BAT_ADC_PIN);
// 아날로그 값을 전압(mV) 단위로 변환
float measuredVoltage = analogReadMilliVolts(BAT_ADC_PIN) / 1000.0;
// 100k - 100k 전압 분배 저항 회로이므로 실제 배터리 전압은 2배
float batteryVoltage = measuredVoltage * 2.0;
Serial.print("Raw ADC: "); Serial.print(rawAnalog);
Serial.print(" | Battery V: "); Serial.print(batteryVoltage);
Serial.println(" V");
// 딥 슬립 진입 조건 제어 (예시: 배터리가 3.3V 이하로 떨어지면 시스템 보호를 위해 딥 슬립)
if (batteryVoltage < 3.3) {
Serial.println("배터리 부족! 딥 슬립 모드로 전환합니다.");
esp_deep_sleep_start();
}
delay(2000);
}
4. 팁: 외부 RTC 모듈(DS3231) 사용 권장
ESP32-S3의 내부 RTC 클럭은 주위 온도 변화에 따라 하루에 몇 분씩 오차가 발생할 정도로 정밀도가 떨어집니다. 만약 메인 전원이 완전히 꺼진 상태에서 몇 달 동안 정확한 시간을 유지해야 하는 프로젝트라면, 회로가 복잡한 내부 RTC 백업 대신 DS3231 외장 RTC 모듈을 I2C(GPIO 41, 42 등)로 연결하는 것이 정신 건강과 정밀도 측면에서 훨씬 유리합니다.

반응형
'ESP32' 카테고리의 다른 글
| 꼭 만들어 보고 싶어질 ESP32 프로젝트 4가지! (0) | 2026.06.10 |
|---|---|
| esp32 자동 타이머 스위치 (0) | 2026.06.08 |
| ESP32 슈퍼 미니 개발 보드 세부 사항 (0) | 2026.06.08 |
| esp32-c6과 s3 차이점 (0) | 2026.06.05 |
| ESP32 및 ESP8266에 MicroPython 펌웨어를 플래싱하는 방법 (0) | 2026.06.03 |
| ESP32 연결 실패: 패킷 헤더 대기 중 시간 초과 에러 (0) | 2026.06.03 |
| ESP Partition Toolbox를 오픈소스로 공개 (0) | 2026.06.01 |
| WiFiMulti ESP32: 가장 강력한 Wi-Fi 네트워크에 연결 (0) | 2026.05.30 |
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
캐어랩