Основы · 17 мин чтения

Стабилизатор напряжения 7805: распиновка, конденсаторы и расчёт нагрева

Как подключить стабилизатор напряжения 7805: распиновка, конденсаторы 0,33 µF и 0,1 µF, падение напряжения, расчёт потерь и радиатора, серия 78xx, AMS1117-3.3 и разница между buck и линейным стабилизатором.

Стабилизатор напряжения 7805 — дешёвая микросхема с тремя выводами, которая берёт более высокое или нестабильное напряжение от 7 до 35 V и превращает его в стабильные 5 V. Это самый простой способ получить чистые 5 V для Arduino, датчиков и модулей реле от блока питания на 12 V, автомобильного аккумулятора или батарейного блока: достаточно добавить два маленьких конденсатора. Но 7805 работает, превращая лишнее напряжение в тепло, поэтому правильное подключение, пределы входного напряжения и понимание того, насколько он нагреется, — ключ к схеме, которая работает безопасно.

Из этого руководства ты пошагово узнаешь, что такое стабилизатор напряжения, какая у 7805 распиновка и как подключить его с конденсаторами 0,33 µF и 0,1 µF, что означает минимальное падение напряжения (dropout), как рассчитать нагрев по формуле P = (Vin − Vout) · I и как выбрать радиатор. Затем разберём семейство 78xx, LDO-стабилизатор AMS1117-3.3 для модулей на 3,3 V, разницу между линейными и импульсными (buck) стабилизаторами, собственный стабилизатор Arduino и предел для Vin, а в конце перейдём к коду, который измеряет стабилизатор с помощью Arduino, ESP32 и Raspberry Pi Pico.

Модуль стабилизатора напряжения LM7805
Модуль стабилизатора LM7805: 7805, привинченный к радиатору, винтовые клеммы входа и выхода, фильтрующие конденсаторы, защитные диоды и выходные пины 5 V на одной плате.

Что такое стабилизатор напряжения и как он работает?

Стабилизатор напряжения — это схема, которая держит на выходе постоянное напряжение, даже когда меняется входное напряжение или ток нагрузки. 7805 — линейный стабилизатор: внутри у него силовой транзистор, включённый последовательно между входом и выходом, внутреннее опорное напряжение, которое не уплывает с температурой, и усилитель ошибки, который постоянно сравнивает выход с этим опорным напряжением. Если выход опускается ниже 5 V, транзистор открывается чуть сильнее; если поднимается выше, транзистор призакрывается. Проще говоря, транзистор ведёт себя как саморегулирующийся резистор и принимает на себя лишнее напряжение между входом и выходом. Это лишнее напряжение, умноженное на ток, превращается в тепло: именно поэтому 7805 такой простой и именно поэтому он греется.

Последние две цифры в названии семейства 78 обозначают выходное напряжение: 7805 даёт 5 V, 7812 — 12 V. Буквы впереди указывают только на производителя, поэтому LM7805, L7805CV, MC7805 и KA7805 делают одно и то же. В микросхему встроены ограничение тока, тепловое отключение при перегреве и защита области безопасной работы. Поэтому она редко выходит из строя даже при коротком замыкании на выходе: просто ограничивает ток или отключается, пока не остынет.

ПараметрЗначение
Выходное напряжение5 V (±4%: 4,8–5,2 V)
Входное напряжениеРекомендуется 7–25 V, абсолютный максимум 35 V
Минимальное падение (dropout)Обычно 2 V (при 1 A)
Выходной ток1 A, до 1,5 A при хорошем охлаждении
Ток короткого замыканияОколо 2 A (внутреннее ограничение)
Ток покоя (Iq)Обычно 3–5 mA, максимум 8 mA
Тепловое сопротивление (TO-220)Кристалл–корпус 4–5 °C/W, кристалл–воздух без радиатора 50–65 °C/W
Тепловая защитаОтключается при температуре кристалла около 150 °C
КорпусаTO-220 (1 A), D2PAK, DPAK; маленький 78L05 в корпусе TO-92 (100 mA)

Распиновка 7805 и схема подключения

Если держать 7805 маркировкой к себе и выводами вниз, то слева направо идут 1: вход (IN), 2: GND и 3: выход (OUT). Металлический фланец с отверстием тоже соединён с GND, поэтому 7805 можно прикрутить к радиатору или металлическому корпусу, соединённому с землёй схемы, без изолирующей прокладки. GND на стороне входа и GND на стороне выхода — одна и та же точка: источник питания, стабилизатор и питаемая плата должны сходиться в общей земле. В таблице ниже показано, куда подключается выход 7805 на каждой плате.

Вывод 7805Куда подключаетсяArduino UnoESP32 DevKitRaspberry Pi Pico
1 – вход (IN)Плюс источника 7–25 V + 0,33 µFНе подключаетсяНе подключаетсяНе подключается
2 – GNDМинус источника и общий вывод конденсаторовGNDGNDGND (напр., пин 38)
3 – выход (OUT)Шина 5 V + 0,1 µFПин 5VПин 5V (VIN)VSYS (пин 39), через диод Шоттки
Не подключай выход 7805 к пину Vin или гнезду питания Arduino: собственному стабилизатору платы тоже нужно не меньше 7 V, и при 5 V на входе шина 5V платы проседает до 3,5–4 V. Место выхода 7805 — пин 5V. Кроме того, у маленького 78L05 в корпусе TO-92 порядок выводов обратный (плоской стороной к себе: 1 выход, 2 GND, 3 вход), а у отрицательного 7905 порядок такой: GND, вход, выход. Всегда проверяй порядок выводов для конкретного корпуса.

Конденсаторы: почему 0,33 µF и 0,1 µF?

В типовой схеме из даташитов производителей на входе стоит конденсатор 0,33 µF, а на выходе 0,1 µF (некоторые производители указывают на входе 0,22 µF). Входной конденсатор предотвращает самовозбуждение из-за индуктивности проводов, когда стабилизатор стоит далеко от фильтрующего конденсатора источника питания. Выходной конденсатор для устойчивости не обязателен, но делает напряжение стабильнее при резких изменениях нагрузки. Оба должны быть керамическими и стоять как можно ближе к выводам. Керамический конденсатор 0,33 µF маркируется 334, а 0,1 µF — 104; чтобы расшифровать другие маркировки, воспользуйся утилитой кодов конденсаторов.

На практике полезно добавить рядом с каждым из этих маленьких конденсаторов по электролитическому: 10–100 µF на входе сглаживают пульсации от источника, а 10–47 µF на выходе уменьшают просадки напряжения при нагрузках с резким потреблением тока, таких как сервоприводы, реле или Wi-Fi-модули. Если на выходе стоит больше 10 µF, добавь диод 1N4001 от выхода ко входу (в нормальном режиме он включён в обратном направлении) на случай замыкания входа: если входное напряжение внезапно упадёт до нуля, большой конденсатор разрядится через этот диод, а не через стабилизатор. Второй 1N4001, включённый последовательно со входом, защищает от переполюсовки, но добавляет падение около 0,7 V. О типах и полярности читай в статьях что такое конденсатор и что такое диод.

Пошагово: питание 5 V на 7805 на макетной плате

  1. Вставь 7805 в макетную плату так, чтобы каждый вывод попал в отдельный столбец, а маркировка смотрела на тебя.
  2. Подключи плюс источника (напр., блока питания на 9 V) к выводу 1, входу, а минус — к выводу 2, GND. При желании добавь 1N4001 последовательно в плюсовую линию для защиты от переполюсовки.
  3. Установи керамический конденсатор 0,33 µF (334) между входом и GND, в отверстия поближе к выводам.
  4. Установи керамический конденсатор 0,1 µF (104) и, по желанию, электролитический на 10–47 µF между выходом (3) и GND; длинная ножка электролита идёт к плюсу.
  5. Прежде чем подключать нагрузку, измерь выходное напряжение мультиметром: должно получиться 4,8–5,2 V.
  6. Подключи выход к пину 5V Arduino, а GND — к GND Arduino. Во время загрузки кода не используй USB и внешний источник одновременно.
  7. После нескольких минут работы проверь температуру стабилизатора; если он сильно греется, добавь радиатор по расчёту нагрева ниже или понизь входное напряжение.
Если на макетной плате часто нужны 5 V и 3,3 V, можно взять модуль питания MB102 для макетной платы, на котором уже стоят стабилизаторы. В нём тоже линейные стабилизаторы AMS1117-5.0 и AMS1117-3.3, так что правила про падение напряжения и нагрев из этой статьи действуют и для него.

Минимальное падение напряжения: какое нужно входное напряжение?

Чтобы линейный стабилизатор держал выход стабильным, входное напряжение должно быть выше выходного на определённую величину; эта минимальная разница называется минимальным падением напряжения (dropout). Типичное падение у 7805 — 2 V при 1 A, поэтому для выхода 5 V на входе нужно не меньше 7 V, и условия испытаний в даташите тоже начинаются с 7–7,5 V. Если разница становится меньше, стабилизатор уже не может стабилизировать, и выход просто повторяет вход примерно на 2 V ниже: при 6 V на входе выход проседает примерно до 4 V, Arduino перезагружается или аналоговые показания уплывают.

Важно не среднее значение, а самая низкая точка входного напряжения. В классическом источнике из трансформатора, диодного моста и фильтрующего конденсатора напряжение пульсирует каждые полпериода; размах пульсаций примерно равен ΔV = I / (100 · C) (сеть 50 Hz, двухполупериодное выпрямление; для сети 60 Hz вместо 100 подставь 120). При нагрузке 500 mA и конденсаторе 2200 µF ΔV ≈ 2,3 V. У трансформатора на 9 V переменного тока выпрямленное напряжение в пике около 11,3 V, поэтому дно пульсаций остаётся около 9 V; это выше 7 V, значит, хватает. По той же логике батарейка-«крона» на 9 V под нагрузкой быстро опускается ниже 7 V, поэтому питание 7805 от «кроны» долго не протянет. Варианты с батарейками есть в руководстве питание Arduino от батареек.

Расчёт нагрева: P = (Vin − Vout) · I

Ток, который 7805 потребляет на входе, почти равен току, который он отдаёт на выходе; разница — лишь несколько миллиампер тока покоя. Поэтому мощность, превращающаяся в тепло в стабилизаторе, равна P = (Vin − Vout) · I, а КПД примерно равен Vout / Vin. Пример: при питании схемы, потребляющей 500 mA, от блока питания на 12 V выделяется P = (12 − 5) × 0,5 = 3,5 W тепла. На 2,5 W, отданные нагрузке, впустую уходит 3,5 W, и КПД всего 42%. Если питать ту же схему от источника на 7,5 V, потери падают до 1,25 W. Иначе говоря, входное напряжение выше необходимого ничего не даёт, кроме лишнего нагрева стабилизатора. Чтобы освежить в памяти связь тока, напряжения и мощности, загляни в статью закон Ома.

Вход (Vin)100 mA300 mA500 mA1 A
7 V0,2 W0,6 W1,0 W2,0 W
9 V0,4 W1,2 W2,0 W4,0 W
12 V0,7 W2,1 W3,5 W7,0 W
24 V1,9 W5,7 W9,5 W19 W

Выбор радиатора

Температура кристалла рассчитывается как Tj = Tокр + P · θ, где θ (тета) — тепловое сопротивление в °C/W. У корпуса TO-220 без радиатора тепловое сопротивление кристалл–воздух составляет 50–65 °C/W: потери 1 W поднимают температуру кристалла на 50–65 °C выше окружающей. В надёжной конструкции кристалл остаётся ниже 125 °C, а это значит, что без радиатора в комнате при 25 °C допустимо максимум около 1,5 W. Если внутри корпуса устройства воздух прогревается до 50–60 °C, предел падает до 1 W. Любой случай из таблицы выше, где получается больше 1 W, — повод подумать о радиаторе.

Для большей мощности рассчитай тепловое сопротивление радиатора: θобщ = θJC + θCS + θSA. У 7805 тепловое сопротивление кристалл–корпус θJC около 5 °C/W, а корпус–радиатор θCS с термопастой около 0,5–1 °C/W. В примере с 3,5 W, чтобы удержать кристалл на 110 °C внутри корпуса с температурой 40 °C, нужно θобщ ≤ (110 − 40) / 3,5 = 20 °C/W, значит, для радиатора отдельно θSA ≤ 20 − 5 − 1 = 14 °C/W. Маленькие накидные радиаторы для TO-220 обычно дают 20–30 °C/W, так что они не подойдут; нужен ребристый алюминиевый радиатор среднего размера. Производители радиаторов указывают это значение в °C/W в своих каталогах.

  • Используй термопасту: тонкий воздушный зазор между корпусом и радиатором сильно ухудшает теплопередачу; тонкого слоя пасты достаточно.
  • Фланец — это GND: у 78xx металлический фланец соединён с GND, поэтому радиатор не нужно изолировать, и несколько 78xx могут стоять на одном радиаторе. У 79xx фланец соединён со входом, и его нужно изолировать слюдяной прокладкой и пластиковой втулкой.
  • Не полагайся на тепловую защиту: перегретый 7805 отключается и снова включается, когда остынет. Выход пропадает каждые несколько секунд, и Arduino постоянно перезагружается; это защита на крайний случай, а не нормальная работа.
  • Раздели нагрев: самое действенное решение — понизить входное напряжение. Чтобы получить 5 V из 24 V, сначала понизь напряжение до 7–8 V понижающим преобразователем (buck), а 7805 используй как последнюю ступень.

Серия 78xx: 7805, 7809, 7812 и другие

МодельВыходМин. входМакс. входТипичное применение
78055 V7 V35 VArduino, датчики, модули реле
78088 V10,5 V35 VПромежуточное питание для входа Vin Arduino
78099 V11,5 V35 VСхемы на 9 V, Vin Arduino
781212 V14,5 V35 VВентиляторы и реле на 12 V (малый ток)
781515 V17,5 V35 VСхемы на ОУ
782424 V27 V40 VПромышленные датчики на 24 V
78L055 V, 100 mA7 V30 VКорпус TO-92, слаботочные схемы
7905−5 V−7 V−35 VОтрицательное питание (другой порядок выводов)

Если нужно регулируемое напряжение, возьми родственника этого семейства — LM317: с двумя резисторами он даёт любое выходное напряжение от 1,25 до 37 V, которое задаётся формулой Vout = 1,25 × (1 + R2 / R1) (R1 обычно 240 Ω). Правила по нагреву и падению напряжения те же, что у 7805. 78M05 на 500 mA — версия средней мощности, которая часто встречается на платах с поверхностным монтажом. Какую модель ни выбери, правило не меняется: минимальное входное напряжение должно быть примерно на 2–3 V выше выходного.

LDO AMS1117-3.3: для модулей на 3,3 V

ESP32, Raspberry Pi Pico, nRF24L01 и многие датчики работают от 3,3 V. Из 7805 3,3 V не получить; чаще всего для этого берут AMS1117-3.3. AMS1117 — это LDO-стабилизатор (low dropout, с малым падением напряжения): при 800 mA его падение обычно 1,1 V и максимум 1,3 V, так что он легко делает 3,3 V из 5 V. Он отдаёт до 1 A, принимает на вход максимум 15 V и на холостом ходу потребляет около 5 mA. Именно он понижает 5 V до 3,3 V на большинстве отладочных плат ESP32.

Модуль стабилизатора напряжения AMS1117 3.3V
Модуль AMS1117-3.3: 5 V подаётся на VIN и GND, 3,3 V снимается с VOUT; конденсаторы 10 µF (106) и 0,1 µF (104) уже установлены на входе и выходе.

У AMS1117 в корпусе SOT-223 порядок выводов отличается от 7805: 1: GND/ADJ, 2: выход, 3: вход, а большой фланец соединён с выходом. Для устойчивости даташит рекомендует на выходе танталовый конденсатор 22 µF; готовые модули идут с конденсаторами 10 µF и нормально работают при обычных нагрузках, но в собственной схеме ставь на выход 22 µF. К нагреву он чувствительнее: тепловое сопротивление корпуса SOT-223 — 46–90 °C/W в зависимости от площади меди на плате, и производитель не гарантирует стабилизацию примерно выше 1,2 W. С 5 V до 3,3 V при 300 mA P = 1,7 × 0,3 = 0,51 W, это нормально; но с 12 V до 3,3 V тот же ток даёт 2,6 W, и модуль быстро уходит в тепловую защиту.

СтабилизаторВыходПадение (dropout)Макс. входМакс. токТок покоя
7805 (TO-220)5 V~2 V35 V1–1,5 A3–8 mA
AMS1117-3.3 (SOT-223)3,3 V1,1–1,3 V15 V1 A~5 mA
AMS1117-5.0 (SOT-223)5 V1,1–1,3 V15 V1 A~5 mA
MCP1700-3302 (TO-92 / SOT-23)3,3 V~0,18 V (250 mA)6 V250 mA1,6 µA

В проекте, рассчитанном на месяцы работы от батарей, ток покоя важен не меньше, чем падение напряжения: AMS1117 потребляет около 5 mA, даже когда ничего не питает, а это в сотни раз больше, чем потребляет ESP32 в глубоком сне. Падение 1,1 V у AMS1117 также слишком велико, чтобы получить 3,3 V от одной ячейки Li-ion (3,0–4,2 V): даже с полностью заряженной ячейкой на 4,2 V выход дотягивает лишь примерно до 3,1 V и проседает по мере разряда. Для таких проектов лучше подходят LDO вроде MCP1700 с током покоя на уровне микроампер и падением меньше 0,2 V.

Линейный или импульсный (buck)?

Импульсный понижающий (buck, step-down) преобразователь не сжигает лишнее напряжение в тепло: он включает и выключает вход десятки тысяч раз в секунду и передаёт энергию на выход, запасая её в катушке индуктивности и конденсаторе. Это поднимает КПД до 80–95%, а ток, потребляемый от входа, оказывается меньше выходного тока. Например, модули на LM2596 дают регулируемый выход до 3 A при входе 4,5–40 V и работают на частоте 150 kHz. Плата за это — пульсации переключения в несколько десятков милливольт на выходе, электромагнитные помехи и больше деталей. Настройка и подключение модуля описаны в статье понижающий преобразователь LM2596.

12 V → 5 V, нагрузка 1 A7805 (линейный)LM2596 (buck, КПД ~85%)
Входной ток≈ 1 A≈ 0,49 A
Мощность, уходящая в тепло7 W≈ 0,9 W
КПД42%~85%
РадиаторНужен большой радиаторОбычно не нужен
Шум на выходеОчень низкийПульсации в десятки mV
Количество деталей1 микросхема + 2 конденсатораГотовый модуль или катушка, диод и конденсаторы
Понижающий модуль LM2596 (step-down, buck)
Модуль buck на LM2596: синий подстроечный резистор задаёт выходное напряжение; модуль даёт те же 5 V, что и 7805, но с гораздо меньшим нагревом.

Практическое правило такое: если разница между входом и выходом небольшая (2–4 V), а ток не превышает нескольких сотен миллиампер, 7805 или LDO — простое, тихое и дешёвое решение. Если разница большая, ток больше 500 mA или питание идёт от батарей, выбирай понижающий преобразователь (buck). Когда нужно питать аналоговые измерения, звук или чувствительные датчики, часто комбинируют оба варианта: сначала понижают напряжение до 7–8 V buck-преобразователем, затем получают малошумящие 5 V от 7805. Так получаются и высокий КПД, и чистое питание.

Собственный стабилизатор Arduino и предел Vin

Напряжение, поданное на гнездо питания или пин Vin платы Arduino Uno R3, проходит через встроенный LDO-стабилизатор на 5 V из семейства 1117 (на оригинальной плате NCP1117, на клонах обычно AMS1117), а за гнездом стоит диод типа 4007, который защищает от переполюсовки. Arduino рекомендует 7–12 V, а предел платы — 6–20 V. Нижний предел связан с падением напряжения: диод и стабилизатор вместе съедают около 2 V, так что ниже 7 V шина 5V проседает. Верхний предел связан с нагревом: при 12 V на Vin и потреблении 200 mA маленький стабилизатор в корпусе SOT-223 выделяет (12 − 5) × 0,2 = 1,4 W и нагревается так, что не дотронуться. При 20 V та же нагрузка означает 3 W.

ПлатаВстроенный стабилизаторРекомендуемый входПредел
Arduino Uno R3 / MegaLDO 5 V (семейство 1117)7–12 V (гнездо или Vin)6–20 V
Arduino NanoLDO 5 V (на клонах в основном AMS1117)7–12 V (на Vin)6–20 V
Arduino Uno R4Импульсный (buck) преобразователь6–24 V (гнездо или Vin)24 V
ESP32 DevKitLDO 3,3 V (обычно AMS1117)5 V (USB или пин 5V)Не выше 6 V из-за нагрева
Raspberry Pi PicoПонижающе-повышающий (импульсный)VSYS: 1,8–5,5 V5,5 V

Питание можно брать и с пина 5V платы, но этот ток идёт через тот же стабилизатор. При питании от USB шина 5V идёт прямо от USB и ограничена предохранителем на 500 mA; при питании через гнездо предел задаёт нагрев стабилизатора. Поэтому нагрузки вроде сервоприводов, светодиодных лент или моторов питай от отдельного 7805 или buck-модуля, а не от пина 5V Arduino, и объединяй земли (GND). Пин 3.3V может дать всего 50 mA; для прожорливых модулей вроде ESP-01 или nRF24L01 с антенной используй отдельный AMS1117-3.3. Расположение пинов есть в статье распиновка Arduino Uno.

Проверка стабилизатора с Arduino: вход, выход и нагрев

Код ниже измеряет входное и выходное напряжение 7805, выводит в монитор порта разницу, рассеиваемую мощность и расчётную температуру кристалла, а также предупреждает, когда напряжение приближается к минимальному падению или нужен радиатор. Входное напряжение выше 5 V, поэтому его нельзя подавать прямо на аналоговый пин: подключи вход к A0 через делитель напряжения из 100 kΩ и 22 kΩ (он измеряет примерно до 27 V), а выход — к A1 через два резистора по 10 kΩ. Проверить коэффициенты для своих резисторов можно утилитой делителя напряжения. Все земли должны быть общими.

C++ (Arduino IDE)
1// 7805 test istasyonu: giriş, çıkış ve ısı / 7805 test bench: input, output and heat
2// Kart: Arduino Uno / Nano (ATmega328P) / Board: Arduino Uno / Nano (ATmega328P)
3
4const float R1_IN  = 100000.0;  // giriş bölücü üst direnç / input divider top resistor
5const float R2_IN  = 22000.0;   // giriş bölücü alt direnç / input divider bottom resistor
6const float R1_OUT = 10000.0;   // çıkış bölücü üst direnç / output divider top resistor
7const float R2_OUT = 10000.0;   // çıkış bölücü alt direnç / output divider bottom resistor
8
9const float LOAD_A    = 0.30;   // multimetreyle ölçtüğün yük akımı (A) / load current measured with a multimeter (A)
10const float THETA_JA  = 60.0;   // soğutucusuz TO-220, °C/W / TO-220 without heatsink, °C/W
11const float T_AMBIENT = 30.0;   // ortam sıcaklığı (°C) / ambient temperature (°C)
12const float DROPOUT_V = 2.0;    // 7805 için gereken en az fark (V) / minimum headroom for the 7805 (V)
13
14// Gerçek besleme gerilimini dahili 1,1 V referansla ölçer (mV)
15// Measures the real supply voltage with the internal 1.1 V reference (mV)
16long readVcc() {
17  ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);  // referans AVcc, kanal 1,1 V / AVcc reference, 1.1 V channel
18  delay(2);                                               // referansın oturmasını bekle / let the reference settle
19  ADCSRA |= _BV(ADSC);                                    // dönüşümü başlat / start a conversion
20  while (bit_is_set(ADCSRA, ADSC));                       // bitmesini bekle / wait until it finishes
21  long raw = ADCL;                                        // önce ADCL okunmalı / ADCL must be read first
22  raw |= ADCH << 8;
23  return 1125300L / raw;                                  // 1,1 x 1023 x 1000
24}
25
26// Bölücünün arkasındaki gerçek gerilimi hesaplar / Calculates the real voltage behind a divider
27float readVolts(uint8_t pin, float vcc, float r1, float r2) {
28  analogRead(pin);                                        // ilk okumayı at / discard the first reading
29  long sum = 0;
30  for (int i = 0; i < 16; i++) sum += analogRead(pin);    // 16 örneğin ortalaması / average of 16 samples
31  float vPin = (sum / 16.0) * vcc / 1023.0;
32  return vPin * (r1 + r2) / r2;
33}
34
35void setup() {
36  Serial.begin(9600);
37}
38
39void loop() {
40  float vcc  = readVcc() / 1000.0;
41  float vin  = readVolts(A0, vcc, R1_IN, R2_IN);
42  float vout = readVolts(A1, vcc, R1_OUT, R2_OUT);
43
44  float headroom = vin - vout;                    // regülatör üzerindeki gerilim / voltage across the regulator
45  float heatW    = headroom * LOAD_A;             // P = (Vin - Vout) x I
46  float tj       = T_AMBIENT + heatW * THETA_JA;  // tahmini yonga sıcaklığı / estimated junction temperature
47  float eff      = (vin > 1.0) ? 100.0 * vout / vin : 0.0;  // verim (%) / efficiency (%)
48
49  Serial.print(F("Vin "));      Serial.print(vin, 2);
50  Serial.print(F(" V | Vout ")); Serial.print(vout, 2);
51  Serial.print(F(" V | Fark ")); Serial.print(headroom, 2);
52  Serial.print(F(" V | Isi "));  Serial.print(heatW, 2);
53  Serial.print(F(" W | Tj ~"));  Serial.print(tj, 0);
54  Serial.print(F(" C | Verim %")); Serial.println(eff, 0);
55
56  if (headroom < DROPOUT_V) Serial.println(F("UYARI: giris dusuk, dropout / WARNING: input too low, dropout"));
57  if (tj > 125.0)           Serial.println(F("UYARI: sogutucu gerekli / WARNING: heatsink required"));
58  delay(1000);
59}

Вместо того чтобы принимать на веру напряжение питания, относительно которого идут аналоговые измерения, код измеряет его функцией readVcc(): она считывает внутреннее фиксированное опорное напряжение ATmega328P около 1,1 V и по нему вычисляет реальное Vcc. Так показания остаются верными, питается ли Arduino от USB или непосредственно от 7805. Этот способ подходит для плат на ATmega328P, таких как Uno и Nano; внутреннее опорное напряжение может отличаться от микросхемы к микросхеме примерно на ±10%, поэтому один раз сравни результат с мультиметром и поправь константу 1125300. В LOAD_A впиши ток нагрузки, измеренный мультиметром; если на стабилизаторе стоит радиатор, замени THETA_JA на общее тепловое сопротивление из расчёта радиатора.

ESP32: AMS1117 и броски тока при работе Wi-Fi

Отладочные платы ESP32 понижают входные 5 V до 3,3 V встроенным LDO. Обычно плата потребляет 50–100 mA, но во время передачи по Wi-Fi ток кратковременно подскакивает примерно до 300 mA, поэтому Espressif рекомендует источник, способный отдать не меньше 500 mA. Слабый источник, тонкий и длинный USB-кабель или перегретый стабилизатор во время такого броска обрушивают шину 3V3, и ESP32 пишет в монитор порта «Brownout detector was triggered» (сработал детектор просадки питания) и перезагружается. Код ниже сообщает, вызвана ли последняя перезагрузка просадкой питания (brownout), и записывает минимальное напряжение на шине 3V3 во время подключения к Wi-Fi. Подключи пин 3V3 к GPIO 34 через делитель из двух резисторов по 10 kΩ.

C++ (Arduino IDE)
1// ESP32: 3V3 hattını ve brownout resetini izle / ESP32: watch the 3V3 rail and brownout resets
2#include <WiFi.h>
3#include "esp_system.h"
4
5const char* WIFI_SSID = "AgAdi";   // Wi-Fi ağ adı / Wi-Fi network name
6const char* WIFI_PASS = "Sifre";   // Wi-Fi şifresi / Wi-Fi password
7const int SENSE_PIN = 34;          // 3V3 -> 10k -> GPIO34 -> 10k -> GND (yalnız giriş, ADC1) / input-only ADC1 pin
8
9int minMv = 9999;                  // görülen en düşük gerilim (mV) / lowest voltage seen (mV)
10
11int rail3v3() {
12  return analogReadMilliVolts(SENSE_PIN) * 2;  // bölücü yarıya indirir / the divider halves it
13}
14
15void setup() {
16  Serial.begin(115200);
17  delay(300);
18  if (esp_reset_reason() == ESP_RST_BROWNOUT) {
19    Serial.println("Son reset: BROWNOUT, besleme yetersiz / Last reset: BROWNOUT, weak supply");
20  }
21  Serial.printf("Wi-Fi oncesi 3V3: %d mV\n", rail3v3());
22
23  WiFi.begin(WIFI_SSID, WIFI_PASS);
24  unsigned long t0 = millis();
25  while (WiFi.status() != WL_CONNECTED && millis() - t0 < 15000) {
26    int mv = rail3v3();                        // bağlanırken sürekli ölç / keep sampling while connecting
27    if (mv < minMv) minMv = mv;
28    delay(1);
29  }
30  Serial.printf("Baglanirken en dusuk 3V3: %d mV\n", minMv);
31}
32
33void loop() {
34  int mv = rail3v3();
35  if (mv < minMv) minMv = mv;
36  Serial.printf("3V3: %d mV | en dusuk / min: %d mV\n", mv, minMv);
37  delay(1000);
38}

Если минимум во время подключения опускается ниже 3,0 V, питания недостаточно. АЦП не ловит каждую очень короткую просадку, но тенденцию показывает чётко. Решение обычно простое: короткий толстый USB-кабель, электролитический конденсатор 470 µF между 5V и GND рядом с платой или источник, способный отдать не меньше 500 mA. Если ESP32 питается от 12 V, не подавай 12 V на AMS1117 платы; сначала понизь напряжение до 5 V buck-модулем. Подробный разбор неисправностей — в статье ошибки brownout и Guru Meditation на ESP32.

Raspberry Pi Pico: VSYS и 7805

У Raspberry Pi Pico вместо линейного стабилизатора стоит эффективный понижающе-повышающий (buck-boost) преобразователь, а пин VSYS принимает от 1,8 до 5,5 V. Чтобы запустить Pico в системе на 12 V, можно подключить выход 7805 к VSYS; если одновременно будет использоваться USB, поставь между ними диод Шоттки, например 1N5819, иначе 5 V от USB и 7805 будут бороться друг с другом. Никогда не подключай выход 7805 к пину 3V3: этот пин не выдерживает больше 3,3 V. Код на MicroPython ниже измеряет вход 7805 через делитель на GP26, а VSYS — через встроенный канал GP29.

MicroPython
1# Pico: 7805 girişini ve VSYS'i ölç / Pico: measure the 7805 input and VSYS
2from machine import ADC
3import time
4
5adc_in = ADC(26)            # GP26 (ADC0): 100k/22k bölücü / 100k/22k divider
6adc_vsys = ADC(29)          # GP29 (ADC3): kart üzerinde VSYS/3 / VSYS/3 on the board
7
8K_IN = (100 + 22) / 22      # bölücü oranı (~5,55) / divider ratio (~5.55)
9V_OUT = 5.0                 # 7805 çıkışı (V) / 7805 output (V)
10LOAD_A = 0.30               # ölçtüğün yük akımı (A) / load current you measured (A)
11
12def volts(adc, ratio, n=16):
13    total = 0
14    for _ in range(n):
15        total += adc.read_u16()          # 0-65535 arası ham değer / raw value 0-65535
16    return total / n * 3.3 / 65535 * ratio
17
18while True:
19    vin = volts(adc_in, K_IN)
20    vsys = volts(adc_vsys, 3)
21    heat = (vin - V_OUT) * LOAD_A        # P = (Vin - Vout) x I
22    print("Vin {:.2f} V | VSYS {:.2f} V | 7805 isi {:.2f} W".format(vin, vsys, heat))
23    if vin - V_OUT < 2.0:
24        print("UYARI: dropout / WARNING: dropout")
25    time.sleep(1)

АЦП Pico измеряет максимум 3,3 V, поэтому с делителем 100k/22k можно измерять примерно до 18 V. Значение VSYS получается немного ниже выхода 7805 из-за падения около 0,3 V на диоде Шоттки; это нормально. На Pico W пин GP29 общий с беспроводным чипом, поэтому для измерения VSYS нужна дополнительная настройка; в этом случае используй только показание GP26. Если Pico для тебя в новинку, хорошо начать со статьи Что такое Raspberry Pi Pico?

Идеи проектов с 7805 и другими стабилизаторами

  • Настольный источник 5 V: собери небольшую коробку с блоком питания на 12 V, 7805, радиатором и выключателем, которая даёт стабильные 5 V для проектов на макетной плате.
  • Источник с индикацией напряжения и нагрева: перенеси тестовый код выше на LCD и показывай вход, выход и потери в реальном времени; базовая идея измерения — в статье вольтметр на Arduino.
  • Arduino в машине: понизь напряжение аккумулятора 12–14,4 V сначала до 7–8 V buck-преобразователем, затем до 5 V с помощью 7805; добавь на вход TVS-диод против выбросов напряжения в бортовой сети.
  • Светодиодная лента на 12 V и управление реле: питай ленту напрямую от 12 V, а Arduino и модуль реле — от выхода 7805.
  • Отдельная шина для сервоприводов и NeoPixel: для нагрузок до 1 A бери 7805, а выше — buck, чтобы питать сервоприводы и светодиоды WS2812B от отдельной шины 5 V с общей землёй.
  • Плата датчиков на 3,3 V: питай модули на 3,3 V, такие как BME280 и nRF24L01, от AMS1117-3.3 независимо от Arduino; для уровней сигналов используй преобразователь логических уровней.

Частые ошибки и как их исправить

СимптомВероятная причинаРешение
На выходе 3,5–4,5 V вместо 5 VВход ниже 7 V (dropout) или слабая батареяПодними вход до 7,5–9 V и измеряй под нагрузкой
7805 работает несколько секунд и отключаетсяСрабатывает тепловая защита, потери слишком великиДобавь радиатор, понизь вход или используй buck
Выход равен входу (напр., 12 V)Оборван вывод GND или стабилизатор пробит внутриПроверь подключение GND; отключи нагрузку и измерь, при необходимости замени
На выходе 0 V, стабилизатор холодныйНеверный порядок выводов (перепутаны 78L05 или 7905) или вход и выход поменяны местамиСверь порядок выводов для корпуса
Arduino перезагружается в случайные моментыНет конденсаторов или они далеко от выводовПоставь 0,33 µF и 0,1 µF ближе к выводам и добавь электролит на 10–47 µF
Стабилизатор Arduino сильно греется12 V на Vin и большой ток с пина 5VПитай нагрузки от отдельного 7805 или buck; держи Vin в пределах 7–9 V
ESP32 перезагружается при включении Wi-FiИсточник или AMS1117 не тянет пиковый токКороткий кабель, конденсатор 470 µF, источник не меньше 500 mA
Выход AMS1117-3.3 около 3 VВход ниже 4,4 V (напр., одна ячейка Li-ion)Подай 5 V или выбери LDO с малым падением
При поиске неисправности в схеме стабилизатора всегда делай три измерения: входное напряжение, выходное напряжение и разницу между ними под нагрузкой. Если разница меньше 2 V, проблема в источнике; если выход равен входу, проблема в подключении GND или в стабилизаторе. Если есть подозрение, что плата повреждена, пройди проверки из статьи Arduino сгорела?

С правильным входным напряжением, двумя маленькими конденсаторами и радиатором, когда он нужен, 7805 — одна из самых надёжных деталей в электронике и проработает годами. Запомни правило: чем больше разница между входом и выходом, тем больше тепла. Для большой разницы выбирай buck, для 3,3 V — AMS1117, а для долгой работы от батарей — LDO с малым током покоя. В приложении BlueGrays есть проекты «Цифровой вольтметр с LCD-дисплеем», «Машинка на L298N с управлением по Bluetooth», «Робот, объезжающий препятствия», «Умная станция полива» и проекты с глубоким сном ESP32 — с пошаговыми схемами подключения и кодом, а питающую часть для них можно собрать своими руками по расчётам из этого руководства.

Частые вопросы

Какой вывод 7805 — вход, а какой — выход?

Если держать 7805 маркировкой к себе и выводами вниз, то слева направо: вывод 1 — вход (IN), вывод 2 — GND, вывод 3 — выход (OUT). Металлический фланец тоже соединён с GND. У 78L05 в корпусе TO-92 порядок обратный (1 выход, 2 GND, 3 вход), поэтому всегда проверяй корпус.

Какой ток может отдать 7805?

7805 в корпусе TO-220 с хорошим радиатором отдаёт 1 A, а в зависимости от условий — до 1,5 A; внутреннее ограничение тока при коротком замыкании срабатывает примерно на 2 A. На практике предел задаёт нагрев, а не ток: без радиатора (Vin − Vout) · I не должно превышать 1–1,5 W. Маленький 78L05 отдаёт всего 100 mA.

Почему 7805 греется и нужен ли радиатор?

7805 — линейный стабилизатор, поэтому лишнее напряжение между входом и выходом он превращает в тепло. Ток 500 mA при входе 12 V означает 3,5 W тепла, а без радиатора это невозможно. Если потери меньше 1 W, радиатор не нужен; если больше — ставь радиатор, а если потери превышают несколько ватт, используй понижающий преобразователь (buck).

Работает ли 7805 без конденсаторов?

С короткими проводами рядом с хорошо отфильтрованным источником часто работает, но так делать не рекомендуется. 0,33 µF на входе предотвращает самовозбуждение из-за проводов, а 0,1 µF на выходе стабилизирует напряжение при резких изменениях нагрузки. Эти два дешёвых конденсатора избавляют от необъяснимых перезагрузок и помех.

Какое максимальное входное напряжение у 7805?

Абсолютный максимум — 35 V (у 7824 — 40 V), но работать вблизи этого предела непрактично из-за нагрева. Для выхода 5 V идеально 7,5–12 V на входе. При высоких напряжениях вроде 24 V гораздо разумнее сначала понизить напряжение понижающим преобразователем (buck).

Можно ли получить 3,3 V от 7805?

Нет, 7805 даёт только 5 V. Для 3,3 V используют LDO вроде AMS1117-3.3: он легко делает 3,3 V из 5 V на входе и отдаёт до 1 A. Для проектов с питанием от батарей лучше подходят LDO с током покоя на уровне микроампер, такие как MCP1700.

Все проекты
Цифровой вольтметр с LCD-дисплеем
#56Средний
Premium

Цифровой вольтметр с LCD-дисплеем

Узнай, какое напряжение даёт батарейка или блок питания, с помощью измерителя, собранного своими руками. Делитель из двух резисторов понижает высокое напряжение до уровня, который может прочитать плат

4.5(27)
36
Машинка на L298N с управлением по Bluetooth
#80Продвинутый
Premium

Машинка на L298N с управлением по Bluetooth

Преврати телефон в пульт и управляй своей машинкой-роботом. Arduino получает команды из приложения-пульта на телефоне через Bluetooth-модуль и вращает колёса через драйвер моторов; машинка едет вперёд

5.0(38)
65
Робот, объезжающий препятствия
#81Продвинутый
Premium

Робот, объезжающий препятствия

Как насчёт того, чтобы собрать умную машину, которая сама находит дорогу? Робот, объезжающий препятствия, постоянно осматривает всё вокруг благодаря ультразвуковому датчику спереди. Встретив препятств

5.0(38)
49
Умная станция полива
#83Продвинутый
Premium

Умная станция полива

Садовник, который сам поливает растения, чтобы они не засохли, пока ты в отпуске. Датчик влажности почвы измеряет, насколько влажная земля; когда она сохнет, Arduino на несколько секунд включает водян

5.0(42)
57
Глубокий сон ESP32: экономия батареи (OLED + счётчик в RTC RAM)
#135Продвинутый
Premium

Глубокий сон ESP32: экономия батареи (OLED + счётчик в RTC RAM)

Режим глубокого сна (Deep Sleep) у ESP32 снижает потребление до ~10 µA, выключая процессор и большую часть периферии, — это важно для IoT-устройств на батарейках. В этом проекте используются три источника пробуждения: таймер (15 секунд), внешний пин (EXT0 — кнопка GPIO 33) и касание (T0/GPIO 4). Переменные с RTC_DATA_ATTR сохраняются во время глубокого сна — счётчики загрузок, пробуждений по таймеру и по кнопке ведутся непрерывно.

4.3(10)
16
Подключение ESP32 к Wi-Fi в режиме STA (с экраном LCD)
#127Продвинутый

Подключение ESP32 к Wi-Fi в режиме STA (с экраном LCD)

В этом проекте ESP32 надёжно и устойчиво к сбоям подключается к домашней сети Wi-Fi в режиме станции (STA). SSID и пароль хранятся в отдельном файле secrets.h, чтобы не утекли в Git; настроено автоматическое переподключение, а уровень сигнала RSSI и IP-адрес выводятся на I2C LCD-экран. Встроенный светодиод служит индикатором состояния. Это менеджер подключения уровня реальных устройств.

4.4(21)
34
Управление лентой WS2812B NeoPixel на ESP32
#126Средний
Premium

Управление лентой WS2812B NeoPixel на ESP32

Адресуемые светодиоды WS2812B (NeoPixel) — умные RGB-светодиоды, которыми управляют цепочкой через один пин данных. В этом проекте лента WS2812B из 8 светодиодов управляется библиотекой Adafruit_NeoPixel и показывает плавную радужную анимацию. Логика 3,3V у ESP32 работает с большинством WS2812B, но на случай нестабильности показано решение с последовательным резистором 470Ω и конденсатором 1000µF. Анимация получается сдвигом значения оттенка.

4.9(19)
30