Товары из Китая

Анимируем статичную гирлянду с помощью ATtiny13


Анимируем статичную гирлянду с помощью ATtiny13

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

Исходные данные

У меня скопилось великое множество самых разных гирлянд, среди них есть как простые советские на лампочках, так и модные нынче на адресных светодиодах. Когда играться с режимами последних мне надоело, я пришел к выводу, что это все баловство, и самый оптимальный вариант гирлянды — это та, которую включил один раз и забыл. Самыми удобными мне показались USB гирлянды на 30-40 лампочек длиной 4-6 метров. Они недорого стоят, их удобно хранить за счет небольшой длины и можно воткнуть куда угодно, т.к. потребление у них мизерное. Единственный минус — такие гирлянды в основном абсолютно статичны, т.е. при работе просто светятся и не имеют никаких спецэффектов. Еще в прошлом году я заказывал сразу кучу разных USB гирлянд, среди них мне больше всего понравились такого типа:

Анимируем статичную гирлянду с помощью ATtiny13

Заказывал здесь. Это примитивная гирлянда на 30 светодиодов длиной 4.5 метра, которая питается от любого USB порта и во время работы просто светится по всей длине:

Анимируем статичную гирлянду с помощью ATtiny13

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

Анимируем статичную гирлянду с помощью ATtiny13

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

Анимируем статичную гирлянду с помощью ATtiny13

Они сделаны из прозрачной эпоксидки и наполнены пузырьками, на которых красиво рассеивается свет, создавая эффект шара со снежинками:

Анимируем статичную гирлянду с помощью ATtiny13

Анимируем статичную гирлянду с помощью ATtiny13

В техническом плане гирлянда ничего сложного и интересного не представляет, на конце обычный USB разъем со встроенной в него парочкой гасящих резисторов:

Анимируем статичную гирлянду с помощью ATtiny13

А все светодиоды подключены параллельно, на всю длину гирлянда имеет всего 2 провода:

Анимируем статичную гирлянду с помощью ATtiny13

Потребляет это поделие всего 90мА, поэтому его можно питать от любого подвернувшегося USB порта:

Анимируем статичную гирлянду с помощью ATtiny13

Я, например, втыкаю свои в порты телевизора, ТВ приставки, в старые ненужные зарядники от телефонов — везде работает отлично.

Теория

Несмотря на то, что провода в данной гирлянде всего 2, мы с помощью хитрости можем заставить ее мигать двумя группами светодиодов независимо друг от друга. Хитрость эта называется Charlieplexing, и ей уже сто лет в обед. Заключается она в том, что можно подключить светодиоды разной полярностью к общей шине и управлять ими отдельно с помощью изменения полярности на шине:

Анимируем статичную гирлянду с помощью ATtiny13

Особенно легко это делать при помощи микроконтроллера: подаем на вход X1 логическую единицу, на X2 — ноль, в итоге горит LED1. Инвертируем (X1 — ноль, X2 — единица) — горит LED2, таким образом мы имеем возможность по всего двум проводам независимо управлять двумя отдельными светодиодами. Если переключать выходы с большой частотой, по визуально будут гореть оба светодиода, причем с помощью изменения длины периода можно менять и яркость, т.е. это фактически обычный двухполярный ШИМ. На самом деле Чарлиплексинг не ограничивается двумя светодиодами, это для него вообще самый примитивный случай. Обычно в реальности эта техника используется для управления всякими матрицами светодиодов с использованием сильно меньшего количества пинов микроконтроллера. Но у такого подхода есть существенный минус: мерцание и падение яркости с ростом количества коммутируемых светодиодов, от этого никуда не деться.

Практика

Для управления светодиодами будем традиционно использовать микроконтроллер ATiny13, причем питать светодиоды мы будем напрямую с пинов контроллера, а для повышения максимального отдаваемого тока мы запараллелим по паре пинов. О допустимости такого подхода ходят споры, но на деле лично я проблем никогда не замечал, по моему опыту этот МК вообще нереально убить практически ничем. Каждый пин t13 может отдавать до 20мА, для двух пинов получаем до 40мА, чего должно быть достаточно для питания половины гирлянды почти без потери яркости (т.к. вся она потребляет 90мА, см. выше). Общая схема:

Анимируем статичную гирлянду с помощью ATtiny13

Здесь C1 — конденсатор на 0.1-1 мКф, R1 — резистор на 10-20 Ом. Питать напрямую от МК можно гирлянду длиной 15-30 светодиодов, не больше. Для гирлянд большей длины придется городить усилитель на полевиках, что-то типа такого:

Анимируем статичную гирлянду с помощью ATtiny13

Бинарник прошивки и исходники можно скачать тут.

Внимательных читателей заинтересует, как же осуществляется переключение режимов, если на схеме нет ни одной кнопки? А хитрость в том, что я пошел по пути, который используется в фонариках, и режимы здесь переключаются быстрым отключением-включением питания схемы. Причем последний использованный режим запоминается спустя примерно минуту работы, так что каждый раз заново перебирать все режимы в поисках наиболее понравившегося не нужно. К слову, можно легко реализовать переключение и по кнопке — для этого достаточно включить ее между RESET и VCC микроконтроллера. Режимы работы мы рассмотрим позже, а пока нам нужно немного пошаманить над самой гирляндой, т.к. у нее все светодиоды подключены параллельно. У каждого второго светодиода снимаем рассеиватель, в моем случае это синие и зеленые диоды:

Анимируем статичную гирлянду с помощью ATtiny13

Светодиод сидит на термоклею, для более легкого съема «плафон» можно погреть феном. Снимаем старую термоусадку:

Анимируем статичную гирлянду с помощью ATtiny13

Между контактами имеется кусок пластика, его не выкидываем — он нужен для предотвращения замыкания. Каждый второй светодиод таким образом перепаиваем на обратную полярность и собираем в обратном порядке. Новая термоусадка:

Анимируем статичную гирлянду с помощью ATtiny13

Диаметр 4.8мм, брал тут, на всю длину гирлянды хватит отрезка длиной 50см. Усаживаем:

Анимируем статичную гирлянду с помощью ATtiny13

При усадке каждого светодиода важно проверить, что нигде ничего не замкнуло или не пропал контакт. В конце надеваем рассеиватели и проверяем все еще раз, подав на вход гирлянды 5В через 100 Ом резистор:

Анимируем статичную гирлянду с помощью ATtiny13

Если все сделано верно, гореть должны при этом только сине-зеленые или красно-желтые светодиоды, а при смене полярности питания — наоборот:

Анимируем статичную гирлянду с помощью ATtiny13

Для электронной начинки было лень разводить и травить свою плату, поэтому первый прототип я решил сделать с помощью платы-переходника SSOP8:

Анимируем статичную гирлянду с помощью ATtiny13

А размещаться все это будет в сборном USB type A разъеме:

Анимируем статичную гирлянду с помощью ATtiny13

Анимируем статичную гирлянду с помощью ATtiny13

Для большей компактности пришлось немного подрезать как пластиковую часть коннектора, так и переходник микроконтроллера:

Анимируем статичную гирлянду с помощью ATtiny13

Запаиваем микроконтроллер и параллелим пины:

Анимируем статичную гирлянду с помощью ATtiny13

Далее я буквально навесным монтажом разместил на разъеме конденсатор и припаял плату с МК:

Анимируем статичную гирлянду с помощью ATtiny13

Два средних пина из разъема я вытащил, чтобы конденсатор уместился и не замыкал. Аналогичным образом на весу припаян 1206 резистор на 10 Ом:

Анимируем статичную гирлянду с помощью ATtiny13

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

Анимируем статичную гирлянду с помощью ATtiny13

Результат

Всего в прошивке 11 режимов, среди них:

  • Автоматический — в нем все мигающие режимы переключаются по кругу через определенный интервал времени
  • Статический — горят все диоды одновременно, как было изначально
  • 9 видов мигалок, у каждой из которой есть 3 скорости (медленно, средне, быстро)

Переключение между режимами, как вы догадываетесь, осуществляется перетыканием USB разъема, что при активном использовании может сократить срок службы порта на питающем устройстве, но на деле скорее всего в 99% случаев при первом же включении будет установлен автоматический режим, в котором гирлянда будет работать практически всегда. Но при большом желании в корпусе разъема можно уместить и микропереключатель.

Итак, предлагаю посмотреть, как работают всякие мигалки.

Самая первая — просто мигание всеми светодиодами одновременно:

Анимируем статичную гирлянду с помощью ATtiny13

Далее идет поочередная мигалка:

Анимируем статичную гирлянду с помощью ATtiny13

«Полицейская» мигалка:

Анимируем статичную гирлянду с помощью ATtiny13

Поочередная мигалка «с нахлестом»:

Анимируем статичную гирлянду с помощью ATtiny13

Поочередная мигалка «с нахлестом» №2:

Анимируем статичную гирлянду с помощью ATtiny13

Плавная мигалка всеми светодиодами:

Анимируем статичную гирлянду с помощью ATtiny13

Плавная поочередная мигалка:

Анимируем статичную гирлянду с помощью ATtiny13

Плавная поочередная мигалка «с нахлестом»:

Анимируем статичную гирлянду с помощью ATtiny13

Плавная поочередная мигалка «с нахлестом» №2:

Анимируем статичную гирлянду с помощью ATtiny13

Итог

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

Анимируем статичную гирлянду с помощью ATtiny13


СМОТРИ ТАКЖЕ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *