Блок с датойБлок с временемБлок с возрастом сайта
Mr.ALB

    Анатолий Беляев (aka Mr.ALB). Персональный сайт

    Да пребудут с вами Силы СВЕТА!

     

    Ардуино (Arduino). #22

    Arduino на ATTiny24/44/84

    Ещё в прошлом 2021 году приобрёл микроконтроллеры ATTiny24A. Позанимался с ними. Потом возникла идея на основе этого микроконтроллера сделать что-то типа своего Arduino. В настоящее время очень даже бюджетный вариант для небольших проектов. Далее что получилось.

    В 2022 году, в мае, модернизировал плату, поставив на неё кварцевый резонатор и стабилизатор HC7533 на +3,3 В. Приобрёл для этой платы микроконтроллер ATTiny24A, однако мне прислали в этот раз МК в корпусе ATTiny24A уже ATTiny44. Видать Пространство решило мне компенсировать за прошлый раз улыбка, когда мне в корпусе ATTiny44 прислали ATTiny24. Что ж, хорошее Arduino получилось.

    ARDUINO_ATTiny24A
    ARDUINO_ATTiny24A

    Описание

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

    Есть варианты Arduino где используется ATTiny85, который называется digispark. Есть Arduino на основе ATTiny88 – это плата MH-ET LIVE Tiny88. Никто не мешает нам продолжить это направление и в данном случае, имея небольшой, по своим возможностям микроконтроллер ATTiny24A, сделать на нём свою Arduino ATTiny24/44/84.

    Для этого необходимо вывести все порты, установить минимальную "обвязку", т.е. светодиоды, конденсаторы, резисторы, кнопку, контакты для программирования.

    Замечу, что у ATTiny24A нет последовательного порта (Rx-Tx) и программировать его, как это делается с ATMega, не получится. Зато у этого МК есть возможность программировать по протоколу ISP – In System Programming. Соответственно для программирования требуется иметь программатор, к примеру, USBasp. Такой программатор стоит недорого и его одного вполне хватит на все такие проекты. В проекте автополива комнатных растений как раз он и использовался, для программирования ATTiny13 (Автополив комнатных растений).

    Ресурсы и возможности микроконтроллера ATtiny24

    1. Интерфейс: 2-Wire, 3-Wire, ISP, Universal Serial Interface (USI).
    2. Количество линий ввода/вывода: 12 (PB3..PB0, PA7..PA0). Чтобы использовать PB3 в качестве порта ввода-вывода, нужно запрограммировать в 0 fuse RSTDISBL (по умолчанию эта ножка работает как RESET или порт debugWIRE - вывод 4).
    3. Количество таймеров: Один 8-битный и один 16-битный, каждый из них может генерировать по 2 PWM.
    4. Тактовая частота максимальная: 20 МГц (при питании 4.5...5.5 В).
    5. Рабочее напряжение питания: 1.8 В ... 5.5 В.
    6. Рабочий диапазон температрур: -40°C ... +85°C.
    7. Ток потребления 380 мкА при частоте 1 МГц.
    8. Тип корпуса: DIP-14, SOIC-14, QFN-20, MLF-20.
    9. Тип памяти программ: Flash.
    10. Размер памяти программ (Flash): 2 кБ.
    11. Размер ОЗУ (SRAM):     128 Байт.
    12. Размер ПЗУ (EEPROM): 128 Байт.
    13. Шина данных: 8 бит.
    14. Рабочие регистры: 32.
    15. Ядро: ATTiny.
    16. Аппаратные ресурсы:
      • 8-канальный 10-битный АЦП (ADC) со входами на PA0..PA7.
      • Измеритель температуры.
      • Программируемый WDT с собственным генератором.
      • Компаратор.
      • Отладка debugWIRE через 1 провод (PB3 или ~RESET). Это однопроводной аналог JTAG.
      • Программирование в системе через порт SPI.
      • Программируемое прерывание по изменению состояния любого из 12 выводов.
      • Внутренний калиброванный генератор тактов.
      • Возможность подключения внешнего кварцевого резонатора (выводы 2 (XTAL1/PB0) и 3 (XTAL2/PB1)).
    Распиновка ATTiny24/44/84
    Pic 1. Распиновка ATTiny24/44/84

    * Полное описание смотрите в Приложении.


    Схема

    У меня микроконтроллер ATTiny24A в корпусе SOIC-14. Поэтому определился сделать схему и саму конструкцию под формат Arduino Pro Mini в DIP-24. Сама схема на картинке ниже. Как видно имеется два светодиода. Один HL1 для индикации напряжения питания, второй HL2 аналогичен светодиоду на выводе 13 у Arduino Uno. В моём варианте этот светодиод подключен к выводу 9 (PA4), который ещё используется как SCL.

    Вывод 4, на котором выведен RESET, подтянут к напряжению питания через резистор R3 10кОм. В описании на микроконтроллер рекомендуют это делать. На этом же выводе подключена кнопка, для перезагрузки микроконтроллера.

    По питанию установлен конденсатор C1, для отфильтровывания помех.

    Схема, можно сказать, простейшая.

    Схема электрическая принципиальная v1
    Pic 2. Схема электрическая принципиальная v1

    Для повышения точности временных интервалов, возможно подключение внешнего кварцевого резонатора, что имеет преимущество по сравнению с ATTiny13.

    Схема электрическая принципиальная v2<br>Подключение кварцевого резонатора
    Pic 3. Схема электрическая принципиальная v2
    Подключение кварцевого резонатора

    В третьей версии схемы была добавлена цепочка C3, C4, ZQ1, чтобы микроконтроллер работал с внешним кварцевым резонатором, что существенно повышает точность временных интервалов. Так же был добавлен стабилизатор 7533 с низким током потребления в режиме ожидания (по справочнику до 5 мкА, мой, установленный на плате, реально потребляет всего 2 мкА). Все остальные контакты совпадают для преемственности версий.

    Эта схема была опробована с МК ATTiny44.

    Схема электрическая принципиальная v3<br>Версия v3
    Pic 4. Схема электрическая принципиальная v3
    Версия v3

    Настройка Arduino IDE

    Программировать мою версию Arduino можно так же из среды Arduino IDE.

    Чтобы загрузить скетч в микроконтроллер, в меню Скетч необходимо выбрать пункт Загрузить через программатор, а в меню Инструменты - Программатор должен быть установлен Ваш программатор, у меня это USBasp.

    Программирование такое же как и ATTiny13. В Вашей Arduino IDE должны быть установленны библиотеки для работы с МК типа ATTiny24/44/84, так называемое ядро ATTiny Microcontrollers.

    Ниже на картинке показываю настройку среды Arduino IDE.

    В качестве примера программирования в Приложении есть файл attiny24_solo_blink_1.ino с программой blink.

    Настройка среды Arduino IDE
    Pic 5. Настройка среды Arduino IDE

    Реализация

    Плата, как говорил выше, сделана под формат Arduino Pro Mini DIP-24. Размеры платы: 32,5 * 19 мм. На плате, согласно схеме, установлены необходимые детали. Отдельно выведены контакты стандартного 6-контактного разъёма ISP для подключения программатора USBasp. Плата имеет избыточное число контактов относительно самого МК. Поэтому для удобства пользования некоторые контакты продублированы на разные стороны платы.

    Плата односторонняя. Имеет три перемычки.

    Плата модуля v2. Проект
    Pic 6. Плата модуля v2. Проект

    Файл платы смотрите в Приложении в общем архиве.

    Плата модуля v2. Проект
    Pic 7. Плата модуля v2. Проект

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

    Плата модуля v1. Вид сверху
    Pic 8. Плата модуля v1. Вид сверху

    Как видно на фото, в первой версии были две перемычки.

    Плата модуля v1. Вид снизу
    Pic 9. Плата модуля v1. Вид снизу

    Вторая версия более оптимизирована. Установлен светодиод на вывод SCL, он аналогичен светодиоду на выводе 13 у Arduino Uno, Arduino Nano, Arduino Pro Mini.

    Плата модуля v2. Вид сверху
    Pic 10. Плата модуля v2. Вид сверху

    У второй версии уже три перемычки. Наклеиваю этикетки с указанием контактов разъёма SPI, чтобы легко ориентироваться как подключать разъём от программатора.

    Плата модуля v2. Вид снизу
    Pic 11. Плата модуля v2. Вид снизу

    На фото ниже сразу два варианта самодельной ARDUINO_ATTiny24A. Слева – вариант первый, справа – вариант второй. Можно видеть небольшие отличия.

    Платы модулей v1 и v2. Вид сверху
    Pic 12. Платы модулей v1 и v2. Вид сверху


    Версия v3

    На фото вариант 3 самодельной ARDUINO_ATTiny24/44/84. В данном случае на плате установлен микроконтроллер ATTiny44.

    Плата версии v3. Фотовид
    Pic 13. Плата версии v3. Фотовид

    Пришлось поменять некоторые компоненты на меньшие, чтобы вместить дополнительно стабилизатор на +3,3В и кварцевый резонатор на 8МГц с двумя конденсаторами по 22пФ. Светодиоды тоже использовал меньших габаритов.

    Так как использую одностороннюю плату, то пришлось часть соединений сделать перемычками. При использовании двухсторонней платы, можно было бы развести всё в двух слоях без перемычек. Всего получилось 5 перемычек, установленных на обратной стороне. На ней же установлен и кварцевый резонатор.

    Плата версии v3. Фотовид
    Pic 14. Плата версии v3. Фотовид

    Ниже на фото список используемых компонентов.

    Плата версии v3. Список компонентов
    Pic 15. Плата версии v3. Список компонентов

    После окончательной проверки проекта, приступил к изготовлению платы. Плату делал методом ЛУТ. Тонер ложится немного с пропусками, поэтому дорожки имеют некоторые изъяны, хотя это не влияет на работоспособность устройства. Чтобы их совсем не перетравить, пришлось чуть раньше прекратить процесс. Небольшой артефакт недотравленной фольги легко убрал резачком.

    Плата версии v3. После травления
    Pic 16. Плата версии v3. После травления

    Потом просверлил все необходимые отверстия и облудил дорожки. Спичка для сравнения, сразу видно какие реальные размеры имеет плата (спичка как бревно улыбка).

    Плата версии v3. После облуживания
    Pic 17. Плата версии v3. После облуживания

    Спаял всё устройство. Ювелирная работа, пришлось использовать третью руку с увеличилкой, уж больно там всё мелко. Плата, при фотографировании, оказалась перевёрнута на 180°. Спичечный коробок так же для сравнения.

    Плата версии v3. Собранная плата в сравнении
    Pic 18. Плата версии v3. Собранная плата в сравнении

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

    Плата версии v3. Собранная плата
    Pic 19. Плата версии v3. Собранная плата

    На нижней стороне установлен кварцевый резонатор и перемычки. Одну перемычку пропустил, потом её допаял со стороны элементов. На фото выше виден синий проводок.

    Плата версии v3. Обратная сторона
    Pic 20. Плата версии v3. Обратная сторона

    Сфотографировал две моих Ардуинки верии v2 и v3 вместе. Хорошо видны отличия. Третья версия на мой взгляд изящнее и имеет больший функционал. То, что установил сверхэкономичный стабилизатор 7533, позволяет от этой Ардуино запитывать разные датчики с питанием на +3,3В. Стабилизатор 7533 на выходе выдаёт до 100 мА тока, что достаточно для питания маломощных устройств. Раньше делал разные счтабилизаторы сам, но этот очень хороший, у него ток покоя, когда нет нагрузки, составляет всего 2 мкА!!! Лучшего и придумать невозможно (Отдельное спасибо Константину К., он меня надоумил использовать этот стабилизатор, а Александру К. спасибо за кнопочку, как раз то, что нужно).

    Платы версий v2 и v3 вместе
    Pic 21. Платы версий v2 и v3 вместе


    Fuses (Фьюзы)

    Обычно заводские фьюзы у МК установлены так:

    Fuse High Byte:
    BODLEVEL2...0 = 101,

    Fuse Low Byte:
    CKDIV8 = 0,
    CKSEL3...0 = 0010,
    SUT1...0 = 10

    * - значение фьюзов прямое, т.е.:
    0 - Включен.

    Такие установки позволяют МК работать без внешнего кварцевого резонатора с тактовой частотой 1 МГц. Если нет необходимости в установке кварцевого резонатора, то можно оставить заводские фьюзы и использовать эту ардуино как есть. Однако, если необходимы более чёткие и стабильные интервалы времени, то рекомендую установить кварцевый резонатор на 8.0...16.0 МГц

    Чтобы запрограммировать работу микроконтроллера ATTiny24/44/84 от внешнего кварцевого резонатора, вам потребуется установить фьюз биты CKSEL3...0 и SUT1...0.

    В моей ардуино использую кварцевый резонатор на 8.0 МГц, тогда фьюз биты, согласно описанию на микроконтроллер необходимо выставить так: CKSEL3...0 = 1101 и SUT1...0 = 10, замечу, что CKDIV8 = 1, т.е. выключен.

    Fuse bits for Crystal Oscillator 3.0-8.0 MHz:

    CKSEL3 = 1 - Выключен
    CKSEL2 = 1 - Выключен
    CKSEL1 = 0 - Включен*
    CKSEL0 = 1 - Выключен

    SUT1 = 1 - Выключен
    SUT1 = 0 - Включен*

    CKDIV8 = 1 - Выключен

    * - значение фьюзов прямое.
    Fuse bits for Crystal Oscillator 8.0- MHz:

    CKSEL3 = 1 - Выключен
    CKSEL2 = 1 - Выключен
    CKSEL1 = 1 - Выключен
    CKSEL0 = 1 - Выключен

    SUT1 = 1 - Выключен
    SUT1 = 0 - Включен*

    CKDIV8 = 1 - Выключен

    * - значение фьюзов прямое.

    Для записи новых фьюзов использовал программу AVRDUDE_PROG_v3.3.rar.

    Фьюз биты для кварцевого резонатора
    Pic 22. Фьюз биты для кварцевого резонатора
    Фьюз биты для кварцевого резонатора
    Pic 23. Фьюз биты для кварцевого резонатора

    В заключение можно сказать, что на разработанную плату был установлен микроконтроллер ATTiny44 (в корпусе от ATTiny24A), но можно поставить и ATTiny84, что существенно расширит возможности написания программы для этого Ардуино.


    Примеры

    Различные примеры программирования этой Ардуино можно посмотреть в Приложении.



    Проверка работы выхода ШИМ (PWM)

    Продолжительность фильма 0:12 [мм:сс]

    Тестовый светодиод по шагам зажигается до максимума, потом мигает один раз встроенный светодиод, далее тестовый светодиод по шагам гаснет и мигает встроенный светодиод два раза. Arduino ATTiny24A подключено к USBasp-программатору.

    Скетч примера attiny24_pwm смотрите в Приложении.


    . Ссылка: #1



    Приложение

    Используемые материалы для создания ARDUINO_ATTiny24A:

    Спасибо за внимание, Анатолий Беляев.


    . Mr.ALB
    Предыдущая страница Страница 23 Далее