Основная функция устройства, о котором рассказывается в статье, - ограничение доступа, ограничение круга лиц, имеющих доступ к объекту (изделию, устройству и пр.). Это могут быть, например, ячейки банковского сейфа или составные части сложного электронного изделия, ограничение доступа к которым может быть осуществлено как по цепям питания, так и по цепям управления. Одноканальный кодовый замок, пожалуй, можно рассматривать как частный случай подобного электронного ключа. Программные и аппаратные ресурсы микроконтроллера ATtiny2313A позволяют разработать несложный многоканальный электронный ключ с простым и удобным интерфейсом. Секретный код, хранимый в энергонезависимой памяти (EEPROM) микроконтроллера, не "потеряется" при выключенном питании, его всегда легко перепрограммировать, используя при этом только аппаратные ресурсы самого микроконтроллера (т. е. устройства, выполненного на его основе).
Схема семиканального электронного ключа (далее ключа) представлена на рис. 1. Собран он на основе микроконтроллера ATtiny2313A (DD2) и восьмиразрядного синхронного регистра К555ИР23 (DD1). Рассмотрим его основные функциональные узлы. Рабочая частота микроконтроллера задана кварцевым резонатором ZQ1 на частоту 10 МГц. Порт РB управляет динамической индикацией, выполненной на цифровых семиэлементных индикаторах HG1-HG5 и транзисторах VT1-VT5. Резисторы R3-R10 - токоограничивающие для элементов индикаторов. Для функционирования клавиатуры задействована линия PD4 (вывод 8) порта PD микроконтроллера.
Рис. 1. Схема семиканального электронного ключа
Питающее напряжение +5 В поступает на устройство через вилку XP1. Конденсатор С6 фильтрует пульсации в цепи напряжения +5 В. Блокировочные конденсаторы C4, С5 включены в цепи питания регистра DD1 и микроконтроллера DD2 соответственно. Регистр DD1 задействован для увеличения числа выводных линий. В устройстве имеются семь независимых каналов. Для включения канала 1 нужно ввести секретный код № 1, канала 2 - секретный код № 2 и т. д. Выходные сигналы каналов снимают с контактов 1-7 розетки XS1. Сразу после подачи питания все сигналы имеют уровень лог. 1.
Интерфейс устройства включает в себя пятиразрядный дисплей из цифровых семиэлементных индикаторов HG1-HG5 и клавиатуру, содержащую кнопки SB1-SB8. На первых четырёх индикаторах отображается вводимый код, на пятом - номер активированного канала. Как видно из схемы, аппаратные ресурсы микроконтроллера задействованы полностью.
В алгоритме работы устройства можно выделить 14 режимов работы. Первые семь из них - режимы ввода рабочих кодов (№ 1 - кода № 1, № 2 - кода № 2 и т. д.). При совпадении рабочего (вводимого с клавиатуры) и секретного кодов на соответствующем номеру канала контакте розетки XS1 на 5 с устанавливается уровень лог 0 (сигнал "Канал N", где N - его номер). Режимы № 8-№ 14 - режимы ввода (записи) секретных кодов в EEPROM микроконтроллера (режим № 8 - для канала 1, режим № 9 - для канала 2 и т. д.).
Назначение кнопок клавиатуры:
SB1-SB6 - кнопки ввода кода доступа. Они обозначены цифрами от "1" до "6". Вводимый код индицируется на дисплее устройства;
SB7 ("К") - кнопка выбора каналов 1-7 (если выбран канал 1, на индикаторе HG5 отображается цифра "1", если выбран канал 2, - цифра "2" и т. д.);
SB8 ("З/Р") - кнопка выбора режима работы ("Запись" или "Рабочий режим") для каналов 1-7. В режиме "Запись" в четвёртом разряде дисплея (индикатор HG4) индицируется децимальная точка h.
Алгоритм работы устройства следующий. Сразу после включения питания цепь R1C1 формирует на входе микроконтроллера сигнал системного аппаратного сброса. На дисплее появляется число 00001. Микроконтроллер DD2 ждёт ввода четырёхразрядного кода. Но вначале необходимо записать секретный код для каждого канала. Нажатием на кнопку SB8 ("З/Р") выбираем режим "Запись" и вводим с клавиатуры код для канала 1. Микроконтроллер индицирует его на дисплее и записывает в ОЗУ Закончив ввод четырёхразрядного кода, нажимаем на любую из кнопок SB1- SB6, и индицируемый на дисплее код записывается в EEPROM микроконтроллера, становясь секретным для канала 1. После этого на дисплее в разрядах HG1-HG4 снова индицируются нули. Кнопкой SB7 ("К") выбираем следующий канал и проделываем аналогичные операции для канала 2 и т. д. Для выхода из режима записи нажимаем на кнопку SB8, при этом децимальная точка h на индикаторе HG4 гаснет. Устройство готово к работе.
В рабочем режиме микроконтроллер также ждёт ввода четырёхразрядного кода. Вводимый с клавиатуры код он индицирует на дисплее и записывает в ОЗУ. После ввода четвёртого разряда и последующего нажатия на одну из кнопок SB1-SB6 микроконтроллер побайтно сравнивает введённый код с записанным в его EEPROM и, если они совпадают, на 5 с подаёт сигнал на включение соответствующего канала (устанавливает лог. 0 на его выходе) и подаёт сигнал на включение звукоиз-лучателя BF1. Через 5 с микроконтроллер выключает сигнал (устанавливает на выходе канала лог. 1), обесточивает звукоизлучатель и обнуляет ХР1 wf-2 на дисплее разряды вводимого кода. Если вводимый код не совпал с секретным, то микроконтроллер всё равно обнуляет дисплей (на нём индицируется число 00001), но не изменяет состояния выходного сигнала канала. Целесообразно, чтобы доступ к кнопке SB8 был ограничен.
В программе используются два прерывания: Reset и прерывание таймера ТО, обработчик которого начинается с метки TIM0. При переходе на метку Reset инициализируются стек, таймер, порты, а также флаги и используемые в программе переменные.
В обработчике прерывания таймера Т0 осуществляются процедура опроса кнопок SB1-SB8, функционирование динамической индикации, перекодировка двоичного числа в код для отображения информации на семиэлементных индикаторах, а также формирование временного интервала длительностью 5 с, необходимого для изменения выходных сигналов каналов (установка сигнала уровня лог 0 на выводах розетки XS1), и процедуры записи и чтения набранного кода в EEPROM микроконтроллера.
В ОЗУ микроконтроллера с адреса $60 по $64 организован буфер отображения для динамической индикации (по адресу $60 находится число, определяющее номер канала, а с адреса $61 по адрес $64 - вводимый код).
Секретный код из EEPROM микроконтроллера переписывается в его ОЗУ по адресам с $66 по $69. Флаги, задействованные в программе, находятся в регистрах R19 (flo) и R25 (flo1). На рис. 2 приведён фрагмент программы записи секретного кода для канала 7.
Рис. 2. Фрагмент программы записи секретного кода для канала 7
Разработанная программа на ассемблере занимает всего около 0,7 Кб памяти программ микроконтроллера.
При изготовлении устройства применены резисторы с2-33Н-0,125, но подойдут и любые другие с такой же мощностью рассеяния и допустимым отклонением от номинала ±5 %. Конденсаторы С1-С5 - керамические К10-17а, С6 - оксидный импортный. Конденсатор С4 монтируют в непосредственной близости от выводов питания регистра DD1, С5 - возможно ближе к выводам питания микроконтроллера DD2. Розетка XS1 - HU-10 (ответная часть - вилкаWF-10), вилкаXP1 - WF-2 (ответная часть - розетка HU-2). Индикаторы HG1-HG5 - HDSP-F501 (зелёного цвета свечения). Если нет необходимости в визуальном контроле набираемого кода, то индикаторы HG1 - HG4, транзисторы VT1-VT4 и резисторы R3-R18 можно исключить, на работу устройства это не повлияет.
Схема включения соленоида для втягивания ригеля (задвижки) замка приведена на рис. 3. При поступлении на контакт 1 вилки XP3 сигнала лог. 0вклю-чается излучающий диод оптрона U1 и открывается встроенный в него фототранзистор. При этом открывается транзистор VT1 и напряжение 24 В с контакта 1 вилки XP2 поступает на контакт 1 вилки XP1 и далее на соленоид, в результате чего ригель замка втягивается в него. Резисторы - любые указанных на схеме номиналов и рассеиваемой мощности, конденсатор С1 - оксидный К50-35 или импортный аналог В общем случае cхемное решение этого узла определяется конкретными параметрами подключённых к ключу исполнительных устройств.
Рис. 3. Схема включения соленоида для втягивания ригеля (задвижки) замка
Налаживания описанное устройство не требует. При использовании исправных деталей и отсутствии ошибок в монтаже оно начинает работать сразу после подачи напряжения питания. Для повышения степени защиты (увеличения разрядности эталонного кода) можно доработать программное обеспечение. В этом случае на дисплее будут отображаться только четыре младших (или столько же старших) разряда вводимого кода.
Автор: С. Шишкин, г. Саров Нижегородской обл.