Радиомодуль nRF24L01+ прожил на моей макетке две прекрасные минуты. Дальше пакеты начали пропадать пачками, связь рвалась каждые полминуты, а потом модуль перестал отвечать на инициализацию. Скетч был чужой и проверенный — я перепрошил плату, переставил модуль в другой столбец, подозревал антенну и кривые руки. Виноват был пин 3.3V: на Uno за ним стоит стабилизатор LP2985 с потолком около 50 мА, а радиомодуль в пике передачи просит 130–150 мА. Просадка — сброс передатчика — разрыв связи. Арифметика, а не мистика.
Второй урок той же недели: подключил к тому же пину второй датчик — и даже лёгкие модули перестали стартовать вместе. Симптомы узнаваемы и повторяются у всех: один модуль работает, два — нет; связь рвётся именно в моменты записи на карту или передачи по радио, когда ток пик; перезагрузка платы лечит всё на полминуты. Всё это — питание, и оно лечится проводом, а не перепрошивкой: пин 3.3V — не розетка, он не умеет «потерпеть».
Лечится всё отдельным стабилизатором AMS1117-3.3: копеечной микросхемой или готовым модулем с клеммами. Разберём, как он работает, почему у него минимум 1,1 вольта «аванса» на входе, сколько тепла он отдаст при вашем токе и как разметить макетку, чтобы 3,3-вольтовые модули жили своей зоной и не встречались с 5-вольтовыми сигналами без посредников.
Линейный стабилизатор: что сгорает и почему это нормально
AMS1117 — линейный стабилизатор: он не превращает напряжение, он его уличает. На вход 5 вольт, на выходе держит 3,3, а разница в 1,7 вольта падает на внутреннем транзисторе и выходит теплом. Тепловая мощность считается в одну строку: P = (5 − 3,3) × ток. При 150 мА это 0,26 ватта — корпус SOT-223 рассеивает без вопросов, трогаешь пальцем — тёплый. При 800 мА — 1,36 ватта: без радиатора микросхема уходит в защиту от перегрева, и питание модулей начинает дышать.
Паспорт обещает ампер, по теплу без радиатора реально 500–600 мА в свободном воздухе. Этого хватает радиомодулю, карте памяти и дюжине датчиков — но не ESP8266 с его Wi-Fi пиками. Само тепло — та же арифметика, что в уроке про ток и сопротивление: падение на элементе умножил на ток — получил ватты.
Второе число из даташита — dropout, минимальное падение. Чтобы честно держать 3,3 вольта, входу нужно хотя бы 4,4 вольта: 3,3 плюс 1,1 аванса. USB и стабилизированный блок на 5 В — идеально. Четыре NiMH-банками — 4,8 вольта, впритык: свежий комплект держит, на середине разряда выход проседает. Литий-ион на 3,7 вольта — не выходит вообще: стабилизатор недополучает аванс и отдаёт на выход около 2,6 вольта, на которых модули глючат непредсказуемо.
Отсюда правило, которое я выучил на просаженном полевом логгере: AMS1117 кормят от 5 вольт, а для батарейного питания берут DC-DC понижающий преобразователь — он превращает напряжение, а не сжигает разницу, и греется в разы меньше. Для ориентировки: КПД линейного стабилизатора равен отношению напряжений — 3,3/5 = 66 %, треть батарейки греет корпус; DC-DC доходит до 85–95 %, но шумит и требует дроссель — у каждой технологии своя цена, и выбираешь её по проекту, а не по любви.
Макетка: 5-вольтовая и 3,3-вольтовая зоны
Готовый модуль AMS1117-3.3 подключается за минуту: VIN — в красную рейку 5 вольт, GND — в синюю, VOUT — во вторую красную рейку другой половины макетки, которую я объявляю 3,3-вольтовой зоной и помечаю кусочком синего скотча. Разметку делаю заранее, до первого модуля: слева живут 5-вольтовые приборы и пробник, справа — радио, карта, датчики; одна перемычка от VOUT к правой рейке — и зона объявлена. Дальше дисциплина: все 3,3-вольтовые модули — только в правую половину, все 5-вольтовые — в левую, и путаницы не возникает даже глубокой ночью. Про разрыв реек посередине и проверку полярности напоминает урок про шины питания — перед первой сборкой его стоит перечитать.
Земля одна на обе зоны: минус стабилизатора, минус платы, минус 5-вольтовой рейки — общий узел, иначе ни один сигнал не будет иметь смысла; вся механика этого описана в уроке про общий провод. Конденсаторы 22 мкФ на входе и выходе на модуле уже стоят; если паяешь голую микросхему — ставь сам: без выходной ёмкости AMS1117 склонен к самовозбуждению, и на шине появляется переменная составляющая, которую ловят все датчики разом.
Напряжение питания — половина истории, вторая — уровни логики. Входы 3,3-вольтовых микросхем обычно терпят до 3,6 вольта, а пин Uno выдаёт честные 5: прямой сигнал в такой модуль — приговор. Срезаем делителем: 1 кОм сверху, 2 кОм на землю — 5 × 2000/3000 = 3,33 вольта; расчёт тот же, что в уроке про делитель напряжения, номиналы — из стандартного ряда, о котором шла речь в уроке про подбор резисторов. Или берём модуль с преобразователем уровней на борту — как у карточки microSD, о которой мы говорили в уроке про логирование. Делитель — односторонняя улица: он срезает 5 вольт до 3,3, но не поднимает 3,3 до 5; для двусторонних шин вроде I2C есть отдельные преобразователи на MOSFET, но это сюжет другого урока.
Обратное направление дешевле: 3,3 вольта в 5-вольтовый вход Uno проходят уверенно. Порог HIGH у ATmega328P — 0,6 от питания, то есть 3,0 вольта; запас — всего 0,3 вольта, и его съедают длинные провода и помехи. На макетке с короткими перемычками это работает годами; на соплях в полметра — как повезёт, и я не советую проверять. Тот же замер, кстати, удобен для самоконтроля: воткнул A0 в 3,3-вольтовую шину — скетч ниже печатает вольты, и просадку видно раньше, чем отваливается связь.
Аппетиты модулей и чем их кормить
| Модуль | Пик тока | Чем питать | Сигнал в модуль |
|---|---|---|---|
| Датчик климата BMP280 | до 1 мА | 3,3 В с AMS1117 | делитель или модуль с обвязкой |
| Радиомодуль nRF24L01+ | 130–150 мА | только 3,3 В, конденсатор у разъёма | делитель или связка с ESP32 |
| Модуль microSD со стабилизатором | 100–200 мА при записи | 5 В — сам сделает 3,3 | преобразователь уровней на борту |
| ESP8266 / ESP32 DevKit | 300–500 мА в пике Wi-Fi | свой AMS1117 на плате | пины строго 3,3-вольтовые |
| DHT11 | 2–3 мА | 3,3–5 В по даташиту | всё равно |
// Выход AMS1117-3.3 соединён перемычкой с A0 — следим за шиной 3,3 Вvoid setup() { Serial.begin(9600);} void loop() { int raw = analogRead(A0); float u = raw * 5.0 / 1023.0; Serial.print("raw="); Serial.print(raw); Serial.print(" u="); Serial.println(u); if (u < 3.1 && u > 0.1) { Serial.println("шина просела: ток выше лимита"); } delay(500);}Симулятор: модуль в 3,3-вольтовой зоне
Мой логгер после переезда на DC-DC дожил до конца сезона на двух банках 18650; AMS1117 же остался на столе в роли заводского модуля для макетки — своей нише он служит честно. Плата ESP32 DevKit уже несёт свой AMS1117: с неё 3,3-вольтовую шину можно одолжить паре мелких датчиков, хотя кормить с неё радио или экран я не берусь. И покидая мир Arduino, держи в голове: у ESP32 и ESP8266 все пины 3,3-вольтовые — 5 вольт на сигнальный пин убивает плату. Почему мир вообще съезжает в 3,3 вольта и что это меняет для наших схем, разбирается в уроке про выбор между ESP32 и ESP8266.
- 1. Сколько тока даёт пин 3.3V на Arduino Uno?
- 2. Литиевый аккумулятор 3,7 В подан на вход AMS1117-3.3. Что на выходе?
- 3. ESP8266 тянет 400 мА в пике. Сколько тепла выделит AMS1117 при питании от 5 В?
- 4. Можно ли соединить выход AMS1117 (3,3 В) с красной рейкой 5 В?
- 5. Пин Uno выдаёт 5 В, вход модуля рассчитан максимум на 3,6 В. Что делать?
- Пин 3.3V Uno — потолок около 50 мА: радио и картам нужен отдельный стабилизатор
- AMS1117: вход от 4,4 В (dropout 1,1 В), тепло считается как (5 − 3,3) × ток; без радиатора реально 500–600 мА
- Макетка делится на 5-вольтовую и 3,3-вольтовую зоны с общей землёй; выход стабилизатора с 5-вольтовой рейкой не соединяют
- 5-вольтовый сигнал в 3,3-вольтовый модуль — только через делитель 1к/2к или level-shifter; 3,3 В в 5-вольтовый вход проходит само
- Для батарей — DC-DC: линейный стабилизатор сжигает разницу напряжений, а не превращает её
Частые вопросы по теме урока
- Сколько тока даёт пин 3.3V на Arduino Uno?
- За пином 3.3V стоит LP2985 с лимитом около 50 мА. Радиомодулю в пике нужно 130–150 мА — отсюда срывы связи из начала урока. Около 50 мА — там слабый линейный стабилизатор
- Литиевый аккумулятор 3,7 В подан на вход AMS1117-3.3. Что на выходе?
- Входу нужно минимум 4,4 В (3,3 + 1,1 dropout). От 3,7 В стабилизатор не дополучает аванс и отдаёт просевшие 2,6 В, на которых модули глючат. Ниже 3,3 В: dropout 1,1 В не преодолеть, выйдет около 2,6 В
- ESP8266 тянет 400 мА в пике. Сколько тепла выделит AMS1117 при питании от 5 В?
- P = (5 − 3,3) × 0,4 = 0,68 Вт. SOT-223 столько не рассеивает — нужен радиатор или DC-DC. При 800 мА было бы 1,36 Вт, при 100 мА — 0,17 Вт. 0,68 Вт — горячо без радиатора
- Можно ли соединить выход AMS1117 (3,3 В) с красной рейкой 5 В?
- Выход стабилизатора и 5-вольтовая рейка — два разных источника. Связывать их нельзя: 3,3-вольтовые модули получат 5 В, а стабилизатор — войну с питанием платы. Нет: два источника начнут воевать, перегрев и глюки
- Пин Uno выдаёт 5 В, вход модуля рассчитан максимум на 3,6 В. Что делать?
- 5 × 2000/3000 = 3,33 вольта — безопасный уровень. Перепрошить логику нельзя, конденсатор уровень не режет, а «не страшно» заканчивается на первом же пике. Делитель 1 кОм / 2 кОм или модуль с level-shifter