ATMEGA328P-PU как замена Arduino
Раз уж Arduino стал практически мейнстримом, напишу обзор про микроконтроллеры ATMEGA328
Данный микроконтроллер является сердцем Arduino Uno, Nano, Pro Mini и ряда других плат.
Но Arduino — это слишком просто. Купил, подключил, загрузил программу и вот уже гордо мигает светодиод на плате. Мы же легких путей не ищем и программируем голые микроконтроллеры на ассемблере поэтому и куплены данные микросхемы. Тем кому интересно, прошу под кат.
Итак зачем все это нужно?
Ну во первых, это экономия в деньгах (Правда с ценами на Pro Mini очень сомнительная)
Во вторых, экономия места
В третьих, микросхемы без всяких преобразователей и светодиодов очень экономичны, что немаловажно в проектах с батарейным питанием.
В четвертых, проекты на Arduino весьма неопрятны из за мотка проводов вокруг платы. Микроконтроллеры же вполне можно паять на макетках или нормальных печатных платах.
Ну и в пятых, это ведь интересно и познавательно!
Заказал я данные микросхемы на Алиэксперсс. Лот состоит из 10 микроконтроллеров, 10 панелек для них, и 10 кварцевых резонаторов на 16МГц. Сейчас лот подорожал до $35 и купить за адекватную цену Atmegу можно разве что на Таобао.
Заказ шел целых 97 дней. Трек быстро отозвался в Китае и завис, не дойдя до России. Я успел пообщаться с продавцом, открыть спор и выиграть его, когда нежданно посылка нарисовалась в Москве. Деньги я вернул продавцу на PayPal, видимо у него где-то есть еще и магазин.
Итак все довольны — продавец получил заслуженную прибыль, а я долгожданный товар.
Подробное описание ATMEGA328 можно посмотреть на сайте atmel.com.
Буковка «P» в названии означает низкое энергопотребление, а PU-корпус DIP28, который удобно паять обычным паяльником.
Сам товар:
Контроллер с панелькой и кварцем
Как это все готовить?
Для программирования взят очень дешевый программатор USBasp за 3. 14 (Пи?) баксов.
Для простоты, используем ICSP разъем стандартной Arduino UNO
В панельку Arduino вставляем наш микроконтроллер.
Далее качаем и устанавливаем драйвер для программатора. Запускам стандартную ArduinoIDE, выбираем в меню «Сервис->Программатор->USBasp», плату ArduinoUNO и нажимаем «Записать загрузчик». После окончания процесса загрузки мы получаем контроллер, такой же как и в UNO, в который можно уже в дальнейшем заливать программы через стандартный USB Ардуины.
Далее мне захотелось использовать встроенный кварцевый резонатор на 8МГц, чтобы иметь минимум деталей на плате.
Открываем файл с описанием микроконтроллера c:\Program Files (x86)\Arduino\hardware\arduino\boards.txt
Копируем блок с Uno и правим в нм Фьюзы. Это специальные биты для настроки контроллера. Прочитать про них можно здесь. Сконфигурировать при помощи онлайн-калькулятора. Загрузив в калькулятор значения от UNO я устанавливаю стандартное значение с встроенным кварцем на 8МГц.
Затем заменяю значение в файле с описанием плат и получаю такое описание:
tmega328_8.name=Atmega328 (5V, 8 MHz internal)
atmega328_8.upload.protocol=arduino
atmega328_8.upload.maximum_size=30720
atmega328_8.upload.speed=57600
atmega328_8.bootloader.low_fuses=0xE2
atmega328_8.bootloader.high_fuses=0xDE
atmega328_8.bootloader.extended_fuses=0x05
atmega328_8.bootloader.path=optiboot
atmega328_8.bootloader.file=optiboot_atmega328.hex
atmega328_8.bootloader.unlock_bits=0x3F
atmega328_8.bootloader.lock_bits=0x0F
atmega328_8.build.mcu=atmega328p
atmega328_8.build.f_cpu=8000000L
atmega328_8.build.core=arduino
atmega328_8.build.variant=standard
Затем в среде Arduino выбираю свой микроконтроллер и снова прошиваю загрузчик.
Все, я получил микроконтроллер, в который можно заливать скетчи на Arduino UNO плате, а затем использовать его без внешнего кварца.
Можно не прошивать контроллеру загрузчик, но тогда заливать в него программы всегда придется через программатор.
Чтобы не соединять самому 10пинвый разъем на USBasp к 6-ти пиновому ICSP на Arduino заказал такой переходник
Потом подумал, и заказал такой переходник для программатора, позволяющий обходится без Arduino Uno. Так что надеюсь, следующие микросхемы буду шить с большим комфортом.
Рекомендую ли я данные микроконтроллеры — скорее нет. При цене на Arduino Pro Micro — $2.88 это не особенно целесообразно. Сейчас я бы купил Atmega8 стоимостью около 1$ или Atiny, для проектов, где не нужно возможности Atmega328.
Где я все это планирую применять?
Хочу сделать сенсорные беспроводные выключатели света, вентиляторов и др. устройств, причем разместить их прямо в корпусах выключателей.
В люстрах, для получения радиокоманд от этих выключателей, а также для диммирования.
В миниатюрном погодном датчике на аккумуляторе за окном.
В контроллере управления вентилятором на кухне и в ванной.
Да мало ли сколько еще «нужных и полезных» устройств можно сделать?
А как же мозг не вскипел все это реализовывать?
Ну конечно же был помощник
Все статьи мои статьи можно найти в моем блоге samopal.pro
Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328
Вот вы написали программу, и залили её в свой UNO. Всё великолепно работает, но такую громадную железку не запихнуть в миниатюрный корпус. Да и вдруг, вы хотите сделать 100 таких устройств, а зачем вам увеличение себестоимости, ведь на платах Arduino куча ненужного барахла.
Ну что же, попробуем. Для начала, как мы помним, в самых распространённых платах Nano и Mega, используется камень AtMega328P. Логично, что для его запуска, нам нужно подать питание на него. Для этого здесь достаточно много пинов VCC и GND, особенно в планарных типах корпуса. Связано это с топологией чипа на уровне производства, ведь каждый пин контроллера держит токовую нагрузку, поэтому МК должен быть запитан равномерно со всех сторон
Пин AREF отвечает за опорное напряжение АЦП, туда можно подать напряжение, относительно которого вы хотите читать результаты, или, если это будет 5в, или 2.5 от внутреннего делителя, то подтянуть конденсатором к питанию. Также, по классике, на линию питанию нужно повесить конденсаторы для сглаживанию питающего напряжения – от этого зависит стабильность микроконтроллера.
Знаете, на arduino, есть такая кнопка – Reset, от которой можно перезагрузить МК. Это такой выход i/o, на который на который вроде бы можно повесить периферию, но с большими ограничениями. Поэтому, если вам хватает ног, лучше не трогайте этот пин. Изначально он подтянут внутренним резистором, но лучше, для надёжности и стабильности сделать внешнюю подтяжку резистором 10кОм. Перезагружать готовое устройство нужды особой нет – кнопку ставить не будем.
Теперь нужно разобраться с тактированием. Arduino работает на частоте 16Мгц, т.е. от внешнего кварца. Если вы продолжаете работать на этой частоте, то этот кварц нужно установить на создаваемую плату, вместе с конденсаторами 22пФ.
Но если точность вычислений вам не сильно нужна, а хочется сэкономить в размерах, как иногда мне, то кварц можно вообще не ставить, а тактироваться от внутренней RC цепочки с 8Мгц. Как скомпилировать прошивку в arduino с другой частотой в 8Мгц, я расскажу позже. А пока рассмотрим самую важную часть – как программировать то голый микроконтроллер? Ведь usb выхода у него нет. Есть разные пути, но самый простой – использовать внутрисхемное программирование SPI. И купить дешёвый программатор USB ASP. Мой выглядит так, у него не подписаны контакты
Нарисовал удобную распиновку, если смотреть со стороны контактов. Для SPI нам важны 5 контактов, но я обычно беру и питание с программатора – MISO, MOSI, SCK, RST, GND
Также у меня лежит самодельный UsbAsp, но он громоздкий, и у него не сделан вывод 3. 3в, поэтому я его давно не использую
Теперь рассмотрим, какие выводы мы будем использовать для программирования на принципиальной схеме МК.
Теперь если подать питание, и подключить выводы программатора MOSI, MISO, SCK, RESET, GND то можно приступать к программированию. Как помните, из предыдущей статьи, где мы рассказали как достать HEX файл из среды Arduino, IDE делает два файла – *.hex и *with_bootloader.hex. Загрузчик нам не нужен, поэтому будем использовать обычный *.hex. Есть один нюанс – при покупке голого кристалла, он запрограммирован на RC цепочку 1Мгц. Да и вообще у atmega, есть система фьюз-битов. Выглядит это обычно не очень понятно, но конечно в среде Arduino всё это вырезано, чтоб не смущать новичков. Чтобы добраться до этих конфигураций, полезно будет скачать программу AVRDUDE. Главное окно выглядит так, здесь нужно сразу выбрать нужный МК
Переходим во вкладку Fuses – здесь, чтобы не наделать бед, а если вы запишите неправильные данные, контроллер можно превратить почти в кирпич (что не очень удобно на распаянной smd плате), я сначала СЧИТЫВАЮ биты, заодно можно убедиться в правильности подключения программатора к МК. Если всё хорошо – получаем такую картинку
Чтобы правильно выставить fuse-биты, нужно воспользоваться помощью специального калькулятора. Я пользуюсь этим. Тут также нужно выбрать чип, способ тактирования и другие параметры. В принципе для смены частоты достаточно сменить блок CKSEL фьюзов. В данном случае я выбрал Int RC – 8Mhz.
Получил картинку фьюзов.
А теперь переносим параметры в AVR DUDE, также калькулятор включает делитель на 8, бит CKDIV8, он нам не нужен. Можете пользоваться нижеприведённым скриншотом, для запуска atmega 328p на 8Мгц от внутреннего RC осциллятора.
Жмём запись – и МК принимает необходимую конфигурацию. Теперь осталось залить прошивку, но ведь она у нас рассчитана на 16Мгц, но в Arduino IDE, есть простой путь скомпилировать прошивку для atmega 328, для частоты 8Мгц. Нужно выбрать плату arduino pro, и указать частоту 8mhz
Как вы заметили, напротив чипа, стоит напряжение 3.3В при пониженной частоте – всё верно, но это не означает, что нельзя запитать кристалл от 5В. Зато от 3.3В теперь можно). Теперь после компиляции нам осталось по знакомому пути найти файл прошивки в формате HEX, и вернуться в AVR DUDE. Выбрать файл прошивки – и нажать программирование.
Всё! Вы избавились от лишней периферии Arduino, можете сделать плату в своём дизайне PCB, а прошивку использовать с вашего прототипа. В следующей статье, мы сделаем свою плату игральных костей в размере 4х4 см, чтобы упаковать в маленький корпус, и проделаем эти шаги на практике.
Запрограммируйте ATMega328P и используйте его без платы Arduino
Довольно просто использовать автономный чип Arduino. Особенность чипа, используемого для официальных плат, состоит в том, что они объединены для использования более быстрого (и более точного) внешнего генератора, установленного на плате. Это применимо даже при покупке свободных чипов, поскольку большинство из них перепроданы с намерением установить их на плату Arduino вместо сгоревшей, за исключением, возможно, чипов Digikey.
Предостережения: Arduino разработан как макетная плата, и немногие вещи делают лучше, чем в этой задаче. Возможно, вы захотите оставить чип на плате Arduino, пока не закончите проектирование и тестирование вашей схемы. Только тогда вы подключите его напрямую. Его можно использовать на месте, если у вас есть схема синхронизации, или вы можете заменить предохранители (см. Позже) и перепрограммировать Arduino с помощью адаптера ISP и тактовой частотой 8 МГц (PlatformIO позволяет вам это делать ( и позволяет напрямую импорт эскиза Arduino) — проверьте их страницу документации для плагина Atmel AVR, но вы также можете найти несколько руководств о том, как добавить файл платы в Arduino, чтобы указать ему использовать опцию 8 МГц для чистого чипа)
Если вы удалите микросхему для использования в другой цепи, то необходимо либо снова добавить схему синхронизации, либо заменить ее предохранители (я вернусь к этому через минуту). По ряду причин также будет сложно программировать, поэтому вы захотите приобрести довольно дешевое оборудование:
Программирование автономного чипа: ЦП Arduino изначально не предназначен для общения с компьютером. Вам нужен посредник. На Uno это делается с помощью второго чипа Atmel с поддержкой USB и загрузчика на основном чипе. То, что это делает, — то, что это использует UART для загрузки программы, в то время как чип USB преобразовывает сообщения ПК в сигналы UART. Поскольку загрузчик является некоторой болью, когда чип сам по себе (поскольку UART требователен и его установка настраивает чип на использование внешних часов в результате), вам нужно купить ISP-программатор для Arduino (или следуйте эскизу Arduino-as-ISP и инструкциям, чтобы создать свой собственный, который требует Arduino с чипом, так что вам потребуется секунда для программирования).
Они могут программировать ATMega 328 непосредственно через SPI, без загрузчика (в Интернете есть много инструкций; например, поиск «запрограммировать ATMega 328P без USBAsp»). Это значительно упрощает изменение и отладку вашей программы, за исключением того, что вы вытащили чип и вернулись на исходную плату Arduino. Вам также нужно изменить настройки часов, если вы не хотите использовать внешний кристалл.
Если вы хотите отладить чип, полезно также приобрести адаптер FTDI или другой конвертер USB-UART. Обратите внимание, что без части схемы сброса платы (или, опять же, добавления вашей собственной) это все равно не позволит вам программировать ATMega даже с помощью загрузчика. Для этого подключите контакты заземления, RX и TX к адаптеру. Вы можете или не можете подключать линию VCC, но рекомендуется этого не делать, если к микросхеме подключено множество устройств и / или у них есть собственный источник питания. Обратите внимание, что RX и TX необходимо поменять местами при их подключении; то есть, RX к TX и TX к RX — вы хотите, чтобы микросхема RX (принимала) то, что адаптер передает (TX) (передает), и наоборот.
Схема синхронизации не сложна, но требует нескольких компонентов, которых у вас может не быть. Итак, чтобы изменить источник синхронизации , перейдите по адресу http://www.engbedded.com/fusecalc/ и выберите ATMega 328P. Значения по умолчанию хорошие, но вы можете включить сохранение EEPROM и отключить деление тактовых импульсов на 8 или настроить параметры отключения. Больше ничего не трогайте (отключение сброса или SPI или включение DebugWire приводят к «веселью», которое требуется программисту HV). Когда закончите, вставьте команду, которую это предоставляет к команде AVRDude. Вам нужно будет изменить опции -c (-p уже настроен на ATMega 328P, но не для не-P 328s — не покупайте их) и, возможно, добавить опцию -P (для порта). Не пропускайте опцию -u в нижнем регистре, иначе будет отказано в обновлении предохранителей.
avrdude -p m328p -v -c usbasp -B 100 -u [add extras here: (-P <PORT>) <fuse set command here>]
Обратите внимание, что если вы покупаете USBASP (убедитесь, что у него три набора перемычек!), Несмотря на то, что они мои любимые программисты, у них может не быть обновленной прошивки, поддерживающей опцию -B (которая вам, вероятно, понадобится). Это означает, что вам нужно подключить его к Arduino через порт программирования с шестью контактами, точно так же, как вы будете использовать его для программирования загрузчика Arduino, но затем использовать эскиз Arduino-as-ISP для программирования нового прошивку для программиста (поиск «обновить прошивку usbasp через arduino-as-isp»)! Для справки, это обычно означает, что кабель направлен в сторону от корпуса платы, и вам, вероятно, придется программировать эскиз передподключение кабеля. Также включите перемычку питания от программатора на USBASP (5 В) и самопрограммирующуюся. (см. https://forum.arduino.cc/index.php?topic=560719.0 расположение перемычек питания и программ (JP2)).
Arduino сравнительная таблица всех плат и моделей
В этом материале мы приводим сравнительные таблицы основных характеристик всех плат и моделей Ардуино, от начальных до профессиональных. Данный материал можно сохранить в закладки, т.к. часто требуется подобрать плату под требования конкретного проекта.
Начинающий уровень
Основные платы и модули для начинающих.
Платы
Arduino Uno Rev 3 | Arduino Leonardo | Arduino 101 | |
---|---|---|---|
Микроконтроллер | ATmega328P | ATmega32u4 | Intel Curie |
Рабочее напряжение | 5 V | 5 V | 3.3 V (5 V tolerant I/O) |
Входное напряжение (Рекомендуемое) | 7-12 V | 7-12 V | 7-12 V |
Входное напряжение (Ограничение) | 6-20 V | 6-20 V | 7-17 V |
Цифровые (I/O) Пины | 14 (4 for PWM Output) | 20 | 14 (4 for PWM Output) |
PWM Цифровые (I/O) Пины | 6 | 7 | 4 |
Аналоговый вход Пины | 6 | 12 | 6 |
Аналоговый вход Каналы | 4 из Цифровые I/O Пины | ||
Аналоговый вход Каналы | 8 | ||
Постоянный ток на I/O Пин | 20 mA | 40 mA | 20 mA |
Постоянный ток для 3.3 V Пин | 50 mA | 50 mA | |
Флэш-память | 32 KB (.5 KB для загрузчика) | 32 KB (4 KB для загрузчика) | 196 KB |
SRAM | 2 KB | 2.5 KB | 24 KB |
EEPROM | 1 KB | 1 KB | |
Тактовая частота | 16 MHz | 16 MHz | 32 MHz |
LED встроенные | 13 | 13 | |
Bluetooth | Bluetooth LE | ||
Дополнительно | 6 осевой акселерометр / гироскоп | ||
Длина | 68.6 mm | 68.6 mm | 68.6 mm |
Ширина | 53.4 mm | 53.3 mm | 53.4 mm |
Вес | 25 g | 20 g | 34 g |
Платы (продолжение)
Arduino Robot | Arduino Esplora | |
---|---|---|
Микроконтроллер | ATmega32u4 | ATmega32u4 |
Рабочее напряжение | 5 V | 5 V |
Входное напряжение (Рекомендуемое) | 5 V through flat cable | |
Постоянный ток на I/O Пин | 40 mA | |
Флэш-память | 32 KB (4 KB для загрузчика) | 32 KB (4 KB для загрузчика) |
SRAM | 2. | |
EEPROM | 1 KB internal, 312 Kbit(12 C) external | |
Тактовая частота | 16 MHz | 16 MHz |
Дополнительно | * Keypad — 5 Keys * Knob — potentiometer attached to analog Пин * Full Color LCD — over SPI connection * SD Reader — for FAT16 formatted cards * Speaker — 8 Ohm * Цифровой Компас — отклонение от севера в градусах * I2C Soldering Ports — 2 * Prototypings Areas — 4 | |
Длина | 164.04 mm | |
Ширина | 60 mm | |
Радиус | 185 mm | |
Height | 85 mm | |
Вес | 53 g |
Модули
Arduino Micro | Arduino Nano | Arduino Mini | |
---|---|---|---|
Микроконтроллер | ATmega32u4 | ATmega32u | ATmega32u |
Рабочее напряжение | 5 V | 5 V | 5 V |
Входное напряжение (Рекомендуемое) | 7-12 V | 7-12 V | 7-9 V |
Входное напряжение (Ограничение) | 6-20 V | 7-12 V | 7-9 V |
Цифровые (I/O) Пины | 20 | 22 | 14 (6 for PWM Output) |
PWM Цифровые (I/O) Пины | 6 | ||
PWM Каналы | 7 | ||
Аналоговый вход Пины | 8 (4 broken out onto Пины) | ||
Аналоговый вход Каналы | 12 | ||
Постоянный ток на I/O Пин | 20 mA | 40 mA | 40 mA |
Постоянный ток для 3.3 V Пин | 50 mA | ||
Флэш-память | 32 KB (4 KB для загрузчика) | 32 KB (2 KB для загрузчика) | 32 KB (2 KB для загрузчика) |
SRAM | 2.5 KB | 2 KB | 2 KB |
EEPROM | 1 KB | 1 KB | 1 KB |
Тактовая частота | 16 MHz | 16 MHz | 16 MHz |
LED встроенные | 13 | ||
Дополнительно | * AVR Architecture * Power Consumption — 19 mA | ||
Длина | 48 mm | 30 mm | |
Ширина | 18 mm | 18 mm | |
Вес | 13 g | 7 g |
Улучшенные функции
Ниже сравнительная таблица плат Ардуино с улучшенным функционалом.
Платы
Arduino Mega 2560 Rev 3 | Arduino Zero | Arduino Due | |
---|---|---|---|
Микроконтроллер | ATmega2560 | ATSAMD21G18, 32-Bit ARM Cortex MO+ | AT91SAM3X8E |
Рабочее напряжение | 5 V | 3.3 V | 3.3 V |
Входное напряжение (Рекомендуемое) | 7-12 V | 7-12 V | |
Входное напряжение (Ограничение) | 6-20 V | 6-16 V | |
Цифровые (I/O) Пины | 54 (15 for PWM Output) | 20 | 54 (12 for PWM Output) |
PWM Цифровые (I/O) Пины | 6 | All but Пины 2 and 7 | |
External Interrupts | All Пины Except Пин 4 | ||
Аналоговый вход Пины | 6 | 6, 12-bit ADC Каналы | 12 |
Analog Output Пины | 1, 10-bit DAC | 2 (DAC) | |
Постоянный ток на I/O Пин | 20 mA | 7 mA | 130 mA (Total on all I/O lines) |
Постоянный ток для 3.3 V Пин | 50 mA | 800 mA | |
Постоянный ток для 5 V | 800 mA | ||
Флэш-память | 256 KB (8 KB для загрузчика) | 256 KB | 512 KB for user applications |
SRAM | 8 KB | 32 KB | 96 KB (two banks: 64 KB and 32 KB) |
EEPROM | 4 KB | None | |
Тактовая частота | 16 MHz | 48 MHz | 84 MHz |
LED встроенные | 13 | 13 | |
Длина | 101.52 mm | 68 mm | 101.52 mm |
Ширина | 53.3 mm | 30 mm | 53.3 mm |
Вес | 37 g | 12 g | 36 g |
Платы (продолжение)
Arduino Pro | Arduino M0 | Arduino M0 Pro | |
---|---|---|---|
Микроконтроллер | ATmega328 | ATSAMD21G18, ARM Cortex-MO+, 48Пины LQFP | ATSAMD21G18, ARM Cortex-MO+, 48Пины LQFP |
Рабочее напряжение | 3. | 3.3 V | |
Входное напряжение | 5-15 V | 5-15 V | |
Board Power Supply | 3.35 — 12 V (3.3 V model) or 5-12 V (5 V model) | ||
Circuit Рабочее напряжение | 3.3 V or 5 V (depending on model) | ||
Цифровые (I/O) Пины | 14 | 20, with 12 PWM and UART | 20 |
PWM Пины | 6 | ||
PWM Output | 12 | 12 | |
Аналоговый вход Пины | 6 | ||
External Interrupts | 2 | ||
Аналоговый вход Каналы | 12 | ||
Analog I/O Пины | 6 +1 DAC | 6 +1 DAC | |
Постоянный ток на I/O Пин | 40 mA | 7 mA (I/O Пины) | 7 mA (I/O Пины) |
Флэш-память | 32 KB (2 KB для загрузчика) | 256 KB | 256 KB |
SRAM | 2 KB | 32 KB | 32 KB |
EEPROM | 1 KB | ||
Тактовая частота | 8 MHz (3.3 V version) or 16 MHz (5 V version) | 48 MHz | 48 MHz |
LED встроенные | 13 | 13 | |
Power Consumption | 29 mA | 44 mA | |
Дополнительно | * UART — 1 * SPI — 1 * I2C — 1 | ||
Длина | 68.5 mm | 68.5 mm | |
Ширина | 53 mm | 53 mm | |
Вес | 21 g | 22 g |
Модули
Arduino MKRZero | Arduino Pro Mini | |
---|---|---|
Микроконтроллер | SAMD21 Cortex-MO +32bit low power ARM MCU | ATmega328 |
Рабочее напряжение | 5 V | |
Board Power Supply | 5 V (USB/VIN) | 3.35 — 12 V (3.3 V model) or 5-12 V (5 V Model) |
Supported Battery | Li-Po single cell, 3. | |
Circuit Рабочее напряжение | 3.3 V | 3.3 V or 5 V (depending on model) |
Цифровые (I/O) Пины | 22 | 14 |
PWM Пины | 12 (0,1,2,3,4,5,6,7,8,10, A4 — or 18 -, A4 -or 19) | 6 |
UART | 1 | 1 |
SPI | 1 | 1 |
I2C | 1 | 1 |
PWM Каналы | 6 | |
Аналоговый вход Пины | 7 (ADC 8/10/12 bit) | |
Analog Output Пины | 1 (DAC 10 bit) | |
External Interrupts | 8 (0, 1, 4, 5, 6, 7, 8, A1 — or 16 -, A2 — or 17) | 2 |
Постоянный ток на I/O Пин | 7mA | 40 mA |
Флэш-память | 256 KB (8 KB для загрузчика) | 32 KB (2 KB для загрузчика) |
SRAM | 32 KB | 2 KB |
EEPROM | none | 1 KB |
Тактовая частота | 32.768 kHz (RTC), 48 MHz | 8 MHz (3.3 V version) or 16 MHz (5 V version) |
LED встроенные | 32 | |
Дополнительно | *Full-Speed USB Device with Embedded Host |
Интернет вещей
Ниже сравнительные таблицы плат и модулей, которые применяются для Интернета вещей.
Платы
Arduino YUN | Arduino Ethernet | Arduino TIAN | |
---|---|---|---|
AVR Микроконтроллер | ARM Микроконтроллер | ||
Микроконтроллер | ATmega32U4 | ATMega328 | SAMD21G18, ARM Cortex-MO+ |
Рабочее напряжение | 5 V | 5 V | 3.3 V |
Входное напряжение | 5 V | ||
Входное напряжение Plug (Рекомендуемое) | 7 -12 V | ||
Входное напряжение Plug (Ограничениеs) | 6 — 20 V | ||
Входное напряжение PoE (Ограничениеs) | 36 — 57 V | ||
Цифровые (I/O) Пины | 20 | 14 (4 for PWM output) | |
PWM Output | 7 | ||
Analog I/O Пины | 12 | 6 | |
Аналоговый вход Пины | 6 | ||
Analog Output Пины | 1, 10-bit DAC | ||
Постоянный ток на I/O Пин | 40 mA on I/O Пины; 50 mA on 3. | 40 mA | 7 mA (I/O Пины) |
Постоянный ток для 3.3 V Пин | 50 mA | ||
Флэш-память | 32 KB (4 KB для загрузчика) | 32 KB (.5 для загрузчика) | |
SRAM | 2.5 KB | 2 KB | |
EEPROM | 1 KB | 1 KB | |
Тактовая частота | 16 MHz | 16 MHz | 48 MHz |
LED встроенные | 13 | 13 | |
Bluetooth | CSR8510, Bluetooth with EDR / BLE 4.0 | ||
Длина | 101.52 mm | 68.6 mm | 68.5 mm |
Ширина | 53.3 mm | 53.3 mm | 53 mm |
Вес | 37 g | 28 g | 36 g |
Microprocessor | Microprocessor | ||
Processor | Atheros AR9331 | Atheros AR9342 | |
Architecture | MiPS | MiPS | |
Рабочее напряжение | 3.3 V | 3.3 V | |
Ethernet | 802.3 10/100 Mbit/s | 802.3 10/100/1000 Mbits/s | |
WiFi | 8.02.11b/g/n 2.4 GHz | 802.11 b/g/n 2.4 GHz dual-band | |
USB Type | 2.0 Host | 2.0 Host | |
Card Reader | Micro-SD | ||
RAM | 64 MB DDR2 | 64 MB DDR2 | |
Флэш-память | 16 MB | 16 MB + 4 GB eMMC | |
SRAM | 2.5 KB | ||
EEPROM | 1 KB | ||
Тактовая частота | 400 Mhz | 560 MHz |
Платы (продолжение)
Arduino Industrial 101 | Arduino Leonardo ETH | Arduino MKRFOX 1200 | |
---|---|---|---|
AVR Микроконтроллер | AVR Микроконтроллер | ||
Микроконтроллер | ATmega32u4 | ATmega32u4 | SAMD21 Cortex-MO+ 32bit low power ARM |
Рабочее напряжение | 5 V | 5 V | |
Входное напряжение | 5 V | 7-12 V | 5-15 V |
Board Power Supply | 5 V (USB/VIN) | ||
Supported Batteries | 2 x AA or AAA | ||
Circuit Рабочее напряжение | 3. | ||
Цифровые (I/O) Пины | 20 (7 exported on header) | 20 | 8 |
PWM Пины | 12 (0,1, 2, 3, 4, 5, 6, 7, 8, 10, A3 — or 18, A4 — or 19) | ||
PWM Output | 7 (2 exported on header) | 7 | 12 |
UART | 1 | ||
SPI | 1 | ||
I2C | 1 | ||
Аналоговый вход Пины | 7 (ADC 8/10/12 bit) | ||
Analog Output Пины | 1 (DAC 10 bit) | ||
External Interrupts | 8 (0, 1, 4, 5, 6, 7, 8, A1 — or 16 -, A2 — or 17) | ||
Analog I/O Пины | 12 (4 exported on header) | 12 | |
Постоянный ток на I/O Пин | 40 mA | 40 mA on I/O Пины; 1A on 3.3 V Пин only when powered via external power supply | 7 mA |
Флэш-память | 32 KB (4 KB для загрузчика) | 256 KB | |
SRAM | 2.5 KB | 2.5 KB | 32 KB |
EEPROM | 1 KB | 1 KB | no |
Тактовая частота | 16 MHz | 16 MHz | 32.768 kHz (RTC), 48 MHz |
LED встроенные | 6 | ||
Power Consumption | 29 mA | ||
Дополнительно | * GPIO — Exported on headers * DogOLED — 1 Exported on headers | * Цифровые I/O Пины — 36-57 V * 4 used SD Card Select; 10 used for W550 Select * Card Reader — Micro SD Card, with active voltage translators | * Full-speed USB Device and Embedded Host * Antenna — 2 dB * Carrier Frequency — 868 MHz * Working Region — EU |
Длина | 51 mm | 68.58 mm | 67.64 mm |
Ширина | 42 mm | 53.34 mm | 25 mm |
Вес | .0012 Kg | 28 g | 32 g |
Microprocessor | |||
Processor | Atheros AR9331 | 802. | |
Architecture | MIPS | ||
Рабочее напряжение | 3.3 V | ||
Флэш-память | 16 MB | ||
RAM | 64 MB DDR2 | ||
Тактовая частота | 400 MHz | ||
WiFi | 802.11 b/g/n 2.4 GHz | ||
Ethernet | 802.3 10/100 Mbit/s (Exported on headers) | 802.3 10/100 Mbit / s | |
USB | 2.0 Host (Exported on headers) |
Модули
Arduino MKR1000 | Arduino YUN Mini | |
---|---|---|
AVR Микроконтроллер | ||
Микроконтроллер | SAMD21 Cortex-MO +32bit low power ARM MCU | ATmega32u4 |
Рабочее напряжение | 5 V | |
Board Power Supply | 5 V (USB/VIN) | |
Supported Battery | Li-Po single cell, 3.7 V, 700mAh minimum | |
Circuit Рабочее напряжение | 3.3 V | |
Цифровые (I/O) Пины | 8 | 20 |
PWM Пины | 12 (0,1,2,3,4,5,6,7,8,10, A3 — or 18 -, A4 -or 19) | |
UART | 1 | |
SPI | 1 | |
I2C | 1 | |
PWM Output | 7 | |
Power Consumption | 170 mA | |
Аналоговый вход Пины | 7 (ADC 8/10/12 bit) | |
Analog Output Пины | 1 (DAC 10 bit) | |
Analog I/O Пины | 12 | |
External Interrupts | 8 (0, 1, 4, 5, 6, 7, 8, A1 — or 16 -, A2 — or 17) | |
Постоянный ток на I/O Пин | 7mA | 40 mA on I/O Пины; 50 mA on 3.3 V Пин |
Флэш-память | 256 KB | 32 KB |
SRAM | 32 KB | 2.5 KB |
EEPROM | none | 1 KB |
Тактовая частота | 32. | |
LED встроенные | 6 | |
Длина | 61.5 mm | 71.1 mm |
Ширина | 25 mm | 23 mm |
Вес | 32 g | 16 g |
Microprocessor | ||
Processor | Atheros AR9331 | |
Architecture | MIPS 24 K processor operating at up to 400 MHz | |
Рабочее напряжение | 3.3 V typ.380 mA (113~570 mA) | |
Флэш-память | 16 MB | |
RAM | 64 MB DDR2 | |
Тактовая частота | 400 MHz | |
WiFi | 802.11 b/g/n 2.4 GHz | |
Ethernet | 802.3 10/100 Mbit/s | |
USB | 2.0 Host |
Переносные электронные устройства
Ниже сравнительные таблицы, так называемых, переносных электронных устройств.
Платы
Arduino Gemma | Lilypad Arduino USB | Lilypad Arduino Main Board | |
---|---|---|---|
Микроконтроллер | ATtiny85 | ATMega32u4 | ATmega168 or ATmega328V |
Рабочее напряжение | 3.3 V | 3.3 V | 2.7 V — 5.5 V |
Входное напряжение | 4 V — 16 V | 3.8 V — 5 V | 2.7 V — 5.5 V |
Цифровые (I/O) Пины | 3 | 9 | 14 |
PWM Каналы | 2 | 4 | 6 |
Аналоговый вход Каналы | 1 | 4 | 6 |
Постоянный ток на I/O Пин | 20 mA | 40 mA | 40 mA |
Absorption | 9 mA while running | ||
Флэш-память | 8 KB (2.75 KB для загрузчика) | 32 KB (4 KB для загрузчика) | 16 KB (2 KB для загрузчика) |
SRAM | 512 KB | 2.5 KB | 1 KB |
EEPROM | 512 KB | 1 KB | 512 KB |
Тактовая частота | 8 MHz | 8 MHz | 8 MHz |
LED встроенные | 1 | ||
Диаметр | 27. | 50 mm |
Платы (продолжение)
Lilypad Arduino Simple | Lilypad Arduino Simple Snap | |
---|---|---|
Микроконтроллер | ATmega328 | ATmega328 |
Рабочее напряжение | 2.7 V — 5.5 V | 2.7 V — 5.5 V |
Входное напряжение | 2.7 V — 5.5 V | 2.7 V — 5.5 V |
Цифровые (I/O) Пины | 9 | 9 |
PWM Каналы | 5 | 5 |
Аналоговый вход Каналы | 4 | 4 |
Постоянный ток на I/O Пин | 40 mA | 40 mA |
Флэш-память | 32 KB (2 KB для загрузчика) | 32 KB (2 KB для загрузчика) |
SRAM | 2 KB | 2 KB |
EEPROM | 1 KB | 1 KB |
Тактовая частота | 8 MHz | 8 MHz |
Диаметр | 50 mm | 50 mm |
Радиус | 18 mm |
Сводная таблица
Эта сводная таблица показывает сравнение характеристик всех плат Arduino и Genuino.
Название | Процессор | Рабочее/входное напряжение | Скорость процессора | Аналоговый Вход/выход | Цифровые IO/PWM | EEPROM [kB] | SRAM [kB] | Flash [kB] | USB | UART |
---|---|---|---|---|---|---|---|---|---|---|
101 | Intel® Curie | 3.3 V/ 7-12V | 32MHz | 6/0 | 14/4 | — | 24 | 196 | Regular | — |
Gemma | ATtiny85 | 3.3 V / 4-16 V | 8 MHz | 1/0 | 3/2 | 0.5 | 0.5 | 8 | Micro | 0 |
LilyPad | ATmega168VATmega328P | 2.7-5.5 V /2.7-5.5 V | 8MHz | 6/0 | 14/6 | 0.512 | 1 | 16 | — | — |
LilyPad SimpleSnap | ATmega328P | 2. | 8 MHz | 4/0 | 9/4 | 1 | 2 | 32 | — | — |
LilyPad USB | ATmega32U4 | 3.3 V / 3.8-5 V | 8 MHz | 4/0 | 9/4 | 1 | 2.5 | 32 | Micro | — |
Mega 2560 | ATmega2560 | 5 V / 7-12 V | 16 MHz | 16/0 | 54/15 | 4 | 8 | 256 | Regular | 4 |
Micro | ATmega32U4 | 5 V / 7-12 V | 16 MHz | 12/0 | 20/7 | 1 | 2.5 | 32 | Micro | 1 |
MKR1000 | SAMD21 Cortex-M0+ | 3.3 V/ 5V | 48MHz | 7/1 | 8/4 | — | 32 | 256 | Micro | 1 |
Pro | ATmega168 ATmega328P | 3.3 V / 3.35-12 V5 V / 5-12 V | 8 MHz 16 MHz | 6/0 | 14/6 | 0.512 1 | 1 2 | 16 32 | — | 1 |
Pro Mini | ATmega328P | 3.3 V / 3.35-12 V5 V / 5-12 V | 8 MHz 16 MHz | 6/0 | 14/6 | 1 | 2 | 32 | — | 1 |
Uno | ATmega328P | 5 V / 7-12 V | 16 MHz | 6/0 | 14/6 | 1 | 2 | 32 | Regular | 1 |
Zero | ATSAMD21G18 | 3.3 V / 7-12 V | 48 MHz | 6/1 | 14/10 | — | 32 | 256 | 2 Micro | 2 |
Due | ATSAM3X8E | 3.3 V / 7-12 V | 84 MHz | 12/2 | 54/12 | — | 96 | 512 | 2 Micro | 4 |
Esplora | ATmega32U4 | 5 V / 7-12 V | 16 MHz | — | — | 1 | 2.5 | 32 | Micro | — |
Ethernet | ATmega328P | 5 V / 7-12 V | 16 MHz | 6/0 | 14/4 | 1 | 2 | 32 | Regular | — |
Leonardo | ATmega32U4 | 5 V / 7-12 V | 16 MHz | 12/0 | 20/7 | 1 | 2. | 32 | Micro | 1 |
Mega ADK | ATmega2560 | 5 V / 7-12 V | 16 MHz | 16/0 | 54/15 | 4 | 8 | 256 | Regular | 4 |
Mini | ATmega328P | 5 V / 7-9 V | 16 MHz | 8/0 | 14/6 | 1 | 2 | 32 | — | — |
Nano | ATmega168ATmega328P | 5 V / 7-9 V | 16 MHz | 8/0 | 14/6 | 0.5121 | 12 | 1632 | Mini | 1 |
Yùn | ATmega32U4AR9331 Linux | 5 V | 16 MHz400MHz | 12/0 | 20/7 | 1 | 2.516MB | 3264MB | Micro | 1 |
Arduino Robot | ATmega32u4 | 5 V | 16 MHz | 6/0 | 20/6 | 1 KB (ATmega32u4)/512 Kbit (I2C) | 2.5 KB(ATmega32u4) | 32 KB (ATmega32u4) of which5 KB used by bootloader | 1 | 1 |
MKRZero | SAMD21Cortex-M0+32bit low powerARM MCU | 3.3 V | 48 MHz | 7 (ADC 8/10/12 bit)/1(DAC 10 bit) | 22/12 | No | 32 KB | 256 KB | 1 | 1 |
Спецификации плат, которые больше не выпускаются.
Название | Процессор | Рабочее/входное напряжение | Скорость процессора | Аналоговые вход/выход | Цифровые IO/PWM | EEPROM [kB] | SRAM [kB] | Flash [kB] | USB | UART |
BT | ATmega328P | 5 V / 2.5-12 V | 16 MHz | 6/0 | 14/6 | 1 | 2 | 32 | — | 1 |
Fio | ATmega328P | 3.3 V / 3.7-7 V | 8 MHz | 8/0 | 14/6 | 1 | 2 | 32 | Mini | 1 |
Ардуино и микросхемы | Arduino UNO R3 Mega328P-AU Ch440G
Плата микроконтроллера «UNO R3 ATmega328P-AU» — это 3-я версия хорошо знакомого нам контроллера от ARDUINO. Главное отличие от предыдущих версий состоит в замене микросхемы-преобразователя от фирмы «FTDI» FT232RL на чип «Ch440G» с ещё большим функционалом. AVR-микроконтроллер используется той же фирмы ATMEL: ATMega328P-AU в корпусе «TQFP32». На сегодня это самый надежный и распространённый контроллер с достаточным функционалом для любителей «Умного Дома».
Устройство продается в комплекте с USB-кабелем для подключения к компьютеру. Также необходимо приобрести адаптер питания с выходом на 9 вольт и нагрузкой 900мА. При выборе адаптера следует учесть, разъем на плате контроллера имеет диаметр 2,1мм с плюсом в центре. Или можно использовать «DC-DC конвертер с питанием от батарейки. Подключить преобразователь надо к пину «Vin».
На нашем сайте в разделе «Библиотека файлов» Вы можете скачать SOFT от ARDUINO для программирования в MAC OSX 10.7 (и выше) или в WINDOWS (любая версия). Программа находится в свободном доступе.
При подключении устройства инициализируется виртуальный COM-порт. Т.е. контроллер использует последовательный интерфейс (SPI) передачи данных.
Контроллер можно программировать с помощью отдельного программатора, например «USBASP ISP», который подключается к разъёму ISCP. С описанием дополнительных функций, который предоставляет этот программатор можно ознакомиться в отдельной статье на нашем сайте.
Данная плата имеет 14 цифровых выводов (DO) с обозначением на плате D0-D13. Через Цифровые выводы можно генерировать ШИМ-сигнал. Т.е. можно управлять сервоприводами и т.п. Цифровые порты программируются на вход или выход программой ARDUINO от потребности.
И есть 6 вводов для подключения устройств с аналоговыми сигналами. Обозначаются на плате А0-А5. В отличие от цифровых портов аналоговые могут работать только на вход сигнала. Питание на аналоговых портах должно быть 5 вольт относительно GND.
Функционал цифровых портов схож с портами на плате контроллера «NANO V3. 0»
10-SS,
11-MOSI (ввод данных тактирования),
12-MISO (вывод данных тактирования),
13-SCK (SPI)
На плате контроллера есть два светодиода для визуализации процесса передачи данных, подсоединенные к пинам:
0 ТХ -(вывод данных)
1 RX — (ввод данных)
Обратите внимание, что выводы «5V» и «3.3V» предназначены для питания устройств и использовать их для питания платы контроллера НЕ рекомендуется.
При подключении устройств ВАЖНО помнить, что предельно допустимый ток на одном выводе НЕ должен превышать 40мА, на всей группе (цифровой или аналоговой) суммарный ток НЕ должен быть выше 100мА. Получается, что суммарный ТОК НАГРУЗКИ ДОЛЖЕН БЫТЬ НЕ БОЛЕЕ 200мА!
Статья для ЯБЛОЧНИКОВ!
Часто обращаются с таким вопросом: не хочет «ARDUINO CC» видеть данную плату. Хочу ниже описать процесс подключения к моему MACBOOK PRO, на котором установлена последняя версия MAC «OS X El Capinan 10.11.2» — может кому-то и пригодиться!
Итак; подключив через USB-кабель Ардуинку к своему ноуту, я запустил программу-оболочку «Arduino» — и обнаружил, что:
1) СВЕТОИОД питания светиться
2) Индикатор состояния (светодиод) моргает в штатном режиме
3) Оболочка НЕ определяет Serial port
4) Система OSX не видит устройство (плату контроллера) — даже нет USB-порта.
Вот такая вводная встала передо мною.
Вопрос я решил следующим образом.
Первый этап — Сначала надо было решить вопрос с виртуальным СОМ-портом в самой Маковской системе. Но нужен не просто эмулятор, а такой, который был бы совместим с адаптером «Ch440G». Такой драйвер вскоре нашелся и скачать его можно из раздела «Библиотека файлов». Или на вкладке «Файлы».Перед установкой драйвера я советую отключить Плату от разъема! После установки Система попросит перезагрузку. После перезагрузки мы можем проверить, что у нас получилось. А получилось вот что: подключив плату, мы заходим в Диспетчер Устройств, т.е. нажимаем на «Яблоко» — далее «Об этом Мас» -«Отчет о системе». Находим вкладку «USB» и мы увидим, что в «Структуре USB» появился наш пунктик: «Шина USB3.0».
После подключения «платы» появится нужный нам пункт «USB2.0 Serial». Т.е. мы получили виртуальный СОМ-порт. И система определила самоё устройство. Осталось дело за малым!
Второй этап: когда вопрос с интеграцией нужного нам виртуального порта в систему решен, остается найти драйвер, с которым будет работать MAC OS. На нашей плате контроллера установлен ЧИП «Ch440G». Скачиваем драйвер из «Библиотеки файлов» или из Инета для этого ЧИПА и устанавливаем. Опять же предварительно отключаем нашу плату от USB-разъема. Система опять попросит перезагрузку. После перезагрузки подключаем «Плату контроллера» к USB-разъему и запускаем оболочку «Arduino». Далее открываем закладку «Инструменты» («Tools») и там должен появиться Последовательный порт «.1410» !!
Все. Далее можно писать свои проекты.
Чем отличаются друг от друга ATmega328, ATmega328P, ATmega328PU? | avr
Компания Atmel применяет довольно неудобную систему именования чипов AVR, которая часто приводит в недоумение даже опытных пользователей. Бывает трудно понять, с какой именно маркировкой следует использовать кристалл для разработки, если имеется несколько на первый взгляд незначительно отличающихся вариантов. В этой статье сделана попытка обобщить различия между ATmega328, ATmega328P, ATmega328PU.
1. Для обычных применений нет никакой разницы между Atmega328P и Atmega328. Так что можно просто заменить ATmega328 на ATmega328P или наоборот.
2. Atmega328P меньше потребляет энергии, чем Atmega328 (в чем можно убедиться, если посмотреть таблицы параметров даташита). Это означает, что для Atmega328P использовался более точный техпроцесс (60 нм у ATmega328P против 90 нм у ATmega328), и обычно эти чипы дороже. Микроконтроллеры AVR, которые меньше потребляют, обладают по терминологии Atmel классификацией PicoPower. Таким образом, в устройствах с батарейным питанием предпочтительнее использовать ATmega328P, и задействовать у них специальные режимы управления питанием с целью снижения энергопотребления.
3. Сигнатуры чипа для Atmega328P и Atmega328 отличаются. Так что если используются программы, читающие сигнатуру чипа (наподобие утилиты программирования avrdude в составе Arduino IDE), то Вы можете встретиться с сообщениями об ошибке, если неправильно укажете тип микроконтроллера.
4. Корпус микроконтроллера типа TQFP32 доступен только для Atmega328P, и его нет для Atmega328. Возможно это связано с тем, что толщина кристалла Atmega328 больше, и он не помещается в корпус TQFP32.
5. В Atmega328 нет фьюза для запрета детектора некачественного питания (Brown-out Detector, BOD). В Atmega328P этот фьюз есть, что позволяет дополнительно уменьшить энергопотребление, если отключить BOD.
Фьюз BOD имеется только в AVR с технологией picoPower ATmega48PA, ATmega88PA, ATmega168PA, ATmega328P. Фьюзы BODS и BODSE имеются только в AVR с технологией picoPower ATmega48PA, ATmega88PA, ATmega168PA, ATmega328P.
6. Есть незначительные отличия в системе команд, относящиеся к инструкциям перехода. Если компилировать для чипа ATmega328, то программа будет одинаково работоспособна и на ATmega328, и на ATmega328P.
Мнемоника | Операнды | Описание | Операция | Действие на флаги | # циклов |
JMP | adr | Прямой переход по адресу | PC ← adr | нет | 3 |
CALL | adr | Прямой вызов подпрограммы по адресу | PC ← adr | нет | 4 |
Примечание: эти инструкции имеются только в ATmega168PA и ATmega328P.
7. Суффикс PU обозначает тип корпуса кристалла — пластиковый DIP28 (PDIP), это не имеет никакого отношения к суффиксу P. Т. е. ATmega328PU это просто ATmega328 в корпусе PDIP28.
[Суффиксы -PU, -AU, -MU]
Эти суффиксы обозначают тип корпуса микроконтроллера. PU соответствуют пластиковому DIP (PDIP), AU пластиковому TQFP, MU пластиковому QFN.
ATmega328-PU, корпус PDIP28 | ATmega328P-AU, корпус TQFP32 |
ATMega328 в Arduino без кварца
На большинстве плат ARDUINO с микроконтроллером ATMega238P установлен кварцевый резонатор 16 MHz. Микроконтроллер ATMega238P может работать на любой частоте вплоть до 16 МГц, в том числе и с внутренним RC-генератором на частоте 8 MHz.
Микроконтроллер ATMega238P полноценно может быть запрограммирован в среде Arduino IDE будучи настроенным на частоту 8 МГц с внутренним RC-генератором.
Приведём пример превращения Arduino UNO с микроконтроллером ATMega238P работающем на частоте 16 МГц в Arduino с микроконтроллером ATMega238P работающем на частоте 8 МГц без кварцевого резонатора. Наметим план работ:
- Прописать в файле конфигурации Arduino IDE (boards.txt) параметры платы Arduino с ATMega238P на 8 МГц.
- Подключить к плате Arduino UNO программатор USBasp.
- Записать в плату Arduino UNO загрузчик, способный работать на микроконтроллере с частотой 8 МГц.
- Проверить работоспособность изделия (Arduino с ATMega238P на 8 МГц).
Файл boards.txt можно найти в папке /arduino-1.8.12/hardware/arduino/avr вашего дистрибутива Arduino IDE. Допишем в этот файл следующие строки:
##############################################################
dior.name=Arduino 328P 8MHz int
dior.upload.tool=avrdude
dior.upload.protocol=arduino
dior.upload.maximum_size=30720
dior.upload.maximum_data_size=2048
dior.upload.speed=57600
dior.bootloader.tool=avrdude
dior.bootloader.low_fuses=0xE2
dior.bootloader.high_fuses=0xDA
dior.bootloader.extended_fuses=0xFD
dior.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex
dior.bootloader.unlock_bits=0x3F
dior.bootloader.lock_bits=0x0F
dior.build.mcu=atmega328p
dior.build.f_cpu=8000000L
dior.build.board=AVR_FIO
dior.build.core=arduino
dior.build.variant=eightanaloginputs
Подключим к плате Arduino пока ещё UNO программатор USBasp. На плате Arduino UNO есть разъём ICSP 6 pin а на программаторе USBasp разъём 10 pin. Если нет переходника, подключаем по схеме:
Запускаем Arduino IDE и в меню Инструменты / Плата выбираем плату «Arduino 328P 8MHz int». В меню Инструменты / Программатор выбираем «USBasp». Записываем загрузчик — меню Инструменты / Записать загрузчик. Одновременно с записью загрузчика в микроконтроллер будут записаны фьюзы L:0xE2 H:0xDA E:0xFD
Теперь микроконтроллер может работать без платы Ардуино, а программировать его можно всё так же на плате Ардуино в программе Ардуино.
ATmega328P Standalone Board — Arduino Project Hub
ATmega328P Минимальная конфигурацияПрежде чем строить нашу автономную плату с чипом ATmega328P, совместимую с Arduino, давайте взглянем на великолепную плату Arduino UNO и основные компоненты, которые использовались для создания этой красивой предмет.
Первым основным компонентом является микросхема ATmega328P, которая является мозгом платы. Стабилизатор напряжения, который регулирует входное напряжение до чистого выхода 5 В, который используется в основном микросхемой ATmega320p.Кварцевый генератор 16 МГц, который создает электрический сигнал заданной частоты. Он просто считает секунды, поэтому вам не нужно это делать. Некоторые светодиоды, чтобы убедиться, что плата работает без сбоев и все еще жива. DC Plug позволяет подключать плату к источнику постоянного тока. USB-порт позволяет подключить плату к компьютеру. Некоторые штыревые заголовки для связи с внешним миром (датчики, двигатели, светодиоды, …) через некоторые перемычки.
Зная основные компоненты, используемые в плате Arduino UNO, мы можем сделать ее, используя те же основные компоненты, которые мы указали ранее, которые называются минимальной конфигурацией ATmega328P.
Схема Схема соединенийКак видите, минимальная конфигурация означает использование минимально возможного количества компонентов, благодаря чему эта штука работает без проблем. но позже мы добавим еще несколько компонентов, таких как светодиоды, кнопки, заголовки контактов, .., чтобы оживить ситуацию.
ATmega328P работает при напряжении 5 В, которое должно быть хорошо отрегулировано без скачков напряжения, поэтому мы используем конденсатор на 10 мкФ между линией питания 5 В. Для того, чтобы ATmega328p работал, вы должны подать ВЫСОКОЕ логическое значение «5V» на вывод «сброса».
Вывод «Reset» является активным выводом низкого уровня, что означает, что если вы применили к нему логическое значение LOW «0V», он перезапустит микросхему. Поэтому мы оставляем его ВЫСОКИМ, чтобы отключить его.
Обычно микросхема ATmega328P работает на кварцевом генераторе 16 МГц, размещенном на контактах 9 и 10, но для того, чтобы заставить его колебаться, ему нужны два конденсатора 22 пикофарад, подключенные к заземлению.
Но мы хотим оживить ситуацию, давайте добавим еще несколько компонентов, чтобы дать плате больше функций и сделать ее более удобной для пользователя.
Схема Плата Cairoduino V1.0Мы добавили несколько новых компонентов в минимальную конфигурацию, которую мы обсуждали ранее, чтобы добавить дополнительные функции к плате и сделать ее более простой в использовании, как обычную плату Arduino UNO.
- Разъем питания постоянного тока для простого и быстрого подключения платы к источнику питания.
- L7805 стабилизатор напряжения, поэтому вы можете подключить его к любому источнику питания в диапазоне от 7 В до 12 В, а микросхема L7805 будет регулировать это напряжение и подавать микросхему ATmega328p хорошо стабилизированное напряжение 5 В.Разница между входным и выходным напряжениями выражается в виде тепла.
- Кнопка сброса, чтобы можно было легко сбросить плату в случае любого неправильного поведения.
- светодиодный индикатор питания как индикатор, который сообщает пользователю, подключена ли плата к источнику питания или нет.
- Выключатель.
- -контактные разъемы, позволяющие пользователю легко подключать к плате любые электронные компоненты, такие как датчики, светодиоды, переключатели … с помощью некоторых перемычек, как любая плата Arduino.
- Коммутационная плата FTDI, чтобы можно было подключить плату к ноутбуку, чтобы вы могли легко программировать и загружать на нее код, не удаляя сам чип ATmega.
Эта плата разработана на платформе Eagle от Autodesk. Вам не нужно быть экспертом по дизайну печатных плат, чтобы создать или владеть этой платой, потому что это полностью открытый исходный код, вы можете загрузить весь проект по этой ссылке. Github
Если вам нужен этот проект орла в качестве шаблона, чтобы вы могли настроить его в соответствии с вашими потребностями, вы можете делать с проектом все, что захотите.
Вы можете заказать свою собственную плату Cairoduino на PCBWay всего за два клика. по этой ссылке. PCBWay
С моей точки зрения, PCBWay имеет самый удобный веб-дизайн взаимодействия в отрасли! Вы можете мгновенно получить расценки на свою печатную плату, вы также можете проверить статус изготовления и обработки заказа онлайн на панели своей учетной записи, после того, как ваши печатные платы будут отправлены на ваш адрес, вы можете отслеживать статус доставки вашего заказа онлайн и многое другое.
Загрузка загрузчика в чипЧтобы использовать Arduino IDE для программирования чипа, нам нужно записать загрузчик на чип Atmega.На этом этапе нам понадобится плата Arduino UNO, которую мы будем использовать в качестве программатора, подключив выводы MOSI, MISO, SCK между микросхемой ATmega328p и платой Arduino UNO.
Если у вас уже есть чип ATmega с предварительно загруженным загрузчиком Arduino, вам не нужно выполнять эти действия.
После подключения микросхемы ATmega к плате Arduino нам нужно открыть Arduino IDE -> Файл -> Примеры -> ArduinoISP -> ArduinoISP
Затем установите для программатора Arduino как ISP.Инструменты -> Программист -> Arduino как ISP.
Теперь пора записать загрузчик, Инструменты -> Записать загрузчик.
Коммутационная плата FTDIКак мы заявляли ранее, мы используем модуль FTDI для подключения платы Cairoduino к ноутбуку, чтобы мы могли программировать и загружать на него код, также вы можете отправлять, читать некоторые вещи назад и вперед на серийный номер Монитор через установленную последовательную связь.
Не подключайте источник постоянного тока к плате, пока вы подключаете его к ноутбуку.одновременное подключение платы к двум источникам питания слишком тяжело для нее.
Светодиод мигаетДавайте попробуем загрузить код приветствия мира на доску, чтобы увидеть, ведет ли он себя должным образом или нет. откройте Arduino IDE -> Примеры -> Основы -> Blink
. После подключения платы к ноутбуку и нажатия кнопки загрузки вы должны увидеть встроенный светодиод, подключенный к контакту 13, мигающий каждую 1 секунду. Если вы хотите узнать больше о том, как работает мигание светодиода, вы можете проверить это руководство, которое мы опубликовали ранее.Светодиодный индикатор Arduino мигает
Если вам нравится этот контент, посетите наш веб-сайт для получения дополнительных проектов с открытым исходным кодом и руководств.
========================== Makesomestuff.org =================== ======
Программирование микроконтроллера Atmega328p с Arduino IDE
Введение
За последние несколько руководств мы упомянули несколько сценариев, в которых использование любой платы Arduino в проекте может быть излишним из-за стоимости, размера и других технических причин, таких как высокое энергопотребление.В последнем руководстве мы обсудили альтернативный способ использования Arduino, то есть использование одного микроконтроллера Atmega328p, который устраняет все недостатки использования платы Arduino, сохраняя при этом одно из самых больших преимуществ платформы Arduino; простота программирования.
Микроконтроллер Atmega328p
Мы подробно рассказали о подготовке микроконтроллера Atmega328p к программированию путем прошивки загрузчика Arduino на Atmega328p, и сегодняшнее руководство будет продолжением этого руководства, поскольку мы рассмотрим, как программировать загружаемый микроконтроллер Atmega328p с помощью Arduino IDE.
Микроконтроллер Atmega328p, как и любой другой микроконтроллер, может оказаться довольно сложной задачей для новичка. Обычно они требуют определенного набора инструментов, включая программатор (оборудование) и платформу разработки (например, Atmel Studio) для написания кода. Эти платформы разработки, в отличие от Arduino IDE, обычно требуют высоких знаний C или других языков программирования, без ярлыков и упрощенных функций, которые предоставляет Arduino.
Чтобы устранить эту трудность, микроконтроллер снабжен загрузчиком Arduino, что делает его готовым к программированию с использованием более простой и удобной в использовании Arduino IDE.
Чтобы запрограммировать микроконтроллер с помощью Arduino IDE, микроконтроллер должен быть подключен к компьютеру через какое-то оборудование. Обычно это делается двумя основными способами:
- Использование переходника USB — последовательный / TTL
- Использование платы Arduino
Каждый из этих подходов предоставляет микроконтроллеру интерфейс, обеспечивающий взаимодействие между компьютером и микроконтроллером.
Мы рассмотрим каждый из этих подходов один за другим и рассмотрим компоненты и настройки, необходимые для загрузки кода в микроконтроллер.
Использование переходника USB — последовательный / TTL
Адаптер USB-to-Serial / TTL
Первый подход предполагает подключение адаптера USB-to-Serial к микроконтроллеру. Адаптер USB к последовательному / TTL преобразует сигналы данных с USB на компьютере в последовательный / TTL для микроконтроллера и наоборот. Это обеспечивает связь микроконтроллера (последовательного интерфейса) с Arduino IDE, работающей на ПК (USB). Эта установка по сравнению со вторым, безусловно, самая дешевая, поскольку эти адаптеры обычно очень дешевы.
Необходимые компоненты
Для этого подхода требуются следующие компоненты;
- Микроконтроллер Atmega328P с установленным загрузчиком Arduino
- Макет
- Адаптер USB — последовательный / TTL
- кварцевый генератор 16 МГц
- 22pf конденсаторы x2
- Конденсатор 100 нФ
- Провода перемычки
- Резистор 100 Ом
- светодиод
Схема
Подключите адаптер USB к последовательному / TTL к микроконтроллеру, как показано на схемах ниже.Не забывайте, что эта процедура будет работать только в том случае, если микроконтроллер был прошит загрузчиком в соответствии с процедурой, описанной в последнем руководстве.
Схема 1: USB-последовательный адаптер и Atmega328P
Большинство адаптеров можно настроить для работы с логическим уровнем 5 В или 3,3 В. Убедитесь, что ваш настроен для работы с уровнем напряжения 5 В, поскольку питание на микроконтроллер составляет 5 В.
Код загрузки
Загрузка кода в микроконтроллер после того, как вы закончите с подключениями, не требует дополнительной работы, что вы бы сделали, если бы вы использовали плату Arduino.После ввода кода выберите порт, к которому подключен ваш адаптер, затем тип платы и нажмите кнопку загрузки. Загрузка занимает всего несколько секунд, как и плата Arduino.
Примечание: при программировании микроконтроллера Atmega328p с использованием Arduino IDE необходимо выбрать соответствующий тип платы — «Arduino Duemilanove или Nano w / ATmega328».
Для тестирования настройки мы будем использовать пример мигания Arduino. Выберите пример и нажмите «Загрузить». Через некоторое время вы должны увидеть, как подключенный светодиодный индикатор начнет мигать.
Использование платы Arduino
Второй подход предполагает использование платы Arduino одним из двух аналогичных способов;
- Путем замены микроконтроллера на Arduino Uno на программируемый
- Используя любую из плат Arduino в качестве внутрисистемного программатора.
Первый режим — это самый простой способ загрузить код в микроконтроллер, так как он включает в себя простую замену микроконтроллера на Uno на тот, который нужно программировать.Однако это может быть не лучшим вариантом при прототипировании, поскольку перемещение чипа от Arduino к проекту, назад и вперед, может привести к повреждению контактов микроконтроллера. Другим недостатком этого является то, что он работает только с Arduino Uno, поскольку все другие платы Arduino используют микроконтроллеры типа SMD, что делает замену непрактичной, а разработку дорогостоящей.
Так что никакой схемы для этого, просто поменяйте местами микроконтроллер и нажмите «Загрузить».
Второй метод предполагает использование Arduino Uno в качестве внутрисистемного программатора.
Необходимые компоненты
Для использования этого подхода вам потребуются следующие компоненты;
- Arduino Uno
- Макет
- Адаптер USB — последовательный / TTL
- кварцевый генератор 16 МГц
- 22pf конденсаторы x2
- Провода перемычки
- резистор 10к
- Резистор 100 Ом
- светодиод
Схемы
Подключите компоненты, как показано на схемах ниже.
Программирование Atmeg328p с помощью Arduino Uno
При использовании этого подхода важно удалить микроконтроллер платы Arduino, чтобы предотвратить помехи.
Код загрузки
Процесс загрузки кода такой же, как уже описанный. Введите код для загрузки или выберите пример -> выберите тип платы (Duemilanove или Nano W / atmeg328), выберите правильный порт и нажмите кнопку загрузки. Код будет загружен в микроконтроллер.
После успешной загрузки кода с использованием любого из подходов, описанных выше, преобразователь Arduino или USB — Serial / TTL можно отключить, а проект подключить к батарее для автономной работы, как показано на изображении ниже.
Программируемый микроконтроллер Atmega328p
Вот и все, ребята из этого руководства, спасибо за подписку.
Не стесняйтесь оставлять вопросы и комментарии в разделе комментариев, я постараюсь ответить на них как можно скорее.
До следующего раза!
Распиновка микроконтроллера
ATMega328P, конфигурация контактов, характеристики и техническое описание
Микроконтроллер ATMega328P
Микроконтроллер ATMega328P
Микроконтроллер ATMega328P
Распиновка ATMega328P
нажмите на изображение для увеличения
ATMEGA328P — это высокопроизводительный контроллер с низким энергопотреблением от Microchip.ATMEGA328P — 8-битный микроконтроллер на базе архитектуры AVR RISC. Это самый популярный из всех контроллеров AVR, поскольку он используется в платах ARDUINO.
Конфигурация контактов ATMega328
ATMEGA328P — это 28-контактный чип, как показано на схеме контактов выше. Многие выводы микросхемы здесь выполняют несколько функций. Мы опишем функции каждого вывода в таблице ниже.
Контакт № | Имя пина | Описание | Дополнительная функция |
1 | PC6 (СБРОС) | Pin6 PORTC | Вывод по умолчанию используется как вывод сброса.PC6 может использоваться как вывод ввода / вывода, только если запрограммирован предохранитель RSTDISBL. |
2 | PD0 (RXD) | Pin0 PORTD | RXD (контакт ввода данных для USART) Интерфейс последовательной связи USART [Может использоваться для программирования] |
3 | PD1 (TXD) | Контакт1 PORTD | TXD (вывод данных для USART) Интерфейс последовательной связи USART [Может использоваться для программирования] INT2 (вход внешнего прерывания 2) |
4 | PD2 (INT0) | Контакт 2 PORTD | Внешний источник прерывания 0 |
5 | PD3 (INT1 / OC2B) | Контакт 3 PORTD | Внешний источник прерывания 1 OC2B (ШИМ — выход таймера / счетчика2, выход сравнения B) |
6 | PD4 (XCK / T0) | Pin4 PORTD | T0 (Вход внешнего счетчика Timer0) XCK (ввод / вывод внешних часов USART) |
7 | VCC | Подключен к положительному напряжению | |
8 | GND | Подключено к земле | |
9 | PB6 (XTAL1 / TOSC1) | Pin6 PORTB | XTAL1 (вывод 1 генератора тактовой частоты или вход внешнего тактового сигнала) TOSC1 (вывод 1 генератора таймера) |
10 | PB7 (XTAL2 / TOSC2) | Pin7 порта PORTB | XTAL2 (вывод 2 генератора тактовой частоты) TOSC2 (вывод 2 генератора таймера) |
11 | PD5 (T1 / OC0B) | Контакт 5 PORTD | T1 (Вход внешнего счетчика Timer1) OC0B (ШИМ — выход таймера / счетчика 0, выход сравнения B) |
12 | PD6 (AIN0 / OC0A) | Pin6 PORTD | AIN0 (положительный I / P аналогового компаратора) OC0A (ШИМ — выход таймера / счетчика 0, выход сравнения A) |
13 | PD7 (AIN1) | Pin7 PORTD | AIN1 (отрицательный I / P аналогового компаратора) |
14 | PB0 (ICP1 / CLKO) | Pin0 порта PORTB | ICP1 (вход захвата таймера / счетчика 1) CLKO (разделенные системные часы.Разделенные системные часы могут выводиться на вывод PB0) |
15 | PB1 (OC1A) | Pin1 порта PORTB | OC1A (выход таймера / счетчика1, выход сравнения A) |
16 | PB2 (SS / OC1B) | Контакт 2 порта PORTB | SS (вход выбора ведомого SPI).На этом выводе низкий уровень, когда контроллер действует как ведомый. [Последовательный периферийный интерфейс (SPI) для программирования] OC1B (выход таймера / счетчика1, выход сравнения B) |
17 | PB3 (MOSI / OC2A) | Контакт 3 PORTB | MOSI (главный выход, подчиненный вход).Когда контроллер действует как подчиненный, данные принимаются на этот вывод. [Последовательный периферийный интерфейс (SPI) для программирования] OC2 (Выход таймера / счетчика2, выход сравнения) |
18 | PB4 (MISO) | Pin4 порта PORTB | MISO (главный вход и выход подчиненного устройства). Когда контроллер действует как подчиненный, данные передаются этим контроллером мастеру через этот вывод. [Последовательный периферийный интерфейс (SPI) для программирования] |
19 | PB5 (SCK) | Pin5 порта PORTB | SCK (последовательные часы шины SPI). Это часы, совместно используемые этим контроллером и другой системой для точной передачи данных. [Последовательный периферийный интерфейс (SPI) для программирования] |
20 | AVCC | Питание для внутреннего преобразователя АЦП | |
21 | AREF | Analog Reference Pin для АЦП | |
22 | GND | ЗЕМЛЯ | |
23 | PC0 (АЦП0) | Pin0 PORTC | ADC0 (входной канал ADC 0) |
24 | ПК1 (АЦП1) | Pin1 PORTC | АЦП1 (входной канал АЦП 1) |
25 | ПК2 (АЦП2) | Контакт 2 PORTC | АЦП2 (входной канал АЦП 2) |
26 | PC3 (ADC3) | Контакт 3 PORTC | АЦП3 (входной канал АЦП 3) |
27 | PC4 (АЦП4 / SDA) | Pin4 PORTC | АЦП4 (входной канал АЦП 4) SDA (линия ввода / вывода данных двухпроводной последовательной шины) |
28 | PC5 (ADC5 / SCL) | Контакт 5 PORTC | ADC5 (входной канал ADC 5) SCL (Линия синхронизации двухпроводной последовательной шины) |
Характеристики
ATMEGA328P — Упрощенные функции | |
ЦП | 8-битный AVR |
Количество контактов | 28 |
Рабочее напряжение (В) | +1.8 В К + 5,5 В |
Количество программируемых линий ввода / вывода | 23 |
Коммуникационный интерфейс | Главный / подчиненный последовательный интерфейс SPI (17,18,19 контактов) [Может использоваться для программирования этого контроллера] Программируемый последовательный USART (2,3 PINS) [Может использоваться для программирования этого контроллера] Двухпроводной последовательный интерфейс (27,28 контактов) [Может использоваться для подключения периферийных устройств, таких как сервоприводы, датчики и устройства памяти] |
Интерфейс JTAG | Нет в наличии |
Модуль АЦП | 6 каналов, разрешение 10 бит АЦП |
Модуль таймера | Два 8-битных счетчика с отдельным предделителем и режимом сравнения, один 16-битный счетчик с отдельным предделителем, режимом сравнения и режимом захвата. |
Аналоговые компараторы | 1 (12,13 PINS) |
Модуль ЦАП | Нет |
ШИМ каналов | 6 |
Внешний осциллятор | 0-4 МГц @ 1.От 8 В до 5,5 В 0–10 МГц при 2,7–5,5 В 0-20 МГц при 4,5–5,5 В |
Внутренний осциллятор | Калиброванный внутренний генератор, 8 МГц |
Тип памяти программ | Вспышка |
Программная память или флэш-память | 32 Кбайта [10000 циклов записи / стирания] |
Частота процессора | 1MIPS для 1 МГц |
RAM | 2 Кбайт внутренней SRAM |
EEPROM | 1 Кбайт EEPROM |
Сторожевой таймер | Программируемый сторожевой таймер с отдельным встроенным генератором |
Блокировка программы | Есть |
Режимы энергосбережения | Шесть режимов [режим ожидания, шумоподавление АЦП, энергосбережение, отключение питания, режим ожидания и расширенный режим ожидания] |
Рабочая температура | от -40 ° C до + 105 ° C (+105 — абсолютный максимум, -40 — абсолютный минимум) |
ATMEGA328P Замены
ATMEGA8
Альтернативы ATMEGA328P
ATMEGA16, ATMEGA32, ATMEGA8535
Где использовать ATMEGA328P
Несмотря на то, что у нас много контроллеров, ATMEGA328P наиболее популярен из-за своих возможностей и стоимости.Платы ARDUINO также разработаны на этом контроллере из-за его особенностей.
- С программной памятью 32 Кбайт приложений ATMEGA328P очень много.
- С различными режимами ЭНЕРГОСБЕРЕЖЕНИЯ он может работать с МОБИЛЬНЫМИ ВСТРОЕННЫМИ СИСТЕМАМИ.
- Со сторожевым таймером для сброса при ошибке его можно использовать в системах с минимальным вмешательством человека.
- Благодаря усовершенствованной архитектуре RISC контроллер быстро выполняет программы.
- Также с датчиком температуры в чипе контроллер может использоваться при экстремальных температурах.
Все эти функции в совокупности способствуют дальнейшему продвижению ATMEGA328P.
Как использовать ATMEGA328P
ATMEGA328 используется аналогично любому другому контроллеру. Все, что нужно сделать, это программировать. Контроллер просто выполняет предоставленную нами программу в любой момент. Без программирования контроллер просто остается на месте, ничего не делая.
Как было сказано, сначала нам нужно запрограммировать контроллер, и это делается путем записи соответствующего программного файла во флэш-память ATMEGA328P.После сброса этого программного кода контроллер выполняет этот код и дает соответствующий ответ.
Весь процесс использования ATMEGA328P выглядит следующим образом:
- Список функций, которые должны выполняться контроллером.
- Напишите функции на языке программирования в программах IDE.
Вы можете бесплатно скачать программу IDE на сайтах компании. Программа IDE для контроллеров AVR — ATMEL STUDIO. Ссылка на ATMEL STUDIO приведена ниже.
(обычно Atmel Studio 6.0 для Windows7 [http://atmel-studio.software.informer.com/6.0/],
Atmel Studio 7 для Windows10 [https://www.microchip.com/avr-support/atmel-studio-7])
- Программирование ATMEGA328P также можно выполнить в ARDUINO IDE.
- После написания программы скомпилируйте ее, чтобы исключить ошибки.
- Заставить среду IDE сгенерировать HEX-файл для написанной программы после компиляции.
- Этот файл HEX содержит машинный код, который должен быть записан во флэш-память контроллера.
- Выберите устройство программирования (обычно программатор SPI для контроллеров AVR), который устанавливает связь между ПК и ATMEGA328P. Вы также можете запрограммировать ATMEGA328P, используя плату ARDUINO UNO.
- Запустите программное обеспечение программатора и выберите соответствующий шестнадцатеричный файл.
- Запишите шестнадцатеричный файл записанной программы во флэш-память ATMEGA328P с помощью этой программы.
- Отключите программатор, подключите соответствующие периферийные устройства для контроллера и запустите систему.
Как использовать ATMega328P с Arduino
Поскольку ATmega328P используется в платах Arduino Uno и Arduino nano, вы можете напрямую заменить плату arduino на микросхему ATmega328. Для этого сначала вам нужно установить загрузчик Arduino в чип (или вы также можете купить чип с загрузчиком — ATMega328P-PU). Эту микросхему с загрузчиком можно разместить на плате Arduino Uno и записать в нее программу. После того, как программа Arduino записана в ИС, ее можно удалить и использовать вместо платы Arduino вместе с кварцевым генератором и другими компонентами, необходимыми для проекта.Ниже показано расположение контактов между Arduino Uno и микросхемой ATmega328P.
Приложения
Есть сотни приложений для ATMEGA328P:
- Используется в платах ARDUINO UNO, ARDUINO NANO и ARDUINO MICRO.
- Промышленные системы управления.
- SMPS и системы регулирования мощности.
- Цифровая обработка данных.
- Измерение аналоговых сигналов и манипуляции с ними.
- Встроенные системы, такие как кофеварка, торговый автомат.
- Системы управления двигателями.
- Дисплейные единицы.
- Система периферийного интерфейса.
2D Модель
Все размеры указаны в миллиметрах.
Описание архитектуры
Arduino (ATmega328 / p) — Разработка
Arduino: Название Arduino происходит от названия бара в Ивреа, Италия, где раньше встречались некоторые из основателей проекта. Бар был назван в честь Ардуина из Ивреи, который был маркграфом (военачальником) Марша Ивреи и королем Италии с 1002 по 1014 год.
Сегодня Arduino — это компания, занимающаяся аппаратным и программным обеспечением с открытым исходным кодом, проект и сообщество пользователей, которые разрабатывают и производят одноплатные микроконтроллеры и комплекты микроконтроллеров для создания цифровых устройств и интерактивных объектов, которые могут обнаруживать и управлять объектами в физическом и цифровом мире. .
В платах
Arduino используются различные микропроцессоры и контроллеры. Платы оснащены наборами цифровых и аналоговых контактов ввода / вывода (I / O), которые могут быть подключены к различным платам расширения (экранам) или макетам (другим схемам на них).
Arduino Uno — это плата микроконтроллера на базе ATmega328P (таблица данных). Он имеет 14 цифровых входов / выходов (из которых 6 могут использоваться как выходы ШИМ), 6 аналоговых входов, кварцевый кристалл 16 МГц, соединение USB, разъем питания, разъем ICSP и кнопку сброса. Он содержит все необходимое для поддержки микроконтроллера, просто подключите его к компьютеру с помощью USB-кабеля или подключите к нему адаптер переменного тока в постоянный или аккумулятор, чтобы начать работу. Вы можете возиться со своим UNO, не слишком беспокоясь о том, что сделаете что-то не так, в худшем случае вы можете заменить чип за несколько долларов и начать все сначала.
«Uno» означает «один» на итальянском языке и был выбран в ознаменование выпуска программного обеспечения Arduino (IDE) 1.0. Плата Uno и версия 1.0 программного обеспечения Arduino (IDE) были эталонными версиями Arduino, которые теперь эволюционировали до более новых выпусков. Плата Uno является первой в серии плат USB Arduino и эталонной моделью для платформы Arduino. (IDE = интегрированная среда разработки)
Входное напряжение (7–12 В) для платы Arduino, когда она использует внешний источник питания (в отличие от 5 вольт от USB-соединения или другого регулируемого источника питания).Вы можете подавать напряжение через вывод Vin или, если напряжение подается через разъем питания, обращаться к нему напрямую через вывод Vin.
Архитектура: означает сложную или тщательно разработанную структуру чего-либо.
Здесь архитектура от Arduino или, точнее, IC от Arduino (ATmega328p). ATmega328 / P — это маломощный 8-битный КМОП-микроконтроллер, основанный на архитектуре RISC (компьютер с сокращенным набором команд) AVR®.
Чтобы максимизировать производительность и параллелизм, AVR использует архитектуру Гарварда — с отдельной памятью и шинами для программы и данных.Команды в программной памяти выполняются с одним уровнем конвейерной обработки.
Часы управляются внешним кварцевым генератором 16 МГц.
Основная работа ЦП ATmega328: —
1. Данные выгружаются последовательно через порт (выгружаются из Arduino IDE компьютера). Данные декодируются, а затем инструкции отправляются в регистр инструкций, и он декодирует инструкции в том же тактовом импульсе.
2. При следующем тактовом импульсе в регистр команд загружается следующий набор инструкций.
3. В регистрах общего назначения регистры 8-битные, но есть еще 3 16-битных регистра.
а. 8-битные регистры используются для хранения данных для обычных вычислений и результатов.
г. 16-битные регистры используются для хранения данных счетчика таймера в 2 разных регистрах. Например. X-низкий и X-высокий. Они быстрые и используются для хранения определенных аппаратных функций.
4. EEPROM хранит данные постоянно, даже если отключено питание. Программирование внутри EEPROM происходит медленно.
5. Блок прерывания проверяет, есть ли прерывание для выполнения инструкции, которая должна быть выполнена в ISR (процедура обслуживания прерывания).
6. Последовательный периферийный интерфейс (SPI) — это интерфейсная шина, обычно используемая для передачи данных между микроконтроллерами и небольшими периферийными устройствами, такими как камера, дисплей, SD-карты и т. Д. В ней используются отдельные линии синхронизации и данных, а также линия выбора для выбора устройство, с которым вы хотите поговорить.
7. Сторожевой таймер используется для обнаружения неисправности MCU и восстановления после нее.
8. Аналоговый компаратор сравнивает входные значения на положительном и отрицательном выводе, когда значение положительного вывода выше, устанавливается выход.
9. Состояние и контроль используются для управления потоком выполнения команд путем проверки других блоков внутри ЦП через равные промежутки времени.
10. ALU (Арифметический и логический блок) Высокопроизводительный AVR ALU работает в прямом соединении со всеми 32 рабочими регистрами общего назначения. В течение одного такта выполняются арифметические операции с регистрами общего назначения. Операции ALU делятся на 3 основные категории — арифметические, логические и битовые.
11. Контакты ввода / вывода Цифровые входы и выходы (цифровые вводы / выводы) на Arduino — это то, что позволяет вам подключать датчики, исполнительные механизмы и другие микросхемы Arduino.Изучение того, как их использовать, позволит вам использовать Arduino для некоторых действительно полезных вещей, таких как считывание входов переключателей, световых индикаторов и управления релейными выходами.
EXTRA:
1. Автоматический (программный) сброс: вместо того, чтобы требовать физического нажатия кнопки сброса перед загрузкой, Arduino спроектирован таким образом, чтобы его можно было сбросить с помощью программного обеспечения, запущенного на подключенном компьютере. Программное обеспечение Arduino (IDE) использует эту возможность, чтобы вы могли загружать код простым нажатием кнопки загрузки в среде Arduino.Это означает, что у загрузчика может быть более короткий тайм-аут, так как снижение DTR (Data Terminal Ready) может быть хорошо скоординировано с началом загрузки.
2. Прошивка: Прошивка — это программа или набор инструкций, запрограммированных на аппаратном устройстве. Он предоставляет необходимые инструкции о том, как устройство взаимодействует с другим компьютерным оборудованием. Прошивка хранится в устройствах энергонезависимой памяти, таких как ПЗУ.
3. Чтобы проверить, установлена ли прошивка в вашем Arduino или нет, просто нажмите кнопку сброса и, если встроенный светодиодный индикатор мигает (на контакте 13), прошивка присутствует.
Ссылки:
A. Arduino.cc
B. Wikipedia.com
C. Технические данные ATmega328 / p
Мы будем рады услышать от вас в разделе комментариев ниже. Это действительно поддерживает нашу мотивацию.
Расскажите нам свои идеи в комментариях ниже, о которых мы должны написать.
Спасибо за подписку! Пожалуйста, проверьте свою электронную почту для получения дальнейших инструкций.
Связанные
Комментарии
комментария
Arduino UNO Как программист AtMega328P: 4 шага
При разработке программного обеспечения для программатора я рассмотрел требования к программированию микросхем с загрузчиками и без них.Сначала я посмотрел на выбор осциллятора.
Осциллятор
AtMega328P с загрузчиком
Для программирования микросхемы требуется внешний осциллятор, поэтому он должен присутствовать на экране.
AtMega328P без загрузчика
Если микросхема была настроена на использование внутреннего генератора, никаких дополнительных компонентов не требуется. Однако, если чип ранее был настроен на использование внешнего генератора, потребуется генератор.С внешним генератором могут быть запрограммированы оба типа.
Понятно, что добавление внешнего генератора к шилду подойдет для всех типов микросхем. Можно использовать кристалл 16 МГц и 2 конденсатора по 15 пФ или резонатор 16 МГц.
Индикация светодиодов
В исходном коде или скетче указаны 3 выхода, которые можно подключить к светодиодам. Эта индикация должна присутствовать на щите.
Сброс программатора
Если на Arduino UNO установлен экран, кнопка сброса UNO обычно недоступна.На щите должна быть отдельная кнопка сброса.
Питание программируемой микросхемы
К микросхеме, которую необходимо запрограммировать, должно быть подключено питание. Для питания + 5V и 0V взяты с платы Arduino UNO. Однако установка и извлечение микросхемы из программатора при включенном питании может привести к повреждению микросхемы. По этой причине на щитке был добавлен переключатель.
Защита порта ввода / вывода
Экран ArduinoISP устанавливает определенные контакты как ВЫХОДНЫЕ на Arduino UNO.Если теперь подключить к программатору ранее использованный AtMega328P, может возникнуть конфликт между линиями ввода-вывода двух микросхем, который может вызвать повреждение портов. Для защиты я добавил резисторы 470R между программатором и программируемой микросхемой.
Линия сброса программируемой микросхемы
Чтобы обеспечить стабильную схему сброса программируемой микросхемы, я добавил подтягивающий резистор 10 кОм к линии сброса.
Метод программирования
ZIF Socket
Это будет простой способ запрограммировать автономные микросхемы или записать загрузчик на новые микросхемы.Таким образом, я добавил в дизайн гнездо ZIF.
Кабель для программирования
Поскольку почти все мои проекты представляют собой автономные схемы, мое программирование и разработка выполняются на макетной плате. После этого обновления программы выполняются через заголовки программирования на последней печатной плате. По этой причине я добавил в конструкцию кабель для программирования.
Записать загрузчик ATmega328p AU на микросхеме SMD
При покупке нового микрочипа ATMEGA328P AU они подозревают, что в их память ничего не записано.Чтобы запрограммировать эти микроконтроллеры, вам необходимо предварительно записать загрузчик. Загрузчик похож на микрочип copan duro
ntroller. Без этого контроллера микрочип не будет понимать язык, который мы отправили из Arduino IDE. Чтобы понять код, который мы отправляем, мы должны сначала записать загрузчик.
Здесь я покажу вам, как записать загрузчик на микросхему ATmega328p AU SMD, используя Arduino NANO в качестве программатора ISP.
Прежде всего, нам необходимо выполнить базовую настройку микрочипа ATMEGA328P AU.Интегрированный не будет работать без этой конкретной конфигурации. Потребуется рекомендованная производителем схема с основным источником питания, разделительными конденсаторами, кварцевым генератором и необходимыми подтягивающими резисторами. На схеме ниже я покажу вам основные компоненты и соединения, которые должны быть выполнены для правильного функционирования микроконтроллера.
Как вы можете видеть, у нас есть кварцевый осциллятор на 16 МГц между контактами 7 и 8 микросхемы SMD с двумя конденсаторами 22 пФ на землю. Нам нужно подключить землю к контактам 3, 6 и 21, а питание 5 В — к контактам 4, 6 и 18.Мы добавляем подтягивающий резистор на 1 кОм между 5 В и выводом сброса, который является выводом 29 этого SMD-чипа. Рекомендуется подключить конденсатор емкостью 47 мкФ между выводом Aref и 5 В.
После того, как мы сделали базовую схему, нам нужно будет выполнить следующие соединения между Arduino NANO и выводами чипа smd, чтобы записать на него загрузчик.
Цифровой вывод 13 от Arduino NANO к выводу 17 от микросхемы SMD (SCK)
Цифровой вывод 12 от Arduino NANO к выводу 16 от микросхемы SMD (MISO)
Цифровой вывод 11 от Arduino NANO к выводу 15 от Микросхема SMD (MOSI)
Цифровой вывод 10 от Arduino NANO к выводу 29 от микросхемы SMD (CS)
Теперь открываем Arduino IDE.Переходим в файл -> Примеры -> Arduino как ISP и открываем скетч примера ArduinoISP. В инструментах мы выбираем Arduino NANO в качестве платы, COM нашего USB, подключенного к Arduino, и загружаем скект как обычный, как любой другой, в Arduino NANO.
После того, как мы загрузили код ArduinoISP в Arduino NANO и с предыдущими подключениями, мы можем записать загрузчик. Для этого мы переходим в Инструменты -> Программист -> Arduino в качестве ISP, как показано ниже.
Осталось только зайти в Инструменты и нажать кнопку записи загрузчика.Мы увидим, что индикаторы Arduino NANO часто мигают. Как только он говорит, что загрузчик сгорел, все готово. Мы успешно записали загрузчик на SMD-чип.
Все, что нам нужно сделать, это проверить работоспособность микросхемы. Для этого мы загрузим простой мигающий код, используя соединение FTDI, как показано ниже. Не забудьте вернуть программатор в нормальное состояние.
Помните, что нам нужен конденсатор емкостью 0,1 мкФ между выводом DTR модуля FTDI и нашим выводом сброса для программирования этого чипа.
Надеюсь, этот урок вам помог. Посетите мой канал на YouTube, чтобы увидеть больше тоториалов и электроники.
См. Руководство по контроллеру Arduino + RF здесь:
ATmega328P, единственный микроконтроллер, с которым вы должны начать
В настоящее время, когда микроконтроллеры относительно дешевы и легко доступны на рынке, принятие решения о покупке подходящего из них может оказаться сложной задачей. Однако есть одна конкретная модель, с которой полезно начинать с пользователей.Эта модель — ATmega328p, 8-битный микроконтроллер AVR.
Эта статья расскажет, почему ATmega328p — именно то, что вам нужно.
Он будет охватывать следующие компоненты:
- Что такое ATmega328P?
- Характеристики и параметры продукта
- Сравнение конкурентов: STM32 и MSP430
- Рекомендации по продукту
- Сводка
Что такое ATmega328P?
ATmega328P — это высокопроизводительный 8-битный микроконтроллер AVR с низким энергопотреблением, который благодаря своей передовой RISC-архитектуре способен выполнять 131 мощную команду за один такт.Обычно его можно найти в качестве процессора на платах Arduino, таких как Arduino Fio и Arduino Uno.
Особенности и параметры
Особенности:
Долговечные энергонезависимые сегменты памяти
- В системе самопрограммируемая флэш-память программ
- Блокировка программирования для защиты программного обеспечения
Периферийные функции
- Два 8-битных таймера / счетчика с отдельным предварительным делителем, режим сравнения.
- Один 16-битный таймер / счетчик с отдельным предварительным делителем, режимом сравнения и режимом захвата
- Измерение температуры
- Программируемый последовательный USART и сторожевой таймер с отдельным встроенным генератором
Уникальные особенности по сравнению с другими микроконтроллерами (ARM, 8051 , ПОС):
- Сброс при включении и программируемое обнаружение потери мощности
- Внутренний калиброванный генератор
- Внешний и внутренний источники прерываний
- Шесть спящих режимов: холостой ход, шумоподавление АЦП, энергосбережение, отключение питания, режим ожидания и расширенный режим ожидания
Параметры
Тип памяти программы | Флэш-память | ||
Размер памяти программы | 32 | ||
Скорость ЦП (MIPS / DMIPS) | 20 | ||
SRAM (КБ) | EEPROM / HEF (байты) | 1024 | |
Периферийное устройство цифровой связи | 1-UART, 2-SPI, 1-I2C | ||
Периферийное устройство захвата / сравнения / PWM | 1 вход захвата 6PWM, 1 CWM | ||
Таймеры / счетчики | 2 x 8-битные, 1x 16-битные | ||
Количество компараторов | 1 | ||
Диапазон температур | от -40 до 85 градусов | ||
902 Диапазон рабочего напряжения35 (В) | 1.От 8 до 5,5 В | ||
Количество выводов | 32 | ||
Низкое энергопотребление | Да |
Преимущества и недостатки:
Преимущества:
- Процессоры проще в использовании, с использованием 8-битных и 16-битных вместо более сложных 32/64-битных
- Легко использовать без дополнительных вычислительных компонентов с 32 Кбайт встроенной самопрограммируемой флэш-памяти программ, а также 23 программируемых ввода / вывода. O строк
- Код Эффективный, все 31 регистр напрямую подключены к арифметико-логическому устройству (ALU), что делает его в 10 раз быстрее, чем обычные микроконтроллеры CISC
- Оптимизирован для расширенного набора команд RISC AVR
Недостатки:
- Недостаточная производительность по сравнению с микроконтроллерами с более высокой разрядностью
Приложения для продуктов
ATmega328P поддерживается полным набором инструментов для разработки программ и систем, который включает: компиляторы C, макроассемблеры, программный отладчик / симуляторы, внутрисхемные эмуляторы и оценочные комплекты.
Быстрый режим ШИМ, который обеспечивает генерацию высокочастотного сигнала ШИМ, позволяет использовать его для регулирования мощности, выпрямления и применения ЦАП.
Сравнение продуктов
Что лучше? Atmega368P против STM32 против MSP430
ATmega328P | СТМ32 | MSP430 | |
---|---|---|---|
Марка | Микрочип | Cortex | Техасские инструменты |
Стоимость | Низкий | Высокая | Низкий |
Архитектура | Расширенная архитектура RISC | Технология Power Architecture, разработанная для встраиваемых приложений | Старая архитектура фон Неймана |
Потребляемая мощность | Низкое, более эффективное энергопотребление | Средняя, более высокая тактовая частота может привести к более высокому потреблению энергии | Низкий |
Производительность | Среднее, нижнее долото, но подходит для сложных проектов | Высокая, быстрая скорость обработки, большая мощность. Работает 32-битное ядро процессора ARM с достаточным объемом ОЗУ | Low, больше подходит только для простых проектов |
Простота использования | Простота использования, 8 бит и высокая совместимость с платами Arduino | Сложно из-за того, что он является 32-битным микроконтроллером | Комплекс относительно плат Arduino |
Вердикт: Atmega368P. Хотя ему не хватает производительности по сравнению с STM32, его более низкая относительно низкая стоимость и набор функций делают его вариантом с соотношением цены и качества, который следует учитывать.
AtMega328P против AtMega328
- Оба имеют схожий архитектурный дизайн
- ATmega328P потребляет меньше энергии
- ATmega328P немного дороже
- Пакет TQFP доступен только в версии 328P
Вердикт: хотя 328P немного дороже, чем его предыдущий преемник, он может сэкономить вам пару микроампер силы. Кроме того, вариант чипа в корпусе TQFP доступен только в 328P.
Рекомендации по продукции
Seeeduino V4.2. Вариант «Соотношение цены и качества»
Всего за 6,90 долларов вы сможете получить полностью совместимую плату с Arduino UNO-R3 Shield, в которой используется микроконтроллер ATmega328P.
Характеристики продукта включают:
- 14 контактов цифрового ввода / вывода (6 выходов PWM)
- 6 аналоговых входов
- Программирование через Micro USB и источник питания
- Заголовок ISP
- 3 встроенных разъема Grove для лучшего прототипирования
- Переключатель питания системы 3,3 / 5 В
Плюсы:
- Относительно дешево и подходит для новичков
- Использование micro USB для питания и программирования платы для простоты использования
Seeeduino Lotus V1.1. Экономичная плата, совместимая с Mac Os
.
Характеристики
- Комбинация Seeeduino и базового щита.
- Совместимость с Arduino UNO, использует тот же чип (ATmega328P)
- Встроенный разъем Grove
- Совместимость с Mac OS.
- Экономичный
Seeeduino Nano: более дешевая и лучшая альтернатива Adruino Nano
Seeeduino Nano оснащен USB Type-C вместо обычного мини-USB, который использует Adruino Nano.Кроме того, добавленные разъемы Grove позволяют задействовать сотни датчиков и исполнительных механизмов путем простого подключения.
Характеристики
- 43 мм * 18 мм Крошечная плата
- 16M ATmega328P
- Полная совместимость с Arduino Nano
- USB Type C для программирования и питания
- Встроенный разъем Grove I2C
- Совместимость с макетной платой
Основные различия между Seeeduino Nano и Arduino Нано:
Seeeduino Nano | Ардуино Нано | |
---|---|---|
Процессор | ATmega328P | ATmega328P |
Входное напряжение | 5В / 7-12В | 5В / 7-12В |
Напряжение ввода-вывода | 5 В | 5 В |
Аналоговый вход / выход | 8/0 | 8/0 |
Цифровой ввод-вывод / ШИМ | 14/6 | 14/6 |
USB | Тип-C | Мини-USB |
Соединители Grove | 1xI2C | Соединители без Grove |
Сводка
Учитывая кажущуюся популярность плат Arduino и совместимость с ATmega368p, он выделяется среди остальных как плата, с которой нужно начинать свой проект.Относительные характеристики и невысокая стоимость делают ATmega368P выгодным вариантом. Однако, если производительность занимает первое место в вашем списке, модель STM32 подойдет вам.
Следите за нами и ставьте лайки:
Теги: 8051, Arduino, arm, Atmega328, ATMEGA328P, AVR, cortex, Microchip, микроконтроллер, MSP430, pic, seeeduino, STM32, Texas Instruments
Продолжить чтение
.