Схема елочной гирлянды на микроконтроллере. Новогодняя эффектная гирлянда на WS2812 и ATMega8. Светодиодная гирлянда в коде

Гирлянда на ATtiny2313 собирается очень просто. В этой простой статье мы с вами будет делать мини-гирлянду из 4 светодиодов.

Нажата ли ты, наша кнопочка, или отжата?”, – именно таким вопросом мы задавались в прошлой статье. И в зависимости от состояния кнопки мы делали эффект из 4 светодиодов. В этой статье мы с вами разберем похожую ситуацию. Итак, погнали!

Помните китайскую гирлянду за 100 руб?

Нажимаем кнопочку и эффект моргания становится абсолютно другой;-) Именно этим мы с вами и займемся в этой статье;-)

Мы не будем делать китайску гирлянду с N-ным количеством лампочек, а сделаем упрощенную схему такой гирлянды на МК AVR Tiny2313 и четырех светодиодах. С помощью кнопки мы будем менять эффект моргания.

Итак, наша задача буквально звучит так:

Создать гирлянду на МК AVR Tiny2313 из четырех светодиодов и одной кнопки с самовозвратом (кнопка, которую нажал и сама отжимается). Нажимаем один раз кнопку – появляется первый эффект моргания кнопки, нажал второй раз кнопку – появился второй эффект моргания и тд. Всего у нас будет семь эффектов. Условие такое, что пока светодиоды переливаются морганием, у нас МК не реагирует на кнопку. То есть пока не прошел эффект, нажатие на кнопку никак не отображается на эффекте. Эффект НЕ прерывается. Когда эффект закончится, только тогда МК будет обрабатывать нажатие на кнопку.

Задача вроде бы ясна. Для начала составим простенькую схемку в Proteus. Схемка будет выглядеть примерно как-то так (кликните для увеличения, откроется в новом окне):


Все? Нет не все! Теперь шьем наш МК HEX-файлом. А где его взять? Из Atmel Studio 6. Но чтобы его создать, нам потребуется для начала написать программу, по которой будет работать наш МК. Как все это сделать, смотрим в этой статье.

Ниже приведен текст с комментариями:



Обратите внимание также на строчку кода:

{_delay_ms(50); //включаем задержку 50 миллисекунд для антидребезга

Программа Proteus спокойно бы работала и без этой строчки кода. Зачем мы тогда ее вставили? Дело все в том, что реальное положение дел чуточку хуже. Козлом отпущения в данном случае будет самая безобидная кнопка, которую мы поставим в схему на переключение гирлянд, собрав ее на макетной плате.

Что делает кнопка в схеме согласно схемотехнике МК? Подает логический ноль или единицу на ножку МК. Так? Так. Но в реальной схеме она не сразу замыкает и размыкает цепь. При замыкании или размыкании кнопки у нас нет четкого переключения уровней сигнала с логической единицы на ноль и наоборот. Переключение с помощи кнопки выглядит примерно вот так:

С логической единицы в ноль примерно вот так:


С нуля на единицу как-то вот так:


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

Прикрепляю к проекту СИшник, HEX и файл Протеуса.

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

Во первых захотелось просто творчества, во вторых - своя самодельная гирлянда светит как-то и радостнее и веселее покупных.
Гирлянда собрана на микроконтроллере ATmega8, и состоит из 42-х светодиодов.
Автор данного проекта Дмитрий Базлов (Дима9350) и он написал код для микроконтроллера, в котором для реализации устройства заложено 11 эффектов (программ), из которых 8 программ для синих, красных и жёлтых светодиодов (по схеме верхний ряд), и 3 эффекта (программы) для белых светодиодов (нижний ряд светодиодов), среди которых имеется эффект падающей снежинки.
Напряжение питания гирлянды от 7 до 15 вольт (можно до 24 вольт, если на стабилизатор поставить небольшой радиатор), или если без стабилизатора напряжении L7805, то 5 вольт, например: USB порт компьютера. Длинна гирлянды в авторском варианте составила один метр. Ниже видео авторской гирлянды с питанием от порта USB.

Схема устройства состоит из:
- микроконтроллера ATmega8;
- чип резисторы для светодиодов 300-330 Ом - 21шт;
- микросхема L293:
- 2 конденсатора 16 вольт 10мкф;
- стабилизатор на 5 вольт - 7805.
Фьюз биты микроконтроллера установлены на 8 мГц от внутреннего генератора.

Рисунок 1.
Схема гирлянды.

Печатная плата гирлянды.

Рисунок 2.
Печатная плата гирлянды.

Внешний вид собранной гирлянды на печатной плате со стороны деталей.

Рисунок 3.
Внешний вид собранной гирлянды на печатной плате со стороны деталей.

Внешний вид собранной гирлянды на печатной плате со стороны монтажа.

Рисунок 4.
Внешний вид собранной гирлянды на печатной плате со стороны монтажа.

Так, как в авторском варианте схемы, в составе гирлянды имеется микросхема L293 (4-х канальный драйвер управления светодиодами), которая по цене соизмерима с микроконтроллером, да и не везде наверное доступна, то схема была немного переделана, и драйвер заменён на два транзистора разной проводимости (КТ814, КТ815 и один резистор на 1 кОм), которые вполне отлично справляются со своей задачей.
Обновлённая схема гирлянды, представлена на рисунке ниже.

Рисунок 5.
Схема гирлянды.

Нижний ряд светодиодов на схеме - это светодиоды белого цвета свечения, верхний ряд - чередование светодиодов по цвету: - синий, жёлтый, красный и так далее.
Цвета могут быть на Ваше усмотрение. Светодиоды желательно применять с повышенной яркостью свечения.
Начало гирлянды, (или её конец, как хотите) - идёт справа налево. "Снежинки" падают, начиная с белого светодиода HL2 и до светодиода HL42, то есть светодиоды HL1 и HL2 должны располагаться на самом верху (ими заканчивается или начинается гирлянда).
В качестве драйвера здесь применены два транзистора разной структуры. Были использованы, как уже говорилось выше, транзисторы КТ814, КТ815. Вполне справятся в этой схеме и транзисторы КТ315 и КТ361, но я их не пробовал ставить.

В авторском варианте белые светодиоды установлены на одном уровне с цветными, так как они подключены параллельно им, но разно-полярно. Расстояние между светодиодами 4-5 см., потому длина гирлянды составила метр.
Я ставил белые и цветные светодиоды отдельно друг от друга, и на расстоянии 5-6 см. Длина гирлянды в моём варианте два с небольшим метра, что вполне подойдёт для ёлки средних размеров. Причём плату спаял в течении получаса, а с гирляндой пришлось немного повозиться. Провода для соединения светодиодов желательно применять тонкие, многожильные. Я использовал связные, многожильные провода, диаметром 0,5-0,6 мм. (вместе с изоляцией), и жгут гирлянды у платы, получился не толстым.

Посмотрите демонстрационное видео работы новогодней гирлянды.

Данный проект светодиодной гирлянды на микроконтроллере хорошо подходит для начинающих. Схема отличается своей простотой и содержит минимум элементов.

Данное устройство управляет 13 светодиодами, подключенными к портам микроконтроллера. В качестве микроконтроллера используется МК фирмы ATMEL: . Благодаря использованию внутреннего генератора, выводы 4 и 5 задействованы как дополнительные порты микроконтроллера PA0,PA1. Схема обеспечивает выполнение 12 про- грамм эффектов, 11 из которых - индивидуальные комбинации, а 12-тая про- грамма – последовательный однократный повтор предыдущих эффектов. Переключение на другую программу осуществляется нажатием на кнопку SB1. Программы эффектов включают в себя и бегущий одинарный огонь, и нарастание огня, и бегущую тень и многое другое.

Устройство имеет возможность регулировки скорости смены комбинаций при выполнении программы, которая осуществляется нажатием на кнопки: SB2 – увеличение скорости и SB3 – уменьшение скорости при условии, что переключатель SA1 находиться в положении “Скорость программы”. Также имеется возможность регулировать частоту горения светодиода (от стабилизированного свечения до легкого мерцания), которая осуществляется нажатием на кнопки: SB2 – уменьшение (до мерцания) и SB3- увеличение при условии, что переключатель SA1 находиться в положении “Частота мерцания”. У переключателя SA2 замкнутое положение соответствует режиму регулировки скорости выполнения программ, а разомкнутое - режиму регулировки частоты горения светодиодов.

Порядок нумерации светодиодов в схеме соответствует их порядку зажигания при выполнении программы. При необходимости вывод RESET может быть использован для сброса, а в качестве порта PA2 он не задействован. В устройстве выбрано при программировании тактовая частота 8 МГц от внутреннего генератора (фузы CKSEL3..0 - 0100).Хотя возможно использование частоты в 4 МГц(фузы CKSEL3..0 - 0010) с соответствующими изменениями временных интервалов работы схемы.

Тип светодиодов, указанный на схеме использовался в опытном образце, для схемы подойдут любые светодиоды с напряжением питания 2-3 вольта, резисторами R1-R17 можно регулировать яркость свечения светодиодов.

Прошивку HEX, а также файлы программы на ассемблере вы можете скачать ниже

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
DD1 МК AVR 8-бит

ATtiny2313

1 В блокнот
С1 Электролитический конденсатор 100 мкФ 10 В 1 В блокнот
R1-R17 Резистор

1 кОм

17 В блокнот
LED1-LED13 Светодиод LD571 13 В блокнот
SB1-SB3 Кнопка 3 В блокнот
SA1 Выключатель 1


Наиболее подходящей платформой для такого устройства мне представляе-
тся микроконтроллер AT89C2051 фирмы Atmel, AT90S2313 (так же Atmel), ли-
бо PIC16F84 от Microchip. Я выбрал PIC16C84 - исключительно из соображе-
ний применить куда-нибудь устаревший кристалл (к сожалению, для данной
задачи он не очень удобен из-за особенности построения таблиц в програм-
мной памяти).

2. Возможности устройства.

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

Обеспечивает выбор одной из шестнадцати управляющих программ (однако
сейчас написано всего пять), или последовательное выполнение всех прог-
рамм и ручной выбор скорости (медленно, нормально, быстро) переключения.

3. Управление устройством.

Все управление производится с помощью четырех кнопок:

"<<" - выбор программы, переключиться на предыдущую;
">>" - выбор программы, переключиться на следующую;
При выборе программы ее номер (в двоичном коде) отображается на инди-
каторных светодиодах в двоичном коде, до тех пор, пока нажата кнопка вы-
бора.
"Speed" - переключение скорости выполнения программы, циклически
"normal">"fast">"slow">"normal".
"Demo" - автоматический перебор программ, после выполнения программы
начинается выполнение следующей. Этот режим отменяется при нажатии кноп-
ки "<<" или ">>".

Кроме того, при включении устройства можно выбрать дополнительные ре-
жимы, для чего надо нажать и удерживать кнопку "Demo", и, одновременно
с ней комбинацию из остальных кнопок, каждая из которых определяет сле-
дующие режимы:
"<<" - режим "резкого" включения/выключения, без плавной регулировки
яркости в канале;
">>" - эта кнопка пока зарезервирована для будущего использования;
"Speed" - режим управления тремя каналами, четвертый канал в некото-
рых режимах не использовать (типа "бегущих огней").

4. Конструкция и детали.

В качестве микроконтроллера U1 можно использовать PIC16C84 или
PIC16F84, с любой тактовой частотой. В качестве времязадающего элемента
- кварцевый или пьезорезонатор с частотой 4 MHz, особых требований к
стабильности не предъявляется. Тиристоры (симисторы) - практически лю-
бые, с достаточным запасом по коммутируемому напряжению. Диоды в "сило-
вом" выпрямителе - выбирать с достаточным запасом по току и по обратному
напряжению не менее 400 вольт. Токоограничивающие резисторы в цепи упра-
вляющих электродов тиристоров - рекомендуется выбирать с рассеваемой мо-
щностью не меньше 1 ватта.

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

"Продвинутые" пользователи могут попробовать усовершенствовать управ-
ляющую программу или добавить новые световые эффекты (присылайте, пожа-
луйста, описание или "исходники" новых эффектов автору), программа на-
писана с использованием мнемокодов ассемблера spasm от Parallax inc.,

Попросили меня как-то собрать несложную и недорогую гирлянду на микроконтроллере. Под руку попался самый дешёвый восьми битный AVR микроконтроллер Attiny13. В данной статье я хочу пошагово описать процесс сборки данного устройства.

Из деталей нам понадобится:
Микроконтроллер Attiny13 - 1шт.
Панелька DIP-8 - 1шт.
Резистор 4.7кОм - 1шт.
Резистор 100 Ом - 5шт.
Штырьки PLS - 2шт.
Светодиоды (любые) - 5шт.
Гнездо BLS-2 - 1шт.
Отсек для батареек - 1шт.

Сборку устройства я разделил на несколько этапов:
Этап 1. Изготовление платы
Этап 2. Запаивание радио деталей на плату
Этап 3. Изготовление программатор для прошивки микроконтроллера
Этап 4. Прошивка микроконтроллера

Этап 1. Изготовление платы

Внимание! Крайне не обязательно изготавливать плату, можно воспользоваться макетной платой. Но всё же лучше и красивее изготовить плату для устройства.

И так, для начала нам понадобится следующее:
Кусочек текстолита (размером 45 на 30мм)

Небольшая ёмкость
Вода
Перманентный маркер
Немного технического спирта или одеколона
Ластик

Поверхность текстолита покрыта медной фольгой, а фольга, как и любой другой металл имеет свойство окислятся на воздухе. Поэтому возьмём ластик и протрем медную часть текстолита.

Нарисовали? Отлично. Теперь надо вытравить плату используя хлорное железо.
Во время травления, хлорное железо выедает (не закрашенную маркером) часть медного покрытия текстолита.

И так, поскольку хлорное железо это порошок нам его надо развести в воде.
Вот пропорция: 100гр. хлорного железа на 700мл воды. Но нам так много не надо, поэтому берём 10гр. на 100 мл. воды. Далее в этот раствор опускаем нашу плату.

И ждём примерно часа два (пока раствор хлорного железа не выест не закрашенную часть медного покрытия текстолита).

После того, как плата вытравилась, достаём её из емкости и промываем под проточной водой.

Вот фотография вытравленной платы.

Теперь стираем с платы маркер (для этого отлично подходит технический спирт или одеколон).

Поскольку у меня нет электродрели я использую свой школьный циркуль

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

Теперь включаем паяльник и залудим плату. Внизу фотография залуженной платы

Оставшийся на плате канифоль можно стереть техническим спиртом или жидкостью для снятия лака.

Плата готова! Этап 1 завершен!

Этап 2. Запаивание радио деталей на плату

После того как сделали плату (а может кто-то не делал её, а решил использовать макетную плату) необходимо запаять на неё радио детали.

Схема светодиодной гирлянды на микроконтроллере Attiny13:

Запаиваем радио детали на плату (по схеме выше) и получаем следующее устройство:

Всё устройство почти готово, дело остаётся за малым это прошить микроконтроллер.
Этап 2 завершён!

Этап 3. Изготовление программатор для прошивки микроконтроллера

Внимание! Если у вас уже есть программатор для AVR микроконтроллеров вы можете пропустить этот этап и прошить микроконтроллер самостоятельно! Скачать прошивку вы можете по ссылке внизу страницы.

Собирать программатор мы будем на LPT порт компьютера. Вот схема программатора:

На рисунке в прямоугольнике (где LPT порт) номер контакта, куда подсоединять проводок. Провода старайтесь делать покороче (не более 20 см). Если провода будут длиннее 20 см то во время прошивки или чтения микроконтроллера будут ошибки, которые могут стоить микроконтроллеру жизни!
Будьте очень аккуратны, LPT порт очень легко спалить!

Для изготовления программатора нам понадобится:
25-контактный разъем для LPT порта (папа)
Резисторы 150 Ом 4 шт.
Резистор 10 кОм 1 шт.
Батарея на 3 вольта

Вот мой вариант программатора:

Теперь можно приступить к прошивке микроконтроллера.

Этап 4. Прошивка микроконтроллера

Внимание! В этом этапе описывается прошивка микроконтроллера Attiny13 с помощью программы и программатора на LPT порт.

Всем известно, что без прошивки, микроконтроллер - это ничего не делающая микросхема, а чтобы она управляла нашей гирляндой нам её надо прошить.
Для прошивки мы будем использовать ранее изготовленный нами LPT программатор, компьютер и программу PonyProg2000.
Для начала скачайте прошивку для гирлянды (ссылка внизу страницы), потом из интернета скачайте программу PonyProg2000 и установите её.

Теперь всё почти готово для прошивки микроконтроллера. Остаётся лишь подключить микроконтроллер к программатору а программатор подключить к компьютеру.
После того как всё подключили запускаем программу PonyProg2000.

Выскачет такое окно:

В окне нажимаем кнопку "Yes".

После калибровки появится вот такое сообщение:

Все, программа откалибрована!

Теперь заходим в настройки (Setup > Interface Setup…). Появится вот такое окно:

После в главном окне программы выбираем "AVR micro", "Attiny13"

Теперь осталось открыть прошивку, для этого в меню "File" выбираем "Open Device File…". В списке "Тип файлов:" выбираем "*.hex" и указываем путь к прошивке нашей светодиодной гирлянды, нажимаем кнопку "Открыть".

В главном окне нажмите на кнопку "Write device":

После появление такого сообщения:

Микроконтроллер прошит и работоспособен! Но подождите нам ещё необходимо установить фьюз биты. Кстати, фьюз биты это раздел (4 байта) в AVR микроконтроллерах в котором хранится конфигурация работы микроконтроллера.

Для установки фьюз битов в меню "Command" выберите "Security and Configuration Bits…", в появившимся окне нажмите кнопку "Read" и установите галочки как на картинке ниже:

После установки галочек (как на картинке выше) нажмите кнопку "Write". Всё готово!
Теперь выключите компьютер и извлеките микроконтроллер из программатора, вставьте микроконтроллер в панельку на плате гирлянды. Если всё сделано правильно, то при подаче питание (3 вольта) гирлянда должна заработать!

В заключении хотелось бы сказать, что программу я писал в среде (исходник прилагается), программе 9 подпрограмм эффектов, так что ничего не мешает создавать вам свои эффекты.

По умолчанию устройство имеет 4 разных эффекта:
1. Бегущая точка
2. Бегущая линия
3. Переключение светодиодов
4. Моргание

Скачать прошивку, исходники, проект в Proteus вы можете ниже

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Гирлянда
U1 МК AVR 8-бит

ATtiny13

1 В блокнот
R1-R5 Резистор

300 Ом

5 В блокнот
R6 Резистор

4.7 кОм

1 В блокнот
D1-D5 Светодиод 5 В блокнот
Панель 1 DIP-8 В блокнот
Резистор