Функции контроллера управления люстрой
- управление несколькими секциями опри помощи беспроводных выключателей и пультов ДУ
- Диммирование по нескольким каналам для каждой секции отдельно
- Плавное включение/отключение
- Контроль температуры радиаторов и снижение мощности при достижении заданной температуры (регулирование)
Технические особенности
Питание светодиодов
Драйвера светодиодов, поддерживающих диммирование у меня не было, зато был мощный блок питания на 12В 10А с подстройкой напряжения. 3-х ваттные светодиоды ы в количестве 40 шт решил соединять последовательно по 4 шт вместе с 5-ваттным резистором на 2 Ома. После этого подстроечником на блоке питания отрегулировал такое напряжение, что ток составил 550-600мА. Получилось порядка 14.5В.
Подбор компонентов
- Контроллер управления ATMEGA328P-PU с загрузчиком OPTIBOOT, чтобы можно было программировать из среды Arduino IDE.
Покупал на Алиэкспресс за $2 - Датчики температуры DALLAS DS18B20, которые я приклеил к алюминиевым радиаторам светодиодов
- Приемник на 315МГц с самодельной проволочной антенной
- Мощные полевики IRF540 на радиаторах для ШИМ управления секциями светодиодов
- Симистор BT139 + оптосимистор MOC3061 для включения/отключения мощного блока питания для светодиодами
- Миниатюрный блок питания для контроллера управления
- Корпус для контроллера управления
- Резисторы, транзисторы и прочая мелочевка
Все компоненты можно купить в интернете я покупал в интернете на разных сайтах.
Реализация контроллера
Принципиальная схема
Алгоритм работы
Приемник RF 315МГц висит на нулевом внешнем прерывании и получает команды от радиопульта. Для работы с радиомодулем используется библиотека RCSwitch Обрабатываются короткое (одинарное) нажатие одной из клавиш пульта/выключателя, по которому включается/отключается секция люстры и длинное (свыше 2 сек) нажатие, которое включает/отключает все секции люстры целиком. Хотел на длинное нажатие посадить диммирование конкретной секции, но от данной функции решил отказаться за ненадобностью. Включается свет нарастанием мощности в течении 5 сек. Отключается так же. Мощность регулируется мощными MOSFET транзисторами при помощи аппаратного ШИМ микроконтроллера. При отключении всех каналов люстры снимается сетевое напряжение с мощного бока питания питания при помощи симистора для уменьшения энергопотребления в режиме ожидания. При достижении температуры на одном из радиаторов, измеренных при помощи сенсоров DS18B20 снижается на 50% мощность на соответственной секции светодиодов и загорается светодиод перегрева. Для работы с сенсорами используется библиотека OneWire
Полный скетч контроллера управления люстрой
Проблемы
- Приемник RF 315Мгц отказался стабильно работать при напряжении питания 3.3В. Пришлось заменить источник питания на 5В.
- Транзисторы MOSFET IRF540 при подаче на затвор напряжения с дискретного выхода ардуино (~3В) не открывались полностью. Пришлось поставить дополнительный транзистор BC547, который подает на затвор полевика 14В, при этом сигнал ШИМ пришлось инвертировать (0 — это 255, 255 это 0)
- Мощный 10А блок питания, при подачи на него сети симистором, включается с задержкой ~ 1-2 сек. Задержку в свете победить не удалось, разве что не выключать его совсем.
- Полевики IRF540 и симистор BT139 имеют неизолированный корпус, поэтому их нельзя сажать на общий радиатор, а, для семистора пришлось еще придумывать изоляцию из картона, так как на корпусе там фаза
доброго времени. А подскажите с помощью чего отправляются управляющие сигналы? дуина с передатчиком или что то другое? Если дуина то можно увидеть скетч?
При помощи таких выключателей-пультов а 315МГц. Принимаю при помощи RF-модулей к Ардуино на 315. Библиотека там стандартная, скетч в статье есть, нужно только код каждой клавиши выключателя прописывать
Добрый день. А если нужно подключить несколько RF-модулей и соответственно несколько выключателей как их привязать один к другому, чтобы одни выключатели включали свои модули. Спасибо.
Каждый выключатель имеет уникальный RF код
В радиореле есть кнопка привязки конкретного выключателя. Здесь привязка осуществляется в коде, о можно тоже сделать кнопку и сохранение в EEPROM
Подскажите пожалуйста, хочу использовать автомобильный брелок. Код плавающий, но ардуина его принимает, вот пример, это одна и та же кнопка.
Receive code 107928 107928 -30824
107928
Receive code 108331 108331 -30824
108331
Receive code 108677 108677 -30824
108677
Receive code 108769 108769 -30824
108769
Receive code 109136 109136 -30824
109136
Т.е. «-30824» можно использовать, но как вычленить из последовательности, я не представляю.