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

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

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

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

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

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

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

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

Цветовой круг

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

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

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

Материалы

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

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

Блок питания

Плафон от лампы grono

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

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

Собранный блок питания

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

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

Принципиальная схема

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

Макет печатной платы

Готовые платы

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

Собранная начинка плафона

Все на своих местах

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

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

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

Витая пара в качестве сенсора

Новый вариант сенсора

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

Подпаянный интерфейс для внутрисхемного программирования

Перспектива

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

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

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


Архив для статьи "Лампа настроения с сенсорным управлением на Attiny13"
Описание: Схема, модель в протеусе, исходники, макет платы
Размер файла: 197.06 KB Количество загрузок: 1 756 Скачать