Структурная схема устройства световых эффектов представлена на рисунке 1.
В качестве канала связи применён интерфейс RS-485. Это широко распространённый высокоскоростной и помехоустойчивый промышленный последовательный интерфейс передачи данных. В настоящее время на рынке представлены сотни различных типов драйверов, на которых можно его реализовать. В устройстве задействован драйвер MAX487CPA. Он позволяет подключить в сеть до 128 станций (устройств).
В состав устройства входят пульт и 15 контроллеров световых эффектов № 1…№ 15, подключённые в сеть RS-485. Контроллеры идентичны по конструкции и схемотехнике. Каждый из них имеет в сети свой адрес, зашитый в память программ микроконтроллера, поэтому программное обеспечение у них разное. Принципиальная схема контроллера световых эффектов представлена на рисунке 2.
Принципиальная схема пульта управления представлена на рисунке 3.
В устройстве количество подключаемых контроллеров к пульту ограничено только тем, что на его дисплее для задания адреса предусмотрен один разряд (7-сегментный индикатор). Таким образом, если для задания адреса задействовать два разряда, то количество подключаемых контроллеров можно довести до 127, доработав при этом соответствующим образом программное обеспечение контроллера.
Не будем останавливаться на конструкции функциональных узлов устройства, а перейдём к схемотехнике и программному обеспечению. Интерфейс управления (ИУ) устройства состоит из ИУ контроллеров и ИУ пульта. Элементы интерфейса контроллера: клавиатура (кнопки S1…S5), индикаторы HG1, HG2 (см. рис. 2); элементы интерфейса пульта: индикаторы HG1…HG3, клавиатура (кнопки S1…S5) (см. рис. 3).
Рассмотрим алгоритм работы контроллера № 1. Число, индицируемое на индикаторе HG1, определяет номер светового эффекта, исполняемого в устройстве. Число, индицируемое на индикаторе HG2, определяет относительную скорость переключения индикаторов в выбранном световом эффекте; данное число может изменяться в пределах от 1 до 8 с шагом 1.
Кнопки клавиатуры имеют следующее назначение:
- S1 (Δ) – инкремент числа, индицируемого на индикаторе HG1 (выбор номера выполняемого светового эффекта); инкремент числа, индицируемого на индикаторе HG2 (увеличение скорости);
- S2 (∇) – декремент числа, индицируемого на индикаторе HG1 (выбор номера выполняемого светового эффекта); декремент числа, индицируемого на индикаторе HG2 (уменьшение скорости);
- S3 (С) – старт/стоп (после нажатия на данную кнопку устройство реализует световой эффект, индицируемый на индикаторе HG1, со скоростью переключения, индицируемой на индикаторе HG2);
- S4 (В) – включить/выключить индикаторы HL1…HL64 (после нажатия на данную кнопку включаются/выключаются все индикаторы, подключённые к контроллеру. Данная опция необходима для проверки работоспособности индикаторов в устройстве);
- S5 (Р) – кнопка выбора режима работы кнопок S1, S2 – задание номера светового эффекта или задание скорости (при выборе номера светового эффекта точка h индикатора HG2 выключается, при выборе режима задания скорости – включается).
Световые эффекты, реализуемые контроллером № 1, аналогичны описанным в [1]. Конструктивно индикаторы HL1…HL8 образуют собой гирлянду (гирлянда № 1) – соответственно, индикаторы HL9…HL16 образуют гирлянду № 2 и т.д. Индикаторы HL58…HL64 – гирлянда № 8. Считаем также, что конструктивно все индикаторы в гирлянде расположены в один ряд.
Алгоритм работы контроллера № 1 следующий. Сразу после подачи питания устройство готово к работе. Номер исполняемого светового эффекта задаётся кнопками S1, S2 (точка h индикатора HG2 выключена). Далее необходимо нажать кнопку S4 (В) – при этом включится точка h в индикаторе HG2 дисплея. Кнопками S1, S2 нужно задать скорость переключения индикаторов в выбранном световом эффекте. Исполнение эффекта начинается после нажатия кнопки S3 (С). Для исполнения другого светового эффекта (или для изменения скорости переключения индикаторов в исполняемом) необходимо нажать кнопку S3 (С) (остановить исполняемый световой эффект). Далее следует выполнить вышеуказанные операции по установке номера светового эффекта и задания скорости переключения индикаторов. На 7-сегментном индикаторе HG1 буква B и цифра 8, а также буква D и цифра 0 индицируются одинаково, поэтому при индицировании букв B и D на 7-сегментном индикаторе HG1 включается точка h.
С порта РВ микроконтроллер DD2 управляет индикаторами гирлянд № 1…№ 8. Сами гирлянды управляются ключами, выполненными на транзисторах VT3…VT10. Данные ключи управляются с выводов синхронного регистра DD1 и выводов 9, 11 микроконтроллера DD2. Резисторы R3…R10 – токоограничительные для индикаторов HL1…HL64. Все индикаторы в контроллере работают в режиме динамической индикации. Коды для включения индикаторов при функционировании динамической индикации поступают на вход порта PВ микроконтроллера DD2. Регистр DD1 управляет ключами VT1…VT8. Для функционирования клавиатуры задействован вывод 8 микроконтроллера DD2. Питающее напряжение поступает на контроллер с соединителя Х2. Конденсатор С5 фильтрует пульсации в цепи питания +5 В. При инициализации во все разряды портов микроконтроллера DD1 записывается лог 1. Ключи на транзисторах VT3…VT10 закрыты, индикаторы HL1…HL64 выключены.
Программное обеспечение микроконтроллера DD2 обеспечивает реализацию алгоритма работы задаваемых световых эффектов в режиме динамической индикации с заданной скоростью переключения гирлянд. Задача по формированию временно¢го интервала для включения индикаторов на каждой гирлянде (или интервала переключения индикаторов и гирлянд) решена с помощью прерываний от таймера Т/C1 и счётчиков на регистрах r8 (sek1) и r13 (min1). Таймер Т/C1 формирует запрос на прерывание, счётчики на регистрах r8 и r13 подсчитывают количество прерываний, и устанавливается необходимый флаг (нулевой разряд регистра r19 (flo). Скорость переключения индикаторов меняется путём изменения числа speed, загружаемого в регистр r13 (min1).
Программа состоит из процедуры инициализации, основной программы, работающей в замкнутом цикле, и подпрограммы обработки прерывания от таймера Т/C1 и прерывания по завершению приёма USART. При переходе на метку Reset инициализируются стек, USART, таймер, порты, а также флаги и переменные, используемые в программе.
В подпрограмме обработки прерывания осуществляются формирование временно¢го интервала для включения индикаторов, опрос клавиатуры, работа динамической индикации, а также происходит выполнение всех световых эффектов, реализованных в устройстве. В памяти данных микроконтроллера DD1 с адресов 60Н…69Н организован буфер отображения для динамической индикации. По адресу 60Н размещён байт номера отображаемого светового эффекта. По адресу 61Н размещено число, задающее скорость переключения индикаторов. Данные байты после перекодировки в режиме динамической индикации выводятся на дисплей устройства. 62Н…69Н – адреса, где хранятся текущие значения для индикаторов HL1…HL64 (гирлянд № 1…№ 8). Доступ к данным в адресном пространстве с помощью адресных указателей следующий: адреса гирлянд № 1…№ 8 и байты номеров светового эффекта и скорости загружаются в Y-регистр во фрагментах программы, где происходит выполнение светового эффекта. Z-регистр задействован только во фрагменте динамической индикации. При задании параметров с пульта в приёмнике из регистра UDR сообщение переписывается в буфер приёма на адреса 60Н…70Н.
Протокол односторонний – от пульта к контроллерам; пульт – передатчик, контроллеры – приёмники. Сообщения (протокол передачи) имеют следующий вид: А1 А2 А3 А4, А5 где А1 – байт адреса контроллера светового эффекта (число от 1 до F); А2 – байт номера светового эффекта (число от 0 до F, световые эффекты представлены в [1]); А3 – байт скорости переключения индикаторов (число от 1 до 8); А4 – байт включения/выключения заданного светового эффекта (число 1 в данном байте – включение выбранного светового эффекта, число 0 – выключение светового эффекта; в устройстве по умолчанию в нём установлено число 1); А5 – байт контрольной суммы CRC8 (этот байт нужен для проверки целостности принятой информации).
Фрагмент программы обработки буфера приёма для контроллера № 1 с адресом -1 приведён в листинге 1.
Фрагмент программы обработки прерывания от USART и вычисления СRC8 приведён в листинге 2.
Разработанная программа на ассемблере занимает порядка 1,9 Кбайт памяти программ (flash-память программ) микроконтроллера.
В контроллере использованы резисторы С2-33Н-0.125, однако подойдут любые другие с такой же мощностью рассеивания и погрешностью 5%. Конденсаторы С1…С6 типа К10-17а, С7 – типа К50-35. Конденсатор С4 устанавливается между цепью +5В и общим проводником микроконтроллера DD2. Конденсатор С5 устанавливается между цепью +5В и общим проводником регистра DD1. 7-сегментные индикаторы HG1, HG2 типа HDSP-F501. Индикаторы HL1…HL64 типа КИПД40С20-Л4-П7. Для гирлянд можно подобрать абсолютно любые индикаторы, желательно с Iпр=10 мА.
Рассмотрим алгоритм работы пульта. Кнопки его клавиатуры имеют следующее назначение:
- S1 (Δ) – инкремент числа выбранного разряда в 4-разрядном дисплее;
- S2 (∇) – декремент числа выбранного разряда в 4-разрядном дисплее;
- S3 (Р) – кнопка выбора разряда на дисплее для изменения числа в нём (выбранный разряд мигает с частотой 1 с);
- S4 (О) – кнопка обнуления показаний на дисплее (после нажатия на данную кнопку во всех разрядах дисплея индицируются нули);
- S5 (П) – кнопка отправки (передачи) набранного сообщения по последовательному каналу.
Функциональное назначение индикаторов HG1…HG3 на дисплее пульта соответствует назначению байт в сообщении:
- HG1 – индикатор адреса (число от 1 до F);
- HG2 – индикатор номера светового эффекта (число от 1 до F);
- HG3 – индикатор скорости переключения индикаторов в световом эффекте (число от 1 до 8).
Число, индицируемое на каждом из индикаторов HG1, HG2 кнопками S1 (Δ), S2 (∇), можно задать в диапазоне от 0 до F. В данном случае программа для пульта получается более простой и занимает меньше места в памяти программ микроконтроллера. Точно так же, как и в дисплее контроллера, на 7-сегментном индикаторе буква B и цифра 8, а также буква D и цифра 0 индицируются одинаково, поэтому при индицировании букв B и D в 7-сегментных индикаторах дисплея пульта включается точка h. Сразу после подачи питания пульт переходит в рабочий режим, на дисплее индицируется число 000. Затем с помощью клавиатуры задаётся и отправляется необходимое сообщение в выбранный контролер.
В программе пульта используются 3 прерывания: Reset, прерывание таймера Т1 и прерывание по событию «Регистр данных USART пуст». При переходе на метку Reset инициализируются стек, USART, таймер, порты, а также флаги и переменные, используемые в программе. В обработчике прерывания таймера Т1 осуществляются процедура опроса кнопок S1…S5, функционирование динамической индикации, перекодировка двоичного числа в код для отображения информации на 7-сегментных индикаторах устройства. В подпрограмме обработки прерывания по событию «Регистр данных USART пуст» происходит передача данных через передатчик USART. В ОЗУ микроконтроллера по адресам $61…$63 организован буфер отображения для динамической индикации. Разработанная программа на ассемблере занимает порядка 0,8 Кбайт памяти программ (flash-память программ) микроконтроллера.
Пульт и контроллеры собраны фактически из одних и тех же элементов. В пульте применены резисторы типа С2-33Н, но подойдут любые другие с такой же мощностью рассеивания и погрешностью 5%. Конденсаторы С1…С5 типа К10-17а, С6 – типа К50-35а. 7-сегментные индикаторы HG1…HG3 типа HDSP-F501, зелёного цвета. Элементную базу для клавиатуры и динамической индикации можно подобрать любую – главное, чтобы она отвечала требованиям для работы в составе функциональных узлов устройства. Для организации сети RS-485 можно применить кабель типа КИПЭП 1´2´0,60 ТУ16.К99-008-2001 или любой другой типа витая пара с волновым сопротивлением 120 Ом.
Тексты программ (для пульта и версии для контроллеров № 1…№ 15), а также hex-файлы представлены в дополнительных материалах на сайте журнала www.soel.ru.
Литература
-
Шишкин С. Устройство световых эффектов с управлением скоростью переключения и яркостью свечения. Современная электроника. 2017. № 7.