Система светодиодной подсветки садовых насаждений
Автор: Aheir Известно, что каждый сходит с ума по-своему… Кто-то картошку выращивает, а я вот, знаете ли, больше по электронике... Но как бы там ни было, дачная тема не обошла и меня. Вобщем, сегодня делаем систему подсветки садовых насаждений, кодовое название – LED Garden.
При наличии одной прозрачной стенки сразу напрашивалось применение в виде некоего светильника, естественно – светодиодного, конечно же – не самого простого. Была разработана плата светодиодов:
36 RGB светодиодов NM5050 в последовательно-параллельных группах по 3 штуки, балласт резистивный. Кроме того, на плате размещен ИК-фотоприемник TSOP для управления светильником. Все это соединяется через разъем IDC-14 с платой контроллера и вживую выглядит вот как-то так:
Плата контроллера собрана по следующей схеме:
Управляющий микроконтроллер – Atmega8515 (выбран из наличия). Интерфейс во внешний мир – RS-485 – реализован с помощью микросхемы DS75176. Силовые ключи для управления светодиодами на полевых транзисторах. Источник питания – понижающий DC/DC на LM2676-12 в типовом включении, дроссель L3 выполнен на расколотом 25мм кольце из отечественного 2000 феррита 20 витками провода (параметры намотки подбирались для каждого устройства индивидуально по оптимуму работы преобразователя). Питание МК – LM7805 на небольшом радиаторе (алюминиевая пластина), входное напряжение 12В после DC/DC. В качестве разъемов – 8P8C (RJ-45, который), установлено два в параллель для возможность объединения нескольких контроллеров в цепочку. Первые 6 контактов каждого разъема запараллелены по 3 и используются для подачи питания, оставшиеся 2 – RS-485. Еще один шестиконтактный телефонный разъем используется для программирования и задания режима работы устройства (об этом ниже). Вообще, контроллер на 90% собран из б/у компонентов. Конденсаторы из телевизоров, древние МЛТ резисторы, полевики из старых БП (часто довольно высоковольтные, но здесь это не важно), в качестве Q4, Q6 и Q8 – 2Т312 и т.д. Результат на фото:
Далее все это запихивается в корпус. Плату светодиодов приклеиваем на несколько капель герметика к стеклу лицевой панели (я сделал простенький трафарет из картонки, чтобы одинаково спозиционировать платы:
Всего было изготовлено 5 комплектов, по числу имеющихся в наличии корпусов.
Далее устанавливаем контроллер в корпус (там есть посадочное место под плату и отсек с отверстиями для выходных разъемов на боковой поверхности корпуса:
Все лишние отверстия в корпусе загерметизированы тем же силиконом. Соединяем платы шлейфом:
И собираем все в кучку, получив вот такой светильник:
Перед финальной сборкой все швы корпуса были дополнительно промазаны герметиком, внутрь помещен мешочек с силикагелем для предотвращения образования конденсата. В целях влагозащиты все платы покрыты уретановым лаком. Теперь, собственно, о том, что оно умеет. Напомню, что всего было изготовлено 5 таких светильников. Каждый из них может выступать в качестве ведущего и управлять остальными светильниками, подключенными к нему по RS-485, (режим мастера) или же быть ведомым (управляемым) светильником с определенным адресом (номером). Функция светильника определяется состоянием портов МК, подключенных к разъему U2. Если к портам PB.5 – PB.7 ничего не подключено – светильник работает в режиме мастера, если какие-либо из этих линий замкнуты на землю, светильник становится ведомым с соответствующим адресом. Адрес выставляется в двоичном коде на этих самых линиях (PB.7 – младший бит), замыкание на землю соответствует 1 в адресе, таким образом может быть подключено всего 0b111 или в десятичном виде 7 ведомых светильников. Поскольку у меня их 5 и больше не предвидится, то этого вполне достаточно. Для удобного задания режимов и адреса были сделаны соответствующие заглушки в разъем U2 (обжатый в телефонный разъем кусочек шлейфа минимальной длины с заранее замкнутыми нужным образом жилами в нем). В качестве протокола связи светильников между собой выбран DMX512 (точнее, его несколько урезанная версия, полностью описывать стандарт не буду, эта информация доступна в Сети), представляющий собой просто последовательность байт, каждый из которых в явном виде задает яркость какого-либо канала (цвета) какого-либо светильника. В режиме мастера светильник должен генерировать такую посылку для всех ведомых (ну и для себя тоже, конечно же), а в режиме ведомого – просто выделять из полученного пакета относящуюся к нему часть на основании собственного адреса и выставлять соответствующие яркости цветовых каналов. В режиме мастера все управление светильником осуществляется через ИК-канал по протоколу RC-5 с помощью пульта:
Подробнее про этот протокол и особенности его применения можно прочитать в этой статье . Имеется возможность выбирать одну из 10 программ работы (различные световые эффекты) и изменять скорость выбранной программы. Программа выбирается цифровыми кнопками от 0 до 9 (программа 0, равно как и кнопка выключения, гасит светильник), ch-/ch+ или left/right. Скорость регулируется vol-/vol+ или up/down. Светодиоды управляются ШИМом, поэтому доступны эффекты с плавной сменой цвета и яркости. Программы такие:
На словах это объяснить довольно трудно, проще посмотреть видео в конце статьи. С программной точки зрения все это реализовано весьма просто. С помощью некой несложной математики рассчитывается значение каждого цвета (его интенсивности в виде числа 8-ми битного ШИМа) каждого светильника для каждого шага программы (естественно, программы цикличны) и заносится в соответствующий массив, элементы которого в прерывании по таймеру с помощью USART отправляются во внешний мир к другим светильникам. Скорость регулируется длительностью паузы после каждого шага программы. Все настройки (номер последней активной программы и скорости для каждой программы) сохраняются в энергонезависимой памяти. Эффекты можно написать любые, здесь уж на вкус и цвет. У меня самой востребованной программой является плавная смена цвета. В режиме ведомого, как уже было сказано, светильник просто вычленяет из сгенерированной мастером посылки кусочек, соответствующий его, ведомого, адресу, и приравнивает величину коэффициентов программного ШИМа цветовых каналов к полученным от мастера значениям. Если корректный сигнал в линии отсутствует более 2с, ведомый зажигает матрицу одним из семи цветов (R, G, B, R+G, G+B, R+B, R+G+B) в зависимости от своего адреса (это позволяет использовать светильник для простой статичной подсветки или освещения). Микроконтроллер в данном случае несколько разогнан (работает на частоте 20МГц), что выходит за пределы рекомендованных даташитом режимов. Насущной необходимости в этом нет, просто у меня были куски кода, уже «заточенные» под эту частоту и пересчитывать не хотелось. Устройство без проблем будет работать и на штатных 16МГц. Так что, хотя весь мой опыт в количестве 1500 контроллеров, работающих на частоте 20МГц без единого сбоя уже не первый год, говорит о допустимости такого решения, я все же не рекомендую так делать. Исходники и платы доступны в конце статьи, фьюзы такие:
Светильники счастливо работают впятером, но на достигнутом остановиться не удалось и для более удобной настройки и выполнения ряда других функций был изготовлен вот такой проводной пульт управления:
Схема вот такая и состоит из двух частей. Основная плата:
Дополнительная плата с часами реального времени и силовым реле:
Схемотехника во многом похожа на контроллеры светильников, добавлены только органы управления и индикации, силовое реле (для отключения питания светильников) и модуль RTC (для работы по расписанию). Вместо U7 для питания пульта использован модуль DC/DC на TL2575-05, поскольку LM7805 было бы в данном случае жарковато… Схему модуля можно посмотреть здесь . Фактически, пульт выполняет функцию мастера. Программы все те же самые, логика работы тоже. Дополнительно реализована функция работы по расписанию (включение и выключение), кроме того, пульт выполняет функцию инжектора питания. Основной режим работы пульта – показ текущего времени.
По нажатию на кнопку «Mode» попадаем в меню выбора программ («Р» от 0 до 9)
Повторное нажатие – выбор скорости текущей программы («S» от 1 до 99).
Если программа отлична от 0, горит десятичная точка в последнем разряде индикатора. После истечения времени неактивности (примерно 10с) происходит возврат к основному экрану.
Все нажатия на кнопки озвучиваются. При удержании кнопки «Mode» до первого звукового сигнала попадаем в меню настройки текущего времени (кнопки «+» и «-» увеличивают значение часов и минут соответственно), внешне экран не отличается от основного режима показа времени. При удержании кнопки «Mode» до второго звукового сигнала попадаем в меню настройки времени включения «on:xx» (c точностью до часа).
При удержании кнопки «Mode» до третьего звукового сигнала попадаем в меню настройки времени выключения «oF:xx» (c точностью до часа). При удержании кнопки «Mode» до четвертого звукового сигнала попадаем в меню настройки количества подключенных ведомых «SL0x» от 1 до 7.
Если текущая рабочая программа 0, то питание от ведомых физически отключается при помощи реле. Если установленные значения часов включения и выключения не равны друг другу, то осуществляется работа по расписанию, т.е. включение и выключение системы. В качестве RTC можно установить DS1307 или МТ41Т8хS (потребуется изменение прошивки), в итоге применена DS1307. Фьюзы такие же, как и для светильников. Конструктивно все оформлено в пластиковом корпусе от какого-то адаптера питания, платы размещены в два этажа:
Вся система на тестовом прогоне:
Питание осуществляется от AC/DC на 20В 3А, а если говорить попроще – то от ноутбучного блока питания, который остался за кадром. Ну и видеоролик работы всего этого дела на последок, сначала тестовое включение, а потом и в боевых условиях (особенности цифровой видеозаписи искажают картину, глазом это все воспринимается совершенно иначе)
Вопросы, как всегда, в Форум .
Файлы: Все вопросы в Форум.
|
|
|||||||||||||||
|
||||