Новогодняя гирлянда на atmega8 схема. Особенности ремонта китайской гирлянды на светодиодах

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

Во первых захотелось просто творчества, во вторых - своя самодельная гирлянда светит как-то и радостнее и веселее покупных.
Гирлянда собрана на микроконтроллере 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 мм. (вместе с изоляцией), и жгут гирлянды у платы, получился не толстым.

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

Как говорится в народе - готовь сани летом…
Наверняка на новый год украшаете ёлку всевозможными гирляндами, и скорей всего они уже давным давно приелись однообразием своего мигания. Хотелось бы сделать что-то такое чтобы ух, прям как на столичных елках мигало, только в меньшем масштабе. Или на крайний случай - повесить на окно, чтобы эта прям красота освещала город с 5-го этажа.
Но увы, в продаже таких гирлянд нет.

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

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

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

Как все устроено.

Разработанная сеть способна адресовать до 254 подчиненных модулей, которые далее будут называться SLAVE - они соединены всего 3-мя проводами, как вы уже догадались - два провода это питание +12В, общий и третий - сигнальный.
они имеют несложную схему:


Как можно увидеть, она поддерживает 4 канала - Красный, Зеленый, Синий и Фиолетовый.
Правда, по результатам практического тестирования, фиолетовый хорошо видно только вблизи но зато как! Так же, из-за того что цвета расположены слишком далеко друг от друга смешение цветов можно увидеть только метров с 10, если использовать RGB-светодиоды ситуация будет несколько получше.
В целях упрощения конструкции так же пришлось отказаться и от кварцевой стабилизации - во-первых, лишний вывод забирает и во-вторых стоимость кварцевого резонатора довольно ощутима и в-третьих - в нем нет острой необходимости.
На транзисторе собран защитный каскад, чтобы не выбило порт контроллера от статики - линия все же довольно длинной может быть, в крайнем случае пострадает только транзистор. Каскад рассчитан в MicroCap и имеет примерный порог срабатывания около 7 вольт и слабую зависимость порога от температуры.

Естественно, в лучших традициях на адрес под номером 255 реагируют все модули - так можно их все одновременно выключить одной командой.

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

Схема:

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

Пример выдаваемого пакета в сеть:

Его начало:

Электрические характеристики сигнала: лог.0 соответствует +9...12В, а лог.1 соответствует 0...5В.

Как можно увидеть, данные передаются последовательно, с фиксированной скоростью по 4 бита. Это обусловлено необходимым запасом на ошибку по скорости приема данных - SLAVE-модули не имеют кварцевой стабилизации, а такой подход гарантирует прием данных при отклонении скорости передачи до +-5% сверх тех что компенсируются программным методом на основе измерения калиброванного интервала в начале передачи данных который дает стойкость к уходу опорной частоты еще на +-10%.

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

Основным и самым главным алгоритмом является реализация 4-х канального 8-битного программного ШИМ который позволяет управлять 4-мя светодиодами при 256 градациях яркости каждого их них. Реализация этого алгоритма в железе так же определяет скорость передачи данных в сети - для программного удобства передается по одному биту на каждый шаг работы ШИМ. Предварительная реализация алгоритма показала что он выполняется за 44 такта, поэтому было принято решение использовать таймер настроенный на прерывание каждые 100 тактов - таким образом прерывание успевает гарантированно выполнится до наступления следующего и выполнить часть кода основной программы.
На выбранной тактовой частоте внутреннего генератора в 4.8Мгц прерывания возникают с частотой 48кГц - именно такую битовую скорость имеет сеть подчиненных устройств и с такой же скоростью наполняется ШИМ - в итоге частота ШИМ-сигнала составляет 187.5Гц, чего вполне достаточно чтобы не замечать мерцания светодиодов. Так же, в обработчике прерывания после выполнения алгоритма ответственного за формирование ШИМ фиксируется состояние шины данных - получается примерно по середине интервала переполнения таймера, это упрощает прием данных. В начале приема очередного пакета в 4 бита происходит обнуление таймера, это необходимо для более точной синхронизации приема и стойкости к отклонению скорости приема.
В итоге получается такая картина:

Интересна реализация алгоритма подстройки под скорость передачи. В начале передачи MASTER выдает импульс длительностью в 4 бита лог.0, по которым все подчиненные модули определяют необходимую скорость приема при помощи несложного алгоритма:

LDI tmp2, st_syn_delay DEC tmp2 ;<+ BREQ bad_sync ; | SBIC PINB, cmd_port; | RJMP PC-0x0003 ;-+

St_syn_delay = 60 - константа, определяющая максимальную длительность стартового импульса, которая принята примерно в 2 раза больше номинала (для надежности)

Экспериментальным методом было установлена такая зависимость получаемого числа в tmp2 при отклонении тактовой частоты от номинала:

4.3Mhz (-10%) 51 единиц (0x33) соответствует 90 тактам таймера для возврата скорости приема к номиналу
4.8Mhz (+00%) 43 единиц (0x2B) - соответствует 100 тактам таймера(номинал)
5.3Mhz (+10%) 35 единиц (0x23) - соответствует 110 тактам таймера для возврата скорости приема к номиналу

По этим данным были рассчитаны коэффициенты коррекции периода прерываний таймера(именно таким образом скорость приема подстраивается под имеющуюся тактовую частоту контроллера):

Y(x) = 110-x*20/16
x = tmp2 - 35 = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
Y(x) = (110, 108.75, 107.5, 106.25, 105, 103.75, 102.5, 101.25, 100, 98.75, 97.5, 96.25, 95, 93.75, 92.5, 91.25, 90)

Числа округлены до целых и занесены в EEPROM.

Если при подаче напряжения на модуль удерживать линию в логическом состоянии «1» включится подпрограмма калибровки, которая позволит измерить частотомером или осциллографом период ШИМ-сигнала без коррекции и на основании измерений судить об отклонении тактовой частоты контроллера модуля от номинальной, при сильном отклонении больше 15% может потребоваться коррекция калибровочной константы встроенного RC-генератора. Хотя производитель обещает калибровку на заводе и отклонение от номинала не более 10%.

На данный момент, разработана программа на Delphi позволяющая воспроизводить ранее составленный паттерн для 8-ми модулей с заданной скоростью. А так же утилита для работы с отдельным модулем(в том числе переназначение адреса модуля).

Прошивка.
для SLAVE-модуля необходимо прошить только фьюзы CKSEL1 = 0, и SUT0 = 0. Остальные оставить непрошитыми. Содержимое EEPROM прошить из файла RGBU-slave.eep, при необходимости тут же можно задать желаемый адрес модуля в сети - 0-й байт EEPROM, по умолчанию прошит как $FE = 254, по адресу 0x13 содержится калибровочная константа встроенного RC-генератора контроллера, на частоте 4.8Мгц она не загружается автоматически поэтому необходимо программатором считать заводское значение калибровки и записать в эту ячейку - это значение индивидуально для каждого контроллера, при больших отклонениях частоты от номинала можно изменять калибровку именно через эту ячейку не затрагивая заводского значения.

Для MASTER-модуля необходимо прошить только фьюзы SUT0 = 0, BOOTSZ0 = 0, BOOTSZ1 = 0, CKOPT = 0. Остальные оставить непрошитыми.

Напоследок небольшая демонстрация гирлянды расположенной на балконе:

На самом деле, функциональность гирлянды определяется программой на ПК - можно сделать цветомузыку, стильное переливающееся освещение комнаты(если добавить драйверы светодиодов и использовать мощные светодиоды) - и т.д. Чем планирую заняться в будущем. В планах сетка из 12 модулей с 3-ваттными RGB-светодиодами, и комнатное освещение на основе кусочков 12-вольтной RGB-ленты(нужны только полевые транзисторы для коммутации ленты на каждый модуль по 3 штуки или 4 если добавить кусочек фиолетовой ленты других отличий от оригинала не будет).

Для управления сетью можно написать свою программу, хоть на бейсике - главное что должен делать выбранный язык программирования - уметь подключаться к бессмертным COM-портам и настраивать их параметры. Вместо интерфейса USB можно использовать переходник с RS232 - это дает потенциальную возможность управления световыми эффектами с широкого круга устройств которые вообще можно запрограммировать.
Протокол обмена с MASTER-устройством достаточно прост - посылаем команду и ожидаем ответ об её успешности или провале, если ответа нет больше нескольких милисекунд - имеются проблемы с соединением или работой MASTER-устройства, в таком случае необходимо провести процедуру переподключения.

На данный момент доступны следующие команды:

0x54; символ «T» - команда «test» - проверка соединения, ответ должен быть 0x2B.
0x40; символ "@" - команда «загрузить и передать». После подачи команды нужно дождаться ответа "?" далее следует 6 байт данных:
+0: Адрес подчиненного устройства 0..255
+1: Команда устройству
0x21 - байты 2...5 содержат яркость по каналам которую необходимо применить немедленно.
0x14 - установить тайм-аут, по истечении которого яркость по всем каналам будет
сброшена на 0 если за это время не поступит ни одной команды. Значение таймаута находится в ячейке красного канала, т.е. в байте со смещением +2. значение 0-255 соответствует таймауту в 0-25.5 сек по умолчанию, таймаут = 5 секунд(записан в EEPROM при прошивке, там же его можно и изменить в байте со смещением +1).
0x5A - изменить адрес устройства.
Процедура смены адреса для надежности должна быть выполнена троекратно - только тогда новый адрес будет применен и прописан в EEPROM. При этом надо быть осторожным -если прописать двум устройствам один адрес они будут реагировать синхронно а «разделить» их можно будет только физически отключив от сети лишние модули и сменив адрес у оставшегося, либо программатором. Значение нового адреса передается в ячейке красного канала - т.е. в байте со смещением +2.

2: Яркость красного 0...255
+3: Яркость зеленого 0...255
+4: Яркость синего 0...255
+5: Яркость фиолетового 0...255

0x3D; символ "=" - команда «АЦП». После подачи команды нужно дождаться ответа "?" далее следует передать 1 байт - номер канала АЦП 0..7 в двоичном виде(ASCII цифры 0..9 тоже подходят в этом качестве, поскольку старшие 4 бита игнорируются).
В ответ команда возвращает 2 байта результата измерения в диапазоне 0...1023

Возможные ответы на команды:
0x3F; символ "?" - готовность к вводу данных, означает что устройство готово к приему аргументов команды
0x2B; символ "+" Ответ - команда выполнена
0x2D; символ "-" Ответ - команда не определена или ошибочна

Больше подробностей можно выудить из исходников расположенных на гитхабе, там же лежат последние версии готовых прошивок.

С наступающим вас дорогие пользователи. И к предстоящему празднику электронный портал сайт решил порадовать вас схемой-новогодняя гирлянда на PIC-микроконтроллере. Перейдем к просмотру данного устройства.

Она содержит четыре канала, к которым подключаются последовательно соединённые светодиоды, изображенные на рисунке ниже:


Ядром схемы является микроконтроллер PIC16F628A. Код программы написан на языке ассемблер, смотреть листинг Garland16F628ATEMP.ASM. Полный цикл внутрисхемного программирования и отладки микроконтроллера PIC16F628A был осуществлён при помощи MPLAB IDE v8.15 (интегрированная среде разработки), компилятор MPASM v5.22 (входит в MPLAB IDE v8.15) и MPLAB ICD 2 (внутрисхемный отладчик - «Дебагер»). Для тех, кто не располагает средствами приведёнными выше, а имеет свою программу для работы с HEX файлами и иной программатор, можно в соответствующем проекте найти файл 16F628ATEMP.HEX.

Микроконтроллер DD1 имеет функциональные выходы RB4 - RB7, к которым подключаются усиливающие полевые MOSFET транзисторы VT1 - VT4. Техническую спецификацию транзисторов можно найти на сайте . Стоки транзисторов подключены к нажимным клеммникам X2 - X5. Напряжение питание нагрузки задаётся источником питания схемы, который подключают к разъёму X1. Максимальный коммутируемый ток на канал составляет 0.5 А. Микроконтроллер DD1 не имеет функции принудительного сброса, вывод для сброса подключен через резистор R1 к положительному потенциалу питания. Для генерации тактовой частоты в микроконтроллере используется встроенный генератор тактовой частоты на кристалле. Прибор может эксплуатироваться в диапазоне температур от - 40 °С до +85 °С.

Прибор запитывается от переменного или постоянного источника напряжения, подключаемого к разъему X1. Номинальное напряжение источника питания 12 В. Номинальный ток источника питания зависит от нагрузки и составляет 0.5 - 2 А. Для стабилизации питания используется обычная схема из диодного моста VD1, линейного стабилизатора DA1, фильтрующих конденсаторов C1 - C4.

В микроконтроллер запрограммированы 3 световых эффекта в основе лежит эффект «бегущие огни»:

  • Гирлянды поочерёдно загораются и гаснут в одну и так же повторяют в другую сторону.
  • Гирлянды поочерёдно загораются и когда все четыре гирлянды горят, начинают поочерёдно гаснуть в том же направлении, так же повторяется и в обратном порядке.
  • 1 и 2, 3 и 4 гирлянды поочерёдно перемигиваются между собой.

Микроконтроллер запрограммирован таким образом, что выполняет заранее установленное число повторов светового эффекта. Стоить отметить, что интервал времени между загораниями гирлянд меняется (нарастает, достигая пика, а затем падает), то есть виден эффект «временной раскачки». Для лучшей демонстрации световых эффектов гирлянды (так как они пронумерованы на схеме) следует располагать по порядку в одной плоскости. В данном случае украшение ели от корней до верхушки (по вертикали, разбив ель на четыре сектора для гирлянд), от 1 до 4 гирлянды, соответственно.

Питание гирлянд связано с источником питания подключаемым к разъёму X1, следовательно нужно рассчитывать последовательно соединённые светоизлучающие элементы (светодиоды, лампы накаливания). Общее напряжение питания находится из суммы напряжений последовательно соединённых светоизлучающих элементов. Так например, последовательно соединённых ярких светодиодов рассчитанных на напряжение 2 - 2,5 В будет 6 штук в одной гирлянде. Так как светодиоды потребляют 20 мА, не исключено параллельного подключения последовательно соединённых светодиодов в ряды.

В данном устройстве можно заменить следующие детали. Микроконтроллер DD1 из серии PIC16F628A-I/P-xxx с рабочей тактовой частотой 20 МГц в корпусе DIP18. Стабилизатор напряжения DA1 отечественный КР142ЕН5А (5 В, 1.5 А). Полевые MOSFET транзисторы и VT1 - VT4 (N-канал) в корпусе I-Pak (TO-251AA), подойдут аналоги номиналов указанных на схеме. Диодный мост VD1 на рабочее напряжение не меньше 25 В и ток не меньше 2 А. Разъём питания X1 аналогичный указанному на схеме с центральным контактом d=2.1 мм. Неполярные конденсаторы С1 и С2 номиналом 0.01 - 0.47 µF x 50 V. Электролитические конденсаторы С3 и С4 ёмкостной номинал тот же, а напряжение не ниже указанного на схеме. Разноцветные светодиоды VD1 - VD6 на напряжение 2 - 2.5 В.


C этой схемой также часто просматривают:

Среди множества световых приборов, используемых для оформления новогодних елок, особое место занимает схема китайской гирлянды. Она, как и все аналогичные китайские изделия, отличается простотой и дешевизной. Возникает много споров о надежности подобных гирлянд, однако, большинство потребителей использует именно их.

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

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

В основе контроллера лежит плата небольшого размера, где предусмотрено место . Здесь же располагается и микроконтроллер с четырьмя выходами. Он представляет собой небольшой кусочек генитакса, где с помощью эпоксидной смолы крепится микрочип. Через выходы микроконтроллера, с помощью токоограничительных резисторов, осуществляется управление четырьмя тиристорами. Данное устройство рассчитано на анодное напряжение до 600 вольт и ток в пределах 0,6-0,8 ампер. В отдельных конструкциях дешевых гирлянд, вместо входного диодного мостика остается один диод. В то же время, подключение электродов, управляющих тиристорами, осуществляется напрямую к выходам микроконтроллера, без , ограничивающих ток.

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

Другие пути решения проблем

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

Для того, чтобы китайская гирлянда нормально работала, ее нужно синхронизировать с сетью с помощью сигнала. С этой целью, на вход микроконтроллера подается фаза, номиналом 220 вольт через установленный резистор. Нейтральный провод сети, соединяется с общим проводом всего устройства.

Замена блока управления Китайской гирлянды