Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Часто у начинающих ардуинщиков и более продвинутых пользователей возникает проблема: памяти микроконтроллера недостаточно или наоборот, слишком много. Основная часть моделей имеет объем памяти 32к или 256к. С портами ввода/вывода ситуация не сильно лучше. Конечно, есть расширители портов, но тогда придется менять логику программы. Одним словом тупик. И выход есть - создать свою копию Arduino на другом микроконтроллере.
Предупреждение
Перед использованием схем из этой статьи, проверьте, все ли в порядке. Я тоже могу допустить ошибку. Если вы это заметили, напишите в комментарии.
Выбираем микроконтроллер под свои задачи
Выбирая МК, нужно определить основные параметры:
Память Flash
Память SRAM
Память EEPROM
Кол-во линий ввода/вывода
Доступные интерфейсы
Большим плюсом при создании платы на базе официально не поддерживаемого МК, будет наличие загрузчика и ядра. Привожу некоторые МК, для которых есть ядро:
МК | Flash, k | SRAM, k | EEPROM, b | Порты | Интерфейсы | Корпус |
Atmega16 | 16 | 1 | 512 | 32 | SPI, I2C,UART | DIP40, TQFP44 |
Atmega32 | 32 | 2 | 1024 | 32 | SPI, I2C,UART | DIP40, TQFP44 |
Atmega64 | 64 | 4 | 2048 | 53 | SPI, I2C,UART x2 | TQFP64 |
Atmega8 | 8 | 1 | 512 | 23 | SPI, I2C,UART | DIP28, TQFP32 |
Atmega644 | 64 | 4 | 2048 | 32 | SPI x3, I2C,UART | DIP40, TQFP44 |
Atmega128 | 128 | 4 | 4096 | 53 | SPI, I2C,UART x2 | TQFP64 |
Atmega640 | 64 | 8 | 2048 | 86 | SPI x5, I2C,UART x4 | TQFP100 |
Atmega1284 | 128 | 16 | 4096 | 32 | SPI x3, I2C,UART x2 | DIP40, TQFP44 |
Главное найти баланс: чтобы желаемого пункта хватало, но не в ущерб остальным характеристикам.
Немного о маркировке МК ATmega
Маркировка МК ATmega обычно интуитивно понятна, в качестве примера разберем маркировку чипа ATmega32l - 8AU. ATmega - семейство МК, 32 - flash память, l - пониженное напряжение питания. Буквы после модели я вынес в таблицу:
Буква | Значение |
Нет | Напряжение питания от 4.5 до 5.5 |
L | Напряжение питания от 2.7 до 5.5 |
V | Напряжение питания от 1.8 до 5.5 |
U | Напряжение питания от 0.7 до 5.5 |
P | Потребление 100нА в режиме Power-down |
A | Уменьшен ток потребления, перекрывается весь диапазон тактовых частот всех версий, напряжение питания 1,8 - 5,5 вольт |
Надо учитывать, что микроконтроллер без буквы в обозначении может иметь пониженное напряжение питания, это нужно проверять по документации.
Тактирование
После выбора микроконтроллера под свои задачи можно переходить к проектированию схемы. Сначала находим пины XTAL1 и XTAL2. К ним мы подключаем кварц. Сейчас их достаточно много - есть и со встроенными конденсаторами внутри.
Для его работы требуется обвязка - два конденсатора на 22 пикофарада.
Также существуют другие варианты - со встроенными конденсаторами и в других корпусах, включая SMD. Если в кварце уже есть конденсатор, то дополнительные не нужны, подключаем напрямую к XTAL1 и XTAL2.
Далее гуглим "НАЗВАНИЕ_МК максимальная частота". Для примера я загуглил "Atmega32l-8au максимальная частота". Почти гарантировано вы увидите строчку:
В этом случае смысла во внешнем кварце нет, можно использовать внутренний генератор. В большинстве случаев частота работы 16 МГц, иногда 20 МГц.
Корпус
Здесь все сводится к размерам и удобству сборки. Некоторые МК выпускаются только в SMD - в основном из-за огромного количества портов. Самые крупные выводные МК обычно выпускаются в корпусе DIP-40. Те, которые имеют 100+ выводов, конечно, идут в SMD. Паяльником реально припаять корпус TQFP-44 - ATmega16/32. Больше - я не пробовал, если у вас есть опыт - отпишите в комментарии. Однако, китайцы, если заказать у них печатную плату, могут нам припаять МК хоть TQFP-100. Естественно, это недёшево, но когда очень большая партия - это единственный выход.
Прошивка
Если мы копируем Arduino, нам необходимо добавить возможность прошивки через бутлоадер - загрузчик, через разъем USB. Существуют специализированные микросхемы - CH340, FT232, CP2102. На оригинальных Arduino для загрузки прошивки используется отдельный камень - Atmega8u2/16u2 со своей прошивкой и аппаратным USB. Я сам использую чип CH340C. Некоторые на него жалуются, но у меня все достаточно хорошо. Прилагаю рекомендуемую схему подключения:
Итоговая схема
Итак, сложим все требования воедино. Я хочу Atmega32l на частоте 8МГц с прошивкой по USB. У меня получилось это:
Вывод
Создание своего клона Arduino имеет смысл, если вам не хватает мощности UNO, а MEGA использовать нецелесообразно, а также хочется иметь USB порт для прошивки.
Надеюсь, что статья была вам полезна, и вы узнали что-то новое. Если есть вопросы или замечания, напишите в комментарии, спасибо за дочитывание статьи, пока!