Способы питания ардуино нано

Питание микроконтроллеров Ардуино Нано (Arduino Nano)

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

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

Способы питания Ардуино

Как уже упоминалось, система крайне вариативна, и это в ней заложено самими создателями. А соответственно, она должна быть готова к разным ситуациям и вариантам эксплуатации, чтобы «неловкий» пользователь не сломал что-то ненароком. Или, что происходит чаще, ему не приходилось самостоятельно проектировать материнскую плату под нюансы каждой системы.

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

А всё дело в том, что на Ардуино питание выстроено специальным образом, позволяющим работать с различными источниками питания, а соответственно, и с некоторой областью характеристик тока, вместо четких значений у аналогов системы. Именно этим питание Аrduino nano и подкупает большинство новичков, а вот более продвинутым пользователям такое решение кажется спорным и может вызывать в их сообществе множество дискуссий.

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

Если говорить более конкретно, то питание на Ардуино может подключаться через три различных источника:

  1. Mini В USB, когда вы тестируете проект на ПК. Это крайне важный и удобный момент, ведь нет необходимости, при программировании и тестировании вашего продукта, подводить ток дополнительно, что экономит силы. А наличие систем, позволяющих через такой источник регулировать характеристики тока, упрощает некоторые задачи.
  2. Непосредственно через нерегулируемые источники в 6-20 вольт. Это происходит через 30 пин, и подобно выходу на цифровой сигнал, данный вход воспринимает весь диапазон. Удобно в некоторых случаях, подробнее о которых вы можете узнать, когда начнете разбирать проекты на системе.
  3. Через регулируемые источники в 5 вольт. Это стандартный и часто используемый способ подавать питание на Аrduino uno. В нем есть небольшой недостаток, заключающийся в том, что вам потребуется как-то преобразовать входное напряжение к 5 вольтам, но решений данной задачи уже множество, и все их вы можете найти в открытом доступе на нашем сайте. Данный вход находится на 27 пине.

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

Удобство такого решения и объяснять не стоит. Внешние источники питания дополнительно стабилизируются при помощи LM1117IMPX-5.0 с 5В напряжения, а при подключении к компьютеру система начинает использовать диод Шоттки, чтобы регулировать поступающий ток (см. схему выше).

Характеристики питания для Ардуино

Итак, мы оговорили все способы, как подключить питание на Аrduino, и затронули характеристики последнего, которые необходимы, чтобы плата не сгорела и могла исправно выполнять поставленные задачи. Заранее стоит оговориться, что последнее, в принципе, маловероятно, так как, несмотря на то, что питание Ардуино от Ардуино может иметь различные характеристики, микроконтроллер всё же более строго относится к нему, чем это сделала бы какая-то «болванка», которой вы бы захотели его заменить.

Читайте также:  Юридические способы реализации права

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

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

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

Из-за этого и тяжело точно сказать, какое питание на Аrduino mini pro лучше подключать, по силе тока. Дело в том, что каждая мелочь, которую вы используете в проекте, потребляет определённое ограниченное количество электричества, зачастую указываемого в мА, поэтому здесь все расчеты исключительно индивидуальны и зависят от конкретного случая.

Схема подключения светодиода к Ардуино Нано

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

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

Подключение питания

Подключать всё это можно непосредственно к пинам или, в случае тестирования системы, просто воспользоваться usb-портом. Система сама рассчитает, сколько ей необходимо, и внутренними силами преобразует входное напряжение к подходящим значениям.

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

Источник

Arduino Nano: распиновка, схема подключения и программирование

Плата Arduino Nano — аналог флагманской Uno в миниатюрном размере. На ней предусмотрено всё необходимое для удобной работы с микроконтроллером: 14 цифровых входов/выходов (6 из них могут использоваться в качестве ШИМ-выходов), 6 аналоговых входов, кварцевый резонатор на 16 МГц, разъём Mini-USB, разъём питания, разъём для внутрисхемного программирования (ICSP) и кнопка сброса.

Видеообзор

Подключение и настройка

Для запуска платформы скачайте и установите на компьютер интегрированную среду разработки Arduino IDE.

При выборе платформы выбирайте Arduino Nano.

Если всё получилось — можете смело переходить к экспериментам.

Элементы платы

Микроконтроллер ATmega328P

Сердцем платформы Arduino Nano является 8-битный микроконтроллер семейства AVR — ATmega328P с тактовой частотой 16 МГц. Контроллер предоставляет 32 КБ Flash-памяти для хранения прошивки, 2 КБ оперативной памяти SRAM и 1 КБ энергонезависимой памяти EEPROM для хранения данных.

Микросхема FT232R

Микросхема FTDI FT232R обеспечивает связь микроконтроллера ATmega328P с USB-портом компьютера. При подключении к компьютеру Nano определяется как виртуальный COM-порт.

USB-UART преобразователь общается с микроконтроллером ATmega328P по интерфейсу UART через пины 0(RX) и 1(TX) . Рекомендуем не использовать эти контакты в своём проекте.

Светодиодная индикация

Имя светодиода Назначение
RX и TX Мигают при обмене данными между Arduino Nano и ПК.
L Пользовательский светодиод подключённый к 13 пину микроконтроллера. При высоком уровне светодиод включается, при низком – выключается.
ON Наличие питания на Arduino Nano.

Разъём Mini-USB

Разъём Mini-USB предназначен для прошивки платформы с помощью компьютера.

Регулятор напряжения 5 В

Линейный понижающий регулятор напряжения LM1117MPX-5.0 с выходом 5 вольт обеспечивает питание микроконтроллера ATmega328P и другой логики платформы. Максимальный выходной ток составляет 800 мА.

ICSP-разъём для ATmega328

ICSP-разъём предназначен для загрузки прошивки в микроконтроллер ATmega328 через программатор.

Также через контакты ICSP Nano общается с платами расширения по интерфейсу SPI.

Источник

Питание Ардуино

В данной статье мы рассмотрим вопросы питания Ардуино и способы снижения потребления электроэнергии микроконтроллера на примере этой платформы. Тема становится актуальной в тех проектах, где устройство 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:

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

Для работы со сторожевым таймером понадобятся две функции – 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 различных способа снижения энергопотребления микроконтроллером во время его работы. Пробуйте комбинировать данные способы в своих проектах для достижения максимальной эффективности ваших устройств. Удачи!

Источник

Читайте также:  Способы использования денежного дохода
Оцените статью
Разные способы