Пять способов запитать Arduino
У Uno/Nano есть несколько точек питания — и они не равнозначны:
- USB — 5 В напрямую, до 500 мА от ПК или больше от зарядки. Удобно для стола.
- Barrel-разъём 7–12 В — через встроенный стабилизатор до 5 В. Удобно, но стабилизатор греется и много не отдаст.
- VIN — тот же вход, что barrel, но пином.
- 5V пин — прямое питание 5 В минуя стабилизатор — максимум тока, но без защиты: перепутаете полярность или подадите больше 5.5 В — сожжёте.
- 3.3V — выход стабилизатора, всего 50 мА на Uno — только для датчиков.
Сколько потребляет проект
Считайте бюджет заранее:
- Сама Uno: ~50 мА.
- Светодиод: ~10–20 мА.
- LCD1602 с подсветкой: ~30–80 мА.
- Релейный модуль: ~70 мА на включённое реле.
- Серво SG90: до 500 мА под нагрузкой.
- ESP8266: до 300 мА в пике.
- WS2812 пиксель: до 60 мА.
Сумма — то, что должен отдать ваш источник. Плюс запас 20–30 %.
Аккумуляторное питание
Литий 18650/пакеты
Одиночный 18650 — 3.0–4.2 В: для Arduino нужна стабилизация. Варианты:
- TP4056 + повышающий до 5 В — зарядка + повышайка в одном модуле, классика для автономки.
- 2S литий (7.4 В) → barrel-разъём — встроенный стабилизатор спустит до 5 В.
- BMS-плата обязательно для лития — защита от переразряда и перезаряда.
Power Bank — просто и готово
Самый простой вариант — обычный павербанк: на выходе стабильные 5 В, заряжается от USB, есть защита. Минус — автовыключение: при токе меньше ~50–100 мА банк решает, что нагрузки нет, и отключается. Для мало потребляющих проектов приходится делать «пульс нагрузки» — периодически включать резистор, чтобы банк не уснул.
Понижаем потребление: автономка на месяцы
Для долгой автономной работы (датчик на улице, метеостанция) нужен сон:
#include <avr/sleep.h>
#include <avr/wdt.h>
// сторожевой таймер будит раз в 8 секунд
ISR(WDT_vect) { /* проснулись */ }
void sleep8s() {
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
// настройка WDT на 8 с
WDTCSR |= (1 << WDP3) | (1 << WDP0);
WDTCSR |= (1 << WDIE);
sleep_mode();
}
В режиме PWR_DOWN Uno ест ~0.1 мА вместо 50 — годы от батареи, если просыпаться редко. Для реальной автономки лучше Pro Mini 3.3V/8MHz без светодиода и стабилизатора — ток сна микроамперы.
Общий GND и разделение
Все источники в одной схеме должны иметь общий минус — GND Arduino, GND БП периферии, GND датчиков соединяются. Без этого сигналы «не дойдут», а пины могут получить странные потенциалы.
Типичные проблемы
- Серво/лента от пина 5V — провал питания, сброс платы. Периферию питать отдельно, GND общий.
- Barrel 12V + мощная нагрузка — стабилизатор 7805 кипяток от разницы напряжений; берите 7–9 В или DC-DC преобразователь.
- Power Bank отключается — малое потребление; пульс-нагрузка или другой банк.
- Подают 5V на VIN — VIN ждёт 7–12 В, от 5 В стабилизатор не выдаст нормальные 5 В.
- Литий без защиты — BMS обязательна, иначе пожар.
Итог
Схема питания — фундамент проекта: USB для стола, barrel для розетки, power bank для переноски, TP4056+18650 для автономки, сон для долгой жизни. И правила: общий GND, периферия отдельно от логики, токовый бюджет с запасом, литий только с защитой.
Полный пример: датчик на Pro Mini с сном
#include <avr/sleep.h>
#include <avr/wdt.h>
ISR(WDT_vect) {} // пустой — просто будит
void sleep8s() {
// WDT на ~8 секунд
WDTCSR = (1 << WDCE) | (1 << WDE);
WDTCSR = (1 << WDIE) | (1 << WDP3) | (1 << WDP0);
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_mode();
sleep_disable();
}
void setup() {
Serial.begin(9600);
}
void loop() {
// просыпаемся каждые ~8с, измеряем, шлём, спим
float t = analogRead(A0) * 5.0 / 1024 * 100;
Serial.println(t);
Serial.flush();
sleep8s();
}
На Pro Mini 3.3V без светодиода и USB — ток в сне ~5 мкА, годы от батарейки.
Снижение частоты и отключение периферии
clock_prescale_set(8)— снижение до 1 МГц: потребление падает пропорционально.power_adc_disable(),power_spi_disable()— выключение модулей.- Светодиод питания отключить (перемычка/выпаять на Pro Mini).
Измерение реального потребления
Мультиметр в разрыв питания (режим мA) — увидите активный/спящий ток. Для профилирования во времени — USB-амперметры или осциллограф с шунтом. Дешёвые «USB-тестеры» показывают среднее за секунду — удобно для грубой оценки.
Солнечная батарея
Для долгоживущих уличных проектов — солнечная панель 5–10 Вт + контроллер TP4056 с защитой разряда + 18650. Панель даёт дневной запас, аккумулятор ночной — автономка на годы без замены батарей.
Защита аккумулятора
Литий нельзя разряжать ниже 2.5–3.0 В — необратимая деградация и опасность возгорания при перезаряде. BMS-плата (одна или общая на пакет) отключает нагрузку при низком напряжении и блокирует перезаряд. Без неё литий — пожароопасен.
Частые ошибки
- Питание от 5V-пина при высоком входном: стабилизатор греется на разнице — DC-DC эффективнее.
- Power bank отключается: малое потребление — пульс-нагрузка или режим always-on у банка.
- Литий без защиты: пожар/необратимая гибель аккумулятора.
- Длинные тонкие провода: падение напряжения на проводах при токе.
- Стабилизатор на пределе: нагрев и отключение — берите запас 30%.
Полный пример: датчик на Pro Mini с сном
#include <avr/sleep.h>
#include <avr/wdt.h>
ISR(WDT_vect) {}
void sleep8s() {
WDTCSR = (1 << WDCE) | (1 << WDE);
WDTCSR = (1 << WDIE) | (1 << WDP3) | (1 << WDP0);
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_mode();
sleep_disable();
}
Снижение потребления
clock_prescale_set(8)— до 1 МГц, потребление падает пропорционально.power_adc_disable()— выключение модулей.- Светодиод питания отключить — на Pro Mini это 5 мА.
Измерение потребления
Мультиметр в разрыв питания — активный/спящий ток. USB-амперметры — среднее за секунду.
Частые ошибки
- Power bank отключается — пульс-нагрузка или режим always-on.
- Литий без защиты — пожар/необратимая гибель.
- Длинные тонкие провода — падение напряжения.
- Стабилизатор на пределе — нагрев и отключение.
Солнечная автономка
Для долгоживущих уличных проектов — панель 5–10 Вт + контроллер TP4056 с защитой разряда + 18650. Панель даёт дневной запас, аккумулятор ночной — автономка на годы без замены батарей.