Кодовый замок на пик контроллере. Кодовый замок на микроконтроллере AVR ATTINY2313. Распознавание кнопок с помощью АЦП

Answer

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry"s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five http://jquery2dotnet.com/ centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

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

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

Основным элементом схемы является микроконтроллер PIC16F628A, который отслеживает нажатие кнопки, визуально оповещает пользователя о приеме команды, управляет состоянием реле. Для визуализации используется светодиод, который подключен параллельно с кнопкой для ввода кода, что позволяет использовать лишь два провода для установки и подключения кнопки в необходимом месте.
Для питания устройства потребуется источник питания 12 В, в схеме установлен регулятор напряжения LM7805. Светодиод D3 свидетельствует о подаче питания.
Система имеет два режима работы: обычный режим и режим программирования. В обычном режиме устройство выполняет свою основную задачу – отслеживает нажатия кнопки и реагирует при правильном вводе кода. В режиме программирования производится настройка основных параметров системы: код, время активации, режим работы.
Для изменения режима работы (обычный/программирование) используется переключатель JP1. При выключенном переключателе – обычный режим работы, при включенном – режим программирования (настройки). Следует заметить, что вход в тот или иной режим осуществляется при подаче питания (состояние переключателя проверяется микроконтроллером при подаче питания). Поэтому для входа в режим настройки необходимо установить переключатель и подать питание, для выхода из режима – отключить переключатель, выключить и затем включить питание.

Для ввода кода вида 1234, последовательность действий следующая:
нажать кнопку 1 раз;
дождаться визуального подтверждения светодиодом на кнопке (светодиод мигнет один раз);
нажать кнопку два раза;

нажать кнопку три раза;
дождаться визуального подтверждения светодиодом на кнопке;
нажать кнопку 4 раза.
После ввода четвертой цифры система будет функционировать в соответствии с установленным режимом работы. Если был введен неверный код, пользователь увидит визуальное оповещение (мигание светодиода).
Для установки параметров замка используется режим программирования. В этом режиме для перехода между опциями кнопка нажимается и удерживается в течении 3 секунд. После отпускания кнопки будет выполнен переход в следующий пункт меню, при этом светодиод количеством вспышек укажет, в каком пункте меню вы находитесь (например, вспышка, вспышка, пауза, вспышка, вспышка, пауза,… – означает, что выбран второй пункт меню).

Опции меню:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

На рисунке ниже изображена схема кодового замка. Ядром схемы является микроконтроллер PIC16F628A. Алгоритм выполнения основных команд изображен на рисунке 2. Код программы написан на языке ассемблер, смотреть листинг в папке CL\16F628ATEMP.ASM архива с проектом. Прибор управляется одной кнопкой. Нажатием на кнопку добиваются последовательной смены режимов работы прибора. Звуковое сопровождение нажатия кнопки обеспечивает пьезоизлучатель звука. Для визуального отображения информации служит дисплей со встроенным контроллером.

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

Микроконтроллер 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. Техническую спецификацию дисплея можно найти на сайте . Он имеет контроллер, в котором реализована функция знакогенерации. Отображает две строки по шестнадцать символов в каждой. Управление дисплеем осуществляется через выводы микроконтроллера RB0, RB1, RB4 – RB7. Загрузка данных происходи полубайтами, через выводы RB4 – RB7. «Защёлка» - RB1. Выбор регистра сигнала формируем на выводе RB0. Резисторами R5 и R6 устанавливаем контрастность дисплея HG1. Подсветка дисплея подключена к питанию через токоограничивающий резистор R4. Дисплей HG1 прикручивается к плате 3 x 15 мм латунными стойками и 3 x 6 мм винтами.

Формированием логики на RB2 добиваются открытия или закрытия полевого транзистора VT1 , который включает и выключает подключенный к клеммнику 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 память (задано в конфигурации) внутрисхемно прочитать и узнать пароль, а следовательно и включить электрический замок не получится. Остаётся более простой способ вскрытия – непосредственно на прямую подать напряжение на электрический замок. Делаю вывод, прибор «кодовый замок» и электрический замок должны быть надёжно защищены от проникновения посторонних лиц. В свободном доступе должна быть кнопка и дисплей.

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

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

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

В данном устройстве можно заменить следующие детали. Микроконтроллер 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 ёмкостной номинал тот же, а напряжение не ниже указанного на схеме.

Скачать архив с проектом кодового замка: 16F628Code_Lock.rar

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

Принцип работы

Работа замка на микроконтроллере основана на поочередном вводе трех чисел. Размер каждого числа может быть в диапазоне от 0 до 255. Это в свою очередь повышает уровень секретности кодового замка по сравнению с другими замками, у которых каждое секретное число имеет размер от 0 до 9.

В том случае если введенная последовательность этих трех чисел совпадает с тремя числами, которые внесены в память микроконтроллера кодового замка, то на выходе (вывод 3) появится управляющий сигнал (лог.1), на 15 секунд загорится светодиод HL4 сигнализируя о правильности ввода и сработает реле К1 управляющее исполнительным механизмом замка. По истечении 15 секунд на выводе 4 микроконтроллера появится лог. 0 и замок перейдет в первоначальное состояние ожидания.

Управление работой кодового замка осуществляется всего двумя кнопками, руководствуясь только индикацией светодиодов. Причем ввод секретного кода осуществляется только одной кнопкой SB2, которая находится на наружной панели замка. Вторая кнопка SB1 предназначена для программирования, и она расположена на самой плате.

Этапы управления кодовым замком

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

Рассмотрим это на конкретном примере. Допустим, нам нужно задать следующий секретный код: первая цифра 8, вторая цифра 12, третья цифра 9. Для этого подаем питание на устройство, затем нажимаем и удерживаем обе кнопки (SB1 и SB2). После этого отпускаем кнопку SB1, и как только начал мигать светодиод HL1 отпускаем и кнопку SB2. После этих манипуляций светодиод HL1 будет гореть постоянно, а светодиоды HL2 и HL3 не будут гореть. Это состояние светодиодов говорит о том, что устройство перешло в режим программирования.

Теперь чтобы записать первое число нам нужно нажать и удерживать кнопку SB2, при этом все три светодиода начнут мигать. Нужно отсчитать необходимое количество вспышек (в нашем случае это 8) и отпустить кнопку. После этого, в подтверждении правильности введенного числа, светодиоды промигают такое же количество раз (8 раз). Все, первое число записано. Далее загорается светодиод HL2 – напоминая нам, что необходимо записать второе число.

Поступаем точно так же как и с записью первого числа: нажимаем и удерживаем кнопку SB2 и отсчитываем необходимое число вспышек светодиодов (в нашем примере это 12), отпускаем кнопку и проверяем правильность ввода по повторным вспышкам. Затем загорается светодиод HL3 для третьего числа, и повторяем туже процедуру и для третьего числа (число 9).

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

  • Набора секретного кода

Рассмотрим так же это на примере. До этого мы записали секретный код 8-12-9. Для ввода вначале нажимаем кнопку SB1 и отпускаем ее сразу, после того как загорится светодиод HL1, тем самым переводим наш замок в режим ввода кода. Свечение светодиода HL1 свидетельствует, что нужно ввести первую цифру. Процедура ввод цифр аналогична тому, как вводились цифры при программировании. То есть, нажимая на кнопку SB1, отсчитываем необходимое количество, после чего отпускаем кнопку и наблюдаем подтверждение наборной цифры путем мигания светодиодов. Затем переходим ко второй и третьей цифре.

В том случае если все три цифры секретного кода введены верно, сработает реле и на 15 секунд включится светодиод HL4, светодиоды HL1,HL2,HL3 будут светиться в режиме бегущих огней.

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

При программировании микроконтроллера следует выставить следующие фьюзы:

  • CKDIV8 = 0
  • BODLEVEL0 = 0
  • SPMEN = 0

(1,3 Mb, скачано: 1 566)

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

На рисунке ниже изображена схема кодового замка. Ядром схемы является микроконтроллер PIC16F628A. Алгоритм выполнения основных команд изображен на рисунке 2. Код программы написан на языке ассемблер, смотреть листинг CL\16F628ATEMP.ASM. Прибор управляется одной кнопкой. Нажатием на кнопку добиваются последовательной смены режимов работы прибора. Звуковое сопровождение нажатия кнопки обеспечивает пьезоизлучатель звука. Для визуального отображения информации служит дисплей со встроенным контроллером.

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

Микроконтроллер 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. Техническую спецификацию дисплея можно найти на сайте . Он имеет контроллер, в котором реализована функция знакогенерации. Отображает две строки по шестнадцать символов в каждой. Управление дисплеем осуществляется через выводы микроконтроллера RB0, RB1, RB4 – RB7. Загрузка данных происходи полубайтами, через выводы RB4 – RB7. «Защёлка» - RB1. Выбор регистра сигнала формируем на выводе RB0. Резисторами R5 и R6 устанавливаем контрастность дисплея HG1. Подсветка дисплея подключена к питанию через токоограничивающий резистор R4. Дисплей HG1 прикручивается к плате 3 x 15 мм латунными стойками и 3 x 6 мм винтами.

Формированием логики на RB2 добиваются открытия или закрытия полевого транзистора VT1 , который включает и выключает подключенный к клеммнику 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 ICD внутрисхемно прочитать и узнать пароль, а следовательно и включить электрический замок не получится. Остаётся более простой способ вскрытия – непосредственно на прямую подать напряжение на электрический замок. Делаю вывод, прибор «кодовый замок» и электрический замок должны быть надёжно защищены от проникновения посторонних лиц. В свободном доступе должна быть кнопка и дисплей.

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

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

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

В данном устройстве можно заменить следующие детали. Микроконтроллер 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 ёмкостной номинал тот же, а напряжение не ниже указанного на схеме.

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

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
DD1 МК PIC 8-бит

PIC16F628A

1 В блокнот
DA1 Линейный регулятор

L7805AB

1 В блокнот
VT1 MOSFET-транзистор

IRLU024N

1 В блокнот
VD1 Диодный мост

2W10

1 В блокнот
VD2 Выпрямительный диод

1N5403

1 В блокнот
С1, С2 Конденсатор 0.1 мкФ 2 В блокнот
С3 470 мкФ 25 В 1 В блокнот
С4 Электролитический конденсатор 100 мкФ 10 В 1 В блокнот
R1, R6 Резистор

10 кОм

2 В блокнот
R2 Резистор

240 Ом

1 В блокнот
R3 Резистор

470 Ом

1 В блокнот
R4 Резистор