Световые эффекты и световая иллюминация: без них уже не обходится, практически, ни один праздник. Поэтому в Интернете, в периодической печати появляются описания новых конструкций с новыми сценариями световой иллюминации, с разной схемотехникой на разной элементной базе. Подобные устройства особенно востребованы в новогодние праздники. Применение 8-разрядных микроконтроллеров в них вполне обосновано и оправдано. Структурная схема устройства световых эффектов представлена на рисунке 1.
Устройство состоит из семи функциональных узлов: платы клавиатуры, пяти контроллеров световых эффектов (далее контроллеры №1…№5) и контроллера управления яркостью. Принципиальная схема одного контроллера (контроллера №1) представлена на рисунке 2.
У контроллеров №1…№5 одинаковая принципиальная схема, они идентичны по конструкции и алгоритму работы. Принципиальная схема контроллера управления яркостью (далее контроллер яркости) представлена на рисунке 3. А на рисунке 4 представлена принципиальная схема платы клавиатуры.
Соединители Х2…Х6 платы клавиатуры подключаются к соединителям Х1 контроллеров №1…№5 соответственно. Соединитель Х7 платы клавиатуры подключается к соединителю Х1 контроллера яркости. Цепи соединителя Х2 контроллера яркости подключаются через соответствующий жгут к цепям соединителей Х2 контроллеров №1…№5.
Приводить конструкцию функцио-нальных узлов устройства здесь не имеет смысла.
Целесообразно, чтобы конструктивно контроллер №1 состоял из платы контроллера и восьми гирлянд. Интерфейс устройства включает в себя следующие элементы управления платы клавиатуры:
- галетный переключатель SA1;
- клавиатура (кнопки S1…S5);
- элементы управления контроллеров №1…№5 (индикаторы HG1, HG2);
- элементы управления контроллера яркости (индикаторы HG1, HG2, HL1).
Галетный переключатель SA1 платы клавиатуры типа ПГ2-12-6П8Н имеет шесть положений. Если SA1 установлен в положение «1», то клавиатура (кнопки S1…S5) подключены к контроллеру №1. В этом случае можно задать параметры светового эффекта для контроллера №1. Если же SA1 установлен в положение «2», то можно задать параметры для контроллера №2 и т.д. Если SA1 установлен в положение «6», то можно задать параметры контроллера яркости. Фактически, галетным переключателем SA2, клавиатура подключается к одному из шести устройств.
Пусть галетный переключатель SA1 платы клавиатуры установлен в положение «1». Кнопки S1…S5 подключены к контроллеру №1. В данном случае можно задавать для него параметры светового эффекта. Рассмотрим подробно его работу. Число, индицируемое на индикаторе HG1, определяет номер светового эффекта, исполняемого в устройстве. Число, индицируемое на индикаторе HG2, определяет относительную скорость переключения индикаторов в выбранном световом эффекте. Данное число может изменяться в пределах от 1 до 9 с шагом 1.
Кнопки клавиатуры имеют следующее назначение:
- S1 (D) – инкремент числа, индицируемого на индикаторе HG1 (выбор номера выполняемого светового эффекта), инкремент числа, индицируемого на индикаторе HG2 (увеличение скорости);
- S2 (Ñ) – декремент числа, индицируемого на индикаторе HG1 (выбор номера выполняемого светового эффекта), декремент числа, индицируемого на индикаторе HG2 (уменьшение скорости);
- S3 (С) – старт/стоп (после нажатия на данную кнопку устройство реализует световой эффект, индицируемый на индикаторе HG1, со скоростью переключения, индицируемой на индикаторе HG2);
- S4 (В) – включить/выключить индикаторы HL1…HL64 (после нажатия на данную кнопку включаются/выключаются все индикаторы, подключённые к контроллеру – данная опция необходима для проверки работоспособности всех индикаторов в устройстве);
- S5 (Р) – кнопка выбора режима работы кнопок S1 и S2, задание номера светового эффекта или задание скорости (при выборе номера светового эффекта у индикатора HG2 точка h выключена, при выборе режима задания скорости у индикатора HG2 точка h включена).
Световые эффекты, реализуемые контроллером №1, представлены в таблице.
Для описания световых эффектов введём следующие условные обозначения: индикатор HL1 – индикатор №1, индикатор HL2 – индикатор №2, индикатор HL64 – индикатор №64. Конструктивно индикаторы №1…№8 образуют собой гирлянду (далее – гирлянда №1), соответственно индикаторы №9…№16 образуют гирлянду №2 и т.д. Индикаторы №58…№64 – гирлянда №8. Считаем, что конструктивно все индикаторы в гирлянде расположены в один ряд. Применительно к ёлке: на левой стороне целесообразно разместить гирлянды с нечётными номерами, на правой – с чётными.
Алгоритм работы контроллера №1 следующий. Сразу после подачи питания устройство готово к работе. Номер исполняемого светового эффекта задаётся кнопками S1, S2 (точка h у индикатора HG2 выключена). Далее необходимо нажать кнопку S4 (В), при этом включится точка h в индикаторе HG2 дисплея. Кнопками S1, S2 нужно задать скорость переключения индикаторов в выбранном световом эффекте. Исполнение эффекта начинается после нажатия кнопки S3 (С). Для исполнения другого светового эффекта (или для изменения скорости переключения индикаторов в исполняемом) необходимо нажать кнопку S3 (С) (остановить исполняемый световой эффект). Далее необходимо выполнить описанные ранее операции по установке номера светового эффекта и заданию скорости переключения индикаторов.
На семисегментном индикаторе HG1 буква B и цифра 8, а также буква D и цифра 0, индицируются одинаково. Поэтому при индицировании букв B и D на семисегментном индикаторе HG1 включается точка h.
Рассмотрим основные, функциональные узлы принципиальной схемы устройства. Рабочая частота микроконтроллера DD2 задаётся генератором с внешним резонатором ZQ1 на 10 МГц. С порта РВ микроконтроллер DD2 управляет индикаторами гирлянд №1… №8. Соответственно, гирлянды управляются ключами, выполненными на транзисторах VT3…VT10. Данные ключи управляются с выводов синхронного регистра DD1и выводов 9 и 11 микроконтроллера DD2. Резисторы R3…R10 – токоограничительные для индикаторов HL1…HL64. Все индикаторы в контроллере №1 работают в режиме динамической индикации. Коды для включения индикаторов при функционировании динамической индикации поступают на вход порта PВ микроконтроллера DD2. Регистр DD1 управляет ключами VT1…VT8. Для функционирования клавиатуры задействован вывод 8 микроконтроллера DD2. Питающее напряжение поступает на контроллер с соединителя Х1. Конденсатор С5 фильтрует пульсации в цепи питания +5 В. Сразу после подачи питания на выводе 1 микроконтроллера DD2 через RC-цепь (резистор R2, конденсатор С3) формируется сигнал системного аппаратного сброса микроконтроллера. При инициализации во все разряды портов микроконтроллера DD1 записываются логические 1. Ключи на транзисторах VT3…VT10 закрыты, индикаторы HL1…HL64 выключены.
Программное обеспечение микроконтроллера DD2 реализует алгоритм работы задаваемых световых эффектов в режиме динамической индикации. Задача по формированию временно¢го интервала для включения индикаторов каждой гирлянды (или интервал переключения индикаторов и гирлянд) решена с помощью прерываний от таймера Т/C1 и счётчиков на регистрах r8 (sek1) и r13 (min1). Таймер Т/C1 формирует запрос на прерывание. Счётчики на регистрах r8 и r13 подсчитывают количество, устанавливается необходимый флаг (нулевой разряд регистра r19 (flo)). Скорость переключения индикаторов регулируется путём изменения числа speed, загружаемого в регистр r13 (min1).
Программа состоит из трёх основных частей: процедуры инициализации, основной программы, работающей в замкнутом цикле, и подпрограммы обработки прерывания от таймера Т/C1. В подпрограмме обработки прерывания осуществляется формирование временно¢го интервала для включения индикаторов, опрос клавиатуры, работа динамической индикации, а также происходит выполнение всех световых эффектов, реализованных в устройстве. В памяти данных микроконтроллера DD1 с адреса 60Н по 69Н организован буфер отображения для динамической индикации. По адресу 60Н размещён байт номера отображаемого светового эффекта. По адресу 61Н размещено число, задающее скорость переключения. Данные байты после перекодировки, в режиме динамической индикации, выводятся на дисплей устройства. 62Н…69Н – адреса, где хранится текущее значение для индикаторов HL1…HL64 (гирлянд №1…№8). Доступ к данным в адресном пространстве с помощью адресных указателей следующий. Адреса гирлянд №1…№8 и байты номеров светового эффекта и скорости загружаются в Y-регистр во фрагментах программы, где происходит выполнение светового эффекта. Z-регистр задействован только в фрагменте динамической индикации. Разработанная программа на ассемблере занимает порядка 2 килобайт памяти программ (flash-память программ) микроконтроллера, то есть память заполнена полностью.
В контроллерах №1…№5 использованы резисторы С2-33Н-0.125, но подойдут любые другие с такой же мощностью рассеивания и погрешностью 5%. Конденсаторы С1…С3, С5 и С6 – типа К10-17а, С4 – типа К50-35. Конденсаторы С5 устанавливаются между цепью +5 В и общим проводником микроконтроллера DD2. Конденсаторы С6 устанавливаются между цепью +5 В и общим проводником регистра DD1. Семисегментные индикаторы HG1 и HG2 – типа HDSP-F501. Индикаторы HL1…HL64 – типа КИПД40С20-Л4-П7. Для гирлянд можно подобрать абсолютно любые индикаторы, но желательно с Iпр = 10 мА.
Рассмотрим работу контроллера яркости (см. рис. 3). Он предназначен для подачи питающего напряжения и управления им на гирлянды контроллеров световых эффектов. Контроллер имеет следующие технические характеристики:
- 99 шагов регулирования;
- диапазон регулирования уровня сигнала 25 дБ;
- напряжение питания 5 В;
- переменная составляющая выходного напряжения (пульсация) ≈50 мВ.
Как уже отмечалось, для задания параметров в нём необходимо галетный переключатель SA1 платы клавиатуры установить в положение «6». В контроллере яркости есть три основных функциональных узла. Это генератор ШИМ-сигнала, выполненный на базе микроконтроллера DD1, сглаживающий LC-фильтр и усилительный каскад, выполненный на транзисторе VT1. Индикатор HL1 управляется с вывода 11 микроконтроллера DD1. С порта В микроконтроллер DD1 управляет клавиатурой (кнопки S1…S3 платы клавиатуры) и динамической индикацией. Динамическая индикация собрана на транзисторах VT1, VT2 и цифровых индикаторах HG1 и HG2. Резисторы R4…R11 – токоограничительные для сегментов указанных индикаторов. Коды для включения индикаторов, при функционировании динамической индикации, поступают на порт В микроконтроллера DD1. Для функционирования клавиатуры задействован вывод 6 микроконтроллера DD1. ШИМ-сигнал с вывода 15 микроконтроллера DD1 через резистор R12 поступает на LC-фильтр (L1, C5) и далее на базу эмиттерного повторителя (транзистор VT1).
В интерфейс управления контроллера яркости входят клавиатура (кнопки S1…S3 платы клавиатуры), индикатор HL1 и индикаторы HG1 и HG2. На индикаторах HG1 и HG2 индицируется относительное значение выходного напряжения (число от 0 до 99).
Кнопки клавиатуры имеют следующее назначение:
- S1 (D) – увеличение на единицу относительного значения выходного напряжения (в %) (при удержании данной кнопки в нажатом состоянии более двух секунд значение выходного напряжения, индицируемое на дисплее, увеличивается на пять единиц за одну секунду;
- S2 (Ñ) – уменьшение на единицу относительного значения выходного напряжения (в %) (при удержании данной кнопки в нажатом состоянии более двух секунд значение выходного напряжения, индицируемое на дисплее, уменьшается на пять единиц за одну секунду;
- S3 (C) – выключение контроллера яркости (при этом выключается индикатор HL1, а выходной сигнал контроллера яркости (контакт 1, соединитель Х2) принимает значение напряжения, равное нулю).
Сразу после подачи питания инициализируются регистры, счётчики, стек, таймеры Т/С0 и Т/С1, сторожевой таймер, порты ввода/вывода. При инициализации индикатор HL1 отключён. На индикаторах HG1 и HG2 индицируются нули. Для перехода в рабочий режим необходимо кнопками S1 (D) и S2 (Ñ) установить необходимое значение выходного напряжения. При значении выходного напряжения, отличном от нуля, будет включён индикатор HL1. Для выключения необходимо нажать на кнопку S3 (С). При этом на выходе установится нулевое значение выходного напряжения.
Программа состоит из трёх основных частей: инициализации, основной программы, работающей в замкнутом цикле, и подпрограммы обработки прерывания от таймера T/C0 (соответственно, метки INIT, SE1, S0). В основной программе происходит инкремент и декремент заданного значения ШИМ (заданного значения выходного напряжения). В подпрограмме обработки прерывания от таймера T/C0 происходит опрос клавиатуры и перекодировка двоичного числа значений времени в код для отображения информации на семисегментных индикаторах и отображения разрядов в динамической индикации. В памяти данных микроконтроллера с адреса $60 по $61 организован буфер отображения для динамической индикации. Каждый байт из функциональной группы в цикле, в подпрограмме обработки прерывания таймера T/C0 (метка S0), после перекодировки выводится в порт В микроконтроллера.
При нажатии на кнопку S1 относительное значение выходного напряжения на дисплее увеличивается на единицу. Одновременно запускается счётчик, организованный на R2, формирующий интервал в две секунды. Если кнопка удерживается более двух секунд, значение, индицируемое на дисплее, увеличивается на пять единиц за одну секунду. Интервал времени, в течения которого происходит увеличение времени, организован в R1. При отпускании кнопки S1 все указанные счётчики обнуляются.
Совершенно аналогичным образом организована работа кнопки S2, нужной для уменьшения относительного значения выходного напряжения, индицируемого на дисплее. При нажатии на кнопку S2 текущее значение, индицируемое на дисплее, уменьшается на единицу. Если кнопка удерживается более двух секунд, значение, индицируемое на дисплее, уменьшается на пять единиц за одну секунду. Счётчики приведённого алгоритма для кнопки S2 организованы, соответственно, в регистрах R3 и R4. В регистре R22 осуществляется выбор разрядов в динамической индикации. При инициализации в R22 заносится число 0b00000001. При каждом обращении к подпрограмме обработки прерывания единица сдвигается влево, подготавливая включение следующего разряда. В подпрограмме также осуществляется проверка: не вышла ли единица за пределы разрядной сетки, то есть после числа 0b00000100 в R22 загружается снова 0b00000001. Все флаги, которые используются при работе программы, выполнены на регистрах R24 и R25. Назначение каждого флага приведено в тексте программы. Интерфейс управления контроллера яркости, выполненный на макетной плате, представлен на рисунке 5.
Контроллер яркости фактически собран из тех же элементов, что и контроллеры №1…№5. Применены конденсаторы С1…С3, С6 типа К10-17а. Конденсатор С4 – типа К50-35, конденсатор С5 – типа К50-24. Конденсатор С6 устанавливаются между цепью +5 В и общим проводником микроконтроллера DD1. В схемах применены резисторы типа С2-33Н-0.125. Дроссель L1 выполнен на магнитопроводе типа МП140. Типоразмер магнитопровода – К28×16×9. Обмотка дросселя содержит 150 витков провода ПЭТВ-2 0,28. Семисегментные индикаторы HG1 и HG2 – типа HDSP-F501. Индикатор HL1 – типа ЗЛ341К красного цвета, можно подобрать абсолютно любой с Iпр = 10 мА.
Литература
- www.atmel.com.
- Шишкин С. «Бегущие огни» на микроконтроллере AT89C4051. Радио. 2010. №11. С. 46–48.
- Голубцов М.С., Кириченкова А.В. Микроконтроллеры AVR: от простого к сложному. Изд. 2-е испр. и доп. М. СОЛОН-Пресс. 2005. С. 304.
Если вам понравился материал, кликните значок - вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал - не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!