Перейти к содержанию

Можно ли отключить детектор просадки питания (brownout) на ESP32?

Обновлено Редакция GAW

Сообщение Brownout detector was triggered в мониторе порта значит, что встроенный детектор увидел просадку напряжения питания и перезапустил чип. Это не ошибка программы: так ESP32 защищается от работы при слишком низком напряжении, когда процессор и флеш-память могут повести себя непредсказуемо.

Пороги детектора (ESP-IDF v5.4)

УровеньПорогКомментарий
0 (по умолчанию)2,43 ± 0,05 Всамый низкий
32,62 ± 0,05 В
72,80 ± 0,05 Всамый высокий
—3,0–3,6 Врабочий диапазон модуля ESP32-WROOM-32E

Espressif оговаривает, что пороги — оценка и различаются от чипа к чипу. Главное видно из таблицы: даже при самом высоком пороге детектор срабатывает ниже рабочего диапазона модуля. Если он сработал, напряжение уже выходило за паспортные пределы.

Что будет, если отключить

Чип перестанет перезагружаться по этой причине, но просадки никуда не денутся: процессор, флеш-память и радиочасть будут работать ниже 3,0 В. Возможны зависания, повреждение данных при записи во флеш-память и ошибки, которые трудно связать с питанием (наш вывод из чисел Espressif).

Что делать вместо этого

  1. Источник должен отдавать не меньше 0,5 А — так требует даташит модуля.
  2. Короткий кабель USB с толстыми проводами питания.
  3. Блокировочный конденсатор рядом с выводом питания модуля и стабилизатор 3,3 В с запасом по току — как выбрать его, разобрано в ответе «Подойдёт ли MCP1700 для ESP32».

Почему просадка случается при включении Wi-Fi, подробно объясняет ответ «ESP32 перезагружается при включении Wi-Fi»; устройство детекторов вообще — словарь на странице «Детектор пониженного питания».

Похожие вопросы

Как отключить brownout в Arduino IDE?

В Arduino часто советуют записать ноль в регистр детектора из setup(). Это то же отключение, что и в ESP-IDF, с теми же последствиями. Лучше потратить время на питание: короткий толстый кабель, конденсатор у модуля и стабилизатор, который держит 0,5 А.

Можно ли просто понизить порог?

Ниже уровня 0 (около 2,43 В) порог не опускается — это и есть самый низкий из восьми уровней ESP-IDF. Его можно только поднять, до 2,80 В, чтобы чип сбрасывался раньше.

Почему детектор срабатывает только при включении Wi-Fi?

Передатчик берёт ток пиками, и на слабом кабеле или стабилизаторе напряжение проседает именно в эти моменты. Подробный разбор с токами модуля — в ответе о перезагрузке ESP32 при включении Wi-Fi.

Источники

  1. Espressif. ESP-IDF v5.4, components/esp_system/port/soc/esp32/Kconfig.system — меню Brownout Detector: ESP_BROWNOUT_DET «Hardware brownout detect & reset», по умолчанию включён; уровни ESP_BROWNOUT_DET_LVL_SEL_0…7 — 2,43; 2,48; 2,58; 2,62; 2,67; 2,70; 2,77; 2,80 В ± 0,05 В, по умолчанию уровень 0; пороги — оценка и различаются от чипа к чипу
  2. Espressif. ESP-IDF v5.4, components/esp_system/port/brownout.c — обработчик выводит сообщение «Brownout detector was triggered» и перезапускает чип
  3. Espressif. ESP32-WROOM-32E & ESP32-WROOM-32UE Datasheet v2.1 — напряжение питания 3,0–3,6 В; ток, который должен отдавать внешний источник, — не меньше 0,5 А

Нашли ошибку?