Еще одна лампа настроения

Лампа настроения!

Лампа настроения (mood lamp) является RGB лампой, которая меняет цвет в случайном порядке. Была зеленая, плавно стала голубой, потом фиолетовой… какого цвета она станет в следующий момент времени не знает никто)

Купить такую проблематично, сделаем ее сами!)

Данная лампа проста по устройству и станет отличным сувениром. Использованные компоненты:
Лампа GRONO из магазина IKEA. (299р.)
микроконтроллер ATMEGA8-16PU (66р.)
RGB светодиод KAD1-9090BRGC-01/3 star (273р.)
транзистор BUZ11 (3*27р)
различная мелочевка (три 1W резистора, один 10К подтягивающий резистор, колодка для ISP, микросхема-стабилизатор 7805)

В качестве источника света использован мощный RGB светодиод. Мощность каждой цветовой составляющей 1Вт. Подробности можно посмотреть в даташите. Светодиод был найден и куплен в Промэлектронике (promelec.ru).

Для упрощения линии питания, стабилизатор и колодка ISP на схеме не показаны. Транзисторы подключены к выходам каналов ШИМ. Таких каналов в микроконтроллере три.

Алгоритм работы следующий. Генерируется случайным образом цвет (три char переменные). Если все три значения примерно одинаковы, то на выходе у нас будет белый цвет, что неинтересно, поэтому процесс случайного выбора цвета повторяется. Когда получен цвет с вероятностью 0,5 будет погашен один из каналов (что бы чаще появлялись чистые R, G или B цвета.) Затем вычисляется величина прибавки, что бы за 255 шагов прийти к заданному цвету. После этого случайным образом выясняется скорость ухода к новому цвету (от 5 до 10 сек). Ну а затем за счет приращения значения в регистрах ШИМ плавно приходим к сгенерированному цвету. Подержав цвет какое то время цикл повторяется. И так до бесконечности.

Лампа в действии:

Исходный код можно посмотреть тут (Написан в CodeVisionAVR)

У микроконтроллера переключить FUSE биты что бы тактовая частота была 8 МГц от встроенной RC цепочки.

Что бы я исправил:
1) вынес бы стабилизатор за пределы лампы, он греется и требует крупного радиатора
2) использовал бы мелкие транзисторы и микроконтроллер бы запаивал бы сразу в плату. Тогда бы уменьшились габариты платы и она влезла бы в нишу под лампой.

Простор для творчества:
У микроконтроллера осталось много неиспользованных ног, а также не задействован USART. Можно добавить в плату конвертер уровней MAX232 и можно будет подключить лампу к COM порту компьютера. (А если использовать FT232 то к USB). Тогда написав соотвествующее ПО можно сделать так что бы например при поступлении новой почты лампа мигала красным. Или например сделать продвинутую ambilight.

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

Источник

Лампа настроения с регулировкой скорости смены цветов и функцией стоп-цвет

Приветствую всех. Однажды приглянулся мне стеклянный шар, который в темноте испускает свет, накопленный за день, да и к тому же в подставке к нему была RGB подсветка. Однако подсветка эта была настолько халтурная (8 цветов, да и те скачком менялись), что было решено сделать свою, да еще и с плюшками. Основа схемы — микроконтроллер AVR Attiny13. Хотя он поддерживает только 2 канала аппаратного ШИМ (широтно импульсная модуляция), а RGB светодиод требует 3, не проблема — реализуем программный ШИМ. Плюшки следующие помимо ШИМ регулирования RGB светодиодов: регулировка скорости смены цветов от 1 секунды на цикл смены цветов до 1000 секунд, а также возможность остановить световые эффекты нажатием кнопки и заморозить текущий цвет. Назвал я эту функцию «Стоп-цвет». О количестве цветов: здесь также реализована фишка — изменение цветов происходит не только линейно от красного до фиолетового по цветам радуги, но и по сочетанию нулевых и максимальных значения цвета — то есть от 100 процентной насыщенности до нулевой насыщенности цветов, то есть до белого цвета. Программа изменения цвета линейная, строго задана программой. Флэш память Attiny13 не позволила реализовать рандомное непредсказуемое изменение цвета. Может это и к лучшему.

Читайте также:  Шкала стресса для подростков

Схема получилась вот такой:

Что да как делалось. Регулировка скорости. Начнем с задержек функцией _delay_ms(); , обычное ее использование сводится к записи в скобки какого-то значения, в течении которого должна проходить задержка, но если же в скобочки поставить переменную, то размер программы резко увеличится. Это совсем не годится, ведь уже рискуем не влезть в память Attiny13. Выход прост — организуем цикл вызова конечного числа раз функции задержки длительностью, скажем 1 мили секунда. Размер программы для контроллера снова в норме. Теперь эту функцию можно использовать для регулировки скорости выполнения светового эффекта. Далее откуда брать динамическое изменение переменной задержки? Тоже все просто, тинька имеет на борту АЦП (аналого цифровой преобразователь) 10 бит, значение от 0 до 1024 — отлично сгодится для значения задержки. То есть выходит, что задержка между увеличением или уменьшением яркости будет от 1 мили секунды до 1 секунды. От 1 потому, что при нулевой задержке будет просто мельтишение, некрасиво, поэтому ноль исключен. Итак, берем значение из АЦП и толкаем в значение переменной задержки. Также значение АЦП можно брать как 10 бит, то есть 1024 отсчета, так и просто поделить это значение на 2, 4, 8 и так далее и получится более узкий диапазон регулировки. Аппаратно регулировка будет производиться потенциометром или переменным резистором, подключенным крайними выводами к плюсу и минусу питания, а средним ко входу АЦП микроконтроллера. R3 для защиты порта, токоограничительный. R1 ограничивает напряжение таким образом, чтобы максимальное значение АЦП было 1000, остальные 24 отсчета планировалось для подключения еще одной кнопки, но внятного функционала она не получила, поэтому осталось так для возможности в будущем что-нибудь «допилить». Источником опорного напряжения АЦП выбрано напряжения питания 5 вольт микроконтроллера. Что касательно остановки эффекта изменения цвета, то при нажатии кнопки S2 происходит перебрасывание из основного бесконечного цикла со световым эффектом в другой пустой бесконечный цикл, повторное нажатие кнопки перебрасывает выполнение программы обратно в основной бесконечный цикл. Простенько и сердито.

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

Читайте также:  Как проявляют чувства мужчины по знаку зодиака

Между прочим, подобную палитру можно посмотреть в любом графическом редакторе, например, Paint.

Программно дело получается так (программный код на gcc):

Переменная k отвечает за остановку изменения цвета, перекидывает в разные циклы программы.
Переменная n отвечает за переход от 100% насыщенности цветов до размытия их до белого, не может быть больше чем 1/2 от pwm
Переменная pwm — значение дискретизации ШИМ

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

В качестве RGB светодиода использовалась светодиодная лента на этих самых RGB светодиодах. Конкретной марки или модели ленты не знаю, вроде что-то от RoHS. Лента имеет в себе уже токоограничительные резисторы, баланс белого хорошо настроен. Так как лента требует питания 12 вольт, в схеме был использован повышающий DC-DC преобразователь на микросхеме MC34063. Сделано это для того, чтобы была возможность питать схему от трех пальчиковых аккумуляторов или просто от USB порта. Ясное дело АА аккумуляторы придется часто заряжать, зато красиво и ярко. При замене питания на 12 вольтовое, преобразователь можно заменить на обычные линейные преобразователи типа 7805 и соответственно перерасключить питание в схеме. Для управление светодиодами используется микросхема ULN2003. По сути это просто 7 транзисторов в корпусе микросхемы (7 сборок дарлингтонов), заменить можно на обычные транзисторы подходящей мощности и габаритов. Выводы микросхемы ULN2003 соединены попарно для увеличения мощности выходов. Каждая ножка по даташиту имеет предел по току в 0,5 А, а в сумме по всем значение составляет 2,5 А. Это стоит учитывать, если предусматривается нагрузка побольше, чем 1 юнит светодиодной ленты в моем случае. Для регулировки скорости эффекта смены цветов используется потенциометр R2, можно применить любой, подходящий по вкусу. Кнопка S1 осуществляет сброс контроллера (reset). На всякий случай. Конденсатор C8 для большей надежности, им можно пренебречь.

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

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

Фьюз биты для программирования микроконтроллера Attiny13:

К статье прилагаются проект протеус, макетная печатная плата, на которой построена схема, прошивка для микроконтроллера, а также небольшое видео, хоть и не совсем хорошо, но демонстрирующее работу устройства (в реальности устройство получилось намного более красочное)

Источник

RGB светильник или лампа настроения на ATtiny13

На носу Новый год, праздничное настроение, разноцветные огни. И конечно нужно задуматься о новогодних подарках для своих близких. Вы уже придумали что подарить? Я долго размышлял над этим и решил что лучший подарок, это подарок сделанный своими руками. В результате чего была затеяна данная конструкция RGB светильника. Её можно использовать везде и как угодно, она интуитивно понятна и проста, а значит понравится любому человеку. Функция светильника очень проста: освещать окружающий интерьер различными меняющимися цветами. Для этой нехитрой задачи пойдёт практически любой микроконтроллер, но я остановился на AVR микроконтроллере Attiny13, так как он достаточно распространён, дешёв и у меня его много. В качестве светодиода я использовал матовый RGB светодиод с четырьмя выводами, с общим катодом.

Читайте также:  Распирающее чувство внизу живота справа

Принципиальная схема RGB светильника:

На схеме указано подключение RGB светодиода с общим анодом.

Но во время разработки я наткнулся на одну неприятность, у микроконтроллера Attiny13 всего лишь два аппаратных ШИМ выхода на таймере 0 и на этом всё. Ох, а нужно ведь три ШИМа, на три цвета. И засада, таймер в МК один. Поэтому я решил поизвращаться и реализовал три программных ШИМа на таймере 0, получилось очень даже хорошо, но, данный метод плох тем что частота этого ШИМа получается низка. И чтобы не было видно мерцаний светодиода пришлось запускать микроконтроллер на частоте 9,6 МГц. Прошивку я писал в среде BASCOM-AVR. Главное что всё работает!

Питание RGB светильника осуществляется от двух мизинчиковых батареек AA типа по 1.5 вольт каждая. В сумме получается 3 вольта, то что нужно устройству. Для удобной эксплуатации светильника батарейки вставляются в специальный для них отсек, который я приобрёл в радио магазине. Светодиод нужно использовать RGB с четырьмя выводами, общим выводом может быть как анод так и катод, от этого поменяется только подключение светодиода по схеме, плата и прошивка. Микроконтроллер Attiny13 можно использовать с любыми буквенными индексами, в любом корпусе (желательно в DIP чтобы подходил на плату). Для установки микроконтроллера используйте панель DIP-8, это позволит быстро и удобно извлечь микроконтроллер из платы в случае замены или прошивки.

Прототип RGB светильника на макетной плате с механическими контактами:

Сам светильник я реализовал на круглой печатной плате диаметром 5 см. Плата сделана по ЛУТ технологии на стеклотекстолите, чтобы плату сделать абсолютно круглой я сначала её высверлил и обработал напильником по контуру окружности. Для наилучшего качества я рекомендую, сначала, перевести рисунок на квадратный кусок текстолита, протравить его в растворе хлорного железа или медного купороса и лишь потом, по контуру окружности рисунка, высверливать и подгонять, круглую плату. Рисунок печатной платы я делал в программе Sprint Layout 4.0, исходные файлы платы вы можете найти ниже.

T13RGBA.LAY — Файл печатной платы светильника под светодиод с общим анодом
T13RGBK.LAY — Файл печатной платы светильника под светодиод с общим катодом

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

RGB светильник без корпуса (плата и отсек для батареек):

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

FWT13RGBA.HEX — Файл прошивки светильника под светодиод с общим анодом

FWT13RGBK.HEX — Файл прошивки светильника под светодиод с общим катодом

Не зависимо от файла, после прошивки нужно прошить соответствующие фьюз-биты указанные ниже.

Источник

Оцените статью