Светодиодная гирлянда на attiny2313 схемы. Светодиодная гирлянда на МК Attiny13

10.09.2021

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

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

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

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

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

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

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

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


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

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



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

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

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

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

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


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


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

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

Способов разукрасить новогоднюю елку много, вот один из них.

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

Ядром схемы является микроконтроллер PIC16F628A. Микроконтроллер работает по алгоритму, изображенному на рисунке 3. Код программы написан на языке ассемблер, смотреть листинг Garland\16F628ATEMP.ASM.

Полный цикл внутрисхемного программирования и отладки микроконтроллера PIC16F628A был осуществлён при помощи (интегрированная среде разработки), компилятор 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) 1 и 2, 3 и 4 гирлянды поочерёдно перемигиваются между собой. Микроконтроллер запрограммирован таким образом, что выполняет заранее установленное число повторов светового эффекта. Стоить отметить, что интервал времени между загораниями гирлянд меняется (нарастает, достигая пика, а затем падает), то есть виден эффект «временной раскачки». Для лучшей демонстрации световых эффектов гирлянды (так как они пронумерованы на схеме) следует располагать по порядку в одной плоскости. В данном случае украшение ели от корней до верхушки (по вертикали, разбив ель на четыре сектора для гирлянд), от 1 до 4 гирлянды, соответственно.

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

Монтаж деталей односторонний. Размер отверстий от 0.7 мм до 3 мм. Файлы для изготовления печатной платы смотреть в папке .

Печатная плата изображена на рисунке 4. Расположение деталей смотреть на рисунке 5.

В данном устройстве можно заменить следующие детали. Микроконтроллер 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 В.

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

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

PIC16F628A

1 В блокнот
DA1 Линейный регулятор

L7805AB

1 КР142ЕН5А В блокнот
VT1-VT4 MOSFET-транзистор

IRLU024N

4 В блокнот
VD1 Диодный мост 2W10M 1 В блокнот
С1 Конденсатор 0.1 мкФ 1 В блокнот
C2 Конденсатор 0.1 мкФ 1 В блокнот
С3 100мкФ 10В 1 В блокнот
C4 Электролитический конденсатор 220мкФ 25В 1

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

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

Из чего состоит елочная гирлянда

Что же из себя представляет гирлянда из светодиодов, хуже она или лучше обычной?

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

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

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

Что у него внутри? Чтобы его вскрыть, острым кончиком ножа или тонкой отверткой поддеваете защелки снизу и скидываете защитную крышку.

Кстати, иногда она бывает приклеена, а не просто сидеть на защелках.

Первым делом, внутри увидите припаянные к плате провода. Более толстый провод, это как правило сетевой, подающий напряжение 220В.

На плате припаяны:

  • контроллер, который и создает все световые эффекты
  • тиристоры, каждый из них идет на отдельный канал гирлянды
  • резисторы
  • конденсатор
  • и диодные мосты

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

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

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

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

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

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

Фактически эти две линейки диодов будут подключены по двум каналам последовательно. Соединяться они будут между собой в конечной точке - последнем светодиоде.

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

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

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

Причины неисправности

Ситуации с неисправностями гирлянды бывают самыми разнообразными.

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

Примерно в 5-10% всех случаев.

  • Плохой контакт на проводах
  • Светодиод в одной из лампочек
  • Конденсатор
  • Сопротивления
  • Один из диодов
  • Один из тиристоров
  • Микросхема контроллера

Плохая пайка

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

Стоит пошевелить проводок и контакта как ни бывало.

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

Чтобы такого не происходило, все контакты после припаивания должны быть залиты толстым слоем термоклея.

А еще при зачистке таких жил, советуют использовать не нож, а зажигалку. Вместо состругивания изоляции лезвием, слегка нагрейте и расплавьте ее огнем зажигалки.

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

Повреждение светодиода

Если контакты проводов в порядке и вы грешите на один из диодов, как можно проверить его неисправность? И самое главное, как его найти среди всей череды лампочек?

Прежде всего выключаете гирлянду из розетки. Начинаете с последнего диода. На него напрямую с блока управления приходит провод питания.

К этой же ножке припаян отходящий проводник. Он идет на следующую ветку светового канала. Вам же нужно тестировать диод между его двумя проводами питания (вход-выход).

Понадобится мультиметр и его несколько модернизированные щупы.

К кончикам щупов тестера, ниткой плотно приматываете тонкие иголки так, чтобы их острие выступало максимум на 5-8мм.

Сверху все заматываете плотным слоем изоленты.

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

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

И начинаете последовательно протыкать питающие провода возле каждого подозрительного диода.

Если у вас гирлянда не 220В, а 12В или 24В, которая подключается вот от такого блока питания:

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

Если это подсветка 220V, то сверяете показания мультиметра.

На рабочих элементах они будут примерно одинаковыми, а вот неисправный покажет обрыв.

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

Хаотичное моргание

Бывает ситуация, когда вы включаете гирлянду и она у вас начинает хаотически мигать, то ярче, то тусклее. Сама собой перебирает каналы.

В общем складывается впечатление, что это не какой-то заводской эффект, а как будто гирлянда "сошла с ума".

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

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

Если поменяли конденсатор, а эффекта это не дало, где искать далее? Скорее всего сгорел один из резисторов (пробит). Пробой визуально определить довольно проблематично. Понадобится тестер.

Делаете замеры сопротивления, предварительно по маркировке узнав его номинальное (нормальное) значение. Если не соответствует - меняете.

Не светит часть гирлянды

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

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

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

Проверяете их мультиметром, находите подходящие по параметрам и меняете.

Гирлянда тускло светит

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

Что это значит? Схема контролера работает нормально. При нажатии кнопки, все режимы переключаются.

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

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

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

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

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

После чего изолируете место пайки термоусадкой.

Попросили меня как-то собрать несложную и недорогую гирлянду на микроконтроллере. Под руку попался самый дешёвый восьми битный 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 В блокнот
Резистор

Как говорится в народе - готовь сани летом…
Наверняка на новый год украшаете ёлку всевозможными гирляндами, и скорей всего они уже давным давно приелись однообразием своего мигания. Хотелось бы сделать что-то такое чтобы ух, прям как на столичных елках мигало, только в меньшем масштабе. Или на крайний случай - повесить на окно, чтобы эта прям красота освещала город с 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; символ "-" Ответ - команда не определена или ошибочна

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