Различные способы подачи питания на плату Arduino Uno
Платы Arduino в настоящее время находят применение во многих электронных проектах по всему миру. И в большинстве случаев эти платы получают питание через USB порт. Но это не единственный способот запитать плату Arduino. В данной статье мы рассмотрим различные способы подачи питания на плату Arduino Uno. Надеемся, что эта информация поможет вам при планировании питания электронных проектов с использованием данной платы.

Питание через порт USB
USB порт платы Arduino Uno можно подключить к USB устройству или порту, которые могут обеспечить стабильное питание 5V. Это может быть компьютер/ноутбук, power bank, USB зарядка и т.д. Используя питание через USB порт, вы исключаете необходимость использования внешнего источника питания если ток, потребляемый вашей схемой, меньше чем ток, который может обеспечить USB порт. Также, используя стандартный power bank, вы можете с использованием данного способа питания, сделать ваш проект полностью мобильным (портативным). Порт USB 2.0 обеспечивает ток до 500mA и этого более чем достаточно для питания платы Arduino Uno.

В зависимости от типа платы Arduino тип USB разъема на ней может также отличаться. К примеру, плата Arduino Uno имеет USB разъем типа B, а плата Arduino Nano – USB разъем типа mini-B. В следующей таблице представлены все типы USB разъемов, которые могут использоваться на различных платах Arduino.
| Тип USB разъема | Платы Arduino | |
| USB Type B | ![]() |
Arduino UNO, Mega, Uno Wi-Fi |
| USB Mini B | ![]() |
Arduino Nano |
| Micro USB | ![]() |
Arduino Leonardo, Mico, Nano Every, Nano BLE, Mkr Zero, Due, MKR Vidor 400, Arduino Zero, Nano IoT, MKR FOX 1200, MKR WAN 1300/1310, MKR GSM 1400, MKR Wifi 1010, MKR NB 1500, Nano RP2040 Connect |
| USB Type C | ![]() |
Arduino Portenta H7 |
Спецификация разъема USB:
- напряжение: 5 В;
- ток: 500 мА.
С использованием разъема постоянного тока (Power Jack)

Плата Arduino Uno и многие другие «большие» платы Arduino оснащаются стандартным разъемом постоянного тока (2.1mm DC power jack). На плату Arduino Uno через данный разъем можно подавать постоянное напряжение в диапазоне 7-12V, а встроенный в плату регулятор напряжения понижает его до необходимых 5 и 3.3V. Центральный контакт данного разъема – положительный, а внешняя втулка – общий провод (земля). Для подачи питания на этот разъем можно использовать любой адаптер 12V AC-DC с подходящим разъемом. Питание через данный разъем хорошо подходит в стационарных условиях размещения платы Arduino Uno, когда не нужно производить мониторинг данных, передаваемых через ее последовательный порт в целях отладки.
Также для питания через данный разъем можно использовать батарейку 9V при использовании для нее специального переходника питания (показан на рисунке ниже). Этот способ подходит для использования в портативных проектах. И, поскольку батарейки 9V достаточно дешевы и легко доступны, то с помощью данного способа вы сможете обеспечить подачу питания на плату Arduino Uno практически в любых условиях.

Спецификация разъема постоянного тока:
- напряжение: 7-12 В;
- ток: 800 мА.
С использованием контакта Vin платы Arduino Uno
Вы можете подавать питание на плату Arduino через ее разъем Vin. Данный контакт поддерживает диапазон питающих напряжений 7-12V. Он непосредственно подключен к положительной шине (проводу) разъема постоянного тока, рассмотренного в предыдущем пункте статьи.

Спецификация контакта Vin платы Arduino Uno:
- напряжение: 7-12 В;
- ток: 800 мА.
Непосредственно через контакт 5V платы Arduino Uno
Также плату Arduino можно непосредственно запитывать от источника с напряжением 5V. Но следует иметь ввиду, что эти 5V должны быть устойчивы и стабилизированы по уровню. Контакт 5V обходит все меры безопасности на плате, включая фьюзы, защиту от неправильной полярности, выбора источника питания и регуляторы напряжения. То есть если напряжение, подаваемое на данный контакт, превышает 5V (5.5V maximum) или оно подается в неправильной полярности, то плата Arduino может быть повреждена. Поэтому нужно быть очень внимательным при использовании данного способа питания. Контакт 5V расположен на плате Arduino Uno между ее контактами 3.3V и GND.

Спецификация контакта 5V платы Arduino Uno:
- напряжение: 5 В;
- ток: не ограничен.
Безопасно ли подавать питание на плату Arduino одновременно через USB и 12V через разъем постоянного тока?
Вас может поставить в небольшое затруднение вопрос по поводу того, что будет если мы подадим питание на плату Arduino через порт USB и одновременно с этим подадим 12V через ее разъем постоянного тока. Безопасно ли это? Да, безопасно. Плата Arduino Uno имеет продуманную архитектуру в плане выбора источника питания.
На рисунке ниже показана схема блока питания платы Arduino Uno. На ней вы можете увидеть схему выбора источника питания на основе компаратора на операционном усилителе LM358. Когда к разъему постоянного тока (DC barrel Jack) подключен источник питания, схема компаратора выключает P-канал Mosfet, который, в свою очередь, выключает подачу питания на плату через порт USB. Когда к разъему постоянного тока не подключен источник питания, Mosfet открывается и плату можно запитывать через порт USB.

Как запитывать платы Arduino от батарейки?
Если у вас портативное устройство и вы не хотите зависеть от стационарного источника питания, то в этом случае можно обеспечить подачу питания на плату Arduino с помощью батарейки, подключенной к разъему постоянного тока или контакту Vin платы. Например, можно непосредственно подключить батарейку 9V 6F22 к плате Arduino через соответствующий переходник на разъем 2,1 мм, либо же с помощью соединительных проводников подключить ее к контакту Vin.
Как подать питание на плату Arduino с помощью литиевой батареи 3.7V?
В настоящее время для питания портативных устройств широкое распространение получили литий-ионные и литий-полимерные батареи (аккумуляторы) с напряжением 3.7V. Можно ли от них запитать плату Arduino? Да, можно. Но хорош ли этот способ? При стандартных настройках платы Arduino однозначно нет, поскольку большинство современных микроконтроллеров имеют рекомендованные значения рабочего напряжения. Поэтому если вы хотите запитать плату Arduino от батареи 3.7V, то рекомендуется понизить тактовую частоту ее работы для уменьшения деградации кремниевых чипов в ее основе. Конечно, в этом случае понизится и производительность платы, но для большинства электронных проектов ее будет все равно достаточно.
Если у вас плата Arduino на основе микроконтроллера Atmega328P, например, Arduino Uno, то в этом случае целесообразно установить для нее безопасную тактовую частоту 8 МГц вместо ее стандартной частоты 16 МГц. В следующем разделе статьи представлен график, показывающий зависимость безопасной тактовой частоты для микроконтроллера ATMega328P от величины питающего напряжения.
Но некоторые платы Arduino, например, платы серии MKR (кроме плат MKR FOX and WAN 1300) уже изначально поставляются с поддержкой питания от литий-полимерных батарей и у них есть специальный слот для подключения этих батарей. Поэтому к ним можно подключать батарею 3.7V напрямую, не заботясь о снижении тактовой частоты.
Могут ли платы Arduino работать от напряжения 3.3V?
Теоретически, да, микроконтроллер ATMega328P может работать от напряжения 3.3V. Но с понижением его тактовой частоты до безопасного значения. При этой величине питающего напряжения производители рекомендуют уменьшать тактовую частоту работы микроконтроллера до величины 8 МГц.

Питание платы Arduino от солнечной панели
Плату Arduino можно запитать и от солнечной панели если напряжение и ток с нее будут соответствовать требованиям по питанию к плате Arduino. Но более целесообразным в данной ситуации является подход, основанный о том, что от солнечной батареи заряжается батарея (аккумулятор), а потом уже непосредственно от этой батареи запитывается плата Arduino. В данном случае плату Arduino можно будет запитывать даже ночью, когда солнца нет и электрический ток солнечной панелью не вырабатывается.
Схема питания платы Arduino при таком подходе показана на рисунке ниже. Как можно видеть из нее, к солнечной панели подключается зарядка, которая заряжает батарею. А сама батарея подключается к разъему постоянного тока (Dc barrel connector) или контакту Vin платы Arduino. Данная схема питания хорошо зарекомендует себя в удаленных от цивилизации местах, где нет электричества, но есть достаточное количество солнечной энергии. Например, для питания небольшой метеостанции, которая с помощью GSM модуля передает свои данные в сеть интернет.

Также на нашем сайте вы можете посмотреть проект солнечного трекера на основе платы Arduino, способного повысить эффективность используемой солнечной панели.
Какой самый лучший способ подачи питания на плату Arduino Uno?
Наилучшим способом подачи питания на плату Arduino Uno является ее питание через разъем постоянного тока (DC barrel jack) или контакт Vin. В этом случае задействуются все защитные механизмы платы по питанию. Но если в вашем проекте предусмотрено наличие хорошо стабилизированного питающего напряжения 5V с необходимыми мерами защиты, то в этом случае можно запитывать плату Arduino Uno и через ее контакт 5V. В ситуациях, когда необходимо обеспечить долгую работу устройства без подключения к внешней сети, подойдет описанный выше способ с использованием солнечной панели и заряжаемой с ее помощью батареи.
Питание платы Arduino Uno с помощью технологии PoE
Достаточно экзотическим, но, тем не менее работающим способом питания платы Arduino является ее питание с помощью технологии PoE (Power over Ethernet). Технологию PoE в настоящее время поддерживает достаточно много сетевых устройств. Она позволяет запитывать устройство через кабель Ethernet, не используя отдельного питающего кабеля. Для питания платы Arduino с помощью технологии PoE можно использовать для нее специальный шилд (плату расширения) – Arduino Ethernet Shield 2 POE. Ее внешний вид показан на следующем рисунке.


Данный модуль PoE позволяет подавать питание через витую пару Ethernet кабеля категории 5.
Battery Shield для автономного и резервного питания Arduino
Battery Shield — это источник автономного питания для 5В плат Arduino, позволяющий сделать Ваши устройства по настоящему мобильными. Battery Shield устанавливается на Arduino снабжая её питанием, как обычный аккумулятор снабжает питанием Ваш смартфон, планшет и т.д. Если к шинам питания Arduino подключены иные устройства, они также получат питание от Battery Shield. Уровень заряда LiPo (литий-полимерного) аккумулятора можно контролировать либо программно (по шине I2C), либо визуально (по светодиодному индикатору на плате). При необходимости аккумулятор можно зарядить через порт micro USB (питание Arduino не исчезнет во время заряда аккумулятора), блок зарядного устройства автоматически включается, выключается и выбирает тип заряда аккумулятора в зависимости от уровня его разряженности.
Источник автономного питания выполнен в виде Shield, что удобно при его использовании с платами Arduino Uno, Arduino Mega, Arduino Leonardo и им подобных плат Arduino с рабочим напряжением питания 5В. Если Вы используете платы Arduino Nano или Arduino Pro Mini 5V 16MHz, то их так же можно запитать от Battery Shield, без проводов, предварительно установив Arduino в модуль Trema Shield NANO. Использование Battery Shield не только превратит Ваши устройства в мобильные, но и избавит Вас от необходимости использования силовых проводов, блоков питания, батарейных отсеков с аккумуляторами, преобразователями и т.д.
Видео:

2) Подключить Shield к Arduino
3) Скачать и установить библиотеку Battery_Shield. О том как устанавливать библиотеки можно узнать здесь.
4) Добавить следующие строки в скетч:
#include // Подключаем библиотеку Battery_Shield. Battery_Shield pwrBank; // Объявляем объект pwrBank для работы с функциями и методами библиотеки Battery_Shield. // void setup() < // pwrBank.begin(0.0128f); // Инициируем работу с Battery Shield, указывая номинал сопротивления (0.128 Ом) установленного в цепи аккумулятора. >//
Подробнее о Battery Shield:
Battery Shield построен на базе чипа IP-5108 оснащенным блоком управления заряда/разряда аккумулятора блоком управления повышающего DC-DC преобразователя, многоканальным управлением питанием, 14-ти битным АЦП для чтения напряжений в различных цепях схемы, защитой от перегрузки по току (на входе и выходе), от короткого замыкания, от перенапряжения, от перезарядки аккумулятора, от перегрева чипа. При срабатывании защиты, выходное напряжение отключается, для возобновления работы Battery Shield, необходимо подать питание на порт micro USB. Для согласования логических уровней шины I2C используется чип PCA9306. Контролировать текущее состояние аккумулятора и процесса его заряда, можно как программно (по шине I2C), так и визуально (посредством светодиодов на плате модуля). Установить подходящий Вам метод контроля можно используя переключатель на плате модуля.
Специально для Battery Shield, нами разработана библиотека Battery_Shield, которая позволяет управлять источником автономного питания по шине I2C. Для работы библиотеки, переключатель на плате должен находиться в положении «I2C». Библиотека позволяет: выключать модуль, включать/выключать зарядное устройство, получать силу тока аккумулятора, получать силу тока в цепи нагрузки, получать напряжение на аккумуляторе, получать напряжение на аккумуляторе без нагрузки, получать напряжение в цепи нагрузки, получать % заряда аккумулятора, получать используемый тип заряда аккумулятора (заряд не осуществляется, TK — заряд малым током, CC — заряд постоянным током, CV — заряд постоянным напряжением, Time Over). Дополнительно можно получить текущее КПД повышающего DC-DC преобразователя, а так же точное сопротивление резистора в цепи аккумулятора, используемого для расчёта силы тока аккумулятора.
Для включения модуля необходимо однократно нажать на единственную кнопку на плате.
Выключить модуль можно либо двойным нажатием на ту же кнопку, либо программно (по шине I2C).
- Перед первым включением Battery Shield (после покупки), подайте питание на порт micro USB (не менее чем на 2 секунды).
- Для включения модуля необходимо однократно нажать на единственную кнопку на плате.
- Для выключения модуля необходимо выполнить двойное нажатие на единственную кнопку на плате (выключайте модуль перед его установкой на Arduino).
- Для заряда аккумулятора подайте питание на порт micro USB (при наличии питания от micro USB, модуль включится и не будет выключаться при нажатии на кнопку).
- При срабатывании защиты Battery Shield (перегрузка по току, КЗ, перегрев и т.д), выходное напряжение модуля отключается, для возобновления работы Battery Shield, необходимо его включить, однократно нажав на кнопку.
- При срабатывании защиты аккумулятора, его схема отключит питание на выходе, для возобновления работы аккумулятора необходимо подать питание на порт micro USB.
- Для визуальной индикации (посредством светодиодов) состояния аккумулятора и его зарядки, переведите выключатель на плате модуля в положение «LED».
- Для управления модулем и получения данных по шине I2C, переведите выключатель на плате модуля в положение «I2C».
- Обратите внимание на то, что в режиме «LED» светодиодная индикация потребляет ток.
- Если модуль находится без нагрузки (ток на выходе ниже 120 мА) дольше 32 секунд, то он автоматически выключится.
- Для работы с Battery Shield по шине I2C предлагаем воспользоваться библиотекой Battery_Shield.
- Библиотека Battery_Shield запрещает автоматическое выключение модуля при отсутствии нагрузки.
Примеры:
Вывод тока и напряжения:
#include // Подключаем библиотеку Battery_Shield. Battery_Shield pwrBank; // Объявляем объект pwrBank для работы с функциями и методами библиотеки Battery_Shield. // void setup() < // Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта на скорости 9600. pwrBank.begin(0.0128f); // Инициируем работу с Battery Shield, указывая номинал сопротивления (0.128 Ом) установленного в цепи аккумулятора. >// Номинал сопротивления Вашего источника автономного питания указан на вкладыше к Battery Shield, это значение используется для расчёта Ibat. // void loop() < // Serial.println("-------------------------"); // Serial.println((String) "Vbat=" + pwrBank.voltmeter(BATTERY) + "В."); // Выводим напряжение аккумулятора в В. Serial.println((String) "Ibat=" + pwrBank.amperemeter(BATTERY) + "А."); // Выводим силу тока аккумулятора в А. Serial.println((String) "Vout=" + pwrBank.voltmeter(OUTPUT) + "В."); // Выводим напряжение на выходе в В. Serial.println((String) "Iout=" + pwrBank.amperemeter(OUTPUT) + "А."); // Выводим силу тока на выходе в А. delay(1000); // Приостанавливаем выполнение скетча на 1 секунду. >//
Данный пример будет постоянно выводить IBAT, VBAT, IOUT, VOUT в монитор последовательного порта.
Вывод состояния и заряда аккумулятора:
#include // Подключаем библиотеку Battery_Shield. Battery_Shield pwrBank; // Объявляем объект pwrBank для работы с функциями и методами библиотеки Battery_Shield. // void setup() < // Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта на скорости 9600. pwrBank.begin(0.0128f); // Инициируем работу с Battery Shield, указывая номинал сопротивления (0.128 Ом) установленного в цепи аккумулятора. >// Номинал сопротивления Вашего источника автономного питания указан на вкладыше к Battery Shield, это значение используется для расчёта Ibat. // void loop() < // switch(pwrBank.getState())< // Выводим текст в зависимости от значения возвращённого функцией getState(): case CHARGING_IDLE: Serial.println( F("Аккумулятор не заряжается.") ); break; case CHARGING_TK: Serial.println( F("Аккумулятор заряжается малым током.") ); break; case CHARGING_CC: Serial.println( F("Аккумулятор заряжается постоянным током.") ); break; case CHARGING_CV: Serial.println( F("Аккумулятор заряжается постоянным напряжением.") ); break; case CHARGING_TO: Serial.println( F("Аккумулятор не заряжается по причине истечения времени заряда.")); break; default: Serial.println( F("Режим заряда аккумулятора неизвестен.") ); break; >Serial.println((String) "Текущая ёмкость аккумулятора " + pwrBank.getLevel() + "%" ); Serial.println( F("-------------------------") ); delay(1000); // Приостанавливаем выполнение скетча на 1 секунду. > //
Данный пример будет постоянно выводить состояние зарядного устройства, тип заряда и текущую ёмкость аккумулятора (в т.ч. и во время заряда).
Отключение Battery Shield:
#include // Подключаем библиотеку Battery_Shield. Battery_Shield pwrBank; // Объявляем объект pwrBank для работы с функциями и методами библиотеки Battery_Shield. // void setup() < // pwrBank.begin(0.0128f); // Инициируем работу с Battery Shield, указывая номинал сопротивления (0.128 Ом) установленного в цепи аккумулятора. >// Номинал сопротивления Вашего источника автономного питания указан на вкладыше к Battery Shield, это значение используется для расчёта Ibat. // void loop()< // if(millis()>5000) < pwrBank.off(); >// Если прошло более 5 секунд, то отключаем Battery Shield. > //
Данный пример отключит Battery Shield через 5 секунд после его включения.
Отключение не будет работать, если подано питание на разъем mocro USB.
Программная защита от перегрузки по току:
#include // Подключаем библиотеку Battery_Shield. Battery_Shield pwrBank; // Объявляем объект pwrBank для работы с функциями и методами библиотеки Battery_Shield. // void setup() < // pwrBank.begin(0.0128f); // Инициируем работу с Battery Shield, указывая номинал сопротивления (0.128 Ом) установленного в цепи аккумулятора. >// Номинал сопротивления Вашего источника автономного питания указан на вкладыше к Battery Shield, это значение используется для расчёта Ibat. // void loop()< // if(pwrBank.amperemeter(OUTPUT)>0.7) < // Если сила тока на выходе превысит 0.7 А (700 мА), то . pwrBank.off(); // Отключаем Battery Shield. >// > //
Данный скетч отключит Battery Shield если сила тока потребляемая Arduino и другими устройствами превысит 700 мА.
Описание основных функций библиотеки:
Библиотека Battery_Shield позволяет управлять источником автономного питания по шине I2C. Для работы библиотеки, переключатель на плате должен находиться в положении «I2C». Библиотека позволяет: выключать модуль, включать/выключать зарядное устройство, получать значения IBAT, VBAT, IOUT, VOUT, % заряда аккумулятора, текущий тип заряда аккумулятора (TK, CC, CV).
Подключение библиотеки:
#include // Подключаем библиотеку Battery_Shield. Battery_Shield pwrBank; // Объявляем объект pwrBank для работы с функциями и методами библиотеки Battery_Shield.
Функция begin();
- Назначение: Инициализация работы с Battery Shield.
- Синтаксис: begin( RES [, КПД] );
- Параметры:
- RES — значение сопротивления в цепи аккумулятора, указывается в Ом (тип float).
- КПД — необязательный параметр, коэффициент полезного действия повышающего DC-DC преобразователя, указывается в % (тип float).
- RES — сопротивление RBAT значение указано на вкладыше к Battery Shield, оно используется для расчёта IBAT.
- КПД — значение (по умолчанию 94%) используется для расчёта IOUT.
- Значение RES выше чем номинал резистора, так как оно учитывает сопротивление дорожек, припоя.
- Точные значения RES и КПД Вашего Battery Shield можно получить используя функции ohmmeter() и efficiency().
pwrBank.begin(0.0128f); // Инициализация работы с Battery Shield (Rbat = 0.128 Ом).
Функция off();
- Назначение: Выключение Battery Shield.
- Синтаксис: off();
- Параметр: отсутствует.
- Возвращаемое значение: (bool) результат выключения true/false.
- Примечание: Функция не работает при наличии питания на micro USB.
- Пример:
pwrBank.off(); // Выключение Battery Shield.
Функция charging();
- Назначение: Включение/выключение зарядного устройства.
- Синтаксис: charging( ФЛАГ );
- Параметр: (bool) флаг разрешающий работу ЗУ. true — разрешить / false — запретить.
- Возвращаемое значение: отсутствует.
- Примечание: Если разрешить работу ЗУ но не подать питание на micro USB, то аккумулятор заряжаться не будет.
- Пример:
pwrBank.charging(false); // Запрещение работы зарядного устройства.
Функция getLevel();
- Назначение: Получение уровня заряда аккумулятора в %.
- Синтаксис: getLevel();
- Параметр: отсутствует.
- Возвращаемое значение: (uint8_t) уровень заряда (от 0% до 100%).
- Примечание:
- возвращаемое значение кратно 5%.
- ёмкость аккумулятора рассчитывается по его напряжению без нагрузки.
- функция работает вне зависимости от работы зарядного устройства.
Serial.println( pwrBank.getLevel() ); // Выводим ёмкость аккумулятора в монитор последовательного порта.
Функция getState();
- Назначение: Получение состояния Battery Shield.
- Синтаксис: getState();
- Параметр: отсутствует.
- Возвращаемое значение:
- CHARGING_IDLE — в данное время аккумулятор не заряжается.
- CHARGING_TK — аккумулятор заряжается в режиме TK — малым током.
- CHARGING_CC — аккумулятор заряжается в режиме CC — постоянным током.
- CHARGING_CV — аккумулятор заряжается в режиме CV — постоянным напряжением.
- CHARGING_TO — аккумулятор не заряжается, так как истекло отведённое время заряда.
switch(pwrBank.getState()) < // Выводим текст в зависимости от значения возвращённого функцией getState(): case CHARGING_IDLE: Serial.println( F( "Аккумулятор не заряжается." ) ); break; case CHARGING_TK: Serial.println( F( "Аккумулятор заряжается малым током.") ); break; case CHARGING_CC: Serial.println( F( "Аккумулятор заряжается постоянным током.") ); break; case CHARGING_CV: Serial.println( F( "Аккумулятор заряжается постоянным напряжением.") ); break; case CHARGING_TO: Serial.println( F( "Аккумулятор не заряжается по причине истечения времени заряда.")); break; default: Serial.println( F( "Режим заряда аккумулятора неизвестен.") ); break; >
Функция voltmeter();
- Назначение: Получение напряжения.
- Синтаксис: voltmeter( БЛОК );
- Параметр БЛОК — определяет блок схемы на котором требуется измерить напряжение:
- BATTERY — измерить напряжение на аккумуляторе (UBAT). Вместо BATTERY можно указать INPUT.
- BATTERY_IDLE — измерить напряжение на аккумуляторе (UBAT) без нагрузки.
- OUTPUT — измерить напряжение на выходе (UOUT).
Serial.println(pwrBank.voltmeter(BATTERY)); // Выводим напряжение на аккумуляторе в монитор последовательного порта. Serial.println(pwrBank.voltmeter(OUTPUT)); // Выводим напряжение на выходе модуля в монитор последовательного порта.
Функция amperemeter();
- Назначение: Получение силы тока.
- Синтаксис: amperemeter( ЦЕПЬ );
- Параметр ЦЕПЬ — ток которой требуется получить:
- BATTERY — измерить ток в цепи аккумулятора (IBAT). Вместо BATTERY можно указать INPUT.
- OUTPUT- измерить ток нагрузки в цепи выхода (IOUT).
- Значение IBAT может быть отрицательным (это значит что аккумулятор заряжается).
- Значения IBAT и IOUT рассчитываются в библиотеке, а не измеряются чипом модуля.
- Значение IBAT зависит от RBAT (от сопротивления указанного в качестве параметра функции begin).
- Значение IOUT зависит от КПД повышающего DC-DC преобразователя (по умолчанию 94%).
- Точные значения RBAT и КПД Вашего Battery Shield можно получить используя функции ohmmeter() и efficiency().
Serial.println(pwrBank.amperemeter(BATTERY)); // Выводим силу тока аккумулятора в монитор последовательного порта. Serial.println(pwrBank.amperemeter(OUTPUT)); // Выводим силу тока нагрузки в монитор последовательного порта.
Описание дополнительных функций библиотеки:
Дополнительные функции требуют ввода токов измеренных внешними приборами (амперметром или мультиметром). Для выполнения указанных измерений требуются технические навыки и приборы. Любые конструктивные изменения в Battery Shield (в т.ч. обрыв проводов, следы пайки и т.д.) исключают гарантию и работоспособность устройства. Помните что аккумулятор является пожароопасным устройством.
Функция ohmmeter();
- Назначение: Получение сопротивления в цепи аккумулятора RBAT (это значение указывается в качестве параметра функции begin). Чем точнее указано значение RBAT в функции begin(), тем точнее библиотека сможет рассчитывать силу тока аккумулятора IBAT.
- Синтаксис: ohmmeter( ТОК_АККУМУЛЯТОРА );
- Параметр: (float) ТОК_АККУМУЛЯТОРА указывается в А.
- Возвращаемое значение: (float) сопротивление в цепи аккумулятора RBAT в Ом.
- Примечание:
- Для работы функции необходимо указать ток в цепи аккумулятора, который нужно измерить внешним амперметром или мультиметром, при наличии постоянной нагрузки на выходе Battery Shield.
- Измеренный ток нужно указать в качестве параметра функции ohmmeter(), загрузить скетч и получить сопротивление.
- Убедитесь что во время получения сопротивления, ток аккумулятора измеряемый амперметром соответствует току указанному в качестве параметра функции ohmmeter().
- Для лучших результатов рекомендуется повторить операцию при разных нагрузках, а из полученных сопротивлений рассчитать среднее значение.
Serial.print("Ibat=0.550 => Rbat="); Serial.print(pwrBank.ohmmeter(0.550f), 5); Serial.println("Ом."); // Выводим Rbat в Ом с 5 знаками после запятой, при токе аккумулятора 550 мА. Serial.print("Ibat=0.700 => Rbat="); Serial.print(pwrBank.ohmmeter(0.700f), 5); Serial.println("Ом."); // Выводим Rbat в Ом с 5 знаками после запятой, при токе аккумулятора 700 мА.Функция efficiency();
- Назначение: Получение КПД повышающего DC-DC преобразователя (это значение указывается в качестве необязательного, второго параметра функции begin). Чем точнее указано КПД в функции begin(), тем точнее библиотека сможет рассчитывать силу тока на выходе IOUT.
- Синтаксис: efficiency( ТОК_ВЫХОДНОЙ_ЦЕПИ );
- Параметр: (float) ТОК_ВЫХОДНОЙ_ЦЕПИ указывается в А.
- Возвращаемое значение: (float) КПД повышающего DC-DC преобразователя в %.
- Примечание:
- Для работы функции необходимо указать ток в выходной цепи, который нужно измерить внешним амперметром или мультиметром, при наличии постоянной нагрузки.
- Измеренный ток нужно указать в качестве параметра функции efficiency(), загрузить скетч и получить КПД.
- Убедитесь что во время получения КПД, ток в выходной цепи измеряемый амперметром соответствует току указанному в качестве параметра функции efficiency().
- Для лучших результатов рекомендуется повторить операцию при разных нагрузках, а из полученных КПД рассчитать среднее значение.
Serial.print("Iout=0.550 => КПД="); Serial.print(pwrBank.efficiency(0.550f), 5); Serial.println("%."); // Выводим КПД в % с 5 знаками после запятой, при выходном токе 550 мА. Serial.print("Iout=0.700 => КПД="); Serial.print(pwrBank.efficiency(0.700f), 5); Serial.println("%."); // Выводим КПД в % с 5 знаками после запятой, при выходном токе 550 мА.Применение:
- Создание автономных мобильных устройств, роботов;
Ссылки:
- Battery Shield.
- Библиотека Battery_Shield.
- Расширенные возможности библиотек iarduino для шины I2C.
- Wiki — Установка библиотек в Arduino IDE.
Battery Powering Arduino Uno
How to battery power an Arduino Uno. The video that follows shows how to make up a cable to connect a 9V battery to an Arduino Uno. A 2.1mm barrel connector is soldered to a battery clip with the positive (red) wire connected to the center of the barrel connector. This type of battery connector is also available already assembled.
This is probably the cheapest way to battery power an Arduino Uno, but has some disadvantages. Continue reading this article for an explanation and alternate methods that can be used to battery power an Arduino Uno.
The pre-loaded blink program starts flashing the on-board LED on and off after the battery is plugged into the Arduino.
A small 9V battery is not practical for powering an Arduino Uno for a long time. This type of battery is fine for intermittent use as well as for use during development and experimentation. To power an Arduino Uno for longer periods of time, a bigger battery is needed.
How to Battery Power an Arduino Uno
Below are a few different ideas on how to battery power an Arduino Uno.
Small 9V Battery for Powering an Arduino Uno
As already discussed above, small 9V batteries do not last long when powering an Arduino Uno board. Rechargeable batteries are an option.
The voltage of the battery will be about 9V if six 1.5V cells are used in the battery holder. If rechargeable cells are used, the battery will produce about 7.2V.

As an Amazon Associate I earn from qualifying purchases:
12V Sealed Gel Battery
An alternative to using a 9V battery as shown above is to use a 12V sealed gel battery. This type of battery can be connected to a trickle charger or solar charge system.
As an Amazon Associate I earn from qualifying purchases:
Battery Voltage and Charging
It is important to note that when using a fully charged 12V lead acid gel battery, the output voltage is actually 13.8V. When the battery is charged, either using a trickle charger or solar charge controller, the charge voltage can be up to 14V or slightly higher. If the Arduino Uno is connected to the battery when the charger is also connected, the Arduino Uno then receives the full charge voltage. This voltage is above the recommended input voltage range of 7V to 12V, which means the Arduino will tend to run hot.
Keeping the Input Voltage in Range
A solution to keep the input voltage to the Arduino lower is to use a 9V switched mode regulator between the 12V battery and the Arduino Uno.
How to Power Your Arduino? Vin, 5V, and 3.3V Pins.

The Vin, 5V, 3.3V, and GND pins are Arduino power pins.
You can use the Vin pin to Power your Arduino with an unregulated 7 to 12-volt power source. Like a 9V battery or a wall adapter that is in the range of 7 to 12 volts.
Alternatively, you can power your Arduino through the 5V pin with an external regulated 5V power supply. It can be a wall adapter that gives out constant 5V or a DC-DC converter that is connected to a battery or a set of batteries.
You can use both the 5V pin and the 3.3V pin to provide power to modules that are connected to the Arduino. But you can’t use the 3.3V pin to power your Arduino Uno/Nano.

There are four different ways to power an Arduino:
- Powering Your Arduino Via the Barrel Jack.
- Powering Your Arduino Via the Vin Pin.
- Powering Your Arduino Via the 5V Pin.
- Powering Your Arduino Via the USB Cable.
Arduino board has two power outputs:
- 5V Pin as a Power Output.
- 3.3V Pin as a Power Output.
This article applies to both Arduino Uno and Nano. Nano doesn’t have a barrel jack. But regarding everything else, it is identical to Uno.
Modules Used in This Article.




Disclosure: Bear in mind that some of the links in this post are affiliate links and if you go through them to make a purchase I will earn a commission. Keep in mind that I link these companies and their products because of their quality and not because of the commission I receive from your purchases. The decision is yours, and whether or not you decide to buy something is completely up to you.
Powering Your Arduino Via the Barrel Jack.
You can connect a 7 to 12 volt power supply to the barrel jack of your Arduino.
For example, a 9V battery. The tip of the barrel jack must be connected to the positive output of the power supply, and the sleeve of the power supply must be connected to the negative output of the power supply

Powering Your Arduino Via the Vin Pin.
Connect the positive output of your 7 to 12 volt power supply to the Vin pin of your Arduino, and the negative to the GND pin.

The Vin pin goes to the input of the onboard 5V regulator. The power source you connect to the Vin pin has to be 7 to 12 volts for the regulator to work reliably. It converts the unregulated input voltage to a stable 5V to be used by the Arduino.
The Arduino Vin pin and barrel jack are the same. The Vin pin is directly connected to the tip of the barrel jack. The sleeve is connected to the GND. This means that if you power your Arduino through the barrel connector, then you can use the Vin pin as a direct unregulated battery output.
Powering Your Arduino Via the 5V Pin.
If you have an external regulated power source that outputs 5 volts, then you can connect it directly to the 5V pin of the Arduino board. The input on the 5V pin should not exceed 5.5V volts!
If you want to use less than four AA batteries, then you can use a step-up boost converter to get the voltage up to stable 5V. Three AA batteries in series will give you 1.5 * 3 = 4.5V when full, and a little over 3V when almost empty. If electromagnetic noise isn’t an issue for you, then you can buy those cheap DC-DC converters off of eBay or from AliExpress.


I have made a video tutorial about running your Arduino on a single AA battery:
If the voltage of your power source is higher than 5V, then you can use a linear voltage regulator or a step-down buck converter.

Buck converters are more efficient than linear regulators. They transform the input power to a different voltage level. Linear converters «burn» the excess voltage and thus do not go well with batteries. They waste energy by turning it into heat. The benefit of a linear regulator is that it is less electromagnetically noisy. If this electrical interference doesn’t matter in your circuit, then you can buy the cheap DC-DC step-down buck converters off of eBay.
The 5V regulator on the Arduino board is also a linear regulator.
When you power your Arduino through the 5V pin, then the Vin pin is unused. You cannot power your sensors and modules from the Vin pin.
Powering Your Arduino Via the USB Cable.
If you connect the USB cable to your Arduino, then it provides regulated 5 volts directly to the board, and the 5V regulator is not used.
Just like with powering the Arduino directly from the 5V pin, the Vin pin will be left unused. You cannot power your sensors and modules from the Vin pin.
5V Pin as a Power Output.
You can use the 5V pin to power sensors and modules connected to the Arduino. You have to check if the module you are connecting supports 5V power. Some devices are designed for 3.3V only!
The 5V pin is limited to 500mA of current if you are powering the Arduino with a USB cable. The onboard voltage regulator is rated for 800mA, but due to power dissipation issues, you shouldn’t go over 400 to 500mA.
If you need more power for your modules, then you should use an external power source.
3.3V Pin as a Power Output.
You can use the 3.3V pin to power sensors and modules that need 3.3V power.
It can supply about 100 to 150mA of current. The 3.3V regulator is connected to the output of the 5V regulator. Drawing current from the 3.3V regulator will dissipate heat in both the 3.3V regulator and the 5V regulator. This means that if you connect a 3.3V device to the 3.3V pin, then it also limits the maximum current you can use for the 5V modules connected to the 5V pin.



