Микроконтроллеры для систем автоматизации. Arduino IDE и Atmel.
Автор: Хоменко Сергей Александрович (Ведущий сетевой инженер, ООО "АйХоум")
Тип документа: Статья. Аудитория: Студенты, преподаватели, магистранты. Дата публикации: 17.07.2019
Описание: На сегодняшний день существует более 200 модификаций микроконтроллеров выпускаемых двумя десятками компаний. Популярностью у разработчиков пользуются 8-битные микроконтроллеры PIC фирмы Microchip Technology и AVR фирмы Atmel, 16-битные MSP430 фирмы TI, а также 32-битные микроконтроллеры, архитектуры ARM, которую разрабатывает фирма ARM Limited и продает лицензии другим фирмам для их производства. В данной статье описываются преимущества использования микроконтроллеров Atmel и среды разработки Arduino IDE для сосдания систем автоматизации.

Хоменко Сергей Александрович
Ордена трудового красного знамени 
ФГБОУ ВО «Московский технический университет связи и информатики»
Студент


Микроконтроллеры для систем автоматизации. Arduino IDE и  Atmel.

Микроконтроллер (МК) - это специальная микросхема, предназначенная для управления различными электронными устройствами. Микроконтроллеры впервые появились в том же году, что и микропроцессоры общего назначения (1971 г.).
Основная идея разработчиков МК – объединить процессор, память, ПЗУ и периферию внутри одного корпуса, внешне похожего на обычную микросхему. С тех пор производство микроконтроллеров ежегодно во много раз превышает производство процессоров, а потребность в них не снижается. Благодаря использованию микроконтроллеров, инженерам получилось достигнуть большую скорость изготовления и качество продукции практических во всех сферах производства.
Микроконтроллеры выпускают десятки компаний, причем производятся не только современные 32-битные микроконтроллеры, но и 16, и даже 8-битные. Внутри каждого семейства часто можно встретить почти одинаковые модели, различающиеся скоростью работы ЦПУ и объемом памяти[].
Таким образом, большой модельный ряд МК позволяет разработчику выбрать контроллер подходящий для конкретного проекта, соблюдая баланс между ценой и достаточной функциональностью.
На сегодняшний день существует более 200 модификаций микроконтроллеров выпускаемых двумя десятками компаний. Популярностью у разработчиков пользуются 8-битные микроконтроллеры PIC фирмы Microchip Technology и AVR фирмы Atmel, 16-битные MSP430 фирмы TI, а также 32-битные микроконтроллеры, архитектуры ARM, которую разрабатывает фирма ARM Limited и продает лицензии другим фирмам для их производства[].
Выбор производителя микроконтроллера пал именно на Atmel по ряду причин:
- Доступность по цене и наличию. В магазинах для радиолюбителей выбор МК Atmel больше, а цена на них, как правило, ниже.
- Благодаря проекту Arduino (arduino.cc) появилось огромное количество открытых библиотек, программного обеспечения и документации для МК Atmel.
- Программатор USBAsp для микроконтроллеров Atmel распространяется c открытым исходным кодом, принципиальная и монтажная схема есть в открытом доступе
Atmel была образована в 1984 г. Штаб квартира компании находится в г. Сан-Хосе, США, штат Калифорния. С августа 2006 г. президентом и исполнительным директором компании является Стивен Лауб. Всего в корпорации занято около 5100 служащих. Основателями фирмы были братья-греки Джордж и Гюст Перлегос. Их семья эмигрировала в Калифорнию в то время, когда Силиконовая долина становилась центром передовых информационных технологий. После 8-летнего опыта работы в Intel, старший из братьев решил основать собственный бизнес. Он учредил собственную компанию и назвал ее по первым буквам предполагаемой специализации: Advanced Technology Memory and Logic.
Начинающей компания числилась всего 2 года. Уже в 1986 г. Atmel получила пятимиллионный контракт с General Instrument на поставку партии электронных компонентов. 1989 г. компания стала выпускать флеш-память, в начале девяностых годов – микросхемы 1.8В. В 1995 г. был начат выпуск микроконтроллеров AVR. Миллиардного оборота продаж Atmel достигла уже в 1996 г.
В 1998 г. Atmel купила акции компании Telefunken Microelectronic, что позволило корпорации выйти на рынок электроники для автомобилей и устройств связи. В 2000 г. стартовало производство датчиков изображения и радиочастотных информационных систем по технологии SiGe.
В истории компании были не только успехи, но и ощутимые спады. Так, из-за неверного определения потребностей рынка, были потеряны потребители флэш-памяти с повышенными характеристиками. Более ходовыми оказались модели low-end производителей Intel и AMD.

§1. Продукция.

Микроконтроллеры. Линейка микроконтроллеров Atmel включает:
- 8 и 32-х разрядные микроконтроллеры AVR. Сегодня 32-х разрядные микроконтроллеры используются и для тех приложений, где вполне хватило бы 8-разрядной микросхемы. Но, поскольку цены на эти элементы практически не отличаются, разработчики, используя 32-разрядные устройства, могут позволить запас производительности, полезный при будущей модернизации приложений.
- микроконтроллеры с архитектурой ARM. Ядро ARM в основе содержит идеологию RISC архитектуры: ограниченный набор команд, активное использование регистров, ограниченный доступ к памяти. Система команд 32-разрядных ARM включает инструкции обращения к аппаратному сопроцессору, что позволяет разработчикам расширить возможности базовой архитектуры, добавляя свои сопроцессоры в случае необходимости.
- микроконтроллеры MCU Wireless Atmel, ориентированные на средства беспроводной связи по протоколам ZigBee® и IPv6/6LoWPAN.
- микроконтроллеры 8051 с функциями: 2 интерфейса UART, сторожевой таймер, схема обнаружения сбоев питания, PCA, SPI и внутрисхемный отладчик, идеально подходящие для управлении входами/выходами, питанием, двигателями.
Touch контроллеры для рынка портативных устройств с низким энергопотреблением, которые производятся для сенсорных панелей нового поколения. В устройствах используется собственная запатентованная емкостная технология QTouch®.
Микросхемы энергонезависимой памяти. Линейка продукции включает микросхемы с различным интерфейсом, архитектурой и организацией, в том числе с постраничным (Flash) и побайтным (EPROM) доступом к памяти. Особенно широко эти микроэлементы используются в приложениях, в которых необходимо снизить себестоимость конечного продукта.
Реконфигурируемые системы на кристалле FPSLIC. Суть технологии – в размещении на одной кристалле ядра AVR, блока FPGA и массива статической памяти. Основные преимущества – повышенная степень интеграции, низкое энергопотребление, высокая производительность[].
Несмотря на богатый модельный ряд МК фирмы Atmel, общую структуру можно изобразить в виде схемы (рис. 2.1):
Рисунок 2.1. - Общая структура реконфигурируемых систем на кристалле FPSLIC.
Выбор микроконтроллера atmega328 обусловлен его популярностью (наличие в магазинах, обилие документации). Исполнение МК в корпусах MLF (VQFN) 32M1-A 32 (рис.2.2), PDIP 28P3 28 (рис. 2.3.), TQFP 32A 32 (рис.2.4) позволяет использовать МК практически в любом (по размеру) устройстве.


- 
Рисунок 2.2. - Микроконтроллер atmega328 в корпусе MLF (VQFN) 32M1-A 32


Рисунок 2.3. - Микроконтроллер atmega328 в корпусе PDIP 28P3 28




Рисунок 2.4. - Микроконтроллер atmega328 в корпусе TQFP 32A 32. 

Atmel  Atmega328 имеет следующие характеристики:
Память:
32 kB Flash (память программ, имеющая возможность самопрограммирования).
2 kB ОЗУ.
1 kB EEPROM (постоянная память данных).
Периферийные устройства:
Два 8-битных таймера/счетчика с модулям сравнения и делителями частоты.
16-битный таймер/счетчик с модулем сравнения и делителем частоты, а также с режимом записи.
Счетчик реального времени с отдельным генератором.
Шесть каналов PWM (аналог ЦАП).
6-канальный ЦАП со встроенным датчиком температуры.
Программируемый последовательный порт USART.
Последовательный интерфейс SPI.
Интерфейс I2C.
Программируемый сторожевой таймер с отдельным внутренним генератором.
Внутренняя схема сравнения напряжений.
Блок обработки прерываний и пробуждения при изменении напряжений на выводах микроконтроллера[].
Специальные функции микроконтроллера:
Сброс при включении питания и программное распознавание снижения напряжения питания.
Внутренний калибруемый генератор тактовых импульсов.
Обработка внутренних и внешних прерываний.
6 режимов сна (пониженное энергопотребление и снижение шумов для более точного преобразования АЦП).
Напряжения питания и скорость процессора:
1.8 - 5.5 В при частоте до 4 МГц.
2.7 - 5.5 В при частоте до 10 МГц.
4.5 - 5.5 В при частоте до 20 МГц [].
МК Atmega328 (PDIP 28P3 28) имеет 14 цифровых вход/выходов (6 из которых могут использоваться как выходы ШИМ), 6 аналоговых входов.
Каждый из 14 цифровых выводов может быть использован в качестве выхода или входа. Уровень напряжения на выводах 5 В. Рекомендовано вытекающий и втекающий ток каждого вывода ограничивать на уровне 20 мА. Предельно допустимое значение этого параметра составляет 40 мА.





§ 2. Описание выводов микроконтроллера Atmel Atmega328.



Рисунок 2.5.  - Расположение выводов микроконтроллера Atmel Atmega328.
Некоторые выводы могут выполнять дополнительные функции.
Последовательный интерфейс: выводы 0 (Rx) и 1 (Tx). Используются для приема (Rx) и передачи (Tx) последовательных данных логических уровней TTL. Эти выводы подключены к выводам передачи данных микросхемы ATmega16U2, используемой в качестве моста USB-UART.
Внешние прерывания: выводы 2 и 3. Эти выводы могут быть использованы как входы внешних прерываний. Программно могут быть установлены на прерывание по низкому уровню, положительному или отрицательному фронту, или на изменение уровня сигнала.
ШИМ: выводы 3, 5, 6, 9, 10, 11. Могут работать в режиме ШИМ модуляции с разрешением 8 разрядов.
Последовательный интерфейс SPI: выводы 10(SS), 11(MOSI), 12(MISO), 13(SCK).
Интерфейс TWI: вывод A4 или SDA и A5 или SCL. Коммуникационный интерфейс TWI.
У платы микроконтроллера Atmega328 есть 6 аналоговых входов (A0-A5). Разрешающая способность аналогового цифрового преобразования 10 разрядов. По умолчанию, входное напряжение измеряется относительно земли в диапазоне 0-5 В, но может быть изменено с помощью вывода AREF и программных установок.
Еще 2 вывода платы имеют функции:
AREF. Опорное напряжение АЦП микроконтроллера.
RESET. Низкий уровень на этом выводе вызывает сброс микроконтроллера.
Базовый набор компонентов необходимых для работы МК изображен на рисунке 2.6.
Рисунок 2.6. - Набор компонентов необходимых для работы микроконтроллера Atmega328.

§ 3. Питание


Питание контроллера делится на цифровую часть (VCC, GND) и аналоговою (AVCC, AGND), и для ATmega328 должно лежать в пределах 5 вольт. В нашем случае можно смело объединить VCC с AVCC и GND c AGND.
В контроллере также присутствует вывод AREF. Напряжение, присутствующее на данном выводе, будет задавать опорное для аналоговых входов. Если данный вывод ни к чему не подключен, то контроллер автоматом задает значение опорного напряжения равное 5 В.
Кварцевый генератор.
В контроллерах ATmega328 имеется внутренний кварцевый генератор работающий на частоте 8 МГЦ, т.е если нам не очень важна частота, то во внешнюю обвязку внешний кварцевый резонатор можно и не включать.
Для работы МК на частоте 16 МГц, необходима установка внешнего кварца. Кварц (Y1) ставится на ноги 9 и 10 (выводы XTAIL1/XTAIL2) и далее через конденсаторы (C1, 2), нужного для работы кварца номинала (в нашем случае 18-22pf), подключаются к "земле".
Перезагрузка контроллера.
Для возможности осуществления перезагрузки контроллера предусмотрен вывод RESET.
Когда на выводе присутствует положительный потенциал, для этого притягиваем резистором (R1) к +5 вольтам, контроллер работает по заданной программе. Для осуществления сброса МК, вывод RESET необходимо замкнуть на землю, для этих целей служит кнопка (S1)[].




Стабилизация питания МК.
Для сглаживания напряжения можно использовать стабилизатор 7805 подключенный по типовой схеме (используя на входе и выходе конденсаторы) (Рисунок 2.7).


Рисунок 2.7. - Типовая схема подключения стабилизатора 7805. 

Отдельный разъем с выводами MISO, MOSI, SCK, RST, VCC, GND используется для загрузки в МК загрузчика (arduino bootloader).
Светодиод U2 используется для индикации процесса загрузки бутлоадера в МК.
Загрузчик (небольшая программа) используется для реализации возможности использовать инструкцию Store Program Memory (SPM) для программирования самого себя[].
Загрузчик запускается сразу после включения питания МК, или когда на плате нажата кнопка reset, или когда компьютер-хост USB, к которому подключен МК, выдал сигнал сброса. У программы загрузчика есть только одна основная функция - принять через UART от компьютера-хоста новую программу, и прошить ее в память программ (FLASH) микроконтроллера AVR.
На текущий момент наибольшее распространение получил загрузчик Arduino. Данный Загрузчик позволит загружать в МК програмное обеспечение написанное с использованием среды разработки Arduino IDE.
Arduino — торговая марка аппаратно-программных средств для построения систем автоматики и робототехники, ориентированная на непрофессиональных пользователей. Программная часть состоит из бесплатной программной оболочки (IDE) для написания программ, их компиляции и программирования аппаратуры.
Arduino IDE распространяется по условиям GPLv2[].
В этой оболочке имеется текстовый редактор, менеджер проектов, препроцессор, компилятор и инструменты для загрузки программы в микроконтроллер. Оболочка написана на Java на основе проекта Processing, работает под Windows, Mac OS X и Linux.
Язык программирования Arduino является стандартным C++ (используется компилятор AVR-GCC) с некоторыми особенностями[].
Для первичной прошивки МК загрузчиком использован программатор USBAsp (Рисунок 2.9).


Программатор USBAsp распространяется и открытым исходным кодом, принципиальная схема и монтажная есть в открытом доступе [].
Для прошивки МК через USBAsp используя ISP[].
До появления этой технологии компоненты программировались перед установкой в устройство, для их перепрограммирования требовалось их извлечение из устройства.
Для нужд программатора в этом случае выделяется несколько выводов контроллера.
У AVR прошивка заливается по интерфейсу SPI[] и для работы программатора нужно четыре линии и питание (достаточно только земли, чтобы уравнять потенциалы земель программатора и устройства):
MISO — данные идущие от контроллера (Master-Input/Slave-Output).
MOSI — данные идущие в контроллер (Master-Output/Slave-Input).
SCK — тактовые импульсы интерфейса SPI.
RESET — сигналом на RESET программатор вводит контроллер в режим программирования.
GND — земля.
Для работы с программатором используется утилита Avrdude[].
Сам загрузчик можно скачать с официального сайта проекта Arduino[].
После записи загрузчика в память микроконтроллера плата готова готова к приему основного кода через UART[] от среды разработки Arduino IDE.