Arduino Mega 2560

Arduino Mega 2560 R3 - вид спереди Arduino Mega2560 R3 - вид сзади
Arduino Mega 2560 - вид спереди Arduino Mega 2560 - вид сзади

Общие сведения

Arduino Mega 2560 - это устройство на основе микроконтроллера ATmega2560 (datasheet). В его состав входит все необходимое для удобной работы с микроконтроллером: 54 цифровых входа/выхода (из которых 15 могут использоваться в качестве ШИМ-выходов), 16 аналоговых входов, 4 UART (аппаратных приемопередатчика для реализации последовательных интерфейсов), кварцевый резонатор на 16 МГц, разъем USB, разъем питания, разъем ICSP для внутрисхемного программирования и кнопка сброса. Для начала работы с устройством достаточно просто подать питание от AC/DC-адаптера или батарейки, либо подключить его к компьютеру посредством USB-кабеля. Arduino Mega совместим с большинством плат расширения, разработанных для Arduino Duemilanove и Diecimila.

Mega 2560 - это обновленная версия Arduino Mega.

Ардуино Mega 2560 отличается от всех предыдущих плат тем, что в нем для преобразования интерфейсов USB-UART вместо микросхемы FTDI используется микроконтроллер ATmega16U2 (ATmega8U2 в версиях платы R1 и R2). 

На плате Mega 2560 версии R2 добавлен резистор, подтягивающий к земле линию HWB микроконтроллера 8U2. Подобная мера позволяет упростить процесс обновления прошивки и переход устройства в режим DFU.

Изменения на плате версии R3 перечислены ниже:

  • Распиновка 1.0: добавлены выводы SDA и SCL (возле вывода AREF), а также два новых вывода, расположенных возле вывода RESET. Первый - IOREF - позволяет платам расширения подстраиваться под рабочее напряжение Ардуино. Данный вывод предусмотрен для совместимости плат расширения как с 5В-Ардуино на базе микроконтроллеров AVR, так и с 3.3В-платами Arduino Due. Второй вывод ни к чему не подсоединен и зарезервирован для будущих целей.
  • Улучшена помехоустойчивость цепи сброса.
  • Микроконтроллер ATmega16U2 заменен на 8U2.

Схема, исходный проект и расположение выводов

Файлы EAGLE: arduino-mega2560_R3-reference-design.zip

Схема: arduino-mega2560_R3-schematic.pdf

Расположение выводов: PinMap2560

Характеристики

Микроконтроллер ATmega2560
Рабочее напряжение
Напряжение питания (рекомендуемое) 7-12В
Напряжение питания (предельное) 6-20В
Цифровые входы/выходы 54 (из которых 15 могут использоваться в качестве ШИМ-выходов)
Аналоговые входы 16
Максимальный ток одного вывода 40 мА
Максимальный выходной ток вывода 3.3V    50 мА
Flash-память 256 КБ из которых 8 КБ используются загрузчиком
SRAM 8 КБ
EEPROM 4 КБ
Тактовая частота 16 МГц

Питание

Arduino Mega может быть запитан от USB либо от внешнего источника питания - тип источника выбирается автоматически.

В качестве внешнего источника питания (не USB) может использоваться сетевой AC/DC-адаптер или аккумулятор/батарея. Штекер адаптера (диаметр - 2.1мм, центральный контакт - положительный) необходимо вставить в соответствующий разъем питания на плате. В случае питания от аккумулятора/батареи, ее провода необходимо подсоединить к выводам Gnd и Vin разъема POWER.

Напряжение внешнего источника питания может быть в пределах от 6 до 20 В. Однако, уменьшение напряжения питания ниже 7В приводит к уменьшению напряжения на выводе 5V, что может стать причиной нестабильной работы устройства. Использование напряжения больше 12В может приводить к перегреву стабилизатора напряжения и выходу платы из строя. С учетом этого, рекомендуется использовать источник питания с напряжением в диапазоне от 7 до 12В.

Выводы питания, расположенные на плате, перечислены ниже:

  • VIN. Напряжение, поступающее в Arduino непосредственно от внешнего источника питания (не связано с 5В от USB или другим стабилизированным напряжением). Через этот вывод можно как подавать внешнее питание, так и потреблять ток, когда устройство запитано от внешнего адаптера.
  • 5V. На этот вывод поступает напряжение 5В от стабилизатора напряжения на плате, вне независимости от того, как запитано устройство: от адаптера (7 - 12В), от USB (5В) или через вывод VIN (7 - 12В). Запитывать устройство через выводы 5V или 3V3 не рекомендуется, поскольку в этом случае не используется стабилизатор напряжения, что может привести к выходу платы из строя.
  • 3V3. 3.3В, поступающие от стабилизатора напряжения на плате. Максимальный ток, потребляемый от этого вывода, составляет 50 мА.
  • GND. Выводы земли.
  • IOREF. Этот вывод предоставляет платам расширения информацию о рабочем напряжении микроконтроллера Ардуино. В зависимости от напряжения, считанного с вывода IOREF, плата расширения может переключиться на соответствующий источник питания либо задействовать преобразователи уровней, что позволит ей работать как с 5В, так и с 3.3В-устройствами.

Память

В микроконтроллере ATmega2560 есть 256 КБ флеш-памяти программ (из которых 8 КБ используются загрузчиком), 8 КБ памяти SRAM и 4 КБ EEPROM (для работы с этой памятью служит библиотека EEPROM).

Входы и выходы

С использованием функций pinMode()digitalWrite() и digitalRead() каждый из 54 цифровых выводов Arduino Mega можно настроить на работу в качестве входа или выхода. Уровень напряжения на выводах ограничен 5В. Максимальный ток, который может отдавать или потреблять один вывод, составляет 40 мА. Все выводы сопряжены с внутренними подтягивающими резисторами (по умолчанию отключенными) номиналом 20-50 кОм. Помимо этого, некоторые выводы Ардуино могут выполнять дополнительные функции:

  • Последовательный интерфейс Serial: выводы 0 (RX) и 1 (TX); Serial 1: 19 (RX) и 18 (TX); Serial 2: 17 (RX) и 16 (TX); Serial 3: 15 (RX) и 14 (TX). Данные выводы используются для получения (RX) и передачи (TX) данных по последовательному интерфейсу. Выводы 0 и 1 также соединены с соответствующими выводами микросхемы ATmega16U2, выполняющей роль преобразователя USB-UART.
  • Внешние прерывания: выводы 2 (прерывание 0), 3 (прерывание 1), 18 (прерывание 5), 19 (прерывание 4), 20 (прерывание 3) и 21 (прерывание 2). Эти выводы могут использоваться в качестве источников прерываний, возникающих при различных условиях: при низком уровне сигнала, при фронте, спаде или изменении сигнала. Для получения дополнительной информации см. функцию attachInterrupt().
  • ШИМ: выводы 2 - 13 и 44 - 46. С помощью функции analogWrite() могут выводить 8-битные аналоговые значения в виде ШИМ-сигнала.
  • Интерфейс SPI: выводы 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). С применением библиотеки SPI данные выводы позволяют осуществлять связь по интерфейсу SPI. Линии SPI также выведены на разъем ICSP, совместимый с Arduino Uno, Duemilanove и Diecimila.
  • Светодиод: 13. Встроенный светодиод, подсоединенный к выводу 13. При отправке значения HIGH светодиод включается, при отправке LOW - выключается.
  • TWI: выводы 20 (SDA) и 21 (SCL). С использованием библиотеки Wire данные выводы позволяют осуществлять связь по интерфейсу TWI. Обратите внимание, что расположение этих выводов отличается от Arduino Duemilanove и Diecimila.

В Arduino Mega 2560 есть 16 аналоговых входов, каждый из которых может представить аналоговое напряжение в виде 10-битного числа (1024 различных значения). По умолчанию, измерение напряжения осуществляется относительно диапазона от 0 до 5 В. Тем не менее, верхнюю границу этого диапазона можно изменить, используя вывод AREF и функцию analogReference(). 

Помимо перечисленных на плате существует еще несколько выводов:

  • AREF. Опорное напряжение для аналоговых входов. Может задействоваться функцией analogReference().
  • Reset. Формирование низкого уровня (LOW) на этом выводе приведет к перезагрузке микроконтроллера. Обычно этот вывод служит для функционирования кнопки сброса на платах расширения

Связь

Arduino Mega 2560 предоставляет ряд возможностей для осуществления связи с компьютером, еще одним Ардуино или другими микроконтроллерами. В ATmega2560 есть четыре аппаратных приемопередатчика UART для реализации последовательных интерфейсов (c логическим уровнем TTL 5В). Микроконтроллер ATmega16U2 (или ATmega8U2 на платах версии R1 и R2) обеспечивает связь одного из приемопередатчиков с USB-портом компьютера, и при подключении к ПК позволяет Ардуино определяться как виртуальный COM-порт (для этого операционной системе Windows потребуется соответствующий .inf-файл, в отличие от OSX и Linux, где распознавание платы в качестве COM-порта происходит автоматически). В пакет программного обеспечения Ардуино входит специальная программа SerialMonitor, позволяющая считывать и отправлять на Ардуино простые текстовые данные. При передаче данных через микросхему ATmega8U2/ATmega16U2 во время USB-соединения с компьютером, на плате будут мигать светодиоды RX и TX. (При последовательной передаче данных посредством выводов 0 и 1, без использования USB-преобразователя, данные светодиоды не задействуются).

Библиотека SoftwareSerial позволяет реализовать последовательную связь на любых цифровых выводах Mega2560.

В микроконтроллере ATmega2560 также реализована аппаратная поддержка последовательных интерфейсов TWI и SPI. В программное обеспечение Ардуино входит библиотека Wire, позволяющая упростить работу с шиной TWI; для получения более подробной информации см. библиотеку Wire. Для работы с интерфейсом SPI используйте библиотеку SPI.

Программирование

Arduino Mega программируется с помощью программного обеспечения Ардуино (скачать). Для получения более подробной информации см. справку и примеры.

ATmega2560 в Arduino Mega выпускается с прошитым загрузчиком, позволяющим загружать в микроконтроллер новые программы без необходимости использования внешнего программатора. Взаимодействие с ним осуществляется по оригинальному протоколу STK500 (описаниезаголовочные файлы C).

Тем не менее, микроконтроллер можно прошить и через разъем для внутрисхемного программирования ICSP (In-Circuit Serial Programming), не обращая внимания на загрузчик; более подробно об этом см. соответствующие инструкции.

Исходный код прошивки микроконтроллера ATmega16U2 (либо ATmega8U2 на платах R1 и R2) находится в в репозиториях Ардуино. Прошивка ATmega16U2/8U2 включает в себя DFU-загрузчик (Device Firmware Update), позволяющий обновлять прошивку микроконтроллера. Для активации режима DFU необходимо:

  • На платах версии R1: замкнуть перемычку на обратной стороне платы (возле изображения Италии), после чего сбросить 8U2.
  • На платах версий R2 и выше - для упрощения перехода в режим DFU присутствует резистор, подтягивающий к земле линию HWB микроконтроллера 8U2/16U2.После перехода в DFU-режим для загрузки новой прошивки можно использовать программное обеспечение Atmel's FLIP (для Windows) или DFU programmer (для Mac OS X и Linux). Альтернативный вариант - прошить микроконтроллер через разъем для внутрисхемного программирования ISP с помощью внешнего программатора, однако в этом случае DFU-загрузчик затрется. Для получения более подробной информации см. эти инструкции от пользователей.

Автоматический (программный) сброс

Чтобы каждый раз перед загрузкой программы не требовалось нажимать кнопку сброса, Arduino Mega 2560 спроектирован таким образом, который позволяет осуществлять его сброс программно с подключенного компьютера. Один из выводов ATmega8U2, участвующий в управлении потоком данных (DTR), соединен с выводом RESET микроконтроллера ATmega2560 через конденсатор номиналом 100 нФ. Когда на линии DTR появляется ноль, вывод RESET также переходит в низкий уровень на время, достаточное для перезагрузки микроконтроллера. Данная особенность используется для того, чтобы можно было прошивать микроконтроллер всего одним нажатием кнопки в среде программирования Ардуино. Такая архитектура позволяет уменьшить таймаут загрузчика, поскольку процесс прошивки всегда синхронизирован со спадом сигнала на линии DTR.

Однако эта система может приводить и к другим последствиям. При подключении Mega 2560 к компьютерам, работающим на Mac OS X или Linux, его микроконтроллер будет сбрасываться при каждом соединении программного обеспечения с платой. После сброса на Arduino Mega2560 активизируется загрузчик на время около полсекунды. Несмотря на то, что загрузчик запрограммирован игнорировать посторонние данные (т.е. все данные, не касающиеся процесса прошивки новой программы), он может перехватить несколько первых байт данных из посылки, отправляемой плате сразу после установки соединения. Соответственно, если в программе, работающей на Ардуино, предусмотрено получение от компьютера каких-либо настроек или других данных при первом запуске, убедитесь, что программное обеспечение, с которым взаимодействует Ардуино, осуществляет отправку спустя секунду после установки соединения.

На плате Mega 2560 существует дорожка (отмеченная как "RESET-EN"), разомкнув которую, можно отключить автоматический сброс микроконтроллера. Для повторного восстановления функции автоматического сброса необходимо спаять между собой выводы, расположенные по краям этой дорожки. Автоматический сброс также можно выключить, подключив резистор номиналом 110 Ом между выводом RESET и 5В; для получения более подробной информации см. соответствующую ветку форума.

Защита USB от перегрузок

В Arduino Mega 2560 есть восстанавливаемые предохранители, защищающие USB-порт компьютера от коротких замыканий и перегрузок. Несмотря на то, что большинство компьютеров имеют собственную защиту, такие предохранители обеспечивают дополнительный уровень защиты. Если от USB-порта потребляется ток более 500 мА, предохранитель автоматически разорвет соединение до устранения причин короткого замыкания или перегрузки.

Физические характеристики и совместимость с платами расширения

Максимальная длина и ширина печатной платы Mega2560 составляет 10.2 см и 5.4 см соответственно, с учетом разъема USB и разъема питания, выступающих за пределы платы. Три крепежных отверстия позволяют прикреплять плату к поверхности или корпусу. Обратите внимание, что расстояние между цифровыми выводами 7 и 8 не кратно традиционным 2.54 мм и составляет 4 мм.

Arduino Mega2560 спроектирован таким образом, чтобы быть совместимым с большинством плат расширения для Ардуино Uno, Diecimila и Duemilanove. Для этого цифровые выводы 0 - 13 (а также смежные с ними выводы AREF и GND), аналоговые входы 0 - 5, разъем питания и ICSP-разъем на всех платах расположены одинаково. Кроме того, в перечисленных устройствах линии основного приемопередатчика UART соединены с одними и теми же выводами (0 и 1), как и линии внешних прерываний 0 и 1 (выводы 2 и 3 соответственно). Линии интерфейса SPI выведены на разъем ICSP на обеих платах - как на Mega2560, так и на Duemilanove / Diecimila. Следует иметь ввиду, что на Arduino Mega расположение выводов интерфейса I2C отличается от плат Duemilanove / Diecimila: на Arduino Mega это выводы 20 и 21, а на Duemilanove / Diecimila - аналоговые входы 4 и 5.

Купить Arduino Mega 2560 можно в интернет-магазине arduino-ua.com.