Arduino uno блок питания какой
Arduino Uno контроллер построен на ATmega328 (техническое описание, pdf). Платформа имеет 14 цифровых вход/выходов (6 из которых могут использоваться как выходы ШИМ), 6 аналоговых входов, кварцевый генератор 16 МГц, разъем USB, силовой разъем, разъем ICSP и кнопку перезагрузки. Для работы необходимо подключить платформу к компьютеру посредством кабеля USB, либо подать питание при помощи адаптера AC/DC или батареи.
В отличие от всех предыдущих плат, использовавших FTDI USB микроконтроллер для связи по USB, новый Ардуино Uno использует микроконтроллер ATmega8U2 (техническое описание, pdf).
"Uno" переводится как один с итальянского и разработчики тем самым намекают на грядущий выход Arduino 1.0. Новая плата стала флагманом линейки плат Ардуино. Для сравнения с предыдущими версиями можно обратиться к полному списку плат Arduino.
Характеристики
Схема и исходные данные
Питание
Arduino Uno может получать питание через подключение USB или от внешнего источника питания. Источник питания выбирается автоматически.
Внешнее питание (не USB) может подаваться через преобразователь напряжения AC/DC (блок питания) или аккумуляторной батареей. Преобразователь напряжения подключается посредством разъема 2.1 мм с центральным положительным полюсом. Провода от батареи подключаются к выводам Gnd и Vin разъема питания.
Платформа может работать при внешнем питании от 6 В до 20 В. При напряжении питания ниже 7 В, вывод 5V может выдавать менее 5 В, при этом платформа может работать нестабильно. При использовании напряжения выше 12 В регулятор напряжения может перегреться и повредить плату. Рекомендуемый диапазон от 7 В до 12 В.
Память
Микроконтроллер ATmega328 располагает 32 кБ флэш памяти, из которых 0.5 кБ используется для хранения загрузчика, а также 2 кБ ОЗУ (SRAM) и 1 Кб EEPROM.(которая читается и записывается с помощью библиотеки EEPROM).
Каждый из 14 цифровых выводов Uno может настроен как вход или выход, используя функции pinMode(), digitalWrite(), и digitalRead(), . Выводы работают при напряжении 5 В. Каждый вывод имеет нагрузочный резистор (по умолчанию отключен) 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:
- Последовательная шина: 0 (RX) и 1 (TX). Выводы используются для получения (RX) и передачи (TX) данных TTL. Данные выводы подключены к соответствующим выводам микросхемы последовательной шины ATmega8U2 USB-to-TTL.
- Внешнее прерывание: 2 и 3. Данные выводы могут быть сконфигурированы на вызов прерывания либо на младшем значении, либо на переднем или заднем фронте, или при изменении значения. Подробная информация находится в описании функции attachInterrupt().
- ШИМ: 3, 5, 6, 9, 10, и 11. Любой из выводов обеспечивает ШИМ с разрешением 8 бит при помощи функции analogWrite().
- SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Посредством данных выводов осуществляется связь SPI, для чего используется библиотека SPI.
- LED: 13. Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит.
На платформе Uno установлены 6 аналоговых входов (обозначенных как A0 .. A5), каждый разрешением 10 бит (т.е. может принимать 1024 различных значения). Стандартно выводы имеют диапазон измерения до 5 В относительно земли, тем не менее имеется возможность изменить верхний предел посредством вывода AREF и функции analogReference(). Некоторые выводы имеют дополнительные функции:
- I2C: 4 (SDA) и 5 (SCL). Посредством выводов осуществляется связь I2C (TWI), для создания которой используется библиотека Wire.
Дополнительная пара выводов платформы:
- AREF. Опорное напряжение для аналоговых входов. Используется с функцией analogReference().
- Reset. Низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino.
Обратите внимание на соединение между выводами Arduino и портами ATmega328.
Связь
На платформе Arduino Uno установлено несколько устройств для осуществления связи с компьютером, другими устройствами Arduino или микроконтроллерами. ATmega328 поддерживают последовательный интерфейс UART TTL (5 В), осуществляемый выводами 0 (RX) и 1 (TX). Установленная на плате микросхема ATmega8U2 направляет данный интерфейс через USB, программы на стороне компьютера "общаются" с платой через виртуальный COM порт. Прошивка ATmega8U2 использует стандартные драйвера USB COM, никаких стороних драйверов не требуется, но на Windows для подключения потребуется файл ArduinoUNO.inf. Мониторинг последовательной шины (Serial Monitor) программы Arduino позволяет посылать и получать текстовые данные при подключении к платформе. Светодиоды RX и TX на платформе будут мигать при передаче данных через микросхему FTDI или USB подключение (но не при использовании последовательной передачи через выводы 0 и 1).
Библиотекой SoftwareSerial возможно создать последовательную передачу данных через любой из цифровых выводов Uno.
ATmega328 поддерживает интерфейсы I2C (TWI) и SPI. В Arduino включена библиотека Wire для удобства использования шины I2C.
Программирование
Платформа программируется посредством ПО Arduino. Из меню Tools > Board выбирается «Arduino Uno» (согласно установленному микроконтроллеру). Подробная информация находится в справочнике и инструкциях.
Микроконтроллер ATmega328 поставляется с записанным загрузчиком, облегчающим запись новых программ без использования внешних программаторов. Связь осуществляется оригинальным протоколом STK500.
Имеется возможность не использовать загрузчик и запрограммировать микроконтроллер через выводы ICSP (внутрисхемное программирование). Подробная информация находится в данной инструкции.
Автоматическая (программная) перезагрузка
Uno разработана таким образом, чтобы перед записью нового кода перезагрузка осуществлялась самой программой Arduino на компьютере, а не нажатием кнопки на платформе. Одна из линий DTR микросхемы ATmega8U2, управляющих потоком данных (DTR), подключена к выводу перезагрузки микроконтроллеру ATmega328 через 100 нФ конденсатор. Активация данной линии, т.е. подача сигнала низкого уровня, перезагружает микроконтроллер. Программа Arduino, используя данную функцию, загружает код одним нажатием кнопки Upload в самой среде программирования. Подача сигнала низкого уровня по линии DTR скоординирована с началом записи кода, что сокращает таймаут загрузчика.
Функция имеет еще одно применение. Перезагрузка Uno происходит каждый раз при подключении к программе Arduino на компьютере с ОС Mac X или Linux (через USB). Следующие полсекунды после перезагрузки работает загрузчик. Во время программирования происходит задержка нескольких первых байтов кода во избежание получения платформой некорректных данных (всех, кроме кода новой программы). Если производится разовая отладка скетча, записанного в платформу, или ввод каких-либо других данных при первом запуске, необходимо убедиться, что программа на компьютере ожидает в течение секунды перед передачей данных.
На Uno имеется возможность отключить линию автоматической перезагрузки разрывом соответствующей линии. Контакты микросхем с обоих концов линии могут быть соединены с целью восстановления. Линия маркирована «RESET-EN». Отключить автоматическую перезагрузку также возможно подключив резистор 110 Ом между источником 5 В и данной линией.
Токовая защита разъема USB
В Arduino Uno встроен самовостанавливающийся предохранитель (автомат), защищающий порт USB компьютера от токов короткого замыкания и сверхтоков. Хотя практически все компьютеры имеют подобную защиту, тем не менее, данный предохранитель обеспечивает дополнительный барьер. Предохранитель срабатыват при прохождении тока более 500 мА через USB порт и размыкает цепь до тех пока нормальные значения токов не будут востановлены.
Физические характеристики
Длина и ширина печатной платы Uno составляют 6.9 и 5.3 см соответственно. Разъем USB и силовой разъем выходят за границы данных размеров. Четыре отверстия в плате позволяют закрепить ее на поверхности. Расстояние между цифровыми выводами 7 и 8 равняется 0,4 см, хотя между другими выводами оно составляет 0,25 см.
Питание электронного компонента или Ардуино-модуля всегда состоит из двух проводов:
- “Плюс”: +5V или +3.3V. Может быть подписан на плате как 5V, 3.3V, 3V3, Vin, VCC, +. Провод на схеме изображается красным цветом.
- “Минус”: общий провод, 0V. Может быть подписан на плате как GND, COM, G, -. Провод на схеме изображается синим или чёрным цветом.
Несколько моментов о питании:
- Нельзя превышать напряжение питания электронного компонента, иначе он сгорит. То есть провод с 5V нельзя подключать на пин, на котором написано 3V. А вот наоборот – можно: большинство модулей с питанием 5V будут работать от 3.3V. Это будет актуально при работе с платами на базе esp8266, которая работает от 3.3V.
- Подключать питание нужно очень внимательно: минус соединяется с минусом, а плюс – с плюсом. Если перепутать провода – в 99% случаев модуль сгорит, защиту на них делают редко.
- Даже если напряжение питания у модулей разное, выводы GND всех компонентов схемы должны быть соединены вместе, потому что сигналы “ходят” относительно нулевого провода .
- В Ардуино-проекте мы чаще всего используем макетку и подключаем питание всех модулей к выводам питания платы Arduino. Если в проекте используется несколько модулей, то отверстий для проводов питания может не хватить! Именно для этого по краям макетки сделаны длинные линии контактов с подписями плюс и минус: можно подключить питание от платы к ним, и уже от них разводить на остальные компоненты. Это будет называться шиной питания :
Внимание! Перед сборкой схемы или изменением существующей обязательно отключайте питание: USB кабель от Arduino и/или внешний источник. Случайное касание платы проводом может привести к выходу компонента из строя!
Выключение компонентов микроконтроллера
Этот метод подойдет в случаях, когда микроконтроллер длительное время должен выполнять ряд определенных действий с одной и той же периферией.
Любой микроконтроллер представляет из себя набор различных модулей, и для всех модулей предусмотрена возможность включения и отключения питания.
Для того чтобы воспользоваться данным методом необходимо подключить библиотеку 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 порт, а всю остальную периферию микроконтроллера отключим:
Шаг 1
Подключите плату к компьютеру по USB. Для коммуникации используйте кабель USB (A — B).
Шаг 2
Установите и настройте интегрированную среду разработки Arduino IDE.
Микроконтроллер ATmega16U2
Микроконтроллер ATmega328P не содержит USB интерфейса, поэтому для прошивки и коммуникации с ПК на плате присутствует дополнительный микроконтроллер ATmega16U2 с прошивкой USB-UART преобразователя. При подключении к ПК Arduino Uno определяется как виртуальный COM-порт.
Микроконтроллер ATmega328P общается с ПК через сопроцессор ATmega16U2 по интерфейсу UART используя сигналы RX и TX , которые параллельно выведены на контакты 0 и 1 платы Uno. Во время прошивки и отладки программы, не используйте эти пины в своём проекте.
Порт USB Type-B
Разъём USB Type-B предназначен для прошивки и питания платформы Arduino. Для подключения к ПК понадобится кабель USB (A — B).
Автономное питание
Бывает, что нужно обеспечить автономное питание проекта, т.е. вдали от розетки, давайте рассмотрим варианты. Также для этих целей пригодится урок по энергосбережению и режимам сна микроконтроллера.
- Питание в порт USB:
- Самый обыкновенный Powerbank, максимальный ток – 500 мА. Напряжение на пине 5V и высокий уровень GPIO в этом случае будет равен ~4.7V. Внимание! У большинства Powerbank’ов питание отключается при нагрузке меньше 200 мА. Некоторые банки можно перевести в режим “слабой зарядки”, тогда они будут питать схему.
- Любой блок питания/зарядник от ноута с напряжением 7.. 18 Вольт
- 9V батарейка “Крона” – плохой, но рабочий вариант. Ёмкость кроны крайне мала.
- Сборка из трёх литиевых аккумуляторов: напряжение 12.6.. 9V в процессе разряда.
- Сборка из двух литиевых аккумуляторов: напряжение 8.4.. 6V в процессе разряда.
- Энергосбережение – не очень выгодный вариант, т.к. стабилизатор потребляет небольшой, но всё же ток.
- Для стабильных 5V на выходе – литиевый аккумулятор и повышающий до 5V модуль. У таких модулей обычно запас по току 2А, также модуль потребляет “в холостом режиме” – плохое энергосбережение.
- Литиевый аккумулятор – напряжение на пине 5V и GPIO будет 4.2-3.5V, некоторые модули будут работать, некоторые – нет. Работа МК от напряжения ниже 4V не гарантируется, у меня работало в целом стабильно до 3.5V, ниже уже может повиснуть. Энергосбережение – отличное.
- Пальчиковые батарейки (ААА или АА) – хороший вариант, 3 штуки дадут 4.5-3V, что граничит с риском зависнуть. 4 штуки – очень хорошо. Новые батарейки дадут 6V, что является максимальным напряжением для МК AVR и при желании можно так работать.
- Пальчиковые Ni-Mh аккумуляторы – отличный вариант, смело можно ставить 4 штуки, они обеспечат нужное напряжение на всём цикле разряда (до 4V). Также имеют хороший запас по току, можно даже адресную ленту питать.
- Платы с кварцем (тактовым генератором) на 8 МГц позволяют питать схему от низкого напряжения (2.5V, как мы обсуждали выше), отлично подойдут те же батарейки/аккумуляторы, также маломощные проекты можно питать от литиевой таблетки (3.2-2.5V в процессе разряда).
- Максимальный выходной ток с пина 5V ограничен током источника питания.
ICSP-разъём ATmega16U2
ICSP-разъём предназначен для программирования микроконтроллера ATmega16U2. А подробности распиновки читайте в соответствующем разделе.
Порты ввода/вывода
Пины общего назначения: 20 пинов: 0 – 19
Логический уровень единицы — 5 В, нуля — 0 В. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.АЦП: 6 пинов: 14 – 19 / A0 – A5
Позволяет представить аналоговое напряжение в виде цифровом виде. Разрядность АЦП не меняется и установлена в 10 бит. Диапазон входного напряжения от 0 до 5 В, при подаче большего напряжения микроконтроллер может выйти из строя.ШИМ: 6 пинов: 3 , 5 , 6 и 9 – 11
Позволяет выводить аналоговое напряжение в виде ШИМ-сигнала из цифровых значений. Разрядность ШИМ не меняется и установлена в 8 бит.Serial: пины TX1/1 и RX1/0 . Контакты также соединены с соответствующими выводами сопроцессора ATmega16U2 для общения платы по USB. Во время прошивки и отладки программы через ПК, не используйте эти пины в своём проекте.
Питание напрямую
На всех рассмотренных платах есть вывод питания, который идёт напрямую на питание микроконтроллера (сюда же приходит выход от стабилизатора). Перед скобками указано идеальное напряжение питания, в скобках – допустимый диапазон.
Таким образом Arduino Nano можно питать от блока питания на 5V вместе с остальной схемой, это очень удобно. Платы NodeMCU и Wemos – уже не очень удобно, блок питания на 3.3V найти довольно непросто. Зато отлично подходят две пальчиковых батарейки или аккумулятора.
Пример проекта с питанием напрямую (зелёная плата справа вверху – Micro USB), но на фото плата питается от бортового USB для прошивки.
Важно! На момент подключения к плате USB кабеля для прошивки внешнее питание должно быть подключено, иначе через плату может пойти большой ток!
Помехи и защита от них
Если в одной цепи питания с Ардуино и другими микросхемами стоят мощные потребители, такие как сервоприводы, адресные светодиодные ленты, модули реле и прочее, на линии питания могут возникать помехи. Они могут приводить к сильным шумам измерений с АЦП, дергать прерывания и даже менять состояния пинов, нарушая связь по различным интерфейсам связи и внося ошибки в показания датчиков. Более сильные пульсации и просадки напряжения иногда могут привести к перезагрузке контроллера или его зависанию.
Более того, помеха может прийти откуда не ждали – по воздуху, например от электродвигателя или любой другой катушки. “Большие дяди” в реальных промышленных устройствах делают очень много для защиты от помех, этому посвящены целые книги и диссертации. Мы с вами рассмотрим самое простое, что можно сделать дома на коленке.
- Питать логическую часть (Ардуино, слаботочные датчики и модули) от отдельного малошумящего блока питания 5V, то есть разделить питание логической и силовой частей, а ещё лучше питаться в пин Vin от блока питания на 7-12V, так как линейный стабилизатор даёт очень качественное напряжение.
- Поставить конденсаторы по питанию платы, максимально близко к пинам 5V/3V и GND: электролит 6.3V 100-470 uF (мкФ, ёмкость зависит от качества питания: при сильных просадках напряжения ставить ёмкость больше, при небольших помехах хватит и 10-47 мкФ) и керамический на 0.1-1 uF. Это сгладит помехи даже от сервоприводов;
- У “выносных” на проводах элементах системы (кнопки, крутилки, датчики) скручивать провода в косичку, преимущественно с землёй. А ещё лучше использовать экранированные провода, экран подключать на GND схемы. Таким образом защищаемся от электромагнитных наводок;
- Металлический и заземленный корпус устройства (или просто обернутый фольгой), на который заземлены все компоненты схемы – залог полного отсутствия помех и наводок по воздуху.
Ещё лучше с фильтрацией помех справится LC фильтр, состоящий из индуктивности и конденсатора. Индуктивность нужно брать с номиналом в районе 100-300 мкГн и с током насыщения больше, чем ток нагрузки после фильтра. Конденсатор – электролит с ёмкостью 100-1000 uF в зависимости опять же от тока потребления нагрузки после фильтра. Подключается вот так, чем ближе к нагрузке – тем лучше:
Подробнее о расчёте фильтров можно почитать здесь.
Микроконтроллер ATmega328P
32 КБ Flash-памяти, из которых 0,5 КБ используются загрузчиком, который позволяет прошивать Uno с обычного компьютера через USB. Flash-память постоянна и её предназначение — хранение программ и сопутствующих статичных ресурсов.
2 КБ RAM-памяти, которые предназначены для хранения временных данных, например переменных программы. По сути, это оперативная память платформы. RAM-память энергозависимая, при выключении питания все данные сотрутся.
1 КБ энергонезависимой EEPROM-памяти для долговременного хранения данных, которые не стираются при выключении контроллера. По своему назначению это аналог жёсткого диска для Uno.
Элементы платы
ICSP-разъём ATmega328P
ICSP-разъём выполняет две полезные функции:
Используется для передачи сигнальных пинов интерфейса SPI при подключении Arduino Shield’ов или других плат расширения. Линии ICSP-разъёма также продублированы на цифровых пинах SS/10 , MOSI/11 , MISO/12 и SCK/13 .
Предназначен для загрузки прошивки в микроконтроллер ATmega328P через внешний программатор. Одна из таких прошивок — Bootloader для Arduino Uno, который позволяет прошивать платформу по USB.
Что-то пошло не так?
Светодиодная индикация
Имя светодиода Назначение ON Индикатор питания платформы. L Пользовательский светодиод на 13 пине микроконтроллера. Используйте определение LED_BUILTIN для работы со светодиодом. При задании значения высокого уровня светодиод включается, при низком – выключается. RX и TX Мигают при прошивке и обмене данными между Uno и компьютером. А также при использовании пинов 0 и 1 . Ток потребления схемы
Все знают закон Ома, но не все умеют им пользоваться. Применительно к источникам питания и потребителям он работает так: потребитель берёт такой ток, какой ему нужен для работы, он называется ток потребления:
- Сервопривод: ~500 мА во время движения
- Реле: ~60 мА при активации
- Датчики-модули ~1-10 мА
- Мотор: ~500 мА
- Плата Arduino: ~20 мА
- Плата Wemos: ~50 мА
- Дисплеи: ~40 мА
При подключении в схему нескольких компонентов их ток потребления суммируется.
Источник питания в свою очередь имеет такой параметр как максимальный ток, который он может отдать без повреждений. Суммарный ток потребления компонентов схемы должен быть меньше, чем максимальный ток источника питания, иначе источнику питания будет “тяжело”. Также это означает, что можно спокойно подключать слабенький датчик хоть к 100 Амперному источнику питания, он возьмёт столько, сколько ему надо. Остальное останется “с запасом”.
Есть несколько способов питать плату Arduino и схему на её основе, у каждого есть свои плюсы, минусы и ограничения.
Power-Down mode (режим глубокого сна)
Этот режим обеспечивает максимальное энергосбережение за счет отключения тактирования всех узлов микроконтроллера, работающих в синхронном режиме. В рабочем состоянии остаются только сторожевой таймер, система обработки внешних прерываний и блок сравнения адреса модуля TWI. Пробуждение из данного режима возможно в результате возникновения следующих прерываний: от сторожевого таймера, по совпадению адреса от интерфейса TWI, прерывание изменения уровня, или внешнего прерывания INT0 или INT1.
Понижающий регулятор 5V
Понижающий линейный преобразователь NCP1117ST50T3G обеспечивает питание микроконтроллера и другой логики платы при подключении питания через разъём питания DC или пин Vin. Диапазон входного напряжения от 7 до 12 вольт. Выходное напряжение 5 В с максимальным выходным током 1 А.
Питание “мощных” схем
Резюмируя всё написанное выше, рассмотрим варианты питания проектов с большим потреблением тока на примере Arduino Nano и напряжения 5V. Точно так же по аналогии можно работать и с 3.3V платами на базе esp8266 (NodeMCU, Wemos).
Питать мощный проект (светодиоды, двигатели, нагреватели) от 5V можно так: Arduino и потребитель питаются вместе от 5V источника питания (провода к нагрузке можно сделать толще, например если это светодиодная лента):
Пример: питание нескольких сервоприводов:
Питать мощный потребитель (выше 500 мА) от USB через плату нельзя, там стоит диод, да и дорожки питания слишком тонкие:
Что делать, если всё-таки хочется питать проект от USB, например от powerbank’а? Всё очень просто, режем кабель и подключаем:
Важно! На момент подключения к плате USB кабеля для прошивки внешнее питание должно быть подключено, иначе через плату может пойти большой ток!
Можно защититься от этой опасности, поставив диод на питание Arduino. Да, в этом случае питание просядет до ~4.7V, но можно будет безопасно загружать прошивку:
Но если мы хотим питать именно 12V нагрузку, то проблем никаких нет: сама плата Arduino потребляет около 20 мА, и спокойно будет работать от бортового стабилизатора. А нагрузку запитаем напрямую от блока питания:
Power Save mode (режим энергосбережения)
Отличается от режима Power-Down тем, что таймер/счетчик 2 продолжает свою работу как в синхронном, так и в асинхронном режиме. Пробуждение из этого режима возможно теми же прерываниями что и из режима Power-Down, а также прерыванием от таймера/счетчика 2.
Распиновка
Питание через стабилизатор
На большинстве плат Arduino стоит линейный стабилизатор, позволяющий питать плату и схему от более высокого напряжения. Стабилизатор обеспечивает качественное питание, компенсируя помехи, пульсации и изменение входного напряжения. Рассмотрим популярные платы Arduino Nano, NodeMCU и Wemos Mini. На схемах ниже они питаются от внешнего источника, а остальные компоненты – от выхода 5 или 3.3V с платы:
- На Nano и NodeMCU стоит стабилизатор AMS1117, который позволяет снимать максимум до 2А при 7V и около 500 мА при 12V входного напряжения. Напряжение подаётся на пин Vin.
- На плате Wemos стоит слабый стабилизатор, причём у разных производителей разный, с максимальным напряжением от 5.5 до 7V и максимальным током до 500 мА. Лучше не экспериментировать и не подавать на него больше 5V. Напряжение подаётся на пин 5V.
Питание через стабилизатор возможно только в том случае, от платы не питаются мощные потребители тока, такие как сервоприводы, адресные светодиодные ленты, моторчики и прочее. Что можно: датчики, модули, дисплеи, реле (не более 3 одновременно в активном состоянии), одиночные светодиоды. Для проектов с мощной нагрузкой нужно использовать другое подключение.
Использование библиотеки Narcoleptic
Эта библиотека позволяет вводить микроконтроллер в режим сна на определенное время с помощью одной функции – Narcoleptic.delay();. Аргументом данной функции является время в миллисекундах – используется точно так же как и стандартная функция delay();.
Рассмотрим ту же программу что и ранее, но с использованием данной библиотеки:
Как видно, код стал значительно проще, и в случае, когда нужны простые паузы между полезными действиями – эта библиотека является самым простым и удобным решением.
Использование режимов энергосбережения.
Все микроконтроллеры AVR на которых основаны большинство плат Arduino поддерживают различные режимы энергосбережения. Рассмотрим такие режимы для микроконтроллера ATmega328P, на котором основаны платы Arduino UNO, Arduino Nano, Arduino Pro Mini и некоторые другие:
IDLE mode (режим ожидания)
В данном режиме приостанавливается только работа процессора, в то время как остальная периферия (интерфейсы ввода-вывода, таймеры, счетчики, компараторы, система прерываний) продолжает работать. Данный режим обеспечивает самое низкое снижение потребления энергии, но его преимущество в очень быстрой реакции на события, приводящие к пробуждению микроконтроллера. Выход из режима IDLE возможен как по внешнему, так и по внутреннему прерыванию.
Пины питания
5V: Выходной пин от стабилизатора напряжения с выходом 5 вольт и максимальным током 1 А. Регулятор обеспечивает питание микроконтроллера и другой обвязки платы.
IOREF: Вывод предоставляет платам расширения информацию о рабочем напряжении микроконтроллера. В нашем случае рабочее напряжение платформы 5 вольт.
AREF: Пин для подключения внешнего опорного напряжения АЦП относительно которого происходят аналоговые измерения при использовании функции analogReference() с параметром «EXTERNAL».
Пример работы
В качестве примера повторим первый эксперимент «Маячок» из набора Матрёшка. На плате уже есть встроенный пользовательский светодиод L , подключенный к 13 пину микроконтроллера.
После загрузки программы встроенный светодиод L начнёт мигать раз в секунду.
Это значит, всё получилось, и можно смело переходить к другим экспериментам на Ардуино.
Подключение и настройка
Видеообзор
Разъём питания DC
Коннектор DC Barrel Jack для подключения внешнего источника напряжения в диапазоне от 7 до 12 вольт.
Варианты питания для Arduino UNO
Первый - кабелем от usb порта компьютера:
Такое подключение не только запитает Ардуинку, но и пригодится для заливки скетчей и библиотек. Если вы купили плату без кабеля, то такой кабель часто используется в принтерах, сканерах или МФУ - называется USB A-B.
Второй - кабель и зарядка:
Берем этот же кабель и зарядное устройство от мобильного телефона с usb выходом и выходным напряжением 5V. И подключаем через розетку.Третий - блок питания от чего нибудь:
Возможно у вас есть ненужный (или нужный) блок питания от какой либо техники, который выдает напряжение от 5 до 12 вольт и от 300 до 1000 миллиампер на выходе. У себя нашел БП уже не помню от чего, он дает 9V и 500ma. Плюс еще на БП должен быть штекер нужного размера, если не подходит, тогда ищите нужного размера и перепаивайте. Найти его можно в интернете по запросу (штекер 5.5x2.5 мм)
Но прежде чем подключать, советую проверить выходящее напряжение мультиметром (на всякий случай). У меня один БП вместо написанных 9V выдавал почти 15.Четвертый - от батареек:
Сначала сделаем автономное питание от батарейки типа Крона.
Для этого варианта понадобится переходник с кроны на разъем Arduino.Его можно купить, или сделать самим. Что бы его сделать, понадобится дополнительная батарейка донор крона, и кабель с нужным разъемом.
Для начала нужно извлечь из донора контакты, разогнув сверху металлический корпус кроны.
Припаиваем заранее найденный или купленный провод или штекер к снятым контактам. При пайке главное не ошибиться с плюсом и минусом. Что касается штекера который подключается к Ардуино, то внутри находится плюс, а снаружи минус.
Припаивание проводов к снятой площадке с кроны происходит зеркально, там где у кроны плюс, припаиваем минус, а где минус паяем плюс. В итоге должно получится вот так.
Еще можно запитать от пальчиковых батареек, используя вот такие блоки. Их можно вытащить например из сломанной машинки на радиоуправлении, или купить на рынке.
Можно еще подать питание на пины ардуино, но об этом писать не буду. Так как мое мнение что таким способом пользуются довольно редко.
В данной статье мы рассмотрим вопросы питания Ардуино и способы снижения потребления электроэнергии микроконтроллера на примере этой платформы. Тема становится актуальной в тех проектах, где устройство Arduino питается от аккумулятора, и одним из важных параметров является время автономной работы, а также для полностью автономных устройств, питающихся, например, от солнечных панелей.
Питание от USB
Питание от USB – самый плохой способ питания Ардуино-проекта. Почему? По линии питания +5V от USB стоит диод, выполняющий защитную функцию: он защищает порт USB компьютера от высокого потребления тока компонентами схемы и от случайного короткого замыкания (КЗ). КЗ продолжительностью меньше секунды не успеет сильно навредить диоду и всё может обойтись, но продолжительное замыкание превращает диод в плавкий предохранитель, выпускающий облако синего дыма и спасающий порт компьютера. После этого плата перестаёт определяться компьютером и диод нужно заменить.
К слову, платы от производителя Robotdyn имеют самовосстанавливающийся предохранитель вместо такого костыля с диодом-смертником.
Слаботочный диод имеет ещё одну неприятную особенность: на нём падает напряжение, причем чем больше ток потребления схемы, тем сильнее. По USB нам приходит ровно 5V, после диода остаётся ~4.7V. Чем это плохо:
- Измерения с аналоговых пинов будут неточными.
- Некоторые железки чувствительны к напряжению питания, например LCD дисплеи: при питании от 5V они яркие и чёткие, при 4.7V – уже заметно теряют яркость и контраст. Если подвигать сервоприводом или включить реле – на диоде упадет ещё большее напряжение и дисплей ощутимо мигнёт.
- При более мощных нагрузках (выше 500-600 мА) микроконтроллер перезапустится, так как напряжение упадет ниже критического порога.
Питание плат 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;
- выключение компонентов микроконтроллера;
- снижение тактовой частоты;
Главный Глупый Вопрос
У новичков в электронике, которые не знают закон Ома, очень часто возникают вопросы вида: “а каким током можно питать Ардуино“, “какой ток можно подать на Ардуино“, “не сгорит ли моя Ардуина от от блока питания 12V 10A“, “сколько Ампер можно подавать на Arduino” и прочую чушь. Запомните: вы не можете подать Амперы, вы можете подать только Вольты, а устройство возьмёт столько Ампер, сколько ему нужно. В случае с Arduino – голая плата возьмёт 20-22 мА, хоть от пина 5V, хоть от Vin. Ток, который указан на блоке питания, это максимальный ток, который БП может отдать без повреждения/перегрева/просадки напряжения. Беспокоиться стоит не об Arduino, а об остальном железе, которое стоит в схеме и питается от блока питания, а также о самом блоке питания, который может не вывезти вашу нагрузку (мотор, светодиоды, обогреватель). Общий ток потребления компонентов не должен превышать возможностей источника питания, вот в чём дело. А будь блок питания хоть на 200 Ампер – компоненты возьмут ровно столько, сколько им нужно, и у вас останется “запас по току” для подключения других (примечание: некоторые мощные, но “умные” блоки питания не будут питать слабую Arduino, т.к. она потребляет слишком маленький ток). Если устройство питается напряжением, то запомните про максимальный ток источника питания очень простую мысль: кашу маслом не испортишь.
В этой статье расскажу о нескольких простых способах как можно запитать (включить) Arduino UNO практически без денежных затрат. Уверен на 95% что у вас найдется все необходимое для этого дома, или у ваших соседей, в этом случае уверенность возрастает до 99% ))). Рекомендованное напряжение для питания Ардуино, от 7-12 вольт. Так как при напряжении менее 7 вольт возможна не стабильная работа платы, а более 12 возможен перегрев преобразователя напряжения и выход его из строя.
На моей практике питания 5V вполне достаточно для работы простейших схем и небольшого количества датчиков. Подключал одновременно дисплей 5110 и датчик DHT11, и они прекрасно себя чувствовали от 5-ти вольт. Для того чтобы поиграться и изучить принцип работы этого достаточно.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
Рассмотрим пример программы, в котором будем просто моргать встроенным светодиодом с высокой энергоэффективностью:
Как видно, при каждом входе в режим сна, необходимо выполнять по 4 действия – включать таймер и устанавливать время его срабатывания, разрешать прерывание, входить в режим сна, и после выхода из него – отключать таймер. Кроме того, нет возможности устанавливать свои интервалы срабатывания таймера. Оба этих недостатка можно устранить если использовать библиотеку Narcoleptic.
Arduino Nano, пин 3V3
У Arduino Nano есть ещё один стабилизатор, выход с него – пин 3v3 с напряжением 3.3V. От этого пина можно питать модули, требующие питания 3.3V. Максимальный ток, который можно отсюда снять, зависит от стабилизатора (разные производители ставят разный), в основном это 100-200 мА, но лучше не снимать более 50 мА. На платах Nano от производителя Robotdyn стоит более мощный стабилизатор AMS1117-3.3, с которого можно снять 800 мА!
Кнопка сброса
Кнопка предназначена для ручного сброса прошивки — аналог кнопки RESET обычного компьютера.
Снижение тактовой частоты.
Изменение предделителя тактирования производится с помощью функции setClockPrescaler(); имеющей один аргумент, отвечающий за величину предделителя. Существует 9 констант в качестве аргументов для данной функции:
В зависимости от аргумента, данная функция снижает тактовую частоту в несколько раз (CLOCK_PRESCALER_16 означает что базовая тактовая частота микроконтроллера будет снижена в 16 раз).
Перед использованием данной функции, необходимо отметить, что правильность работы всей периферии сильно зависит от тактовой частоты, и при ее снижении – большинство функций микроконтроллера, завязанные на времени, будут работать неправильно (таймеры, PWM, USART, I2C и т.д.). Кроме того неправильно будут работать стандартные функции millis(); и delay();. Но данная библиотека предоставляет замену этим функциям в виде функций trueMillis(); и trueDelay();.
Рассмотрим вариант применения снижения тактовой частоты на примере работы с Serial интерфейсом:
Как видно, перед тем как использовать Serial порт, необходимо сначала повысить частоту тактирования до стандартной, и только потом отправлять данные. То же самое касается и приема данных – необходимо позаботиться о возвращении стандартной частоты тактирования еще до того, как данные будут отправлены на наш микроконтроллер, иначе они будут приняты неверно. То же касается и остальной периферии, завязанной на временных промежутках.
Таким образом, мы рассмотрели 4 различных способа снижения энергопотребления микроконтроллером во время его работы. Пробуйте комбинировать данные способы в своих проектах для достижения максимальной эффективности ваших устройств. Удачи!
Arduino Uno — флагманская платформа для разработки на языке программирования С++.
Uno выполнена на микроконтроллере ATmega328P с тактовой частотой 16 МГц. На плате предусмотрены 20 портов входа-выхода для подключения внешних устройств, например плат расширения или датчиков.
Понижающий регулятор 3V3
Понижающий линейный преобразователь LP2985-33DBVR обеспечивает напряжение на пине 3V3 . Регулятор принимает входное напряжение от линии 5 вольт и выдаёт напряжение 3,3 В с максимальным выходным током 150 мА.
Читайте также: