Кодовый замок на pic16f628a

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

Читать все новости ➔

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

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

Рис. 1

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

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

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

Для дальнейшей эксплуатации замка нулевой код нужно заменить новым секретным кодом, который должен находиться в интервале от 1 до 65535. Ввести его можно только при открытом замке при условии, что

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

В дальнейшем код можно заменять неоднократно. Если новый код был введён без предварительной очистки индикатора, но при нулях на нём, то светодиод HL1, сигнализируя о запи­си кода, погаснет на две секунды и включится снова. Однако индикатор очистится, а новый код будет записан в энергонезависимую память микро­контроллера.

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

Закрывают открытый замок кратко­временным нажатием на кнопку SB 12. Светодиод HL1 погаснет, а приблизи­тельно через две секунды индикатор HG1 очистится. Далее нажмите на кнопку SB8.

На две секунды будет включён красный светодиод HL2, а на двигатель М1 подано напряжение противоположной подаваемому при открывании полярности. Запор за­кроется.

Эту операцию можно выпол­нить только один раз после каждого отпирания. Повторное запирание не­возможно.

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

На случай, если хранящийся в EEPROM микроконтроллера сменный код утерян, в его программной памя­ти имеется постоянный код, которым замок тоже можно отпереть. В прила­гаемой к статье программе он равен 45457. Изменить его можно только путём перепрограммирования микро­контроллера. Для этого нужно указать новое значение кода в строке

POSTKOD EQU .45457

исходного текста программы (файла ZAMOK.ASM). Эта строка находится в самом его начале. Предшествующая коду точка означает в данном случае, что это десятичное число.

Значение постоянного кода должно находиться в пределах от 1 до 65535, в противном случае он действовать не будет.

Пос­ле изменения постоянного кода про­грамму необходимо транслировать заново и загрузить в микроконтрол­лер полученный НЕХ-файл.

Рис. 2

Обратите внимание, что если на выходах RA0 и RA1 микроконтроллера одновременно будет установлен высокий уровень напряжения, все транзисторы мостового коммутатора VT4—VT7 откроются и произойдёт замыкание источника питания замка.

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

Транзисторы VT8 и VT9 никогда не откроются одновре­менно, что предотвратит одновре­менное открывание транзисторов VT4-VT7.

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

Источник: http://meandr.org/archives/29634

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

» Схемы » Безопасность · Применение микроконтроллеров

17-11-2010

Alan Parekh

Данная конструкция отличается простотой схемотехнического решения, для ввода кода используется лишь одна кнопка, которую необходимо нажать определенное, в соответствии с цифрой кода, количество раз, соблюдая выдержку паузы при вводе следующей цифры. Количество цифр в коде – 4.

Для повышения секретности можно разместить клавиатуру, в которой будет активна лишь одна кнопка для ввода кода.

В случае ввода правильного кода, система активирует реле, однако возможна настройка под другие функции при активации системы, для этого потребуется перейти в режим программирования устройства.

Устройство может применяться в системах управления гаражными воротами, в системе управления освещением, в охранных системах.

Принципиальная схема устройства

Кликните для увеличения

Основным элементом схемы является микроконтроллер PIC16F628A, который отслеживает нажатие кнопки, визуально оповещает пользователя о приеме команды, управляет состоянием реле. Для визуализации используется светодиод, который подключен параллельно с кнопкой для ввода кода, что позволяет использовать лишь два провода для установки и подключения кнопки в необходимом месте.

Для питания устройства потребуется источник питания 12 В, в схеме установлен регулятор напряжения LM7805. Светодиод D3 свидетельствует о подаче питания.

Система имеет два режима работы: обычный режим и режим программирования. В обычном режиме устройство выполняет свою основную задачу – отслеживает нажатия кнопки и реагирует при правильном вводе кода. В режиме программирования производится настройка основных параметров системы: код, время активации, режим работы.

Для изменения режима работы (обычный/программирование) используется переключатель JP1. При выключенном переключателе – обычный режим работы, при включенном – режим программирования (настройки).

Следует заметить, что вход в тот или иной режим осуществляется при подаче питания (состояние переключателя проверяется микроконтроллером при подаче питания).

Поэтому для входа в режим настройки необходимо установить переключатель и подать питание, для выхода из режима – отключить переключатель, выключить и затем включить питание.

Для ввода кода вида 1234, последовательность действий следующая:

  • нажать кнопку 1 раз;
  • дождаться визуального подтверждения светодиодом на кнопке (светодиод мигнет один раз);
  • нажать кнопку два раза;
  • дождаться визуального подтверждения светодиодом на кнопке;
  • нажать кнопку три раза;
  • дождаться визуального подтверждения светодиодом на кнопке;
  • нажать кнопку 4 раза.

После ввода четвертой цифры система будет функционировать в соответствии с установленным режимом работы. Если был введен неверный код, пользователь увидит визуальное оповещение (мигание светодиода).

Для установки параметров замка используется режим программирования. В этом режиме для перехода между опциями кнопка нажимается и удерживается в течении 3 секунд.

После отпускания кнопки будет выполнен переход в следующий пункт меню, при этом светодиод количеством вспышек укажет, в каком пункте меню вы находитесь (например, вспышка, вспышка, пауза, вспышка, вспышка, пауза,… – означает, что выбран второй пункт меню).

Читайте также:  Новые serdes чипсеты от maxim позволяют снизить стоимость системы видеонаблюдения

Опции меню:

  1. Изменение кода – используется для изменения пользовательского кода. Для изменения код вводится также, как и в обычном режиме работы. Когда новый код будет сохранен, светодиод сообщит об этом частыми вспышками;
  2. Изменение времени активации – используется для изменения времени активного состояния. Нажатие кнопки один раз в этом меню изменяет это время на 1 с. Например, если необходимо время 10 секунд, то необходимо нажать кнопку 10 раз. Когда параметры будут сохранены, светодиод сообщит об этом частыми вспышками.
  3. Выбор режима работы – используется для изменения режима управления реле. Имеется два режима работы: активация реле при введении правильного кода и смена состояния реле (активация/деактивация) при вводе правильного кода. При выборе второго режима устройство будет действовать так: если реле активировано и вводится верный код, то реле деактивируется, при следующем вводе верного кода реле активируется. Для изменения режима работы: нажмите кнопку один раз для выбора первого режима и два раза для выбора второго режима.

Все параметры хранятся в энергонезависимой памяти микроконтроллера.

Схема собрана на двухсторонней печатной плате.

Для увеличения кликните на изображение

Загрузки

.hex-файл для программирования микроконтроллера – скачать

alan-parekh.com

Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Фрагменты обсуждения: Полный вариант обсуждения »
  • Собрал, прошил, работает! Плату развел однослойную.
  • как пршивал(зарание СПАСИБО)
  • прошивал icprog105D программой, а програматор делал давно и как он называется уже не помню. Но проблем при прошивке не было. Я эту схему и в протеусе собирал она у меня и там работала.
  • Выложи модель в Proteus.
  • В архиве схема, анимация, и печатка в Proteus 7.7 SP2(Сборка9151) Уровень3. На печатной плате, реле взято с какой то сигнализации от авто, и модель для протеуса, сделана мной а схема аниме, это то что собственно можно запустить и проверить работу схемы в целом. Светодиод вместо реле поставил для наглядности.
  • Идея сделать замок на МК неплохая, только набор шифра неудобен. Представь что нужно набрать 9 сколько раз нажимать нужно. Нужен однорозрядный индикатор, держишь кнопку до появления нужной цифры, отпускаешь, и цифра запоминаеться или опознается в зависимости от режима. Жаль что программировать не могу ато бы занялся этим. Все попытки самостоятельно изучить, пока не увенчались успехом. Модель скачал.
  • А как вам такой, простой кодовый, и совсем без кнопок на двери http://shema.org.ua/forum/index.php?…&st=0#entry781
  • Замок оригинальный, но можно потерять брелок и не попасть за дверь охраняемую замком. А вот с единственной кнопкой! Её трудно потерять, но еще труднее найти! Код вводить долго, но если придумать использовать его как второй, резервный так сказать! В случае банально простом, Захлопнули двери, а ключи остались за дверьми. И вот эта конструкция, с одной кнопкой поможет! А вот кнопки может и не быть, роль кнопки выполнит ручка той же двери, захлопнувшейся. Дальше не буду разъеснять, и так понятно.
  • Конечно можно и потерять, а можно и у соседей оставить, как в старые добрые времена 🙂 код не говорить только.
Полный вариант обсуждения »

При перепечатке материалов с сайта прямая ссылка на РадиоЛоцман обязательна.

Приглашаем авторов статей и переводов к публикации материалов на страницах сайта.

Источник: https://www.rlocman.ru/shem/schematics.html?di=69982

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

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

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

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

Режимы работы кодового замка на PIC16F628

Схема кодового замка имеет два режима работы.  Одним из них является обычный режим работы, когда схема ожидает ввода секретного кода. Второй режим – программирование. Данный режим  используется для настройки работы замка.

Состояние ввода кода

Для ввода секретного кода необходимо поочередно ввести четыре цифры, каждая цифра соответствует количеству нажатий на кнопку SA1. После первой введенной цифры, светодиод мигнет один раз. Затем необходимо ввести следующую цифру.

После набора четвертой цифры при верно набранном коде светодиод быстро мигнет три раза и активируется реле. При неверно набранном коде светодиод также мигнет три раза, но медленно. Затем можно повторить попытку ввода.

Изначально в памяти микроконтроллера записан код 1234.

Состояние программирования кодового замка

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

Меню программирования кодового замка состоит из трех пунктов:

  1. Запись нового секретного кода в память микроконтроллера PIC16F628. При переводе SA2 в режим программирования и включении питания, светодиод будет светить одинарными вспышками. Это свидетельствует, что вы находитесь в первом пункте меню.  Для записи нового кода необходимо поочередно ввести каждую цифру, так же как и при обычном вводе. После ввода последней цифры устройство подтвердит успешное завершения серией быстрых вспышек светодиода. Теперь питание можно выключить и перевести SА2 в обычный режим, либо можно перейти ко второму пункту меню программирования кодового замка. Для этого необходимо нажать кнопку SA1 и удерживать ее не менее 3 секунд. После отпускания кнопки, светодиод будет мигать двойными вспышками.
  2. Изменения продолжительности включения реле. Каждое нажатие прибавляет одну секунду. Допусти если нужно чтобы реле было активно в течении 5 секунд, то необходимо нажать кнопку SA1 пять раз с частотой нажатий  в одну секунду. После этого устройство подтвердит запись значения серией частых вспышек. Для перехода в 3 пункт меню также нажимаем кнопку на 3 и более секунды и отпускаем. Теперь светодиод будет мигать тройными вспышками. 
  3. Режим работы реле кодового замка. При одном нажатии реле будет активироваться на период, установленный во втором пункте меню. При двойном нажатии – реле будет включаться при вводе секретного кода, и выключаться только при повторном вводе секретного кода.

Для программирования микроконтроллера PIC16F628 модно воспользоваться несложным программатором, который описан здесь.

Скачать прошивку (1,2 Mb, скачано: 1 545)

Источник: www.alan-parekh.com

Источник: http://www.joyta.ru/4727-kodovyj-zamok-s-odnoj-knopkoj-na-mikrokontrollere-pic16f628/

Кодовый замок с одной кнопкой

Устройство реализовано на простом микроконтроллере AVR ATtiny13. Данная схема может найти применение для ограничения доступа в помещения, в разного рода сейфах, а так же при включении приборов, которые могут быть активизированы только после введения кода.

 

Алгоритм работы

Водятся три числа в такой последовательности: сперва первое, затем второе и третье, например: 3, 2, 1. Числа могут быть в пределах от 1 до 255, в отличие от декадных наборных устройств,  которые используются для набора чисел в подобных устройствах, у которых диапазон ограничен от 0 до 9-ти.

Если содержимое введённых 3-х чисел совпало с теми числами, которые занесены предварительно, в энергонезависимую память микроконтроллера (EEPROM), на выходе появляется сигнал логической «1», загорается светодиод HL4, который горит около 15 сек. В этот период индикация из светодиодов HL1, HL2, HL3 приобретает вид «бегущих огней» по истечении этого времени на выходе появляется логический «0» и схема переходит снова в исходное состояние ожидания.

Все операции можно осуществлять посредством 2-х кнопок, ориентируясь при этом на состояние светодиодных индикаторов.

Введение чисел осуществляется посредством одной кнопки «SET»,  которая может быть вынесена наружу устройства и доступна всем пользователям. Кнопка «RESET».

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

Имеется два режима:

1. Режим программирования, (записи) для введения 3-х желаемых чисел с занесением их значений в энергонезависимую память микроконтроллера, эти значения сохраняются при обесточивании устройства.
2. Режим введения кодов (чисел) для открывания кодового замка.

Пример работы

Нужно занести в энергонезависимую память числа 3, 2, 1 (вводя которые, мы будем отпирать замок). Для этого нам надо войти в режим программирования, для этого после включения питания одновременно удерживать нажатыми обе кнопки.

После чего сперва отпустить кнопку «RESET», и после начала мигания первого светодиода HL1, сразу же отпустить установочную кнопку «SET».

После чего светодиод HL1 перестаёт мигать и загорается постоянно,(остальные светодиоды HL2, HL3 погашены) это означает, что устройство готово для ввода первого числа.

Далее надо нажать кнопку «SET» и удерживать её в нажатом состоянии, отсчитывая одновременное мигание всех 3-х светодиодов HL1, HL2, HL3 (чтобы мигнуло 3 раза) затем кнопку отпустить. В подтверждение, через секунду, индикация мигнёт набранное нами число – 3 (три раза).

Далее загорится постоянно второй светодиод HL2 (это означает, что надо ввести второе число) у нас это число равно двум.

Надо нажать снова кнопку «SET » и удерживать её нажатой, пока светодиод HL2 после нажатия не загорелся два раза, после этого кнопку отжать, через секунду последует подтверждение набранного нами второго числа, Индикация мигнёт одновременно 3-мя светодиодами два раза. После этого загорится постоянно 3-й светодиод HL3,  третье число мы выбрали равным – 1.

Значит нам надо нажать кнопку, чтобы светодиод загорелся после нажатия только 1 раз и отпустить кнопку. Через секунду в подтверждение, светодиод мигнёт 1 раз.

На этом процедура программирования (внесение чисел 3,2,1 ) закончена.

3. Далее надо нажать кнопку «RESET» или отключить питание, чтобы после этого схема вошла в исходный режим ожидания.

Режим введения кодов (чисел) для открывания кодового замка. В этом режиме вся индикация погашена.

Теперь попробуем открыть замок, нам надо занести числа 3, 2, 1. Для этого нажмите кнопку «SET», схема активизируется, это будет видно по миганию 1-го светодиода. После этого сразу отпустить кнопку, теперь первый светодиод горит постоянно, это означает, что надо ввести первое число – 3.

Процедура аналогична выше описанной, нажимаем кнопку «SET», и удерживая её нажатой ждём,  чтобы все 3 светодиода зажглись 3 раза, после этого отпускаем кнопку, через секунду следует подтверждение набранных нами чисел, в ответ мигание 3 раза. Далее такая же процедура со вторым и третьим числом.

После введения третьего числа и подтверждения индикацией. Если код всех 3-х чисел введён верно, то через секунду зажигается светодиод HL4 и горит около 15 секунд. В это время HL1, HL2, HL3 начинают мерцать, как «бегущие огни» один за другим.

По истечении 15 секунд все светодиоды гаснут и схема переходит в исходное состояние ожидания.

Если код введён не верно, никакой реакции не последует до введения 3-й неудачной попытки введения 3-х чисел, после чего индикация приобретает вид мерцающих «бегущих огней» 3-х светодиодов и переходит в режим блокировки схемы на 2,5 минуты.

За это время устройство заблокировано на этот период времени,по истечении которого схема снова перейдёт в исходное состояние ожидания и можно будет снова повторить попытку ввести правильный код.

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

Детали и конструкция

В схеме применены широко распространённые, недефицитные детали. В качестве тактирования микроконтроллера, выбран внутренний RC-генератора с тактовой частотой 128кГц/8 (16 кГц). Осуществляется это при программировании, выставлением фьюзов, как показано на рисунке.

 

В ISP режиме микроконтроллер программируется только один раз, для дальнейшего перепрограммирования этого чипа нужен программатор с HV-режимом.

 

Так же прилагается схема и описание, прошивкой, а так же файл с виртуальной моделью работы устройства в Proteus. Схема там работает точно так же, как и в реальном устройстве. Схема была собрана и опробована автором.

Источник: http://www.cavr.ru/article/2930-kodovyj-zamok-s-odnoj-knopkoj

Кодовый замок на PIC16F628A

Ограничивать доступ посторонних лиц к ценной информации поможет кодовый замок. Один из вариантов реализации кодового замка на микроконтроллере приведён в данной статье.

На рисунке ниже изображена схема кодового замка. Ядром схемы является микроконтроллер PIC16F628A. Алгоритм выполнения основных команд изображен на рисунке 2. Код программы написан на языке ассемблер, смотреть листинг CL16F628ATEMP.ASM.

Прибор управляется одной кнопкой. Нажатием на кнопку добиваются последовательной смены режимов работы прибора. Звуковое сопровождение нажатия кнопки обеспечивает пьезоизлучатель звука.

Для визуального отображения информации служит дисплей со встроенным контроллером.

Полный цикл внутрисхемного программирования и отладки микроконтроллера PIC16F628A был осуществлён при помощи MPLAB IDE v8.15 (интегрированная среде разработки), компилятор MPASM v5.22 (входит в MPLAB IDE v8.15) и MPLAB ICD 2 (внутрисхемный отладчик – «Дебагер»).

Для тех, кто не располагает средствами приведёнными выше, а имеет свою программу для работы с HEX файлами и иной программатор, можно в соответствующем проекте найти файл 16F628ATEMP.HEX. Техническую спецификацию микроконтроллера можно найти на сайте [1] и [2].

Микроконтроллер DD1 имеет функциональные выводы RA0, RB0 – RB7, CCP1, которые служат для ввода и вывода информации. Микроконтроллер DD1 не имеет функции принудительного сброса, вывод для сброса подключен через резистор R1 к положительному потенциалу питания. Для генерации тактовой частоты используется встроенный RC-генератор на кристалле.

К выводу RA0 через токоограничивающий резистор R3 подключена тактовая кнопка SB1. В отжатом положении тактовой кнопки SB1 резистор R7 имитирует низкий логический уровень. Микроконтроллер DD1 распознаёт три состояния тактовой кнопки SB1:

  1. Не нажата;
  2. Нажата кратковременно (менее 1 с);
  3. Нажата и удерживается (более 1 с).

Пьезоизлучатель звука P1 помогает различать состояния тактовой кнопки SB1. Так при 1 состоянии генерации звука не происходит, при 2 состоянии звук генерируется до того момента пока микроконтроллер не распознает 3 состояние, а в 3 состоянии генерации звука не происходит.

Для отображения информации используется жидкокристаллический дисплей HG1. Техническую спецификацию дисплея можно найти на сайте [3]. Он имеет контроллер, в котором реализована функция знакогенерации. Отображает две строки по шестнадцать символов в каждой. Управление дисплеем осуществляется через выводы микроконтроллера RB0, RB1, RB4 – RB7.

Загрузка данных происходи полубайтами, через выводы RB4 – RB7. «Защёлка» – RB1. Выбор регистра сигнала формируем на выводе RB0. Резисторами R5 и R6 устанавливаем контрастность дисплея HG1. Подсветка дисплея подключена к питанию через токоограничивающий резистор R4.

Дисплей HG1 прикручивается к плате 3 x 15 мм латунными стойками и 3 x 6 мм винтами.

Формированием логики на RB2 добиваются открытия или закрытия полевого транзистора VT1 [4], который включает и выключает подключенный к клеммнику X1 электрический замок. Электрический замок должен быть рассчитан на рабочее напряжение 9-15 В и потреблять ток не более 1 А. При подачи напряжения на электрический замок должен открываться, при отсутствии напряжения блокируется (закрывается).

К выводу CCP1 (аппаратная реализация ШИМ, частота 4 кГц, скважность 2) через токоограничивающий резистор R2 подключен пьезоизлучатель звука P1 с рабочей частотой генерации звука 4 кГц.

Прибор запитывается от переменного или постоянного источника напряжения, подключаемого к разъему X2. Номинальное напряжение источника питания 9 – 15 В. Номинальный ток источника питания 1 А. Для стабилизации питания используется обычная схема из диодного моста VD1, линейного стабилизатора DA1, фильтрующих конденсаторов C1 – C4.

Прибор может эксплуатироваться в диапазоне температур от –20 °С до +70 °С.
Микроконтроллер запрограммирован таким образом, что имеет одиннадцать рабочих состояний.

  1. При включении прибора происходит чтение энергонезависимой памяти данных EEPROM, где происходит выгрузка данных состояния замка и кода. Прибор открывает или закрывает электрический замок согласно прочитанному регистру состояния замка. Прибор переходит в состояние где отображает статистику кодирования, т.е. 2.
  2. В данном состоянии прибор в верхней строке выводит на дисплее надпись «Stat. Стат.» и в нижней строке отображает статистику кодирования, а именно число кодирований и число декодирований*. После кратковременного или удерживаемого нажатия тактовой кнопки прибор руководствуясь регистром о состоянии замка переходит в состояние кодирования если замок открыт, т.е. 3 и переходит в состояние декодирования если замок закрыт, т.е. 4.
  3. Прибор выводит в верхней строке на дисплее надпись «Code Код» и переходит в состояние где происходит ввод кода (подпрограмма «Ввод кода»), т.е. 5. Происходи инкрементирование счётчика числа кодирований. Прибор переходит в состояние где меняет состояние замка, закрывая его, т.е. 9.
  4. Прибор выводит в верхней строке на дисплее надпись «Decode Д.код» и переходит в состояние где происходит ввод кода (подпрограмма «Ввод кода»), т.е. 5. Происходи инкрементирование счётчика числа декодирований. Прибор сравнивает введённый код с кодом сохранённым в энергонезависимой EEPROM памяти. Если код совпадает тогда прибор переходит в состояние где меняет состояние замка, открывая его, т.е. 10, а если код не совпадает переходит в состояние где выводит информацию о ошибке, т.е. 11.
  5. В нижней строке дисплея квадратными скобками выделяется первая цифра четырехзначного кода. Кратковременным нажатием на тактовую кнопку происходит инкрементирование регистра вводимой цифры**. Если тактовая кнопка нажата и удерживается более 1 с, то прибор переходит в состояние где происходит выбор второй цифры кода, т.е. 6.
  6. В нижней строке дисплея квадратными скобками выделяется вторая цифра четырехзначного кода. Кратковременным нажатием на тактовую кнопку происходит инкрементирование регистра вводимой цифры**. Если тактовая кнопка нажата и удерживается более 1 с, то прибор переходит в состояние где происходит выбор третей цифры кода, т.е. 7.
  7. В нижней строке дисплея квадратными скобками выделяется третья цифра четырехзначного кода. Кратковременным нажатием на тактовую кнопку происходит инкрементирование регистра вводимой цифры**. Если тактовая кнопка нажата и удерживается более 1 с, то прибор переходит в состояние где происходит выбор четвёртой цифры кода, т.е. 8.
  8. В нижней строке дисплея квадратными скобками выделяется четвёртая цифра четырехзначного кода. Кратковременным нажатием на тактовую кнопку происходит инкрементирование регистра вводимой цифры**. Если тактовая кнопка нажата и удерживается более 1 с, то прибор переходит в состояние на то место откуда запрашивалась подпрограмма «Ввод кода», т.е. 3 или 4.
  9. Прибор закрывает замок и сохраняет состояние замка и код. В верхней строке выводит на дисплее надпись «Saving Сохран.» и в нижней строке четырёхзначный код.  Далее прибор переходит в состояние где отображает статистику кодирования, т.е. 2.
  10. Прибор открывает замок и сохраняет состояние замка и код. В верхней строке выводит на дисплее надпись «Saving Сохран.» и в нижней строке четырёхзначный код. Далее прибор переходит в состояние где отображает статистику кодирования, т.е. 2.
  11. В верхней строке выводит на дисплее надпись «Error Ошибка» и в нижней строке четырёхзначный код. (Фото 4) После кратковременного или удерживаемого нажатия тактовой кнопки прибор переходит в состояние где отображает статистику кодирования, т.е. 2.

*После переполнения счётчика (больше 65535) происходит обнуление и счёт начинается заново, что приводит к сбою в статистике, в том смысле, что число кодирования может быть больше числа декодирований. Таким образом, рекомендуется обесточить прибор для сброса счётчиков.

**При инкрементировании цифры 9 происходит обнуление.

Конечно, не смотря на то что у микроконтроллера защищена от внутрисхемного чтения EEPROM память (задано в конфигурации) с помощью MPLAB IDE и MPLAB ICD внутрисхемно прочитать и узнать пароль, а следовательно и включить электрический замок не получится.

Остаётся более простой способ вскрытия – непосредственно на прямую подать напряжение на электрический замок. Делаю вывод, прибор «кодовый замок» и электрический замок должны быть надёжно защищены от проникновения посторонних лиц.

В свободном доступе должна быть кнопка и дисплей.

Стоит отметить, что прибор можно обесточивать, всё равно в энергонезависимой EEPROM памяти после ввода кода сохраняется состояние замка и код. Обесточивать прибор во время сохранения кода в энергонезависимой EEPROMпамяти запрещено.

Стоит обратить внимание на одну важную деталь в работе прибора. При включении прибора он может кратковременно открывать электрический замок (на время мене 1 с), не смотря на то, что в энергонезависимой EEPROM памяти сохранено закрытое состояние электрического замка.

Мной при симуляции выполнения программного кода в среде MPLAB IDE данная ошибка не была выявлена. При неожиданном обесточивании прибора во время сохранения кода в энергонезависимой EEPROM памяти можно некорректно сохранить код и восстановить его не удастся, что приведёт к повторному программированию микроконтроллера.

Отсюда следует рекомендация о необходимости стабильного и (или) резервного питания прибора. GB1  – резервное питание.

Файлы для изготовления печатной платы смотреть в папке [Board].

Печатная плата и расположение деталей:

В данном устройстве можно заменить следующие детали. Микроконтроллер DD1 из серии PIC16F628A-I/P-xxx с рабочей тактовой частотой 20 МГц в корпусе DIP18. Дисплей HG1 подойдет любой из серии WH1602x. Стабилизатор напряжения DA1 отечественный КР142ЕН5А (5 В, 1.5 А). Полевой MOSFET транзистор VT1 (N-канал) в корпусе I-Pak (TO-251AA), подойдёт аналог номинала указанного на схеме.

Пьезоизлучатель звука P1 с рабочей частотой генерации звука 4 кГц. Диодный мост VD1 можно применить любой из серии 2Wxx. Разъём питания X2 аналогичный указанному на схеме с центральным контактом d=2.1 мм. Неполярные конденсаторы С1 и С2 номиналом 0.01 – 0.47 µF x 50 V. Электролитические конденсаторы С3 и С4 ёмкостной номинал тот же, а напряжение не ниже указанного на схеме.

Схема подключения электромагнита:

Схема подключения твердотельного реле:

Ссылки в интернете

Список радиоэлементов

Скачать список элементов (PDF)

Прикрепленные файлы:

Источник: http://cxem.gq/mc/mc164.php

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}