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

Лампа_настроения_на_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 — Файл прошивки светильника под светодиод с общим катодом

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

Лампа настроения — это светодиодный RGB светильник, плавно меняющий цвет свечения случайным образом. В Сети можно найти множество различных схем таких ламп, причем, как правило, на базе относительно мощных микроконтроллеров. Мне хотелось сделать лампу на основе самого примитивного AVR микроконтроллера ATTINY13.

Схема получившейся лампы тривиальна:

Мощный RGB-светодиод подключен к микроконтроллеру через полевые транзисторы. Для изменения яркости свечения использован самопальный трехканальный ШИМ. Светодиод я использовал трехватный RGB. В качестве блока питания — дешевое зарядное устройство для сотового телефона, с напряжением около 5.5В. Микроконтроллер и транзисторы использованы в SMD корпусах.

Алгоритм работы следующий:

  • случайным образом генерируется значение RGB цветовой точки и интервал времени, через которое этот цвет будет достигнут
  • чтобы цвета получались "красивыми" один из RGB компонент случайным образом зануляется
  • на прерывании таймера-счетчика висит обработчик самодельного ШИМа, а через каждый цикл итерации ШИМа вычисляются текущие цвета свечения светодиодов

Проект написан и скомпилирован в AVRStudio 5.0. Замечен забавный момент — скомпилированная Debug-версия прошивки заняла 1022 байта, а Release-версия — целых 1094 байта, что делает последнюю совершенно непригодной для прошивки в килобайтный контроллер. Настройки студии я не трогал, все по умолчанию.

Для записи прошивки использовал avrdude, программирование в нем делается командой:

Печатная плата лампы:

Мощный светодиод установлен на радиатор, сделанный из корпуса старого алюминиевого электролитического конденсатора:

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

Видеодемонстрация работы лампы:

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

Дата публикации: 02 февраля 2016 .

Лирическое вступление

Наконец-то я закончил свой первый, однажды заброшенный, проект на микроконтроллере! Когда я начинал, то замахнулся на повторение одной поделки с "хабрахабр", но так и не смог отладить инфракрасный сенсор (ИК-светодиод + ИК-приемник). Поделка та была на ATmega8 и, как я сейчас понимаю, это было очень жирно для такой задумки. Сейчас я все реализовал на ATtiny13A, как всегда еле все уместил, но тем интереснее. Приступим.

Читайте также:  Сухари_для_цезаря_в_микроволновке

Техническое задание

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

Алгоритм работы

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

1. Плавная смена цветов по кругу.
2. Один цвет, который получился при переходе с режима №1.
3. Настройка скорости плавной смены цветов для режима №1. 8 вариантов.
4. Настройка яркости. 8 вариантов.

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

Долго эксперементировал с тем, как визуализировать настройку выбора скорости всякими помигиваниями. В итоге остановился на выборе скорости по цветам радуги + розовый цвет. Красный — самая быстрая скорость. Розовый — самая медленная. Настройка яркости осуществляется визуально одним цветом.

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

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

Материалы

В качестве блока питания можно взять зарядник от телефона на подходящий ток. У меня уже очень давно были закуплены блоки питания и плафоны по 2 штуки. Плафон взял от светильника grono из магазина "Икея". Еще вот похожие по размерам, но круглые — кварне.

Источником света в лампе является один или несколько RGB-светодиодов. Я взял один 3 Ваттный RGB-светодиод, который в номинале держит по 300 мА на каждый канал. Запитал его в щадящем режиме где-то по 200 мА на канал.

Читайте также:  Цветущие_травянистые_растения_летом_названия_и_фото

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

Схема, реализация

Схема получилась очень простой.

Для управления мощным светодиодом я взял полевики с дохлой материнской платы. И развел макет платы под них, изготовил пару плат.

Собрал все воедино, бросил коробочку на дно плафона. В качестве сенсора сделал кусок лакированной проволоки 0.3 мм, которую пустил по верхнему контуру плафона. Светодиод посадил временно только на термопасту, а проволоку на скотч.

Трудности отладки

Я уже писал как при разработке лампы я использовал бинарную модуляцию (БМ) и работал с сенсором. Так вот, сенсор требовал доработки, потому как он временами срабатывал сам собой. Я выполнил советы Mail1977, за что его благодарю. Однако, это полностью не решило проблему. Дело оказалось в форме сенсора, в роли которого у нас выступает длинная проволока. Я думаю, она вела себя как антенна и ловила всякую ерунду.

Тогда мне в голову пришла идея: заэкранировать наш сенсор, чтобы он не ловил помехи. И я сделал не одну проволоку, а витую пару. Второй конец которой подключил к земле нашей схемы управления светодиодом. (Здесь у меня вопрос, есть ли смысл посадить на эту землю и корпус блока питания?) И всё, помехи ушли!

Но это еще не все. Первая моя стабильная версия лампы была реализована с помощью БМ (исходник этой реализации я тоже вложу в архив). Однако, помаргивания при плавном изменении цветов RGB-светодиода, все же, были видны, даже на частоте БМ 586 Гц. Особенно на маленьких яркостях. Частоту повышать уже больше не стал. Переделал на программный ШИМ с частотой около 100 Гц. На глаз теперь все происходит плавно!

Перспектива

Когда это все собрал и отладил, то был доволен. Но есть еще задумка. Как-то громоздко все это выглядит. Подумал, что было бы интересно собрать аналог такой лампы в виде небольшого ночничка, который можно было бы питать от любого разъема USB, ведь у каждого есть зарядник для телефона. Развел кругленькую плату (часть ее видно справа на фото готовых плат выше) для 9-ти RGB-светодиодов 5050 и разъема microUSB. Может быть в будущем соберу.

Исходник для прошивки написан на C в CodeBlocks под компилятор GCC AVR.

Желаю каждый проект довести до победного конца!

Ссылка на основную публикацию
Лак_для_металлических_дверей
Металлические двери в основном устанавливают на входную группу, так как они выполняют в первую очередь защитную функцию. Они испытывают на...
Кухонный_гарнитур_маша_инструкция_по_сборке
Кухонная мебель с цеха или фабрики приходит в разобранном состоянии. Можно доверить сборку специалистам, но сделать лучше хозяина мало кто...
Лак_для_металлических_дверей
Металлические двери в основном устанавливают на входную группу, так как они выполняют в первую очередь защитную функцию. Они испытывают на...
Лампа_настроения_на_attiny13
На носу Новый год, праздничное настроение, разноцветные огни. И конечно нужно задуматься о новогодних подарках для своих близких. Вы уже...
Adblock detector