- Родительская категория: Проекты
- Категория: Электроника
- Автор: ARV
- Просмотров: 49412
RGB-светильник с дистанционным управлением
Хороша лампа настроения! Смотришь на нее, будто зачарованный. Но порой хочется воскликнуть: "Остановись, мгновенье!", потому как в какой-то миг цвет лампы ну уж больно красивый - ан нет, не остановить изменчивость, и спустя секунду цвет уже другой, и ждать его повторения может быть придется долго-долго... Для полного наслаждения всеми возможностями цветовой палитры лампы настроения необходимо иметь возможность самостоятельно устанавливать нужный оттенок, а так же, желательно и яркость изменять. Ну и конечно, делать это нужно не вставая с дивана, то есть при помощи пульта дистанционного управления.
{ads1}
Именно такой проект и предлагается вниманию благороднейшей публики: RGB-светильник с дистанционным управлением.
Схема и конструкция самого светильника точно такая же, как и у лампы настроения, разве что ИК-приемник должен быть обязательно установлен. Прошивка для нового режима работы прилагается для скачивания в готовом виде (см. файлы для загрузки в конце статьи).
Речь же пойдет о пульте управления.
Немного общих рассуждений о пультах и вообще. Можно было бы попробовать управлять светильником с готового пульта управления от бытовой техники, например, от телевизора. Но в этом варианте есть ряд минусов: во-первых, пульт от телевизора довольно большой и тяжелый, во-вторых (и это главное), сложно придумать способ управлять лампой так, чтобы сам телевизор не реагировал на команды. Есть, конечно, в продаже готовые пульты управления RGB-светильниками, но раз уж мы решили сделать его (светильник) самостоятельно, то как-то не логично покупать для него пульт. Да и попробуй его еще купи... Тем более что для управления нашим светильником достаточно всего 5-и кнопок: одна для выключения, пара для управления яркостью и пара для управления цветом.
{ads2} Для пультов дистанционного управления производится довольно много специализированных микросхем, но для домашнего творчества лучше и проще использовать микроконтроллер. Я выбрал
Интерсуетесь, как можно подключить 5 кнопок к двум выводам микроконтроллера? Да все очень просто! Ведь в выбранном нами микроконтроллере есть встроенное АЦП, а значит кнопками можно коммутировать напряжения с резисторного делителя, и тогда МК будет способен определить нажатую кнопку по входному напряжению.
Однако, не все так уж просто, потому как для пульта дистанционного управления очень важно минимальное потребление энергии в режиме ожидания, и именно поэтому основную часть времени микроконтроллер должен находиться в режиме сна, т.е. практически в полностью отключенном состоянии. Естественно нельзя использовать делитель напряжения, постоянно подключенный к батареи питания пульта, чтобы не разрядить ее быстро. Придется подключить делитель к одному из свободных выводов и подавать на него питание только в нужные моменты. И тут снова вопрос: нужный момент - это когда нажата кнопка, не так ли? И получается, что нажатие кнопки мы должны определить по напряжению, которое подается только после нажатия кнопки...
{ads1}
Однако, и тут решение очень простое! В выбранном микроконтроллере есть режим пробуждения ото сна по изменению уровня на любом выводе, использование которого решает все наши проблемы! Посмотрите на схему пульта:
Перед тем, как уснуть, микроконтроллер включает на порту PB4 внутреннюю подтяжку, т.е. подключает через резистор порт к питанию, а в порт PB3 выводит логический ноль, т.е. как бы соединяет его с общим проводом схемы. Таким образом, делитель из резисторов R2...R5 оказывается с обеих сторон "заземленным". Очевидно, что пока кнопки не нажаты, на PB4 будет присутствовать высокий уровень, а как только будет нажата любая кнопка, на PB4 появится ноль (см. далее замечание о сопротивлении резисторов делителя). Мкироконтроллер настроен на пробуждение как раз по изменению уровня на PB4 с высокого на низкий, после чего на делитель подается питание, производится замер напряжения, попадающего на вход АЦП через нажатую кнопку, и затем микроконтроллер генерирует импульсы для управления светодиодом HL1. Отработав посылку команды, МК снова засыпает до очередного нажатия кнопки.
Главное, что надо учитывать, это то, что сопротивления в делителе могут быть совсем не любого номинала. Дело в том, что встроенная подтяжка - это резистор порядка 30-40 килоом, а значит для надежного появления низкого логического уровня при нажатии любой кнопки сопротивление резисторов в делителе (если они все одинаковые - это удобно) не должно быть больше 10-15 килоом. Я остановился на сопротивлении 10К.
Резистор R1 ограничивает максимальный ток через светодиод. Правильнее было бы его рассчитать, но для этого надо знать параметры светодиода HL1, а мой был неизвестно какого типа... Поэтому я на глазок прикинул, что резистор 5-10 Ом ограничит ток на уровне 100-150 мА, что в принципе безопасно как для светодиода, так и для потров МК. В наличии был 7,5 Ом - и именно его я и установил в схеме.
Конденсатор С1 должен иметь минимальный ток утечки, поэтому это должен быть танталовый электролит. Емкость его - чем больше, тем лучше, тут определяющими будут габариты, а рабочее нарпряжение - не менее 3,3 вольт.
Батарейки применены таблеточные, по 1,5 вольт каждая. Можно установить литиевую 3-вольтовую, хотя она дороже.
Пульт собран на такой односторонней печатной плате, большинство компонентов - SMD. Плата демонстрационно-отладочная, то есть сделана без оглядки на корпус, так как вопрос с корпусом пока открыт. Для экспериментов я прижимал батарейки к плате при помощи канцелярского зажима-бабочки:
Если убрать зажим, то соединив таблетки щупами микроамперметра, можно измерить ток покоя схемы - в моем случае он составил 1 мкА, что я считаю очень неплохим результатом. При нажатии любой кнопки ток возрастает примерно до 2 мА, однако это средний ток, а импульсную величину я не определял.
Пульт работает в стандарте RC5, причем для управления яркостью я использовал стандартные команды, а для выбора цвета - команды изменения уровня. Код семейства выбран соответствующий - осветительные устройства, поэтому пульты от магнитол и телевизоров не будут влиять на наш светильник (и наоборот).
Исходник программы пульта содержит подробные комментарии, там все просто, надеюсь, проблем разобраться у желающих не возникнет. Ну а для непрограммистов я предлагаю готовую прошивку для МК. Следует отметить, что SMD-микроконтроллер нужно программировать или в специальном адаптере, или прямо в схеме, припаяв к нему проводки. В последнем случае надо после программирования соединить между собой припоем выводы 7-6-5, а вывод 1 соединить с питанием. Если потребуется повторная перепрошивка - надо соответственно освободить выводы.
При прошивке важно установить правильно фьюзы. Картинку фьюзов выкладываю для плагина Eclipse (программатор avrdude). Надеюсь, вопросов не возникнет.
Вот видео с демонстрацией основных возможностей пульта:
{plusone lang=ru}Надеюсь, проект вам понравится, жду ваших отзывов в комментах, а вопросов - на форуме.
Обратите внимание на улучшенную прошивку для лампы: она добавлена позже, в ней кардинально улучшено качество приема и немного изменен алгоритм работы - теперь лампа и включается и отключается одной кнопкой (на пульте размещена обособленно в правом верхнем углу). Так же в этой прошивке число градаций яркости и количество оттенков уменьшено, так как в первоначальном варианте для перебора всех оттенков требовалось держать нажатой кнопку пульта больше минуты.
Комментарии
Может есть у кого?
Мне тоже не помешало бы :)))
на форуме я давал для понипрога. все на свете виды программаторов я изучить не в состоянии - научитесь сами ставить фьюзы по даташиту - это несложно.
Без проблем. Обращайся - помогу.
Здравствуйте а как это возможно? и сколько будет стоить ?
Оу. Случайно увидел сообщение.
Стучите в скайп: VBMart.
RSS лента комментариев этой записи