Питание платы


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

Перейдем к питанию платы: есть три способа питать Ардуино и вообще Ардуино-проект в целом, у каждого есть свои плюсы/минусы и особенности:

  • Бортовой USB порт
  • “Сырой” вход на микроконтроллер 5V
  • Стабилизированный вход Vin

Что касается земли (пины GND) то они все связаны между собой и просто продублированы на плате, это нужно запомнить. Пины 3.3V, 5V и GND являются источником питания для датчиков и модулей, но давайте рассмотрим особенности.

Питание от USB


Питание от USB – самый плохой способ питания ардуино-проекта. Почему? По линии питания +5V от USB стоит диод, выполняющий защитную функцию: он защищает порт USB компьютера от высокого потребления тока компонентами ардуино-проекта или от короткого замыкания (КЗ), которое может произойти по случайности/криворукости любителей ковырять макетные платы. КЗ продолжительностью менее секунды не успеет сильно навредить диоду и всё может обойтись, но продолжительное замыкание превращает диод в плавкий предохранитель, выпускающий облако синего дыма и спасающий порт компьютера от такой же участи.

К слову, ардуинки от производителя Robotdyn имеют самовосстанавливающийся предохранитель вместо такого костыля с диодом-смертником.

Слаботочный диод имеет ещё одну неприятную особенность: на нём падает напряжение, причем чем больше ток потребления схемы, тем сильнее падает напряжение питания. Пример: голая ардуина без всего потребляет около 20 мА, и от 5 Вольт на юсб после диода нам остаётся примерно 4.7 Вольт. Чем это плохо: опорное напряжение при использовании АЦП крайне нестабильно, не знаешь, что измеряешь (да, есть способ измерения опорного напряжения, но делать это нужно вручную). Некоторые железки чувствительны к напряжению питания, например LCD дисплеи: при питании от 5V они яркие и чёткие, при 4.7 вольтах (питание от юсб) они уже заметно теряют яркость. Если подвигать сервоприводом или включить реле – на диоде упадет ещё больше и дисплей практически погаснет. При коротких мощных нагрузках (выше 500-600ма) микроконтроллер перезапустится, так как напряжение упадет ниже плинтуса.

Вы наверное предложите заменить диод перемычкой, чтобы питать схему от USB большим током, например от powerbank’а. Так делать тоже нельзя, потому что дорожки на плате не рассчитаны на большие токи (дорожка 5V очень тонкая и идёт через всю плату). Я думаю, что можно будет снять 1-2 Ампера с пина 5V, но, скорее всего, напряжение просядет. Также при КЗ вы скорее всего попрощаетесь с дорожкой вообще. Питайте силовую часть схемы либо отдельно, либо от того же источника питайте Arduino.

Питание в Vin


Питание в пин VinGND) – более универсальный способ питания ардуино-проекта, этот пин заводит питание на бортовой стабилизатор напряжения ардуино, на китайских платах обычно стоит AMS1117-5.0. Это линейный стабилизатор, что имеет свои плюсы и минусы. Он позволяет питать ардуино и ардуино-проект от напряжения 7-12 Вольт (это рекомендуемый диапазон, так то питать можно от 5 до 20 Вольт). Стабилизатор устроен так, что он выдает хорошее ровное напряжение с минимальными пульсациями, но всё лишнее напряжение превращает в тепло. Если питать плату и один миниатюрный сервопривод от 12 Вольт, то при активной работе привода стабилизатор нагреется до 70 градусов, что уже ощутимо горячо. По некоторым расчетам из даташита можем запомнить некоторые цифры:

  • При напряжении 7 Вольт (таких блоков питания я не встречал) в Vin можно снять с пина 5V до 2A, больше – перегрев. Отлично сработают два литиевых аккумулятора
  • При 12 Вольтах на Vin можно снять с пина 5V не более 500мА без риска перегрева стабилизатора.

Питание в пин Vin возможно только в том случае, если в Ардуино проекте (имеется в виду плата Ардуино и железки, подключенные к 5V и GND) не используются мощные потребители тока, такие как сервоприводы, адресные светодиодные ленты, моторчики и прочее. Что можно: датчики, сенсоры, дисплеи, модули реле (не более 3 одновременно в активном состоянии), одиночные светодиоды, органы управления. Для проектов с мощной 5 Вольтовой нагрузкой для нас есть только третий способ.

Питание в 5V


Питание в пин 5VGND) – самый лучший вариант питать плату и ардуино-проект в целом, но нужно быть аккуратным: пин идёт напрямую на микроконтроллер, и на него действуют некоторые ограничения:

  • Максимальное напряжение питания согласно даташиту на микроконтроллер – 5.5V. Всё что выше – с большой вероятностью выведет МК из строя;
  • Минимальное напряжение зависит от частоты, на которой работает МК. Вот строчка из даташита: 0 – 4 MHz @ 1.8 – 5.5V, 0 – 10 MHz @ 2.7 – 5.5V, 0 – 20 MHz @ 4.5 – 5.5V. Что это значит: большинство Arduino-плат имеют источник тактирования на 16 MHz, то есть Arduino будет стабильно работать от напряжения ~4 Вольта (20 МГц – 4.5V, 16 МГц – около 4V). Есть версии Arduino на 8 МГц, они будут спокойно работать от напряжения 2.5V.
Важно: напряжение питания в пин 5V не должно превышать 5.5V. Минимальное напряжение: 4V для плат на 16 МГц (на моей практике работало стабильно от 3.5V), 2.5V для плат на 8 МГц.

Самый популярный вариант – USB зардяник от смартфона, их легко достать, диапазон токов от 500ма до 3А – справится практически с любым проектом. Отрезаем штекер и паяем провода на 5V и GND, предварительно определив, где плюс/минус при помощи мультиметра или по цвету: красный всегда плюс, чёрный – земля, при красном плюсе земля может быть белого цвета. При чёрной земле плюс может быть белым, вот так вот. Точно туда же паяем все датчики/модули/потребители 5 Вольт. Да, не очень удобно это паять, но при известной схеме можно аккуратно собрать всё питание в отдельные скрутки и припаять уже их. Пример на фото ниже. Источником питания там является отдельное гнездо micro-usb, зелёная плата сразу над дисплеем.

Питание “мощных” схем


Резюмируя и повторяя всё сказанное выше, рассмотрим варианты питания проектов с большим потреблением тока.

Питать мощный проект (светодиоды, двигатели, нагреватели) от 5V можно так: Arduino и потребитель питаются вместе от 5V источника питания:

Питать мощный потребитель от USB через плату нельзя, там стоит диод, да и дорожки питания тонкие:

Что делать, если всё-таки хочется питать проект от USB, например от powerbank’а? Это ведь удобно! Всё очень просто:

Если есть только блок питания на 12V, то у меня плохие новости: встроенный стабилизатор на плате не вытянет больше 500 мА:

Но если мы хотим питать именно 12V нагрузку, то проблем никаких нет: сама плата Arduino потребляет около 20 мА, и спокойно будет работать от бортового стабилизатора:

Автономное питание


Бывает, что нужно обеспечить автономное питание проекта, т.е. вдали от розетки. Давайте рассмотрим варианты:

  •  Питание в порт USB
    • Самый обыкновенный Powerbank, максимальный ток – 500 мА (помним про защитный диод). Напряжение на пине 5V и высокий уровень GPIO в этом случае будет равен ~4.7V (опять же помним про диод). Внимание! У большинства Powerbank’ов питание отключается при нагрузке меньше 200мА, т.е. об энергосбережении можно забыть;
    • Максимальный выходной ток с пина 5V – 500 мА!
  • Питание в пин Vin (или штекер 5.5×2.1 на плате UNO/MEGA)
    • Любой блок питания/зарядник от ноута с напряжением 7-18 Вольт 
    • 9V батарейка “Крона” – плохой, но рабочий вариант. Ёмкость кроны очень небольшая;
    • Сборка из трёх литиевых аккумуляторов: напряжение 12.6-9V в процессе разряда. Хороший вариант, также имеется 12V с хорошим запасом по току (3А для обычных, 20А для высокотоковых аккумуляторов) для двигателей или светодиодных лент;
    • “Модельные” аккумуляторы, в основном Li-Po. В целом то же самое, что предыдущий пункт, но запаса по току в разы больше;
    • Энергосбережение – не очень выгодный вариант, т.к. стабилизатор потребляет небольшой, но всё же ток;
    • Максимальный выходной ток с пина 5V: 2А при 7V на Vin, 500ma при 12V на Vin
  • Питание в пин 5V
    • Для стабильных 5V на выходе – литиевый аккумулятор и повышающий до 5V модуль. У таких модулей обычно запас по току 2А, также модуль потребляет “в холостом режиме” – плохое энергосбережение;
    • Литиевый аккумулятор – напряжение на пине 5V и GPIO будет 4.2-3.5V, некоторые модули будут работать, некоторые – нет. Работа МК от напряжения ниже 4V не гарантируется, у меня работало в целом стабильно до 3.5V, ниже уже может повиснуть. Энергосбережение – отличное;
    • Пальчиковые батарейки (ААА или АА) – хороший вариант, 3 штуки дадут 4.5-3V, что граничит с риском зависнуть. 4 штуки – очень хорошо при условии, что батарейки чуть разряжены и суммарное напряжение не превышает 5.5V. новые батарейки дадут 6V, что скорее всего убьёт микроконтроллер;
    • Пальчиковые Ni-Mh аккумуляторы – отличный вариант, смело можно ставить 4 штуки, они обеспечат нужное напряжение на всём цикле разряда (до 4V). Также имеют хороший запас по току, можно даже адресную ленту питать.
    • Платы с кварцем (тактовым генератором) на 8 МГц позволяют питать схему от низкого напряжения (2.5V, как мы обсуждали выше), отлично подойдут те же батарейки/аккумуляторы, также для маломощные проекты можно питать от литиевой таблетки (3.2-2.5V в процессе разряда).
    • Максимальный выходной ток с пина 5V ограничен током источника питания

Arduino как источник питания


Важный момент, который вытекает из предыдущих: использование платы Arduino как источник питания для модулей/датчиков. Варианта тут два:

  • Питание датчиков и модулей от 5V
    • При питании платы от USB – максимальный ток 500 мА
    • При питании платы в Vin – максимальный ток 2 А при Vin 7V, 500 мА при Vin 12V
    • При питании платы в 5V – максимальный ток зависит от блока питания
  • Питание датчиков от GPIO (пинов D и A) – максимальный ток с одного пина: 40 мА. Максимальный суммарный ток с пинов не должен превышать 200 мА.

Помехи и защита от них


Если в одной цепи питания с Ардуино стоят мощные потребители, такие как сервоприводы, адресные светодиодные ленты, модули реле и прочее, на линии питания могут возникать помехи, приводящие к сильным шумам измерений с АЦП, а более мощные помехи могут дергать прерывания и даже менять состояния пинов, нарушая связь по различным интерфейсам связи и внося ошибки в показания датчиков, выводя чушь на дисплеи, а иногда дело может доходить до перезагрузки контроллера или его зависания. Некоторые модули также могут зависать, перезагружаться и сбоить при плохом питании, например bluetooth модуль спокойно может зависнуть и висеть до полной перезагрузки системы, а радиомодули rf24 вообще не будут работать при “шумном” питании.

Более того, помеха может прийти откуда не ждали – по воздуху, например от электродвигателя, индуктивный выброс ловится проводами и делает с системой всякое. Что же делать? “Большие дяди” в реальных промышленных устройствах делают очень много для защиты от помех, этому посвящены целые книги и диссертации. Мы с вами рассмотрим самое простое, что можно сделать дома на коленке.

  • Питать логическую часть (Ардуино, слаботочные датчики и модули) от отдельного малошумящего блока питания 5V, а ещё лучше питаться в пин Vin от блока питания на 7-12V, так как линейный стабилизатор даёт очень хорошее ровное напряжение. Для корректной работы устройств, питающихся отдельно (драйверы моторов, приводы) нужно соединить земли Ардуино и всех внешних устройств;
  • Поставить конденсаторы по питанию платы, максимально близко к пинам 5V и GND: электролит 6.3V 470 uF (мкФ) и керамический на 0.1-1 мкФ. Это сгладит помехи даже от сервоприводов;
  • У “выносных” на проводах элементах системы (кнопки, крутилки, датчики) скручивать провода в косичку, преимущественно с землёй. А ещё лучше использовать экранированные провода, экран естественно будет GND. Таким образом защищаемся от электромагнитных наводок;
  • Соединять все земли одним толстым проводом и по возможности заземлять на центральное заземление;
  • Металлический и заземленный корпус устройства (или просто обернутый фольгой 🙂 ), на который заземлены все компоненты схемы – залог полного отсутствия помех и наводок по воздуху.

На практике самая подлая помеха обычно приходит при коммутации индуктивной нагрузки при помощи электромагнитного реле: от такой помехи очень сложно защититься, потому что приходит она по земле, то есть вас не спасёт даже раздельное питание проекта. Что делать?

  • Для цепей постоянного тока обязательно ставить мощный диод обратно-параллельно нагрузке, максимально близко к клеммам реле. Диод примет (замкнёт) на себя индуктивный выброс от мотора/катушки;
  • Туда же, на клеммы реле, можно поставить RC цепочку, называемую в этом случае искрогасящей: резистор 39 Ом 0.5 Вт, конденсатор 0.1 мкФ 400V (для цепи 220В);
  • Для сетей переменного тока использовать твердотельное (SSR) реле с детектором нуля (Zero-cross detector), они же называются “бесшумные” реле. Если в цепи переменного тока вместо реле стоит симистор с оптопарой, то оптопару нужно использовать опять же с детектором нуля, такая оптопара, как и SSR zero-cross будут отключать нагрузку в тот момент, когда напряжение в сети переходит через ноль, это максимально уменьшает все выбросы.

Подробнее об искрогасящих цепях можно почитать вот в этой методичке

Главный Глупый Вопрос


У новичков в электронике, которые не знают закон Ома, очень часто возникают вопросы вида: “а каким током можно питать Ардуино“, “какой ток можно подать на Ардуино“, “не сгорит ли моя Ардуина от от блока питания 12V 10A“, “сколько Ампер можно подавать на Arduino” и прочую чушь. Запомните: вы не можете подать Амперы, вы можете подать только Вольты, а устройство возьмёт столько Ампер, сколько ему нужно. В случае с Arduino – голая плата возьмёт 20-22 мА, хоть от пина 5V, хоть от Vin. Ток, который указан на блоке питания, это максимальный ток, который БП может отдать без повреждения/перегрева/просадки напряжения. Беспокоиться стоит не об Arduino, а об остальном железе, которое стоит в схеме и питается от блока питания. Общий ток потребления компонентов не должен превышать возможностей источника питания, вот в чём дело. А будь блок питания хоть на 200 Ампер – компоненты возьмут ровно столько, сколько им нужно, и у вас останется “запас по току” для подключения других.

Важные страницы


  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макро, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
Последнее обновление Август 28, 2019
2019-08-28T15:27:54+03:00