Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P

И снова привет всем любителям и новичкам программирования Arduino!)


Это третье видео (статья) из серии «основы Arduino для начинающих» и сегодня мы поговорим о внутренностях платы Arduino Uno и их предназначении, а так же уделим немного внимания её микроконтроллеру Atmega328.


Предыдущие выпуски вы найдете здесь: 0,1,2


Традиционно для вас доступны два варианта представления материала - видео и текст, надеюсь, оба варианта будут интересными :)

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


Итак, слева я буду показывать китайский аналог Arduino Uno и его компоненты, а справа, шаг за шагом, мы будем строить функциональную схему.

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост

С чего начинается любая схема? Конечно же, это различные компоненты, отвечающие за ее питание. Поэтому первым в нашей функциональной схеме мы выделим именно это. Вообще, у Arduino есть три пути получить энергию для работы: это питание по шине USB, от специального разъема питания на плате или входа Vin. Давайте разберем их все по отдельности.

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост

Подключая плату к компьютеру посредством USB-интерфейса, вы подаете питание на Arduino благодаря четырехпроводной структуре шины USB, где 2 провода отвечают за передачу команд, а два других провода за непосредственное питание устройств. Именно по этим проводам Arduino и получает рабочее напряжение величиной 5В как это видно на принципиальной схеме. Так же, это напряжение поступает на вход стабилизатора напряжения, который понижает его до +3.3В, что необходимо для питания некоторых отдельных компонентов, подключаемых к Arduino, рассчитанных на это напряжение. Кстати, в качестве защиты от большого потребления тока вашей платой, на самом входе питающей линии разработчики установили небольшой предохранитель на 500мА, который, в случае различных обстоятельств, защитит USB-порт компьютера и плату Arduino от возможного выхода из строя.


все картинки кликабельны :)

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост

Итак, следующим на очереди идет разъем питания для подключения, например, сетевого AC/DC-адаптера, аккумулятора или батареи. В отличие от USB-порта, где предполагается стабильное наличие напряжения 5В (или около того), в случае разъема питания ситуация складывается несколько иная, поскольку он рассчитан на подключение к нему источников питания различных напряжений. Диапазон этих значений колеблется в пределах от 6 до 20В и, при прямом подключении, это совсем не годится для компонентов нашей схемы. Поэтому разработчики поставили на входе питания стабилизаторы напряжения - один на 5В, другой на 3.3В. А так же парочку конденсаторов и диод, в качестве элементов борьбы с помехами и защиты от перепутывания полярности питания. Стоит отметить, что для стабилизатора напряжения всегда нужно напряжение, несколько выше того уровня, до которого он будет его понижать, и специфика стабилизатора такова, что уменьшение напряжения питания ниже 7В приводит к уменьшению напряжения на выводе 5V, что может стать причиной нестабильной работы устройства. Использование напряжения больше 12В может приводить к перегреву стабилизатора напряжения и выходу платы из строя. Именно поэтому, рекомендуется использовать источник питания с напряжением в диапазоне от 7 до 12В.

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост
Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост

И, наконец, вывод Vin на плате Arduino. Если посмотреть на схему питания, то можно увидеть, что, при подключенном источнике питания к разъему, с этого вывода можно будет получить это же самое напряжение, правда, чуть меньшее из-за небольшого падения на диоде.

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост

Ну а если теперь подключить источник питания к этому выводу, то напряжение так же попадет на стабилизатор 5В и плата будет запитана. Это удобно в случае использования различных батарей или аккумуляторов без специальных разъемов питания.

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост

Стоит отметить, что Arduino сама выбирает источник питания с самым большим напряжением, и в этом ей помогает специальный элемент, называющийся компаратором. Если в двух словах, то компаратор, это такое устройство, которое сравнивает подаваемый на него сигнал с каким-либо опорным значением, и, если этот сигнал превышает опорное значение, то компаратор выдает на своем выходе логическую единицу (в нашем случае +5В).

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост
Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост

Итак, с блоком питания разобрались, идем дальше.


На очереди у нас связующее звено между компьютером и программируемым нами микроконтроллером. Это еще один микроконтроллер ATmega8U2, либо, в более новых версиях ATmega16U2, который практически не заметен на плате.

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост

Этот микроконтроллер представляет собой USART, что в переводе означает «Универсальный синхронно-асинхронный приемо-передатчик». Именно он осуществляет передачу данных по самому распространенному на сегодняшний день протоколу RS-232, c помощью которого связывает COM-порт вашего компьютера и программируемый микроконтроллер.

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост

Помните, мы говорили, что USB-кабель имеет 4 провода, два из которых питающие, а два других – сигнальные? Так вот, именно по сигнальным проводам и происходит передача данных от ПК к микроконтроллеру и обратно, а свидетельствуют о приеме, либо передаче, специальные светодиоды на плате, имеющие названия Rx и Tx, где R это сокращение слова Receive, то есть прием, а T – transmit – то есть отправление. Причем выводы Rx и Tx всегда подключаются разноименно, то есть Rx принимающего устройства соединяется с Tx передающего, и наоборот. Это видно из схемы подключения двух микроконтроллеров на плате Arduino. Для тех, кто желает знать о том, как передаются данные по USB при помощи UART, я рекомендую ознакомиться с этой ссылкой.

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост

Ну вот, наконец, мы и подошли с вами к главному компоненту платы Arduino – микроконтроллеру Atmega328P, который, собственно, и является основным вычислительным центром этой платформы. Давайте разберемся, из каких основных частей он состоит.


В обобщенном виде, любой микроконтроллер можно разбить на три составляющие части:

1. Вычислительный блок, иначе именуемый как арифметико-логическое устройство или процессор. Также, наверняка многие из вас слышали или видели такую аббревиатуру как CPU (Central Processing Unit) что в переводе на русский значит "центральное процессорное устройство". Именно этот блок является самой главной частью системы и предназначен он для выполнения различных операций с числами. А вот уже последовательность этих операций называется программой. Каждая операция кодируется в виде числа и записывается в память микроконтроллера, но об этом, в другой раз..


2. Собственно, второй основной частью микроконтроллера и является модуль памяти. Это специализированное электронное устройство, которое представляет собой набор ячеек, в каждой из которых может храниться одно число. Именно здесь хранится написанная вами программа и другие команды микроконтроллера. Память делится на оперативную - ОЗУ (оперативное запоминающее устройство) и постоянную – ПЗУ (постоянное запоминающее устройство. Принципиальная разница между этими видами памяти в том, что в случае с оперативной памятью, при выключении питания микроконтроллера, записанные значения не сохраняются и существуют только до тех пор, пока это питание присутствует. Например, такая память используется для хранения каких-либо промежуточных результатов вычислений. А вот данные, хранимые в постоянной памяти, наоборот, никак не зависят от наличия питания и могут быть использованы микроконтроллером сразу же после включения. В такую память, например, записывается вся разработанная вами программа, и она никуда не пропадет при повторной подаче напряжения на микроконтроллер.


3. Наконец, третьей составляющей частью микроконтроллера являются так называемые порты ввода-вывода. Если процессор и память находятся где-то в глубине корпуса микроконтроллера и мы их не видим, то порты ввода-вывода всегда на виду – вот они, в виде небольших металлических ножек.

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост

Конечно же, не стоит забывать, что некоторые ножки отвечают за питание и прочие компоненты, подключаемые к микроконтроллеру, но большинство из них все-таки являются портами ввода-вывода, отвечающими за непосредственное управление микроконтроллером различными датчиками, модулями, светодиодами, транзисторами и так далее. Подавляющее большинство этих портов были выведены разработчиками Arduino по краям платы и, для удобства работы, подписаны.

Именно с этими портами нам и предстоит работать в дальнейшем, ведь суть любой микропроцессорной системы сводится к управлению чем-то извне, а иначе, зачем нам микроконтроллеры? :)

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост

Как уже было сказано ранее, центральный процессор является основным мозгом микроконтроллера и именно он управляет модулем памяти и портами ввода-вывода. Более подробно о работе с портами ввода-вывода мы поговорим уже через один выпуск, когда будем работать со светодиодом и кнопкой, ну а сейчас я бы хотел заострить внимание на еще одном компоненте на плате, который мы не назвали – это генератор тактовых импульсов или кварцевый резонатор.

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост

Не пугайтесь таких сложных названий, на самом деле, все просто – для работы любого микроконтроллера нужен некий генератор импульсов, благодаря которому он сможет осуществлять свою деятельность по последовательному выполнению команд. Например, мы написали с вами программу мигания светодиодом 10 раз в секунду. Но как микроконтроллер узнает, не имея никакого представления о длительности одной секунды, когда ему пора включить светодиод, а когда пора выключить? Именно благодаря кварцевому резонатору, который, в зависимости от его номинала, генерирует определенное число импульсов за одну секунду, это число имеет единицы измерения – герцы и называется частотой. Например, частота, равная 5Гц означает 5 импульсов в секунду, 10Гц - десять импульсов и так далее.


На плате Arduino Uno для двух микроконтроллеров установлены, соответственно, два кварцевых резонатора с частотой 16МГц, что означает работу резонатора с частотой 16 миллионов(!) импульсов в секунду - только представьте, какая это огромная скорость! Именно эти импульсы и считает наш микроконтроллер, а впоследствии, по их количеству, делает вывод о том, сколько времени прошло с запуска какой-либо процедуры. За весь этот счет отвечают различные счетчики и таймеры, о которых мы обязательно поговорим в следующих выпусках, но пока вам достаточно знать, отчего зависит скорость работы микроконтроллера и как он ориентируется во времени.

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост

Так же на плате Arduino вы могли заметить небольшую кнопку – она называется кнопкой сброса или RESET, и при нажатии на нее переводит наш микроконтроллер в исходную позицию, с которой он начинал свою работу.

Выпуск 3. Основы Arduino для начинающих. Arduino изнутри - структура, составляющие и их назначение. Микроконтроллер ATmega328P Arduino, Начинающий, Структура, Видео, Длиннопост

Итак, мы познакомились с вами с основными составляющими платы Arduino и совсем немного поговорили о микроконтроллере ATmega. Хочу заметить, что изучению структуры и принципам работы микроконтроллеров можно посвятить большой отдельный курс, поэтому я не стал углубляться в эту тему и рассчитываю на вашу дальнейшую любознательность и стремление изучить и понять как можно большее в этой интересной сфере. В качестве дальнейшего учебного пособия по изучению микроконтроллеров AVR, не сочтите за рекламу, я советую вам книгу Белова А.В., в которой, на мой взгляд, достаточно доступным языком описаны все нюансы работы с микроконтроллерами.


Ну а на этом обзорный пост платы Arduino подходит к концу и в следующем выпуске мы познакомимся со средой программирования Arduino IDE – то есть её установкой, настройкой и пользовательским интерфейсом. Надеюсь, что данный материал был полезным и интересным для вас, спасибо за внимание и до встречи в новом выпуске! :)

Arduino & Pi

1.4K постов20.6K подписчик

Добавить пост

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий

Как человек, которого заставляли что-то учить про микроконтроллерам в течении 3-х семестров, хочу сказать, что нам препод бы так внятно и просто объяснить бы затруднился.
Единственный вопрос - почему конкретно "АТмега"? Разве "Тини" не подойдет?

раскрыть ветку (7)
2
Автор поста оценил этот комментарий

Думаю, что вам просто не повезло с преподавателем) А вообще спасибо, приятно такое слышать :) Для изучения структуры и прочих особенностей AVR подойдет любой микроконтроллер, по большому счету, разница только в характеристиках, будь то память, количество портов, частота работы и т.д. Так что смело можете изучать семейство Tiny, как уже сказали до меня, Arduino построена на ATmega328, поэтому внимание было уделено именно этому мк.

Автор поста оценил этот комментарий
Не в АТЭМК учился?)) мы зарисовывали принципиальные схемы K-jetronik и L-jetronik, а потом нужно было на память нарисовать эту херню, которая на А 4 не помещается))) со всеми этими водопадами диодов и прочей лабудой))) мы рисовали... помнили наизусть каждый, но в чем, блядь, мать его, смысл-не понимали)))
раскрыть ветку (1)
Автор поста оценил этот комментарий

Нет, и я даже не могу понять, что еще за АТЭМК)

Автор поста оценил этот комментарий

Любая микруха хороша :) Но тут пошла речь именно про Ардуино, а на этом девборде стоит АТмега :)

раскрыть ветку (2)
Автор поста оценил этот комментарий
Мне нужно с тобой кое-что обсудить, зайди в вк)
раскрыть ветку (1)
Автор поста оценил этот комментарий

Ок :)

DELETED
Автор поста оценил этот комментарий

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

Преподавание - отдельный навык, и их этому не учили.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку