Плата Arduino Uno описание, схема, распиновка

Содержание

Arduino Uno плата от компании Arduino, построенная на микроконтроллере ATmega 328.

Плата имеет на борту 6 аналоговых входов, 14 цифровых выводов общего назначения (могут являться как входами, так и выходами), кварцевый генератор на 16 МГц, два разъема: силовой и USB, разъем ISCP для внутрисхемного программирования и кнопку горячей перезагрузки устройства. Для стабильной работы плату необходимо подключить к питанию либо через встроенный USB Разъем, либо подключив разъем питания к источнику от 7 до 12В. Через переходник питания плата также может работать и от батареи формата Крона.

Основное отличие платы от предыдущих для взаимодействия по USB Arduino Uno использует отдельный микроконтроллер ATmega8U2. Прошлые версии Arduino использовали для этого микросхему программатора FTDI.

Несложно догадаться, что благодаря своему итальянскому происхождению, слова “Arduino” и “Uno” взяты именно из этого языка. Компания назвалась “Arduino” в честь короля Италии 11 века Ардуина, а Уно переводится с итальянского как “первый”.

Arduino Uno R3 (ATmega 328P)

Arduino Uno R3 (ATmega 328P)

Размеры и габариты платы

Печатная плата Arduino Uno является Open-Hardware, поэтому все ее характеристики доступны в открытом доступе.

Длина и ширина платы составляют 69 мм x 53 мм.

Силовой и USB разъемы выступают за границы печатной платы на 2 мм.

Расстояние между выводами соответствует стандарту 2.54 мм, однако расстояние между 7 и 8 контактами составляет 4 мм.

Разъемы питания

Плата Arduino Uno имеет на борту 3 способа подключения питания: через USB, через внешний разъем питания и через разъем Vin, выведенный на одну из гребенок сбоку. Платформа имеет на борту встроенный стабилизатор, позволяющий не только автоматически выбирать источник питания, но и выравнивать ток до стабильных 5 вольт, необходимых контроллеру для работы.

Внешнее питание можно подавать как напрямую от USB порта компьютера, так и от любого AC/DC блока питания через разъем питания или USB.

На плате предусмотрено несколько выводов, позволяющих запитывать от нее подключенные датчики, сенсоры и актуаторы. Все эти выводы помечены:

  • Vin вход питания, используется для получения питания от внешнего источника. Через данных вывод происходит только подача питания на плату, получить оттуда питание для внешних устройств невозможно. На вход Vin рекомендуется подавать напряжение в диапазоне от 7В до 20В, во избежании перегрева и сгорания встроенного стабилизатора.
  • 5V источник пятивольтового напряжения для питания внешних устройств. При получении питания платой из любых других источников (USB, разъем питания или Vin) на этом контакте вы всегда сможете получить стабильное напряжение 5 вольт. Его можно вывести на макетную плату или подать напрямую на необходимое устройство.
  • 3V3 источник 3.3 вольтового напряжения для питания внешних устройств. Работает по такому-же принципу, что и контакт 5V. С данной ножки также можно вывести напряжение на макетную плату, либо подать на необходимый датчик/сенсор напрямую.
  • GND контакт для подключения земли. Необходим для создания замкнутой цепи при подключении к контактам Vin, 5V или 3V3. Во всех случаях ножку GND необходимо выводить как минус, иначе цепь не будет замкнута и питание (что внешнее, что внутреннее) не подасться.

Характеристики памяти

Платформа Arduino Uno имеет на борту микроконтроллер ATmega328, который обладает Flash, SRAM и EEPROM памятью.

  • FLASH 32kB, из которых 0.5kB используется для хранения загрузчика
  • SRAM (ОЗУ) 2kB
  • EEPROM 1kB (доступна с помощью библиотеки EEPROM)

Arduino Uno распиновка

Принципиальная схема Arduino Uno R3

Контакты ввода-вывода и интерфейсы

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

Функция pinMode служит для задания режима работы контакта, будет-ли он работать на выход или на вход. В данной функции задается номер контакта, которым мы в дальнейшем собираемся управлять.

Функция считывает текущее значение с заданного контакта его значение может быть HIGH или LOW.

Функция передает определенное значение на заданный контакт оно может быть HIGH или LOW.

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

Каждый вывод платы имеет нагрузочный резистор номиналом 20-50 кОм и может пропускать до 40 мА, но по умолчанию все они отключены.

Также, на контактных площадках Arduino Uno выведены специальные интерфейсы подключения различных цифровых устройств:

Аналоговые входы: контакты A0, A1, A2, A3, A4, A5

Arduino Uno имеет на своей платформе 6 аналоговых входов с разрешением 10 Бит на каждый вход. Данное разрешение говорит нам о том, что сигнал, приходящий на него, можно оцифровать в диапазоне от 0 до 1024 условных значений.

Считывать значения с данных контактов можно функцией analogRead(), а передавать значения функцией analogWrite().

Так как Arduino Uno обладает пятивольтовой логикой, то и значение будет находиться в диапазоне от 0 до 5 вольт, однако при помощи функции analogReference() можно изменять верхний предел.

Последовательный UART интерфейс: контакты 0 (RX) и 1 (TX)

Данные выводы используются для обмена данными по протоколу UART. Контакт RX используется для получения данных, а контакт TX для их отправки. Эти выводы подключены к соответствующим контактам последовательной шины схемы ATmega8U2 USB-to-TTL, выступающей в данном контексте в роли программатора.

Внешнее прерывание: контакты 2 и 3

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

Вызов прерывания может быть задан по-разному:

  • на младшем значении
  • на переднем или заднем фронте
  • при изменении значения

Более подробно прерывания описаны в отдельной статье нашей Вики.

ШИМ: контакты 3, 5, 6, 9, 10, и 11

Любой из контактов 3, 5, 6, 9, 10, и 11, может генерировать сигнал Широтно-импульсной модуляции (ШИМ, PWM) с разрешением 8 Бит. Для этого в коде программы используется функция analogWrite().

SPI интерфейс: контакты 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK)

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

I2C интерфейс: контакты 4 (SDA) и 5 (SCL)

При помощи данных контактов к Arduino можно подключать внешние цифровые устройства, умеющие общаться по протоколу I2C. Для реализации интерфейса в среде Arduino IDE присутствует библиотека Wire.

Встроенный светодиод: контакт 13

Для проверки вашего кода по ходу его написания, самый удобный способ индикации встроенный светодиод. Подав значение HIGH на 13 контакт, он загорается на плате красным цветом, тем самым показывая, что условие вашей программы выполнилось (или наоборот, что-то пошло не так). 13 контакт удобно использовать в коде программы для проверки ошибок и отладки.

Кстати, хотим заметить, что последовательно к 13-ому контакту подключен резистор на 220 Ом, поэтому не стоит использовать его для вывода питания ваших устройств.

Дополнительные контакты: AREF и RESET

Помимо всех вышеперечисленных, на платформе Uno имеется еще 2 дополнительных контакта.

AREF

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

RESET

Данный контакт необходим для аппаратной перезагрузки микроконтроллера. При подаче сигнала низкого уровня (LOW) на контакт Reset, происходит перезагрузка устройства.

Данный контакт обычно соединен с аппаратной кнопкой перезагрузки, установленной на плате.

Связь с внешним миром

Для осуществления связи с внешними устройствами (компьютером и другими микроконтроллерами) на плате существует несколько дополнительных устройств.

На контактах 0 (RX) и 1 (TX) контроллер ATmega328 поддерживает UART последовательный интерфейс передачи данных. ATmega8U2, выполняющий на плате роль программатора, транслирует этот интерфейс через USB, позволяя платформе общаться с компьютером через стандартный COM-порт. Прошивка, установленная в контроллер ATmega8U2, имеет на борту стандартные драйверы USB-COM, поэтому для подключения не потребуется никаких дополнительных драйверов.

Внимание! На платах китайского производства, вместо контроллера ATmega8U2 используется другой программатор CH340G, который не распознается Windows в автоматическом режиме. Для него необходимо установить дополнительный драйвер, о чем подробно написано в нашем блоге Установка драйверов микросхемы CH340G для Arduino.

При помощи мониторинга последовательной шины, называемого Serial Monitor, среда Arduino IDE посылает и получает данные от Arduino. При обмене данными на плате видно мигание светодиодов RX и TX. При использовании UART-интерфейса через контакты 0 и 1, светодиоды не мигают.

Плата может взаимодействовать по UART-интерфейсу не только через аппаратным, но и через программным способом. Для этого в среде Arduino IDE предусмотрена библиотека SoftwareSerial.

Также, на плате предусмотрены выводы основных интерфейсов взаимодействия с периферией: SPI и I2C (TWI).

Среда программирования Arduino IDE

Платформа Arduino Uno, как и все другие Arduino-совместимые платформы, программируется в среде Arduino IDE. Для работы с ней в настройках программы необходимо выбрать нужную платформу. Это можно сделать в верхнем меню — Tools — Boards — Arduino UNO.

Выбор микроконтроллера зависит от того, какой стоит именно на вашей плате. Обычно это ATmega328.

Плата как правило поставляется уже прошитая необходимым загрузчиком и должна определяться системой в автоматическом режиме (за исключением плат на основе программатора CH340G). Связь микроконтроллера с компьютером осуществляется стандартным протоколом STK500.

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

Программная перезагрузка Arduino

Обычно, в микроконтроллерах перед загрузкой кода предусмотрен вход платы в специальный режим загрузки, однако Arduino Uno избавлена от данного действия для упрощения загрузки в нее программ. Стандартно, перед загрузкой каждый микроконтроллер получает сигнал DTR (digital reset), но в данной плате вывод DTR подключен к микроконтроллеру ATmega8U2 через 100 нФ конденсатор и программатор сам управляет процессом загрузки новой прошивки в контроллер. Таким образом, загрузка прошивки происходит моментально после нажания кнопки Upload в среде Arduino IDE.

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

Arduino Uno поддерживает отключение автоматической перезагрузки. Для этого необходимо разорвать линию RESET-EN. Еще один способ отключения автоматической перезагрузки подключение между линиями RESET-EN и линией питания 5V резистора номиналом 110 Ом.

Защита USB разъема от перенапряжения

Для защиты USB порта компьютера от обратных токов, короткого замыкания и сверхнагрузки, на платформе Arduino Uno встроен автоматический самовостанавливающийся предохранитель. При прохождении тока питания более 500 мА через USB порт, предохранитель автоматически срабатывает и размыкает цепь питания до тех пор, пока значения тока не вернуться к нормальным.


Источник: voltiq.ru