Arduino на макетной плате
Breadboard Arduino / Автономный ATmega328P
Вот мой Arduino на макетной плате. В интернете есть множество руководств по созданию breadboard Arduino. Все они по сути одинаковы и используют одни и те же подключения. Некоторые используют предварительно запрограммированные чипы, другие – чистые. Мой план состоял в том, чтобы использовать новый чистый чип ATmega (без загрузчика) и использовать Arduino Nano в качестве ISP-программатора.
Номера пинов на чипе ATmega328P отличаются от номеров на Arduino. Например, пин 19 на чипе – это пин 13 (встроенный светодиод) на Arduino.
Нумерация пинов
Пин 1 обозначен маленькой точкой (углублением).
Список деталей
1 x ATMEGA 328P-PU
1 x Кварцевый резонатор 16 МГц
1 x Резистор 220 Ом
1 x Резистор 10 кОм
1 x Светодиод (зелёный)
2 x Конденсатора 22 пФ (маркировка 220)
Соединительные провода для макетной платы
Разместите чип ATmega 328P на макетной плате и добавьте остальные компоненты и провода согласно фотографии выше.
Пин 1 – это пин сброса (RESET). Когда он переходит в LOW (к земле), чип сбрасывается. Чтобы ATmega 328P не перезагружался постоянно, нужно удерживать пин в HIGH (+5V). Для этого используется подтягивающий резистор 10 кОм, подключённый к шине +5V. Затем добавляем тактильную кнопку между пином 1 и землёй. Теперь при нажатии кнопки пин 1 притягивается к земле, что вызывает сброс чипа. Это аналогично тактильной кнопке на Arduino.
Пин 7 – VCC, подключается к +5V.
Пин 8 – земля (GND), подключается к земле.
Пины 9 и 10 – для кварцевого резонатора или генератора. Я использую кварц 16 МГц – такой же, как на Arduino. Кварцу также нужна пара конденсаторов 22 пФ. Подключите кварц к пинам 9 и 10. Подключите первый конденсатор между пином 9 и землёй, второй конденсатор – между пином 10 и землёй.
Пин 22 – ещё один вывод земли (GND). Подключите к земле.
Пин 21 – AREF, пин аналогового опорного напряжения для АЦП. Подключите к +5V.
Пин 20 – AVCC. Это питание для АЦП, подключите к +5V.
Пин 19 – это Arduino D13. На Arduino к нему подключён светодиод. Поэтому добавьте резистор 220 Ом + светодиод между пином и землёй.
Развязывающие конденсаторы
Если вы обнаружите, что чип работает некорректно, можно добавить развязывающие конденсаторы 0.1 мкФ к шинам питания с обеих сторон макетной платы. Подключите конденсаторы между линиями GND и VCC (в идеале конденсаторы должны быть как можно ближе к чипу ATmega). Мне никогда не приходилось их добавлять, но я знаю людей, у которых были проблемы со стабильностью, и добавление конденсаторов решило проблему.
На новых чипах ATmega328P без загрузчика чип настроен на работу от внутреннего генератора на частоте 1 МГц. Чтобы он работал на 16 МГц, нужно запрограммировать специальные регистры, называемые фьюзами (fuses). Фьюзы хранят значения или флаги, которые позволяют изменить некоторые настройки чипа по умолчанию. Внешний кварц 16 МГц будет проигнорирован, если фьюзы не настроены на его использование. Настройка фьюзов рассмотрена в следующей статье: Arduino Nano как ISP-программатор.
Чтобы проверить, работает ли схема на макетной плате, я использовал чип из Arduino, уже запрограммированный модифицированным скетчем Blink. Это необязательно, но это была моя первая попытка, и я хотел убедиться, что всё работает. После подтверждения работы схемы я заменил запрограммированный ATmega на новый чистый.
Я начал изучать, как использовать автономный чип ATmega с идеей использовать их вместо полноценного Arduino в схемах DropControl и CamControl. Потом я обнаружил, что клоны Arduino Mini Pro дешевле, чем стоимость компонентов для сборки своего, и вернулся к использованию полноценных Arduino (не только дешевле, но и проще в использовании). Для проекта dropController, из-за большого размера программы, я использую Arduino без загрузчика и программирую его через Arduino as ISP.