Почему ESP32 в deep sleep потребляет больше, чем в даташите?
Обновлено Редакция GAW
10 мкА в даташите ESP32 — ток одного чипа в режиме deep sleep с работающими таймером RTC и памятью RTC. Это типичное значение без указанного максимума. Отладочная плата и даже модуль на своей плате почти всегда потребляют во сне больше — иногда в сотни раз.
Где теряются микроамперы
| Что потребляет | Сколько | Что сделать |
|---|---|---|
| Стабилизатор 3,3 В | LM1117: около 5 мА собственного тока | стабилизатор с малым током покоя |
| Мост USB–UART, светодиод питания | зависит от платы, часто больше чипа | питать модуль в обход, светодиод выпаять |
| Пара «внешняя подтяжка + встроенная к земле» | около 60 мкА при 10 и 45 кОм (наш расчёт) | rtc_gpio_isolate() для вывода |
| Работающий ULP | 150 мкА вместо 10 мкА | ULP только при необходимости |
| Пробуждение ext0 | периферия RTC остаётся под питанием, цифры в даташите нет | ext1 или таймер |
| Light sleep вместо deep sleep | 0,8 мА | проверить, какой режим включён |
Наш расчёт: 5 мА стабилизатора — это в 500 раз больше 10 мкА чипа. Такую плату батарея 2000 мА·ч питает меньше 17 суток, даже если ESP32 спит всё время.
Подтяжки и выводы RTC
ESP-IDF предупреждает: у ряда выводов встроенные подтяжки включены по умолчанию, и если внешняя схема держит вывод в противоположном уровне, через подтяжку во сне течёт ток. Пример Espressif — модуль ESP32-WROVER, у которого GPIO12 подтянут снаружи вверх, а внутри чипа — вниз. Лечится вызовом rtc_gpio_isolate(GPIO_NUM_12) перед esp_deep_sleep_start(); так же изолируют другие выводы, к которым во сне подключена внешняя схема. Про подтяжки кнопок — в ответе «Нужен ли резистор для кнопки на ESP32».
Источник пробуждения
С включённым сопроцессором ULP ток чипа по табл. 4-2 даташита — 150 мкА. С ext0, по ESP-IDF, во сне остаётся под питанием домен периферии RTC; отдельной цифры для этого случая в даташите нет, но ток выше, чем с одним таймером (наш вывод). Для кнопки, если ток важен, выбирают ext1 или пробуждение по таймеру. Флеш-память заботы не требует: esp_deep_sleep_start() всегда отключает её питание.
Как найти виновника
Сначала измерьте ток сна правильно — микроамперным пределом или шунтом, см. «Как измерить ток микроконтроллера в режиме сна». Потом сравните ток всей платы и модуля, запитанного 3,3 В напрямую. Как ток сна и время бодрствования складываются в срок службы батареи, посчитает калькулятор тока ESP32 во сне, а настройка режимов сна разобрана в статье «Глубокий сон ESP32».
Похожие вопросы
Сколько потребляет голый ESP32 в deep sleep?
По табл. 4-2 даташита — 10 мкА типично, когда работают только таймер RTC и память RTC; с сопроцессором ULP — 150 мкА, в hibernation — 5 мкА. Максимальных значений Espressif для этих режимов не приводит, поэтому у отдельного экземпляра и при нагреве ток может быть выше.
Сколько тока уносит одна подтяжка во сне?
Наш расчёт: если внешний резистор 10 кОм тянет вывод к 3,3 В, а встроенная подтяжка около 45 кОм — к земле, через пару течёт 3,3 / 55 000 ≈ 60 мкА. Это в шесть раз больше тока спящего чипа. ESP-IDF для такого случая советует rtc_gpio_isolate() перед уходом в сон.
Как проверить, кто потребляет: чип или плата?
Измерить ток сна дважды: всей платы от её входа питания и модуля отдельно, подав 3,3 В прямо на вывод питания модуля в обход стабилизатора и моста. Разница и есть потребление обвязки. Измерять нужно микроамперным пределом или шунтом, который закорачивают на время пробуждения.
Источники
- Espressif. ESP32 Series Datasheet v5.3 — табл. 4-2 — light-sleep 0,8 мА, deep-sleep с ULP 150 мкА, ULP 1 % — 100 мкА, таймер и память RTC — 10 мкА, hibernation 5 мкА, выключен 1 мкА (типичные значения, максимума нет); табл. 5-3 — встроенная подтяжка RPU и RPD около 45 кОм
- Espressif. ESP-IDF Programming Guide v6.1: Sleep Modes (ESP32) — Configuring IOs — встроенные подтяжки включены по умолчанию, ток через них растёт, если внешняя схема держит вывод; пример ESP32-WROVER: GPIO12 подтянут снаружи вверх и изнутри вниз, rtc_gpio_isolate(GPIO_NUM_12) перед esp_deep_sleep_start(); ext0 держит домен RTC_PERIPH включённым во время сна; у ревизий 0 и 1 ESP32 ext0 несовместим с ULP и касанием, а ULP и касание требуют RTC_PERIPH в режиме AUTO; esp_deep_sleep_start() отключает питание SPI-флеш
- Texas Instruments. LM1117 800-mA Low-Dropout Linear Regulator (SNOS412Q, January 2023) — Electrical Characteristics — ток покоя LM1117-3.3 и LM1117I-3.3: 5 мА типично при 25 °C
Нашли ошибку?
Смотрите также
- Ток ESP32 во снеDeep-sleep и light-sleep по даташитам, средний ток, Wi-Fi, батарея
- Глубокий сон ESP32Режимы сна, токи, пробуждение по таймеру и выводам, RTC-память, расчёт батареи
- Как измерить ток микроконтроллера в режиме сна?Нужен микроамперный предел или шунт, и шунт закорачивают при пробуждении
- Ток покояСобственное потребление стабилизатора, IQ