Контроллер Arduino Uno( один с Итальянского) построен на платформе ATmega328, имеющей 14 цифровых входов/выходов (6 из которых могут использоваться как выходы ШИМ), 6 аналоговых входов, кварцевый генератор 16 МГц, разъем USB, силовой разъем, разъем ICSP и кнопку перезагрузки. Для работы необходимо подключить платформу к компьютеру посредством кабеля USB, либо подать питание при помощи адаптера AC/DC или батареи.
Характеристики
Микроконтроллер ATmega328 Рабочее напряжение 5 В Входное напряжение (рекомендуемое) 7-12 В Входное напряжение (предельное) 6-20 В Цифровые Входы/Выходы 14 (6 из которых могут использоваться как выходы ШИМ) Аналоговые входы 6 Постоянный ток через вход/выход 40 мА Постоянный ток для вывода 3.3 В 50 мА Флеш-память 32 Кб (ATmega328) из которых 0.5 Кб используются для загрузчика ОЗУ 2 Кб (ATmega328) EEPROM 1 Кб (ATmega328) Тактовая частота 16 МГц Схема и исходные данные Файлы EAGLE: arduino-duemilanove-reference-design.zip
Питание
Arduino Uno может получать питание через подключение USB или от внешнего источника питания. Источник питания выбирается автоматически.
Внешнее питание (не USB) может подаваться через преобразователь напряжения AC/DC (блок питания) или аккумуляторной батареей. Преобразователь напряжения подключается посредством разъема 2.1 мм с центральным положительным полюсом. Провода от батареи подключаются к выводам Gnd и Vin разъема питания.
Платформа может работать при внешнем питании от 6 В до 20 В. При напряжении питания ниже 7 В, вывод 5V может выдавать менее 5 В, при этом платформа может работать нестабильно. При использовании напряжения выше 12 В регулятор напряжения может перегреться и повредить плату. Рекомендуемый диапазон от 7 В до 12 В.
Выводы питания:
Память
Микроконтроллер ATmega328 располагает 32 кБ флэш памяти, из которых 0.5 кБ используется для хранения загрузчика, а также 2 кБ ОЗУ (SRAM) и 1 Кб EEPROM.(которая читается и записывается с помощью библиотеки EEPROM).
Входы и Выходы
Каждый из 14 цифровых выводов Uno может настроен как вход или выход, используя функции pinMode(), digitalWrite(), и digitalRead(), . Выводы работают при напряжении 5 В. Каждый вывод имеет нагрузочный резистор (по умолчанию отключен) 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:
Связь
На платформе Arduino Uno установлено несколько устройств для осуществления связи с компьютером, другими устройствами Arduino или микроконтроллерами. ATmega328 поддерживают последовательный интерфейс UART TTL (5 В), осуществляемый выводами 0 (RX) и 1 (TX). Установленная на плате микросхема ATmega8U2 направляет данный интерфейс через USB, программы на стороне компьютера «общаются» с платой через виртуальный COM порт. Прошивка ATmega8U2 использует стандартные драйвера USB COM, никаких стороних драйверов не требуется, но на Windows для подключения потребуется файл ArduinoUNO.inf. Мониторинг последовательной шины (Serial Monitor) программы Arduino позволяет посылать и получать текстовые данные при подключении к платформе. Светодиоды RX и TX на платформе будут мигать при передаче данных через микросхему FTDI или USB подключение (но не при использовании последовательной передачи через выводы 0 и 1).
Библиотекой SoftwareSerial возможно создать последовательную передачу данных через любой из цифровых выводов Uno.
ATmega328 поддерживает интерфейсы I2C (TWI) и SPI. В Arduino включена библиотека Wire для удобства использования шины I2C.
Программирование
Платформа программируется посредством ПО Arduino. Из меню Tools > Board выбирается «Arduino Uno» (согласно установленному микроконтроллеру). Подробная информация находится в справочнике и инструкциях.
Микроконтроллер ATmega328 поставляется с записанным загрузчиком, облегчающим запись новых программ без использования внешних программаторов. Связь осуществляется оригинальным протоколом STK500.
Имеется возможность не использовать загрузчик и запрограммировать микроконтроллер через выводы ICSP (внутрисхемное программирование). Подробная информация находится в данной инструкции.
Автоматическая (программная) перезагрузка
Uno разработана таким образом, чтобы перед записью нового кода перезагрузка осуществлялась самой программой Arduino на компьютере, а не нажатием кнопки на платформе. Одна из линий DTR микросхемы ATmega8U2, управляющих потоком данных (DTR), подключена к выводу перезагрузки микроконтроллеру ATmega328 через 100 нФ конденсатор. Активация данной линии, т.е. подача сигнала низкого уровня, перезагружает микроконтроллер. Программа Arduino, используя данную функцию, загружает код одним нажатием кнопки Upload в самой среде программирования. Подача сигнала низкого уровня по линии DTR скоординирована с началом записи кода, что сокращает таймаут загрузчика.
Функция имеет еще одно применение. Перезагрузка Uno происходит каждый раз при подключении к программе Arduino на компьютере с ОС Mac X или Linux (через USB). Следующие полсекунды после перезагрузки работает загрузчик. Во время программирования происходит задержка нескольких первых байтов кода во избежание получения платформой некорректных данных (всех, кроме кода новой программы). Если производится разовая отладка скетча, записанного в платформу, или ввод каких-либо других данных при первом запуске, необходимо убедиться, что программа на компьютере ожидает в течение секунды перед передачей данных.
На Uno имеется возможность отключить линию автоматической перезагрузки разрывом соответствующей линии. Контакты микросхем с обоих концов линии могут быть соединены с целью восстановления. Линия маркирована «RESET-EN». Отключить автоматическую перезагрузку также возможно подключив резистор 110 Ом между источником 5 В и данной линией.
Токовая защита разъема USB
В Arduino Uno встроен самовостанавливающийся предохранитель (автомат), защищающий порт USB компьютера от токов короткого замыкания и сверхтоков. Хотя практически все компьютеры имеют подобную защиту, тем не менее, данный предохранитель обеспечивает дополнительный барьер. Предохранитель срабатыват при прохождении тока более 500 мА через USB порт и размыкает цепь до тех пока нормальные значения токов не будут востановлены.
Физические характеристики
Длина и ширина печатной платы Uno составляют 6.9 и 5.3 см соответственно. Разъем USB и силовой разъем выходят за границы данных размеров. Четыре отверстия в плате позволяют закрепить ее на поверхности. Расстояние между цифровыми выводами 7 и 8 равняется 0,4 см, хотя между другими выводами оно составляет 0,25 см.
Предыдущие работы
В уроке расскажу о плате Arduino Pro Mini.
Предыдущий урок Список уроков Следующий урок
Это одна из самых простых и миниатюрных плат Ардуино. На ней только минимум компонентов: микроконтроллер, кварцевый резонатор, блокировочные конденсаторы, два светодиода и стабилизатор напряжения.
Преобразователя интерфейсов плата не содержит. Для подключения к компьютеру через интерфейс USB, в том числе для загрузки программы из Arduino IDE, необходимо использовать внешний USB-UART конвертер.
Размеры платы Arduino Pro Mini всего 18 x 33 мм, что позволяет применять ее в проектах критичных к габаритам электроники.
Плата поставляется без впаянных разъемов. Это дает возможность выбрать свой способ подключения платы: впаять разъемы или выполнить соединение пайкой проводов.
Естественно, простота и миниатюрные размеры платы отразились на ее стоимости. Это одна из самых дешевых плат Ардуино. На момент написания статьи (февраль 2017 г.) по моей партнерской ссылке плата Arduino Pro Mini с микроконтроллером ATmega328 стоит всего 180 руб.
Все вышесказанное делает привлекательным применение Arduino Pro Mini:
- в проектах с ограниченными конструктивными размерами;
- при отсутствии необходимости связи с компьютером;
- при серийном выпуске;
- при ограничениях на стоимость изделия.
Платы выпускаются в модификациях:
- тип микроконтроллера ATmega168 или ATmega328;
- напряжение питания 3,3 или 5 В.
В варианте с микроконтроллером ATmega168 объемы всех типов памяти (ОЗУ, FLASH и EEPROM) уменьшены в 2 раза.
В вариантах с питанием 3,3 В уменьшена тактовая частота с 16 до 8 мГц.
Характеристики платы Arduino Pro Mini.
Большей частью плата имеет такие же параметры, как и другие платы Ардуино с микроконтроллерами ATmega168/328.
Тип микроконтроллера | ATmega168 | ATmega328 |
Архитектура | AVR | |
Напряжение питания микроконтроллера | 3,3 или 5 В (в зависимости от модификации) | |
Напряжение питания платы | 3,35 – 12 В (модификация 3,3 В) или 5,2 – 12 В (модификация 5 В) | |
Тактовая частота | 8 мГц (модификация 3,3 В) или 16 мГц (модификация 5 В) | |
Объем оперативной памяти (SRAM) | 1 кбайт | 2 кбайт |
Объем памяти программ (FLASH) | 16 кбайт | 32 кбайт |
Объем энергонезависимой памяти (EEPROM) | 512 байт | 1 кбайт |
Дискретные входы/выходы | 14 ( 6 могут быть использованы для генерации ШИМ сигналов) | |
Аналоговые входы | 6 или 8 входов | |
Максимально-допустимый ток цифрового выхода | 40 мА (суммарный ток выводов не более 200 мА) | |
Размеры платы | 18 x 33 мм |
Назначение выводов платы Arduino Pro Mini.
Питание.
Arduino Pro Mini может получать питание следующими способами.
- От внешнего стабилизированного источника питания напряжением 5 В. В этом случае используется вывод VCC.
- От USB порта компьютера через преобразователь интерфейсов USB-UART, подключенный к 6 контактному разъему платы. Используется вывод VCC 6 контактного разъема.
- От внешнего не стабилизированного источника питания напряжением до 12 В. В этом случае используется встроенный стабилизатор напряжения платы. Питание подключается через вывод RAW.
Схема питания платы Arduino Pro Mini выглядит так.
Перемычка SJ1 используется для отключения внутреннего стабилизатора платы в приложениях с низким энергопотреблением. На моем варианте платы этой перемычки нет.
В качестве стабилизатора напряжения питания микроконтроллера используется микросхема MIC5205. Это линейный стабилизатор с низким падением напряжения.
При внешнем питании платы через вывод RAW этот стабилизатор может быть использован для питания внешнего устройства через вывод VCC. Ток потребления ограничен нагрузочной способностью MIC5205 и не должен превышать 150 мА. Кроме того необходимо учитывать максимально-допустимую мощность рассеивания стабилизатора. По этой ссылке mic5205.pdf можно получить подробную информацию о MIC5205 и расчете максимальной мощности для этого стабилизатора.
Входы и выходы платы.
- Все выводы, аналоговые или цифровые, могут работать в диапазоне от 0 до 5 В (от 0 до 3,3 В для модификации платы с питанием 3,3 В).
- Для дискретного вывода в режиме выхода втекающий или вытекающий ток не должен превышать 40 мА. Суммарный ток выводов микроконтроллера должен быть не более 200 мА.
- Все выводы микроконтроллера подключены к источнику питания через подтягивающие резисторы сопротивлением 20-50 кОм. Подтягивающие резисторы могут быть отключены программно.
- Если на любой аналоговый или дискретный вход подать напряжение ниже 0 В или свыше 5 В (свыше 3,3 В для модификации с питанием 3,3 В), то оно будет ограничено защитными диодами микроконтроллера.
Сигналы с высоким напряжением и отрицательным напряжением должны подключаться к входам платы через ограничительные резисторы. В противном случае микроконтроллер обязательно выйдет из строя.
Цифровые выводы. У платы есть 14 цифровых выводов. Каждый из них может работать в режиме входа и выхода. Некоторые выводы еще имеют дополнительные функции.
Последовательный интерфейс UART: выводы 0(RX) и 1(TX). Используются для обмена данными по интерфейсу UART и загрузки программы в микроконтроллер из Arduino IDE. Плата не содержит преобразователя интерфейса USB-UART. Для связи с компьютером необходимо использовать внешний конвертер интерфейсов.
Входы внешних прерываний: выводы 2 и 3. К выводам могут быть подключены сигналы внешних аппаратных прерываний.
ШИМ: выводы 3,5,6,9, 10, 11. На этих выводах может быть сформирован аппаратным способом сигнал ШИМ. После сброса в системе установливаются параметры ШИМ: 8 бит, 500 Гц.
Интерфейс SPI: выводы 10 (SS), 11 (MOSI), 13 (SCK). Выводы аппаратного последовательного интерфейса SPI.
Интерфейс I2C: выводы 4 (SDA) и 5 (SCL). Сигналы аппаратного интерфейса I2C.
Светодиод: вывод 13. К этому выводу подключен светодиод общего назначения. Светится при высоком уровне сигнала на выводе 13.
Аналоговые входы: A0…A8. 6 или 8 аналоговых входов, предназначенных для измерения напряжения. Разрядность АЦП – 10 бит, что соответствует 1024 градациям сигнала. Время измерения порядка 100 мкс. Для сохранения точности выходное сопротивление источника сигнала не должно превышать 10 кОм.
RST. Сигнал сброса микроконтроллера. Низкий уровень приводит к перезагрузке системы. Вывод RST на 6 контактном разъеме имеет несколько другое назначение и используется при загрузке программы в микроконтроллер.
На плате есть 2 светодиода.
- Светодиод красного свечения, индицирующий наличие питания микроконтроллера.
- Светодиод зеленого свечения. Управляется программой и может использоваться для любых целей по выбору разработчика.
Принципиальная схема платы Arduino Pro Mini.
О цепях питания платы я уже рассказал, а больше пояснять нечего. Микроконтроллер включен по стандартной схеме, практические все его выводы непосредственно подключены к выводам платы.
Загрузка программы в плату Arduino Pro Mini.
На платах Ардуино со встроенным конвертером интерфейсов эта операция происходит очень просто. Плата подключается стандартным кабелем к USB порту компьютера, нажимается кнопка в Arduino IDE и программа автоматически загружается в плату.
С платой Arduino Pro Mini все сложнее. Некуда подключать стандартный USB кабель.
Как происходит загрузка программ в платы Ардуино из среды Arduino IDE.
При нажатии кнопки ”Загрузка” в Arduino IDE происходит компиляция скетча. О чем сообщает надпись “Компиляция скетча” в нижней части окна.
Затем автоматически появляется сообщение “Загрузка”.
В этот момент Arduino IDE инициирует импульс низкого уровня на выходе DTR. DTR это один из сигналов управления передачей данных COM порта. Обычно он формируется на выходе встроенного преобразователя интерфейсов USB-UART.
Во всех платах Ардуино сигнал DTR подключен к выводу сброса микроконтроллера через конденсатор емкостью 0,1 мкФ. Получается простейшая дифференцирующая цепочка с постоянной времени 1 мс.
У платы Arduino Pro Mini внутреннего конвертера интерфейсов нет, поэтому сигнал DTR выведен на 6 контактный разъем. Схема сброса от сигнала DTR для Arduino Pro Mini выглядит так.
Независимо от длительности импульса DTR на входе ”RESET” микроконтроллера будет сформирован короткий импульс сброса.
По любому сбросу микроконтроллер передает управление программе загрузчика. В течение примерно 1 секунды загрузчик ожидает связи с компьютером по протоколу STK500. Если данные от компьютера поступают, то происходит загрузка программы из Arduino IDE.
Если в течение секунды данные от компьютера не приходят, то управление передается пользовательской программе микроконтроллера. Так происходит, например, при включении питания. Секунду плата ожидает, не собираются ли в нее загружать данные, а затем выполняется уже загруженная программа.
Из всего вышесказанного становится понятно, что если плату Arduino Pro Mini подключить через полноценный конвертер интерфейсов с сигналами RXD, TXD и DTR, то загрузка будет происходит совершенно так же, как и в других платах Ардуино со встроенным преобразователем интерфейсов. Дополнительно можно использовать для питания платы сигнал 5 В интерфейса USB. Или 3,3 В для плат с питанием 3,3 В.
Для подключения внешнего преобразователя интерфейсов предназначен 6 контактный разъем платы Arduino Pro Mini (при необходимости его можно впаять). Разъем содержит все сигналы, необходимые для загрузки программы в плату.
Надо только учитывать, что на некоторых платах сигналы RXI и TXO 6 контактного разъема могут соответствовать сигналам RXD и TXD микроконтроллера, а могут и быть включены наоборот. Например, как на этой плате.
Лучше прозвонить цепи выводов RXI и TXO. На моей плате сигналы соответствуют. Схема подключения конвертера USB-UART к моей плате выглядит так.
Обратите внимание, что сигнал DTR надо подключать к выводу RST именно на 6 контактном разъеме. Он соединен с входом сброса микроконтроллера через дифференцирующий конденсатор. На плате есть еще один вывод RST. Он подключен непосредственно ко входу “RESET” микроконтроллера.
В качестве внешнего USB-UART конвертера можно использовать любой модуль, например, PL2303 USB-UART BOARD или модуль CH340. Не забудьте установить на компьютер драйвер для модуля преобразователя интерфейсов.
Беда в том, что большинство модулей – конвертеров интерфейсов не имеют на выходном разъеме сигнала DTR. Можно, конечно, припаять проводок к выводу DTR микросхемы конвертера. Практически на всех микросхемах преобразователей интерфейсов этот сигнал есть. Просто он не выведен на разъем модуля.
Другой способ – использовать кнопку ”RESET” платы Arduino Pro Mini.
При загрузке программы ее надо вовремя нажать. В момент, когда появилось сообщение ”Загрузка” в окне Arduino IDE необходимо кратковременно нажать эту кнопку. На это есть время примерно 1 секунда. В принципе это сделать несложно, но когда голова забита разработкой программы такая простая операция несколько напрягает.
В следующем уроке собираюсь начать новую большую тему – обмен данными между платами Ардуино.
Предыдущий урок Список уроков Следующий урок
Поддержать проект
Arduino или AVR?
И если для более опытных электронщиков изучение AVR не становится проблемой, то у начинающих появляется море вопросов.
Переход к созданию своих устройств на практике бывает затруднен. Но решение есть. Оно довольно простое и не очень затратное. Многие, думаю, слышали о такой платформе под названием “Arduino”.
Arduino – это электронный модуль-конструктор, имеющий в своем составе МК AVR, который является мозгом всего этого конструктора. Отличие от самого МК AVR – это упрощенное программирование, большое количество дешевых периферийных устройств, которые можно купить без проблем, а также простая и безопасная “заливка” программы в МК.
Блок-схема платы Arduino до боли проста:
Периферийными устройствами в данном случае являются разные датчики контроля, а также исполняемые устройства. Всем этим винегретом заправляет МК AVR, который установлен посередине платы 😉
Вот некоторые из периферийных устройств.
В процессе изучения мы будем знакомиться с ними поближе
Виды Arduino
Существуют несколько разных моделей Arduino. Некоторые дешевле, а некоторые дороже. Как вы поняли, дешевые модели резко ограничены по функционалу, а также по количеству выводов. Устаревшие модели мы рассматривать не будем, а рассмотрим только те, которые можно недорого приобрести у наших друзей китайцев на сайте Алиэкспресс:
Arduino Mega
Сама приставка “мега” говорит уже сама за себя. Самый мощный конструктор.
Arduino Uno
Урезанная версия модели Arduino Mega, у которой, как видите, уже меньше выводов для подключения периферийных устройств. Если будете брать, то лучше брать сразу кит-набор. При большом желании можете глянуть на Али по этой ссылке.
Также на плате Arduino UNO и Mega распаян стабилизатор питания, позволяющий питать плату от батареи Крона, либо через переходник от китайского адаптера – блока питания. Оптимальное напряжение питания 9-12 Вольт
Arduino Nano
Думаю, проще уже некуда. На али выбор этой модели огромный.
[quads id=1]
Все эти три модели – Mega, Uno, Nano – имеют в своем составе составе конвертер USB-Serial и разъем USB. Это означает, что для заливки программы (на языке Arduino – скетча), нам нет необходимости покупать программатор.
Arduino Pro Mini
Для Pro Mini уже необходим программатор. Но это не обычный программатор, типа USBasp, с помощью которого мы шили микроконтроллеры AVR. Здесь уже требуется программатор USB-Serial, который уже встроен в Uno, Nano и Mega, но не имеется в Mini. Стоимость его в среднем чуть меньше 1$. Вот вам ссылка на Али на саму модель Pro Mini, а вот ссылка на программатор.
Какой Arduino лучше?
Какой из Ардуино лучше для начала осваивания работы? Мое мнение – это Arduino Uno. Mega будет стоить дороже, да и зачем новичку такой супер-конструктор? Uno удобнее всего подключать к ПК и для него не требуется паять штырьки, для того чтобы вставить в макетную плату, так как они уже есть. Он полностью готов к работе. Nano и Pro Mini требуют предварительного впаивания гребенки штырьков:
Но если вы уже с паяльником на “ты” и хотите немного сэкономить, то можете приобрести Arduino Nano. Если же вы отладили какое-либо устройство и хотите уже использовать его многие годы, тут как нельзя кстати подойет Pro Mini. Маленький, удобный, а главное – дешевый.
На всех четырех перечисленных моделях Arduino размещены кварцевые резонаторы, используемые для тактирования МК. Также имеется индикация в виде мигания светодиодов при заливке прошивки. Цена Nano и Mini существенно ниже, чем Uno, и приблизительно равна стоимости среднего по функционалу микроконтроллера AVR.
Сравнение плат Arduino – довольно важная вещь. Новичку, не имеющему опыта работы с ней, легко растеряться в многообразии плат и выбрать неподходящую модель. Конечно, выбор той или иной платы зависит от проекта, однако в общем разъяснить новичкам об особенностях каждой платы не помешает: – Arduino Mega Одна из самых мощных плат в линейке Arduino. Имеет память аж 256 Кб, которой хватит на 99,9% проектов, 54 цифровых входов/выходов и 16 аналоговых входов. – Arduino Uno Наиболее распространённая ардуинка, имеет память 32 Кб, 14 цифровых входов/выходов и 6 аналоговых входов. Немного, по сравнению с Mega, но для многих проектов хватает. – Arduino Nano Вопреки ожиданиям от слова “нано” она даже мощнее Uno. Имеет 14 цифровых входов/выходов и 8 аналоговых входов и память тоже 32 Кб, так, как построена на том же МК ATMega328, что и Uno. – Arduino Pro Mini Самая слабая плата. Имеет память 16 Кб, 14 цифровых входов/выходов и 4 аналоговых входа. К тому же, обвязка платы настолько ограничена, что она отличается от простого МК лишь кнопкой перезагрузки reset и стабилизатором питания.
Какую же выбрать новичку? Nano отлично подходит для готовых проектов, а Uno – для освоения Arduino, на ней удобнее учиться. Nano очень компактное и дешевле Uno, а Uno удобнее питать и подключать. Pro Mini не оправдывает своей стоимости, да и к ней надо покупать программатор, к тому же её очень неудобно питать.
Программа Arduino IDE
Для написания программ используется собственная среда разработки Arduino. Те, кто пытались освоить работу с Atmel Studio 6, помнят, какое там количество настроек. Сходу разобраться нереально.Здесь же наоборот, мы видим простой интерфейс и только все самое необходимое. Скачать ее можно здесь. Есть также версии посвежее, но это не влияет на работоспособность программы.
Arduino является открытой платформой. Именно это принесло ей такую большую популярность. Для нее было выпущено много клонов под разные версии. Кстати если вы начнете работать именно с китайским клоном, а не с оригинальным Arduino, что скорее всего и произойдет, то вам потребуется установить драйвер под китайский адаптер Usb-Serial, распаянный на плате. Как отличить китайский Ардуино от оригинала? Если присмотреться к модулю, то можно увидеть вот такую микросхему:
Если она имеется, то ардуино китайский. Для него драйвер устанавливается вручную через “Диспетчер устройств”. Никаких проблем при установке замечено не было. Скачать драйвер можно здесь.
Далее нам надо выбрать нужную нам модель Arduino из списка
Ну а потом выбираем COM-порт в системе, к которой у нас подключена Arduino.
Ну вот и все! Совсем ничего сложного 😉
Вывод
Итак, вернемся к теме нашей статьи. Что же все-таки лучше изучать? Голые МК AVR или взять набор Arduino?
Для новичков часто бывает проблемой выставление фьюзов у МК AVR. Этого минуса лишены все Ардуино. Там просто нет такой функции при подключении через USB кабель. Также при небрежном выставлении фьюзов можно залочить дорогой МК AVR, который не всегда просто реанимировать. В Ардуино залочить МК нереально. При прошивке программатором ISP USBASP, мы можем прошить МК Ардуино, как и любой другой МК AVR.
Также одним важным отличием Ардуино от МК AVR – это наличие худшей оптимизации размера кода. То есть программа, которая выполняет одни и те же действия на МК и Arduino будет иметь разный вес. На Arduino она будет весить больше. И может даже случиться так, что просто не войдет в память. Микроконтроллеры AVR имеют более широкие возможности в создании электронных устройств, но есть у них и свои минусы – это необходимость наличия программатора, источника питания, а также мощного компьютера для комфортной работы в Atmel Studio 6.
Этой публикацией мы начинаем цикл статей, посвященных конструированию электронных устройств на платформе Arduino. Оставайтесь с нами и мы поэтапно, следуя от простого к сложному, разберем самостоятельную сборку электронных устройств. Будут рассмотрены разные модели Arduino, программатор Usb – Serial и её периферия. Вы научитесь самостоятельно писать скетчи в среде разработки и обязательно соберете все то, что давно хотели собрать, но затруднялись в создании на практике.
И снова привет всем любителям и новичкам программирования Arduino!)
Это третье видео (статья) из серии В«основы Arduino для начинающихВ» и сегодня мы поговорим о внутренностях платы Arduino Uno и их предназначении, а так же уделим немного внимания её микроконтроллеру Atmega328.
Предыдущие выпуски вы найдете здесь: ,1,2
Традиционно для вас доступны два варианта представления материала – видео и текст, надеюсь, оба варианта будут интересными 🙂
В прошлом выпуске мы говорили о том, какую плату для дальнейшего обучения лучше выбрать и остановились на использовании Arduino Uno третьей ревизии. Давайте же поближе познакомимся с компонентами этой платы и их предназначением, а также попробуем составить некоторую упрощенную структурную схему ее функционирования. Думаю, она позволит вам лучше понимать основной принцип взаимодействия отдельных узлов схемы и работу всей платы в целом.
С чего начинается любая схема? Конечно же, это различные компоненты, отвечающие за ее питание. Поэтому первым в нашей функциональной схеме мы выделим именно это. Вообще, у Arduino есть три пути получить энергию для работы: это питание по шине USB, от специального разъема питания на плате или входа Vin. Давайте разберем их все по отдельности.
Подключая плату к компьютеру посредством USB-интерфейса, вы подаете питание на Arduino благодаря четырехпроводной структуре шины USB, где 2 провода отвечают за передачу команд, а два других провода за непосредственное питание устройств. Именно по этим проводам Arduino и получает рабочее напряжение величиной 5В как это видно на принципиальной схеме. Так же, это напряжение поступает на вход стабилизатора напряжения, который понижает его до +3.3В, что необходимо для питания некоторых отдельных компонентов, подключаемых к Arduino, рассчитанных на это напряжение. Кстати, в качестве защиты от большого потребления тока вашей платой, на самом входе питающей линии разработчики установили небольшой предохранитель на 500мА, который, в случае различных обстоятельств, защитит USB-порт компьютера и плату Arduino от возможного выхода из строя.
все картинки кликабельны 🙂
Итак, следующим на очереди идет разъем питания для подключения, например, сетевого AC/DC-адаптера, аккумулятора или батареи. В отличие от USB-порта, где предполагается стабильное наличие напряжения 5В (или около того), в случае разъема питания ситуация складывается несколько иная, поскольку он рассчитан на подключение к нему источников питания различных напряжений. Диапазон этих значений колеблется в пределах от 6 до 20В и, при прямом подключении, это совсем не годится для компонентов нашей схемы. Поэтому разработчики поставили на входе питания стабилизаторы напряжения – один на 5В, другой на 3.3В. А так же парочку конденсаторов и диод, в качестве элементов борьбы с помехами и защиты от перепутывания полярности питания. Стоит отметить, что для стабилизатора напряжения всегда нужно напряжение, несколько выше того уровня, до которого он будет его понижать, и специфика стабилизатора такова, что уменьшение напряжения питания ниже 7В приводит к уменьшению напряжения на выводе 5V, что может стать причиной нестабильной работы устройства. Использование напряжения больше 12В может приводить к перегреву стабилизатора напряжения и выходу платы из строя. Именно поэтому, рекомендуется использовать источник питания с напряжением в диапазоне от 7 до 12В.
И, наконец, вывод Vin на плате Arduino. Если посмотреть на схему питания, то можно увидеть, что, при подключенном источнике питания к разъему, с этого вывода можно будет получить это же самое напряжение, правда, чуть меньшее из-за небольшого падения на диоде.
Ну а если теперь подключить источник питания к этому выводу, то напряжение так же попадет на стабилизатор 5В и плата будет запитана. Это удобно в случае использования различных батарей или аккумуляторов без специальных разъемов питания.
Стоит отметить, что Arduino сама выбирает источник питания с самым большим напряжением, и в этом ей помогает специальный элемент, называющийся компаратором. Если в двух словах, то компаратор, это такое устройство, которое сравнивает подаваемый на него сигнал с каким-либо опорным значением, и, если этот сигнал превышает опорное значение, то компаратор выдает на своем выходе логическую единицу (в нашем случае +5В).
Итак, с блоком питания разобрались, идем дальше.
На очереди у нас связующее звено между компьютером и программируемым нами микроконтроллером. Это еще один микроконтроллер ATmega8U2, либо, в более новых версиях ATmega16U2, который практически не заметен на плате.
Этот микроконтроллер представляет собой USART, что в переводе означает В«Универсальный синхронно-асинхронный приемо-передатчикВ». Именно он осуществляет передачу данных по самому распространенному на сегодняшний день протоколу RS-232, c помощью которого связывает COM-порт вашего компьютера и программируемый микроконтроллер.
Помните, мы говорили, что USB-кабель имеет 4 провода, два из которых питающие, а два других – сигнальные? Так вот, именно по сигнальным проводам и происходит передача данных от ПК к микроконтроллеру и обратно, а свидетельствуют о приеме, либо передаче, специальные светодиоды на плате, имеющие названия Rx и Tx, где R это сокращение слова Receive, то есть прием, а T – transmit – то есть отправление. Причем выводы Rx и Tx всегда подключаются разноименно, то есть Rx принимающего устройства соединяется с Tx передающего, и наоборот. Это видно из схемы подключения двух микроконтроллеров на плате Arduino. Для тех, кто желает знать о том, как передаются данные по USB при помощи UART, я рекомендую ознакомиться с этой ссылкой.
Ну вот, наконец, мы и подошли с вами к главному компоненту платы Arduino – микроконтроллеру Atmega328P, который, собственно, и является основным вычислительным центром этой платформы. Давайте разберемся, из каких основных частей он состоит.
В обобщенном виде, любой микроконтроллер можно разбить на три составляющие части:
1. Вычислительный блок, иначе именуемый как арифметико-логическое устройство или процессор. Также, наверняка многие из вас слышали или видели такую аббревиатуру как CPU (Central Processing Unit) что в переводе на русский значит “центральное процессорное устройство”. Именно этот блок является самой главной частью системы и предназначен он для выполнения различных операций с числами. А вот уже последовательность этих операций называется программой. Каждая операция кодируется в виде числа и записывается в память микроконтроллера, но об этом, в другой раз..
2. Собственно, второй основной частью микроконтроллера и является модуль памяти. Это специализированное электронное устройство, которое представляет собой набор ячеек, в каждой из которых может храниться одно число. Именно здесь хранится написанная вами программа и другие команды микроконтроллера. Память делится на оперативную – ОЗУ (оперативное запоминающее устройство) и постоянную – ПЗУ (постоянное запоминающее устройство. Принципиальная разница между этими видами памяти в том, что в случае с оперативной памятью, при выключении питания микроконтроллера, записанные значения не сохраняются и существуют только до тех пор, пока это питание присутствует. Например, такая память используется для хранения каких-либо промежуточных результатов вычислений. А вот данные, хранимые в постоянной памяти, наоборот, никак не зависят от наличия питания и могут быть использованы микроконтроллером сразу же после включения. В такую память, например, записывается вся разработанная вами программа, и она никуда не пропадет при повторной подаче напряжения на микроконтроллер.
3. Наконец, третьей составляющей частью микроконтроллера являются так называемые порты ввода-вывода. Если процессор и память находятся где-то в глубине корпуса микроконтроллера и мы их не видим, то порты ввода-вывода всегда на виду – вот они, в виде небольших металлических ножек.
Конечно же, не стоит забывать, что некоторые ножки отвечают за питание и прочие компоненты, подключаемые к микроконтроллеру, но большинство из них все-таки являются портами ввода-вывода, отвечающими за непосредственное управление микроконтроллером различными датчиками, модулями, светодиодами, транзисторами и так далее. Подавляющее большинство этих портов были выведены разработчиками Arduino по краям платы и, для удобства работы, подписаны.
Именно с этими портами нам и предстоит работать в дальнейшем, ведь суть любой микропроцессорной системы сводится к управлению чем-то извне, а иначе, зачем нам микроконтроллеры? 🙂
Как уже было сказано ранее, центральный процессор является основным мозгом микроконтроллера и именно он управляет модулем памяти и портами ввода-вывода. Более подробно о работе с портами ввода-вывода мы поговорим уже через один выпуск, когда будем работать со светодиодом и кнопкой, ну а сейчас я бы хотел заострить внимание на еще одном компоненте на плате, который мы не назвали – это генератор тактовых импульсов или кварцевый резонатор.
Не пугайтесь таких сложных названий, на самом деле, все просто – для работы любого микроконтроллера нужен некий генератор импульсов, благодаря которому он сможет осуществлять свою деятельность по последовательному выполнению команд. Например, мы написали с вами программу мигания светодиодом 10 раз в секунду. Но как микроконтроллер узнает, не имея никакого представления о длительности одной секунды, когда ему пора включить светодиод, а когда пора выключить? Именно благодаря кварцевому резонатору, который, в зависимости от его номинала, генерирует определенное число импульсов за одну секунду, это число имеет единицы измерения – герцы и называется частотой. Например, частота, равная 5Гц означает 5 импульсов в секунду, 10Гц – десять импульсов и так далее.
Так же на плате Arduino вы могли заметить небольшую кнопку – она называется кнопкой сброса или RESET, и при нажатии на нее переводит наш микроконтроллер в исходную позицию, с которой он начинал свою работу.
Итак, мы познакомились с вами с основными составляющими платы Arduino и совсем немного поговорили о микроконтроллере ATmega. Хочу заметить, что изучению структуры и принципам работы микроконтроллеров можно посвятить большой отдельный курс, поэтому я не стал углубляться в эту тему и рассчитываю на вашу дальнейшую любознательность и стремление изучить и понять как можно большее в этой интересной сфере. В качестве дальнейшего учебного пособия по изучению микроконтроллеров AVR, не сочтите за рекламу, я советую вам книгу Белова А.В., в которой, на мой взгляд, достаточно доступным языком описаны все нюансы работы с микроконтроллерами.
ли со статьей или есть что добавить?