Реле времени на микроконтроллере, девять каналов (ATTiny3213)

В публикации представлена схема 9-канального реле времени, каналы которого выполнены на микроконтроллерах ATTINY2313. Это многоканальное реле времени (далее реле времени), которое управляет девятью нагрузками.

Количество независимых каналов - 9. Нагрузки, подключенные к каналам, имеют свой временной интервал задержки, относительно момента нажатия кнопки (СТАРТ), и свой рабочий интервал. В общем случае все интервалы могут быть разными.

Диаграмма работы

Временная диаграмма работы устройства приведена на рис. 1, там представлена работа всех 9-ти каналов устройства. Т11, Т21, Т31... Т91 - интервалы временных задержек (интервалы выключения) каналов №1-№9. Т12, Т22, Т32...Т92 - рабочие интервалы (интервалы включения) каналов №1-№9.

Диаграмма работа всех 9-ти каналов устройства

Рис. 1. Диаграмма работа всех 9-ти каналов устройства.

Вышеуказанные интервалы программируются заранее. Предусмотрена, независимая работа каждого канала. Все каналы запускаются одновременно от кнопки ОБЩ. СТАРТ.

Принципиальная схема

Конструктивно, реле времени состоит из десяти основных частей: платы контроллера №1, платы контроллера №2... платы контроллера №9 и платы клавиатуры. Принципиальная схема платы контроллера №1 представлена на рис. 2.

Платы контроллеров №1... №9 - идентичны по схеме, конструкции и алгоритму работы. Принципиальная схема платы клавиатуры представлена на рис. 3. Соединители Х2...Х10 платы клавиатуры подключаются к соединителям Х2 плат контроллеров.

Интерфейс устройства включает в себя элементы управления платы клавиатуры: модульные переключатели SA1, SA2 клавиатура (кнопки S1...S7). А так же элементы контроля и управления плат контроллеров №1...№9: индикаторы HL1, HL2, блок индикации (дисплей) из трех цифровых семисегментных индикаторах HG1...HG3.

Модульный переключатель SA2 платы клавиатуры имеет девять модулей: ”1”, »2” ”Q” SA2 - модульный переключатель с зависимой фиксацией. Это значит включение одного из модулей (любого из девяти) вызывает выключение ранее включенного модуля.

Если в SA2 включен модуль ”1”, то клавиатура (кнопки S1...S7) подключена только к плате контроллера №1. Если в SA2 включен модуль ”2”, то клавиатура подключена только к плате контроллера №2 и т.д. Модульный переключатель SA1 со стартовой фиксацией. Это значит, что включенный модуль не фиксируется, и после снятия усилия нажатая кнопка возвращается в исходное состояние.

Принципиальная схема платы контроллера N1 для реле времени

Рис. 2. Принципиальная схема платы контроллера N1 для реле времени.

Пусть в переключателе SA2 включен модуль ”1”. Рассмотрим работу контроллера №1. Канал управления нагрузкой собран на транзисторе VT1. Канал управляется с вывода 11 DD1. С порта РВ DD1 управляет клавиатурой (кнопки S1 ...S9) и динамической индикацией.

Динамическая индикация собрана на транзисторах VT2...VT4, цифровых семисегментных индикаторах HG1...HG3. Резисторы R6...R13 токоограничительные для сегментов индикаторов HG1...HG3. Коды для включения индикаторов HG1...HG3 при функционировании динамической индикации поступают на вход РВ микроконтроллера DD1. Для функционирования клавиатуры задействован вывод 7 микроконтроллера DD1.

Элементы интерфейса управления и контроля платы контроллера №1 имеют следующее назначение:

  • S1 ( A ) - увеличение на единицу значения, индицируемого на дисплее, при установки времени в минутах (секундах), при удержании данной кнопки в нажатом состоянии более 5 секунд, значение времени индицируемое на дисплее увеличивается на 5 единиц за 1 секунду;
  • S2 ( V ) - уменьшение на единицу значения, индицируемого на дисплее, при установки времени в минутах (секундах), соответственно при удержании данной кнопки в нажатом состоянии более 5 секунд, значение времени индицируемое на дисплее уменьшается на 5 единиц за 1 секунду;
  • S3 ( С) - (Старт/стоп). Кнопка запуска/останова устройства в режиме №2. В рабочем цикле (который периодически повторяется) идет обратный отсчет заданных интервалов времени Т1 и Т2, с первым нажатием данной кнопки нагрузка подключается к сетевому напряжению, идет обратный отсчет заданного интервала Т1.
  • S4 ( Р) - (Режим). Кнопка выбора режима работы: режим №1 или режим №2.
  • S5 ( В1) - (Выбор). Кнопка выбора интервалов Т1 или Т2.
  • S6 (В2) - (Выбор ) Кнопка выбора временного режима работы: минуты или секунды, выключения нагрузки.
  • S7 (В3) - (Вкл.,/Выкл). Кнопка принудительного (ручного) включения/выключения нагрузки, вне зависимости от того, в каком режиме находится устройство, каждое нажатие данной кнопки меняет состояние нагрузки на противоположное.
  • SA1 (ОБЩ. СТАРТ) - одновременный запуск в устройстве всех плат контроллеров №1... №9.
  • HL1 - индикатор режима работы устройства: HL1 горит -режим №2, НИ погашен -режим №1. (назначение режимов будет приведено ниже).
  • HL2 - индикатор интервалов Т1 и Т2. Если HL2 горит, то на дисплее индицируется интервал Т1, Если HL2 погашен, то на дисплее индицируется интервал Т2.

Принципиальная схема платы клавиатуры для девятиканального реле времени

Рис. 3. Принципиальная схема платы клавиатуры для девятиканального реле времени.

Разряды индикации интерфейса имеют следующее назначение:

  • 1 разряд (индикатор HG3) отображает "единицы минут" ("единицы секунд") интервалов Т1 и Т2;
  • 2 разряд (индикатор HG2) отображает "десятки минут" ("десятки секунд") интервалов Т1 и Т2;
  • 3 разряд (индикатор HG1) отображает "сотни минут" ("сотни секунд") интервалов Т1 и Т2.

Чтобы "запустить" плату контроллера №1, необходимо задать интервалы T11, Т12, перевести его в режим №2 и нажать кнопку S3 ( С). При независимой работе каналов нужно задать соответствующие интервалы и нажать кнопку S3 ( С). Для запуска всего устройства необходимо задать интервалы T11, Т21, Т31...Т91, Т12, Т22, Т32...Т92 и одновременно нажать два модуля в переключателе SA1 (ОБЩ. СТАРТ). Сразу после подачи питания на выводе 1 микроконтроллера DD1 через RC-цепь (резистор R8, конденсатор С1) формируется сигнал системного аппаратного сброса микроконтроллера DD1. Инициализируются регистры, счетчики, стек, таймер Т/C1, сторожевой таймер, порты ввода/вывода.

При инициализации на выводе 11 микроконтроллера DD1 устанавливается - лог.1. На индикаторах HG1...HG3 индицируются нули. Индикатор HL1 - погашен.

Индикатор HL2 - горит. Для плат контроллеров №1...№9 предусмотрено два режима работы: режим задания параметров - режим №1 и рабочий режим - режим № 2. В режиме № 1 (режим задания параметров) с клавиатуры задаются значения интервалов включения Т1 и выключения Т2. В режиме №1 запрещен счет времени.

На выводе 11 микроконтроллера DD1 устанавливается - лог.1 Интервалы Т11 и Т12, могут быть заданы как в минутах так и в секундах в диапазоне от 999 до 1, с дискретностью 1. Визуально Т11 и Т12 поочередно, можно контролировать на трех разрядном дисплее. В режиме № 2 (рабочий режим) идет обратный отсчет заданных интервалов Т1 и Т2 в рабочем цикле.

В интервале времени Т11 на выводе 11 микроконтроллера DD1 устанавливается - лог.1 (нагрузка отключена). В интервал времени Т12 на выводе 11 DD1 устанавливается - лог.0 (нагрузка включена). Периодически, один раз в секунду, мигает точка h индикатора HG3. Подробнее рабочий цикл для платы контроллера №1 будет приведен дальше.

Задача по формирование точных временных интервалов длительностью 1 с, решена с помощью прерываний от таймера Т/C1, и счетчика на регистре R20. Счетчик на регистре R21 формирует интервал в одну минуту. Таймер Т/C1 формирует запрос на прерывание через каждые примерно 3900 мкс.

Счетчики на данных регистрах, подсчитывают количество прерываний и через каждую минуту, устанавливается флаг (PUSK), и текущее время декрементируется. Через каждые я 3900 мкс происходит отображения разрядов в динамической индикации устройства.

Программа для микроконтроллера

Программа состоит из трех основных частей: инициализации, основной программы, работающей в замкнутом цикле и подпрограммы обработки прерывания от таймера Т/C1 (соответственно метки INIT, SE1, ТІМ0). В основной программе происходит инкремент, декремент заданного значения времени.

В подпрограмме обработки прерывания осуществляется счет одной секунды, опрос клавиатуры, включение индикаторов HL1 и HL2 и перекодировка двоичного числа значений времени в код для отображения на семисегментнных индикаторах. В памяти данных микроконтроллера с адреса $060 по $065 организован буфер отображения для динамической индикации.

По адресам $060...$062 хранится текущее значение интервала Т1. Заданное значение интервала Т1 хранится по адресам $066...$068. Соответственно, по адресам $063. ..$065 хранится текущее значение интервала Т2. Заданное значение интервала Т2 хранится по адресам $069...$06В. Текущие значения интервалов Т1 и Т2 с адресов $060. ..$062 и $063...$065 (значения которые задаются с помощью кнопок SI, S2) переписываются соответственно по адресам $066...$068 и $069...$06В, сразу после нажатия на кнопку S3 (С).

При нажатии на кнопку S1 текущее значение времени на дисплее увеличивается на единицу и устанавливается флаг, разрешающий увеличивать текущее значение времени, индицируемого на дисплее. Одновременно запускается счетчик, выполненный на регистре R1, формирующий интервал 5 сек. Если кнопка удерживается более 5 секунд, значение времени, индицируемое на дисплее увеличивается на 5 единиц за 1 секунду. Интервал времени в течении которого происходит увеличение времени организован на регистре R0.

При отпускании кнопки S1 все вышеуказанные счетчики обнуляются. Совершенно аналогичным образом организована работа кнопки S2 для уменьшения текущего значения времени, индицируемого на дисплее. При нажатии на кнопку S2 текущее значение времени на дисплее уменьшается на единицу.

Если кнопка удерживается более 5 секунд, значение времени, индицируемое на дисплее уменьшается на 5 единиц за 1 секунду. Счетчики приведенного алгоритма для кнопки S2 организованы соответственно на регистрах R3 и R2. Вышеуказанный алгоритм работы кнопок S1 и S2 в устройстве применим как к интервалу Т1, так и к Т2.

На R22 (catod) организован регистр знакоместа. При инициализации в регистр R1 загружается число 1. в Y-регистр загружается начальный адрес буфера отображения $060. При этом на дисплее будет включен разряд "единицы минут" ("единицы секунд").

При каждом обращении к подпрограмме обработки прерывания содержимое регистра R22 сдвигается влево на один разряд, a Y - регистр инкрементируется. Понятно, что как только 1 будет в третьем разряде регистра R22, то все разряды будут выбраны, при этом опять в R22 нужно загрузить единицу, а в Y-регистр начальный адрес буфера отображения.

В процессе обработке подпрограммы прерывания происходит опрос клавиатуры. Младшая тетрада выводимого при этом в порт В микроконтроллера байта для клавиатуры представляет собой код "бегущий ноль". После записи данного байта в порт В, микроконтроллер DD1 анализирует сигнал на входе 7 (PD3).

В рамках вышеуказанной подпрограммы, при любой нажатой кнопки, из восьми имеющихся в устройстве, на входе 7 микроконтроллера присутствует лог. 0. Таким образом, каждая кнопка клавиатуры "привязана" к "своему" разряду в младшей тетраде байта данных, выводимого в порт В микроконтроллера, для опроса клавиатуры.

Алгоритм работы платы контроллера №1 в рабочем цикле (в режиме: секунды) следующий. После подачи питания необходимо с клавиатуры в режиме №1 задать необходимые параметры работы устройства - интервалы включения Т1 и выключения Т2. При установке интервалов Т1 и Т2 в устройстве, как уже упоминалось выше, запрещается отсчет текущего времени.

Данные параметры индицируются на дисплее (индикаторы HG1... HG3). Далее необходимо перейти в режим №2. Устройство переходит в рабочий цикл сразу после нажатия на кнопку "Старт/стоп" (S3) в режиме №2, при этом индикатор НИ -загорается.

Периодически, один раз в секунду, мигает точка h индикатора HG3. Микроконтроллер DD1 устанавливает лог. 0 на выходе 11 (включение нагрузки). Время (интервал включения Т1) индицируемое на дисплее декрементируется с каждой секундой.

Как только оно станет равно нулевому значению, микроконтроллер устанавливает лог. 1 на выходе б (выключение нагрузки). Индикатор HL1 - гаснет. Заданное значение Т1 переписывается с адресов $066. ..$068 на адреса $060...$062.

Теперь дисплей индицирует первоначальное заданное значение времени равное интервалу выключения Т2, которое хранится по адресам $063...$065. Нагрузка будет отключена в течении времени равному интервалу выключения. Теперь, время индицируемое на дисплее (Т2) декрементируется с каждой секундой.

И как только оно станет равно нулевому значению микроконтроллер устанавливает лог. 0 на выходе 11. (включение нагрузки). Индикатор НИ - загорается. Заданное значение Т2 переписывается с адресов $0б9...$0бВ на адреса $063...$065. На дисплее снова индицирует первоначальное заданное значение времени равное интервалу включения Т1.

Рабочий цикл завершен. Устройство работает совершенно аналогично в режиме: минуты. В данном режиме интервалы Т1 и Т2 декрементируются с каждой минутой. Но точка h индикатора HG3 все равно мигает периодически, один раз в секунду.

Разработанная программа на ассемблере занимает порядка 0,54 КБайт памяти программ микроконтроллера.

Детали

Потребление тока по каналу напряжения:+5 В, не более 100 мА. На плате контроллера применены следующие элементы. Конденсаторы C1, С2, С4..С6 типа К10-17а. Конденсатор С3 типа К50-35. Применены резисторы типа С2-ЗЗН-0.125.

Индикаторы HG1...HG3 зеленого цвета, типа HDSP-F501. Версия программы Rele3.asm реализует рабочий цикл, временные диаграммы которого представлены на рис. 1.

Версия программы Rele2.asm реализует алгоритм работы, где рабочий цикл представленный на рис. 1 периодически повторяется во времени. Устройство не требует никакой настройки и отладки.

Количество независимых каналов в устройстве можно увеличить, если на плате клавиатуры для подключения кнопок S1...S7 задействовать переключатели подобные П2К (с количеством групп коммутации в модуле 8, фиксация зависимая), но с большим количеством модулей.

Прошивка для микроконтроллера - Скачать (59 кБ).

Шишкин С. РК-2017-05.

1 123 На микроконтроллерах
avr микроконтроллер реле времени таймер
cashback