Ардуино питание от батарейки

Ардуино питание от батарейки

В этой статье расскажу о нескольких простых способах как можно запитать (включить) Arduino UNO практически без денежных затрат. Уверен на 95% что у вас найдется все необходимое для этого дома, или у ваших соседей, в этом случае уверенность возрастает до 99% ))). Рекомендованное напряжение для питания Ардуино, от 7-12 вольт. Так как при напряжении менее 7 вольт возможна не стабильная работа платы, а более 12 возможен перегрев преобразователя напряжения и выход его из строя.
На моей практике питания 5V вполне достаточно для работы простейших схем и небольшого количества датчиков. Подключал одновременно дисплей 5110 и датчик DHT11, и они прекрасно себя чувствовали от 5-ти вольт. Для того чтобы поиграться и изучить принцип работы этого достаточно.

Варианты питания для Arduino UNO

Первый — кабелем от usb порта компьютера:
Такое подключение не только запитает Ардуинку, но и пригодится для заливки скетчей и библиотек. Если вы купили плату без кабеля, то такой кабель часто используется в принтерах, сканерах или МФУ — называется USB A-B.

Второй — кабель и зарядка:
Берем этот же кабель и зарядное устройство от мобильного телефона с usb выходом и выходным напряжением 5V. И подключаем через розетку.

Третий — блок питания от чего нибудь:
Возможно у вас есть ненужный (или нужный) блок питания от какой либо техники, который выдает напряжение от 5 до 12 вольт и от 300 до 1000 миллиампер на выходе. У себя нашел БП уже не помню от чего, он дает 9V и 500ma. Плюс еще на БП должен быть штекер нужного размера, если не подходит, тогда ищите нужного размера и перепаивайте. Найти его можно в интернете по запросу (штекер 5.5×2.5 мм)
Но прежде чем подключать, советую проверить выходящее напряжение мультиметром (на всякий случай). У меня один БП вместо написанных 9V выдавал почти 15.

Четвертый — от батареек:
Сначала сделаем автономное питание от батарейки типа Крона.
Для этого варианта понадобится переходник с кроны на разъем Arduino.

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

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

Еще можно запитать от пальчиковых батареек, используя вот такие блоки. Их можно вытащить например из сломанной машинки на радиоуправлении, или купить на рынке.

Можно еще подать питание на пины ардуино, но об этом писать не буду. Так как мое мнение что таким способом пользуются довольно редко.

Напишите в комментариях, от чего и как вы запитали Arduino.

цифровая электроника вычислительная техника встраиваемые системы

Как правильно организовать питание Arduino

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

Некоторые платы Arduino имеют входное напряжение от 6 до 16 В постоянного тока, что значительно выше максимального значения для микроконтроллера, но плата Arduino точно стабилизирует напряжение питания, а также обеспечивает дополнительную мощность для периферийных устройств Arduino.

Выбор подходящего источника питания для проектов на основе микроконтроллеров часто упускается из виду. В то время как сосредоточенные усилия могут быть направлены в детали самой конструкции, многие проблемы производительности и надежности могут быть связаны с выбором и подключением источника питания. Семейство плат Arduino предлагает решения для этих проблем, но легко ошибиться, не зная, какие варианты доступны при разработке. Это не так просто, как сказать, что 5 В Arduino использует источник питания 5 В, а 3,3 В Arduino использует источник питания 3,3 В.

Многие платы Arduino используют микроконтроллер ATmega328P. ATmega328 от Microchip имеет широкий диапазон допустимых напряжений Vcc. (Vcc – это стабилизируемое напряжение питания постоянного тока, необходимое для работы микросхемы, и его часто называют напряжением питания для интегральных схем.) Чаще всего платы Arduino предназначены для работы либо с логикой уровня 3,3 В для обеспечения низкого энергопотребления, либо с логикой 5 В для того, чтобы быть совместимыми с устаревшими логическими устройствами ТТЛ. Приведенные ниже примеры относятся к устройствам 3,3 В постоянного тока, где соображения относительно потребления источника питания являются более важными. Тем не менее, те же принципы применяются к устройствам с 5 В. Вот технические характеристики классических плат Arduino с официального сайта.

Возьмем в качестве примера Arduino Pro Mini. Максимальное потребление тока такой платы Arduino составляет 200 мА. Маловероятно, что сам Arduino будет потреблять 200 мА, но давайте предположим, что между Arduino и другими подключенными к нему устройствами они потребляют всего 200 мА. Спецификация ATmega328p показывает, что минимальное напряжение логического высокого уровня на выводе составляет 90% от Vcc. Таким образом, если Vcc составляет 3,3, минимальное напряжение на выводе, которое будет считаться логически высоким, составляет 0,9 * 3,3 В = 2,97 В. Любое значение, видимое на цифровом выводе ниже 2,97 В, находится в неопределенном диапазоне и приведет к непредсказуемым результатам от Arduino.

Читайте также:  Xiaomi redmi note 4 5 элемент

Всегда есть некоторое расстояние между источником питания и Arduino. Чем больше расстояние, тем больше потери напряжения на проводке блока питания. Но каковы эти потери? Так как провод 26 AWG является обычным выбором для организации проводки с низким энергопотреблением, будем рассматривать его. В нем меньше меди, это означает более низкую стоимость. Многожильный 26 AWG является хорошим выбором благодаря гибкости прокладки проводов. 26 AWG достаточно большой, так что он рассчитан на нагрузку 2,2 А, что более чем в десять раз превышает потребляемый ток 200 мА, который мы указали для максимального тока Arduino. Источник питания 3,3 В постоянного тока и провода 26 AWG кажутся отличным выбором, но давайте рассмотрим подробнее.

Провод 26 AWG имеет сопротивление 40,81 Ом на 1000 футов (300 метров) или 40,81 МОм на фут (0,3 м). При 200 мА, протекающей по проводам источника питания, у нас будет падение напряжения на проводе, как показано ниже. Имейте в виду, что нам нужно проложить провод от источника питания к Arduino, а затем снова вернуться к заземлению источника питания. Мы видим, что на десяти футах мы потеряли 5 процентов от нашего постоянного напряжения 3,3. На 20 футах мы потеряли почти 10 процентов. Это действие уменьшает напряжение, подаваемое на Arduino, до 4,5 В; нижний предел нашего гарантированного максимального логического высокого уровня.

Двадцать футов (6 метров) кажется разумным расстоянием для большинства применений. Однако мы рассмотрели только сопротивление самого провода к этому моменту.

Контактное сопротивление при этом часто не учитывается и даже не понимается. Сопротивление провода 26 AWG составляет 40,81 Ом на 300 метров в зависимости от диаметра поперечного сечения провода. Тем не менее, в каждой точке проводки, где мы разместили соединение, мы создали точку, в которой поперечное сечение пути тока уменьшается и поэтому имеет более высокую точку сопротивления.

Сопряжение круглого разъема приведет к тому, что штифт вывода будет контактировать со стволом только в тангенциальной точке. Лезвеобразные соединители обеспечивают одинаковую уменьшенную площадь по всей поверхности. Даже винтовой зажим не может соответствовать сопротивлению поперечного сечения самого провода. Учтите, что любое оконечное устройство подвержено окислению с течением времени и имеет в таком состоянии повышенное сопротивление. Каждая из этих точек может легко иметь контактное сопротивление 40 мОм. Вот так, каждая точка подключения может добавить эквивалентное сопротивление 300 метров провода 26 AWG. При наличии двух подключений к Arduino и двух подключений к источнику питания, любая система будет иметь минимум 4 точки завершения. Теперь у нас потеря напряжения на 5 процентов на 2,5 метрах (8 футах) и 10 процентов на 5,5 метрах (18 футах) между Arduino и его источником питания.

Следовательно, при стандартной схеме подключения источника питания мы теряем пять процентов напряжения источника 3,3 В между источником питания и Arduino на 2,5 метрах и 10% на 5,5 метрах. Проще говоря, если бы мы использовали регулируемый источник питания постоянного тока, мы могли бы увеличить напряжение, чтобы компенсировать потери в линии и сопротивление контакта. Однако источники питания дороги и занимают много места. Как правило, во встраиваемых системах разработчики пытаются использовать общий источник питания для нескольких контроллеров. Если один контроллер находится на расстоянии 0,3 метров от источника питания, а последний – на расстоянии 6 метров от источника питания, разработчик должен выполнить точную балансировку, чтобы каждый контроллер находился в нужном диапазоне.

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

Первое – питание USB. USB-кабель обычно используется для программирования Arduino через интегрированную среду разработки Arduino IDE. Кабель USB не только обеспечивает диагностику через последовательный монитор IDE, но также обеспечивает питание 5 В постоянного тока для Arduino через вывод Vcc USB. Питание 5 В USB используется для непосредственного питания 5 В Arduino, или оно отключается, если это Arduino 3,3 Вольт.

Второе – питание 5 В или 3,3 В. Разработчик может подать соответствующее напряжение на выводы питания 5 В или 3,3 В Arduino. Эти контакты привязаны непосредственно к контактам питания микроконтроллера на плате Arduino. Однако подача питания на эти контакты приведет к тому, что микроконтроллер Arduino будет восприимчив к потере линии и потере сопротивления контактов от источника питания, упомянутых ранее.

Третье – Vin или Raw. Arduino может иметь надпись «Vin» или «RAW» в зависимости от используемого варианта Arduino. Распространенной ошибкой является подача на этот вывод напряжения источника питания 5 В или 3,3 В. Проблема с этим заключается в том, что вы не только обеспечили трудности с упомянутыми ранее потерей линии и сопротивлением контактов, но и что этот вывод является входом для встроенной схемы регулирования. Как и в случае любого стабилизатора напряжения, вам нужно подавать немного больше напряжения на устройство, чем вы ожидаете получить от него. Если мы подадим 3,3 В на Vin, мы потеряем около 0,5 вольт через стабилизатор. Это означает, что микропроцессор и подключенные периферийные устройства в лучшем случае будут работать только на 2,8 В. В сочетании с нашими потерями в линии и снижением сопротивления контактов мы будем работать намного ниже необходимого уровня напряжения.

Читайте также:  The long dark сюжет 3 эпизод

Несмотря на описанную выше проблему, использование выводов VIN или RAW является решением проблемы потери напряжения источника. На плате Arduino контакты VIN или RAW являются входом регулятора напряжения на плате Arduino. Все, что нам нужно сделать, это подать напряжение в указанном диапазоне, чтобы получить желаемый регулируемый выход на Arduino. Напряжение питания от 6 до 12 В, подаваемое на Vin или RAW, будет питать микроконтроллер Arduino, преодолевать любую потерю напряжения на линии или контактном сопротивлении и обеспечивать выходное напряжение на выводы 5 В и 3,3 В Arduino для питания периферийных компонентов. Диапазон входного напряжения Arduino основан на требованиях к напряжению на всей плате, включая энергию, необходимую для микроконтроллера для питания периферийных устройств.

Готовые источники питания в диапазоне от 7 до 12 В постоянного тока не так распространены, как источники питания 3,3 В или 5 В постоянного тока, но они доступны. Соблазнительно использовать более распространенные источники питания 5 В и 3,3 В постоянного тока для плат Arduino, но из-за представленных выше фактов необходимо использовать менее распространенные альтернативы для лучшего стабилизирования напряжения и лучшей производительности микроконтроллера.

В данной статье мы рассмотрим вопросы питания Ардуино и способы снижения потребления электроэнергии микроконтроллера на примере этой платформы. Тема становится актуальной в тех проектах, где устройство Arduino питается от аккумулятора, и одним из важных параметров является время автономной работы, а также для полностью автономных устройств, питающихся, например, от солнечных панелей.

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

Перед рассмотрением способов снижения электроэнергии стоит отметить, что энергоэффективность устройства повышается с понижением питающего напряжения. Большинство плат Arduino поддерживают входное напряжение до 12В, при этом сам микроконтроллер питается напряжением 5В. Таким образом, учитывая, что в большинстве плат Arduino установлены линейные регуляторы напряжения, получается, что при питании платы напряжением больше 5В, значительная часть мощности будет рассеиваться в тепло.

Пример потребления электроэнергии платой Arduino Mini Pro:

Питающее напряжение, В Ток, мА Потребляемая мощность, мВт
9 42 378
5 22 110
3.3 8 26.4

На нашем сайте вы можете найти описание схем энергопитания для плат Arduino Uno, Nano, Mega и Leonardo.

В рамках данной темы мы рассмотрим 4 основных метода снижения энергопотребления:

  • использование режимов энергосбережения;
  • использование библиотеки Narcoleptic;
  • выключение компонентов микроконтроллера;
  • снижение тактовой частоты;

Использование режимов энергосбережения.

Все микроконтроллеры AVR на которых основаны большинство плат Arduino поддерживают различные режимы энергосбережения. Рассмотрим такие режимы для микроконтроллера ATmega328P, на котором основаны платы Arduino UNO, Arduino Nano, Arduino Pro Mini и некоторые другие:

IDLE mode (режим ожидания)

В данном режиме приостанавливается только работа процессора, в то время как остальная периферия (интерфейсы ввода-вывода, таймеры, счетчики, компараторы, система прерываний) продолжает работать. Данный режим обеспечивает самое низкое снижение потребления энергии, но его преимущество в очень быстрой реакции на события, приводящие к пробуждению микроконтроллера. Выход из режима IDLE возможен как по внешнему, так и по внутреннему прерыванию.

Power-Down mode (режим глубокого сна)

Этот режим обеспечивает максимальное энергосбережение за счет отключения тактирования всех узлов микроконтроллера, работающих в синхронном режиме. В рабочем состоянии остаются только сторожевой таймер, система обработки внешних прерываний и блок сравнения адреса модуля TWI. Пробуждение из данного режима возможно в результате возникновения следующих прерываний: от сторожевого таймера, по совпадению адреса от интерфейса TWI, прерывание изменения уровня, или внешнего прерывания INT0 или INT1.

Power Save mode (режим энергосбережения)

Отличается от режима Power-Down тем, что таймер/счетчик 2 продолжает свою работу как в синхронном, так и в асинхронном режиме. Пробуждение из этого режима возможно теми же прерываниями что и из режима Power-Down, а также прерыванием от таймера/счетчика 2.

Standby mode (режим ожидания)

Этот режим идентичен режиму работы Power-Down, за исключением того, что продолжает работать тактовый генератор. За счет этого пробуждение микроконтроллера происходит гораздо быстрее.

Для того чтобы начать использовать данные режимы энергосбережения, необходимо подключить библиотеку sleep.h:

После этого нам станут доступны две простые функции – set_sleep_mode(); и sleep_mode();.

С помощью функции set_sleep_mode(); происходит выбор необходимого режима энергосбережения. Соответственно есть 4 интересующих нас аргумента этой функции для каждого из рассмотренных режимов работы:

После того как был задан необходимый режим энергосбережения, мы можем воспользоваться функцией sleep_mode(); для перевода микроконтроллера в этот режим.

Как видно, ввести микроконтроллер в режим энергосбережения совсем несложно, но помимо этого его необходимо еще и выводить из этого режима для совершения полезной работы. Рассмотрим вариант использования прерывания от сторожевого таймера для этих целей. Для работы со сторожевым таймером необходимо подключить соответствующую библиотеку wdt.h:

Читайте также:  Как изменить размер листа в pdf

После этого в теле программы необходимо объявить функцию обработчика прерывания от сторожевого таймера:

Для работы со сторожевым таймером понадобятся две функции – wdt_enable(); и wdt_disable();.

Функция wdt_enable(); имеет один аргумент, устанавливающий интервал срабатывания сторожевого таймера. Для этого доступны 10 констант:

Кроме этого, необходимо разрешить прерывание от сторожевого таймера. Это можно сделать с помощью установки бита WDIE регистра WDTCSR: WDTCSR |= (1 Использование библиотеки Narcoleptic

Данную библиотеку создал Питер Кнайт, скачать ее можно по адресу https://code.google.com/p/narcoleptic/.

Эта библиотека позволяет вводить микроконтроллер в режим сна на определенное время с помощью одной функции – Narcoleptic.delay();. Аргументом данной функции является время в миллисекундах – используется точно так же как и стандартная функция delay();.

Рассмотрим ту же программу что и ранее, но с использованием данной библиотеки:

Как видно, код стал значительно проще, и в случае, когда нужны простые паузы между полезными действиями – эта библиотека является самым простым и удобным решением.

Выключение компонентов микроконтроллера

Этот метод подойдет в случаях, когда микроконтроллер длительное время должен выполнять ряд определенных действий с одной и той же периферией.

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

Для того чтобы воспользоваться данным методом необходимо подключить библиотеку power.h:

После этого нам будет доступен ряд функций для включения и отключения отдельных модулей периферии микроконтроллера:

Функция выключения Функция включения Описание модуля
power_aca_disable() power_aca_enable() Аналоговый компаратор порта А.
power_adc_disable() power_adc_enable() АЦП.
power_adca_disable() power_adca_enable() АЦП порта А.
power_evsys_disable() power_evsys_enable() Модуль EVSYS
power_hiresc_disable() power_hiresc_enable() Модуль HIRES порта C.
power_lcd_disable() power_lcd_enable() Модуль LCD.
power_pga_disable() power_pga_enable() Усилитель с программируемым коэффициентом усиления.
power_pscr_disable() power_pscr_enable() Контроллер пониженной мощности.
power_psc0_disable() power_psc0_enable() 0 Контроллер уровня мощности.
power_psc1_disable() power_psc1_enable() 1 Контроллер уровня мощности.
power_psc2_disable() power_psc2_enable() 2 Контроллер уровня мощности.
power_ram0_disable() power_ram0_enable() SRAM блок 0.
power_ram1_disable() power_ram1_enable() SRAM блок 1.
power_ram2_disable() power_ram2_enable() SRAM блок 2.
power_ram3_disable() power_ram3_enable() SRAM блок 3.
power_rtc_disable() power_rtc_enable() Модуль часов реального времени.
power_spi_disable() power_spi_enable() Интерфейс SPI
power_spic_disable() power_spic_enable() Интерфейс SPI порта C
power_spid_disable() power_spid_enable() Интерфейс SPI порта D
power_tc0c_disable() power_tc0c_enable() Таймер/счетчик 0 порта C
power_tc0d_disable() power_tc0d_enable() Таймер/счетчик 0 порта D
power_tc0e_disable() power_tc0e_enable() Таймер/счетчик 0 порта E
power_tc0f_disable() power_tc0f_enable() Таймер/счетчик 0 порта F
power_tc1c_disable() power_tc1c_enable() Таймер/счетчик 1 порта C
power_twic_disable() power_twic_enable() Интерфейс I2C порта C
power_twie_disable() power_twie_enable() Интерфейс I2C порта E
power_timer0_disable() power_timer0_enable() Таймер 0
power_timer1_disable() power_timer1_enable() Таймер 1
power_timer2_disable() power_timer2_enable() Таймер 2
power_timer3_disable() power_timer3_enable() Таймер 3
power_timer4_disable() power_timer4_enable() Таймер 4
power_timer5_disable() power_timer5_enable() Таймер 5
power_twi_disable() power_twi_enable() Интерфейс I2C
power_usart_disable() power_usart_enable() Интерфейс USART
power_usart0_disable() power_usart0_enable() Интерфейс USART 0
power_usart1_disable() power_usart1_enable() Интерфейс USART 1
power_usart2_disable() power_usart2_enable() Интерфейс USART 2
power_usart3_disable() power_usart3_enable() Интерфейс USART 3
power_usartc0_disable() power_usartc0_enable() Интерфейс USART 0 порта C
power_usartd0_disable() power_usartd0_enable() Интерфейс USART 0 порта D
power_usarte0_disable() power_usarte0_enable() Интерфейс USART 0 порта E
power_usartf0_disable() power_usartf0_enable() Интерфейс USART 0 порта F
power_usb_disable() power_usb_enable() Интерфейс USB
power_usi_disable() power_usi_enable() Интерфейс USI
power_vadc_disable() power_vadc_enable() Модуль напряжения АЦП
power_all_disable() power_all_enable() Все модули

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

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

Снижение тактовой частоты.

Потребление любого микроконтроллера сильно зависит от частоты его тактирования, и снижая ее, мы можем добиться значительного снижения энергопотребления. В микроконтроллерах AVR имеется возможность программного изменения предделителя частоты тактирования. А для простоты работы с ним мы будем использовать специальную библиотеку Prescaler.h, скачать которую можно по адресу https://github.com/fschaefer/Prescaler:

Изменение предделителя тактирования производится с помощью функции setClockPrescaler(); имеющей один аргумент, отвечающий за величину предделителя. Существует 9 констант в качестве аргументов для данной функции:

В зависимости от аргумента, данная функция снижает тактовую частоту в несколько раз (CLOCK_PRESCALER_16 означает что базовая тактовая частота микроконтроллера будет снижена в 16 раз).

Перед использованием данной функции, необходимо отметить, что правильность работы всей периферии сильно зависит от тактовой частоты, и при ее снижении – большинство функций микроконтроллера, завязанные на времени, будут работать неправильно (таймеры, PWM, USART, I2C и т.д.). Кроме того неправильно будут работать стандартные функции millis(); и delay();. Но данная библиотека предоставляет замену этим функциям в виде функций trueMillis(); и trueDelay();.

Рассмотрим вариант применения снижения тактовой частоты на примере работы с Serial интерфейсом:

Как видно, перед тем как использовать Serial порт, необходимо сначала повысить частоту тактирования до стандартной, и только потом отправлять данные. То же самое касается и приема данных – необходимо позаботиться о возвращении стандартной частоты тактирования еще до того, как данные будут отправлены на наш микроконтроллер, иначе они будут приняты неверно. То же касается и остальной периферии, завязанной на временных промежутках.

Таким образом, мы рассмотрели 4 различных способа снижения энергопотребления микроконтроллером во время его работы. Пробуйте комбинировать данные способы в своих проектах для достижения максимальной эффективности ваших устройств. Удачи!

Ссылка на основную публикацию
World in conflict coop land
Жанр: Стратегия Дата выпуска: 18 сентября 2007 года World in Conflict – это стратегия в реальном времени от компании Sierra...
Samsung galaxy j7 duo 2018
Samsung Galaxy J7 2018 года имеет форм-фактор фаблета благодаря тому, что диагональ его экрана равна 5.5 дюймам. Физическое разрешение матрицы...
Samsung galaxy radio fm
"FM радио (Radio FM)" – бесплатная программа для андроид, которая пригодится каждому радиолюбителю. Приложение отличается от себе подобного ПО полной...
World of tanks драйвера для видеокарты
Nvidia DriverPack - это единый пакет с драйверами для видеокарт от Nvidia, как для ОС Windows 7 и 8, так...
Adblock detector