161. Питание и нагрузки вокруг ESP32: стабилизатор, пики Wi-Fi, ключи, реле и выбросы
Самая частая «программная» беда ESP32 — вовсе не программа. Модуль перезагружается ровно в тот момент, когда включает Wi-Fi; реле, подключённое к выводу, не щёлкает; через неделю работы выгорает ключ. У всех трёх одна природа — питание и нагрузки вокруг чипа.
Здесь три модели в ngspice 39 (образ stm-lab:1, файлы _verify/esp161/): провал шины
3,3 В на пике тока передатчика, ключ для катушки реле и выброс при её выключении. Токи ESP32 —
из выписки даташита раздела 157, порог перезапуска — из раздела 150. Числа моделей — не
измерение на конкретной плате: реальные стабилизатор, конденсатор и транзистор дадут другие,
но порядок величин и выводы те же.
Как это называется в документации
Оригинал Перевод LDO (low-dropout regulator) линейный стабилизатор с малым падением dropout voltage минимальная разница вход — выход, при которой стабилизатор держит выход output impedance, load transient выходное сопротивление, реакция на скачок нагрузки ESR (equivalent series resistance) эквивалентное последовательное сопротивление конденсатора brownout detector детектор просадки питания: перезапуск при низком напряжении peak current пиковый ток low-side switch ключ между нагрузкой и землёй logic-level MOSFET транзистор, полностью открывающийся от логического уровня flyback (freewheeling) diode диод, гасящий выброс катушки TVS diode супрессор: ограничитель импульсных перенапряжений
161.1 Сколько берёт ESP32
По даташиту (раздел 157) ESP32 со спящим радио на 80 МГц берёт 20–31 мА, а при передаче 802.11b — 240 мА. Переход между ними занимает микросекунды: программа включает передатчик, и ток модуля вырастает больше чем вдесятеро. Для стабилизатора это скачок нагрузки, на который он отвечает не мгновенно.
240 мА — типичное значение из таблицы, снятое при передаче с заполнением 50 %, а не наибольший ток: сам даташит советует брать для ESP32 источник 3,3 В на 500 мА и больше.
161.2 Провал на пике Wi-Fi: конденсатор у модуля
Модель: стабилизатор 3,3 В с выходным сопротивлением 50 мОм, медленную реакцию его обратной связи задаёт индуктивность 10 мкГн последовательно с выходом; у модуля — конденсатор с ESR 50 мОм; ток скачком с 20 до 240 мА. Результат по трём ёмкостям:
| Конденсатор у модуля | Самое низкое напряжение | Провал |
|---|---|---|
| 10 мкФ | 3,08 В | 215 мВ |
| 100 мкФ | 3,23 В | 66 мВ |
| 470 мкФ | 3,27 В | 30 мВ |
Пока стабилизатор догоняет, ток пика берёт конденсатор. С 10 мкФ шина проседает на 215 мВ, до 3,08 В; со 100 мкФ провал 66 мВ, с 470 мкФ — 30 мВ. После пика напряжение устанавливается на 3,288 В: 240 мА на 50 мОм выходного сопротивления дают 12 мВ.
Если заложить ток, на который даташит советует рассчитывать источник, — 500 мА, — та же модель проседает вдвое с лишним глубже: с 10 мкФ — на 468 мВ, до 2,83 В; со 100 мкФ — на 143 мВ; с 470 мкФ — на 65 мВ.
Порог детектора просадки ESP32 по умолчанию — 2,43 В (раздел 150). Модель до него далеко не доходит, а на плате — доходит: провода от источника, тонкий кабель USB и дешёвый стабилизатор с большим выходным сопротивлением складываются с провалом. Поэтому правило одно — рядом с модулем 10 мкФ керамики и 100 мкФ и больше на шине 3,3 В, и питание не через длинный тонкий кабель.
161.3 Кабель USB и падение на стабилизаторе
Линейному стабилизатору нужен запас между входом и выходом — падение (dropout); у старых стабилизаторов с отладочных плат оно заметно больше, чем у современных с малым падением. Всё, что стоит до стабилизатора, этот запас съедает: тонкий длинный кабель USB, разъём с плохим контактом, диод защиты от переполюсовки. На пике тока передатчика напряжение на входе проседает, стабилизатор выходит из режима, и следом проседает шина 3,3 В. Отсюда классическая картина: от одного блока питания плата работает, от порта компьютера через длинный кабель — перезагружается при подключении к Wi-Fi. Стабилизатор с малым падением, короткий толстый кабель и конденсатор на входе стабилизатора решают это дешевле, чем поиск ошибки в программе.
Пример с числами. Порт компьютера по стандарту USB 2.0 даёт 4,75–5,25 В. Кабель длиной 1 м с жилами питания 28 AWG (0,21 Ом на метр, туда и обратно — 0,43 Ом) на пиковых 0,5 А теряет 0,21 В, диод Шоттки защиты — ещё около 0,36 В (модель раздела 169). От порта на нижнем краю стандарта до стабилизатора доходит 4,75 − 0,21 − 0,36 ≈ 4,2 В. У AMS1117 — частого стабилизатора отладочных плат — падение около вольта, и на входе ему нужно не меньше 4,3 В: на пике тока выход идёт вниз вслед за входом. Стабилизатору с падением 0,2 В хватило бы и 3,5 В.
161.4 Вывод не тянет реле: ключ на транзисторе
Катушке реле на 5 В с сопротивлением 70 Ом нужно 5 / 70 = 71,4 мА и пять вольт. Вывод ESP32 даёт 3,3 В и до 40 мА — и то лишь на максимальной силе выхода (раздел 153.2); к тому же при выключении катушка выдаёт выброс. Поэтому между ними ставят ключ: нагрузка — к +5 В, ключ — между нагрузкой и землёй. Модель двух вариантов, ключ открыт выводом 3,3 В:
npn: Ib_A=0.00250827 Ic_A=0.0698165 Vce_V=0.112847
mosfet: Id_A=0.0713696 Vds_V=0.00412546
NPN с резистором базы 1 кОм берёт из вывода 2,5 мА и пропускает через катушку 69,8 мА; на самом транзисторе остаётся 0,11 В — он в насыщении. MOSFET с порогом 1,5 В пропускает 71,4 мА, а на нём падает 4 мВ, и ток затвора в установившемся режиме равен нулю.
161.5 NPN или MOSFET
- NPN дешёв и прощает многое. Ток базы задают резистором с запасом, чтобы транзистор ушёл в насыщение: в модели резистор 1 кОм даёт 2,5 мА в базу, и на ключе остаётся 0,11 В. При токах в амперы это падение уже греет транзистор.
- MOSFET почти не нагружает вывод и почти не греется, но должен быть «логическим» — полностью открываться от 3,3 В; в модели порог 1,5 В, и на ключе всего 4 мВ. Транзистор с высоким порогом из силовых схем от вывода ESP32 откроется лишь частично и будет греться. Небольшой резистор в затворе гасит звон, а резистор от затвора к земле держит ключ закрытым, пока вывод не настроен: при загрузке у обычных выводов ESP32 нет подтяжек, и они висят в воздухе.
Сам вывод под ключ выбирают без особой роли при сбросе. Пять strapping-выводов — 0, 2, 5, 12 и 15 (раздел 153.3) — защёлкивают уровень в момент сброса, и обвязка ключа его меняет: резистор 10 кОм от затвора к земле пересиливает внутреннюю подтяжку 45 кОм, на GPIO0 остаётся 0,6 В — ниже порога нуля 0,825 В, и чип уходит в режим прошивки; база NPN через 1 кОм тянет GPIO0 так же, до 0,77 В. На GPIO15 тот же резистор выключит журнал загрузки, а ключ с подтяжкой вверх на GPIO12 переведёт питание флеш-памяти на 1,8 В. Выводы 1 и 3 — TX и RX UART0: TX при сбросе подтянут вверх и сразу передаёт журнал, так что ключ на нём включится при старте и задёргается. Подойдут 16–19, 21–23, 25–27, 32 и 33: при сбросе у них нет ни подтяжек, ни особой роли (у модулей с PSRAM 16 и 17 заняты ею).
161.6 Выброс катушки и диод
Ток через катушку не может исчезнуть мгновенно. Когда ключ закрывается, катушка разгоняет напряжение на стоке, пока ток не найдёт путь. Модель катушки 70 Ом / 100 мГн, выключение ключа:
diode=0 Vpeak_V=60.211
diode=1 Vpeak_V=5.84563
Без диода напряжение на ключе доходит до 60 В — до пробоя транзистора в модели. Настоящий ключ так пробивается каждое выключение и однажды выходит из строя, а выброс по земле и питанию сбрасывает ESP32. С диодом параллельно катушке (катодом к +5 В) выброс ограничен 5,8 В: питание плюс падение на диоде, а ток катушки спокойно затухает через диод.
Простой диод затягивает отпускание: ток катушки спадает медленно, контакты расходятся позже и дольше искрят. Где это важно, последовательно с диодом ставят стабилитрон. Выброс тогда ограничен питанием плюс напряжением стабилитрона — оно должно быть меньше предела ключа. В той же модели со стабилитроном на 24 В выброс 30 В, а ток падает до 10 % за 0,23 мс вместо 2,2 мс с одним диодом.
Для реле и моторов диод обязателен. Если нагрузка далеко, на длинных проводах, ставят ещё и супрессор (TVS) на входе платы: он ограничивает импульсы, пришедшие снаружи.
161.7 Грабли
| Симптом | Причина |
|---|---|
| ESP32 перезагружается при включении Wi-Fi | провал шины 3,3 В: мало ёмкости у модуля, тонкий кабель, слабый стабилизатор |
| перезагрузки только от USB компьютера | длинный кабель и разъём съедают запас стабилизатора |
| реле не щёлкает от вывода | вывод даёт 3,3 В и не больше 40 мА, а катушке нужно 5 В и 71 мА — нужен ключ |
| MOSFET греется, реле щёлкает неуверенно | транзистор не логический: от 3,3 В открыт не полностью |
| при включении платы реле дёргается | затвор без резистора к земле, вывод при загрузке не настроен |
| после установки ключа плата не грузится или ждёт прошивку | ключ на strapping-выводе (0, 2, 5, 12, 15) меняет уровень, защёлкнутый при сбросе |
| ключ выгорает через неделю | нет диода на катушке: выброс до пробоя на каждом выключении |
| ESP32 сбрасывается при выключении реле или мотора | выброс катушки уходит по земле и питанию |
| транзистор в насыщении не держит ток | мал ток базы: резистор базы слишком большой |
161.8 Итоги
- ESP32: 20–31 мА со спящим радио, 240 мА при передаче; скачок — за микросекунды; источник по даташиту — от 500 мА.
- Модель провала: 10 мкФ — 215 мВ, 100 мкФ — 66 мВ, 470 мкФ — 30 мВ; после пика 3,288 В.
- Порог перезапуска ESP32 — 2,43 В; кабель, разъём и стабилизатор съедают запас.
- Катушка 5 В / 70 Ом: NPN с базой 1 кОм — 69,8 мА при 0,11 В на ключе, MOSFET — 71,4 мА при 4 мВ.
- Выброс катушки без диода — до 60 В (пробой ключа), с диодом — 5,8 В.
- Рядом с модулем 10 мкФ и 100 мкФ и больше; нагрузки — через ключ; на катушке — диод.
Дальше: раздел 162 «Однополярный тракт под АЦП: y = m·x + b».