Кодовый замок на микроконтроллере PIC16F628A


А. ГЕТТЕ, г. Рязань

Этот замок можно использовать для ограничения доступа в помещение, гараж, дом, сейф, шкаф. Его исполнительным устройством может служить механизм запирания двери автомобиля.

Устройство, схема которого изображена на рис. 1, позволяет посредством введённого кода отпирать дверь и запирать её. Код хранится в EEPROM микроконтроллера DD1, а при включении питания устройства программа копирует его в оперативную память.

Индикатор HG1 — четырёхразрядный семиэлементный светодиодный с общими катодами знакомест. В процессе набора кода цифры сдвигаются по нему справа налево. Если код состоит из пяти цифр, то при наборе его последней пятой цифры первая уходит за пределы индикатора. Тем не менее действуют все пять набранных цифр.

В исходной программе предварительно записан нулевой код, который действует сразу после первого включения замка. Чтобы открыть замок, находящийся в этом состоянии, достаточно убедиться, что его индика

тор очищен, и нажать на кнопку SB8. Будут включены светодиод HL1 (им можно, например, освещать внутренность сейфа) и зелёный светодиод HL3 (путь свободен). Затем кратковременно. примерно на две секунды, будет включён исполнительный двигатель 1l, который и откроет запор.

Для дальнейшей эксплуатации замка нулевой код нужно заменить новым секретным кодом, который должен находиться в интервале от 1 до 65535. Ввести его можно только при открытом замке при условии, что на индикаторе нули. Для замены кода кратковременно нажмите на кнопку SB 12. Индикатор очистится, включится светодиод HL1. Введите новый код, нажмите на кнопку SB 12 и удерживайте её нажатой около двух секунд. Светодиод HL1 будет выключен, а индикатор HG1 очищен. Теперь новый код записан в EEPROM микроконтроллера.

В дальнейшем код можно заменять неоднократно. Если новый код был введен без предварительной очистки индикатора, но при нулях на нём, то светодиод HL1, сигнализируя о записи кода, погаснет на две секунды и включится снова. Однако индикатор очистится, а новый код будет записан в энергонезависимую память микроконтроллера, Чтобы отпереть замок после смены кода, нужно будет очистить индикатор кратковременным нажатием на кнопку SB 12. Затем ввести именно этот код и нажать на кнопку SB8. Если код был набран правильно, но механика замка по какой-либо причине заела, можно нажимать на кнопку SB8 неоднократно. С каждым нажатием на неё двигатель М1 будет включаться на отпирание.

Закрывают открытый замок кратковременным нажатием на кнопку SB 12 Светодиод HL1 погаснет, а приблизительно через две секунды индикатор HG1 очистится. Далее нажмите на кнопку SB8 На две секунды будет включён красный светодиод HL2, а на двигатель М1 подано напряжение противоположной подаваемому при открывании полярности. Запор закроется. Эту операцию можно выполнить только один раз после каждого отпирания. Повторное запирание невозможно.

Если операции открывания и закрывания замка исполняются неправильно (одна вместо другой), то следует изменить полярность подключения двигателя M1. При первом включении замка на индикаторе HG1 могут появиться случайные цифры. Чтобы удалить их или исправить ошибку в наборе кода, необходимо кратковременно нажать на кнопку SB12.

На случай, если хранящийся в EEPROM микроконтроллера сменный код утерян, в его программной памяти имеется постоянный код, которым замок тоже можно отпереть. В прилагаемой к статье программе он равен 45457. Изменить его можно только путём перепрограммирования микроконтроллера. Для этого нужно указать новое значение кода в строке
POSTKOD EQU .45457
исходного текста программы (файла ZAMOK.ASM). Эта строка находится в самом его начале. Предшествующая коду точка означает в данном случае, что это десятичное число. Значение постоянного кода должно находиться в пределах от 1 до 65535, в противном случае он действовать не будет. После изменения постоянного кода программу необходимо транслировать заново и загрузить в микроконтроллер полученный НЕХ-файл.

Обратите внимание, что если на выходах RA0 и RA1 микроконтроллера одновременно будет установлен высокий уровень напряжения, все транзисторы мостового коммутатора VT4—VT7 откроются и произойдет замыкание источника питания замка. При работе микроконтроллера по хорошо отлаженной программе это явление маловероятно, но вполне может произойти в процессе её отладки после внесения каких-либо изменений. Во избежание подобных случаев рекомендуется дополнить устройство узлом, схема которого показана на рис. 2, включив его в разрывы проводов, помеченных на рис. 1 крестами. Транзисторы VT8 и VT9 никогда не откроются одновременно, что предотвратит одновременное открывание транзисторов VT4-VT7.


Puc.1

От редакции. Программа микроконтроллера (в двух вариантах: с постоянным кодом и без него) имеется по адресу ftp://ftp.radio.ru/pub/2015/12/zamokl.zip на нашем FTP-сервере (или здесь - zamok1.zip)

Радио 12-2015