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

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 раз. Когда параметры будут сохранены, светодиод сообщит об этом частыми вспышками.
Выбор режима работы – используется для изменения режима управления реле. Имеется два режима работы: активация реле при введении правильного кода и смена состояния реле (активация/деактивация) при вводе правильного кода. При выборе второго режима устройство будет действовать так: если реле активировано и вводится верный код, то реле деактивируется, при следующем вводе верного кода реле активируется. Для изменения режима работы: нажмите кнопку один раз для выбора первого режима и два раза для выбора второго режима.

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

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

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

Схема кодового замка показана на рис. 1. Основным элементом устройства является микроконтроллер ATtiny2313 (DD1), у которого использованы встроенный RC-генератор и внутренние резисторы. Чтобы открыть замок, необходимо знать код. Для его ввода используется клавиатура, расположенная на внешней стороне двери и состоящая из кнопок SB1- SB 12. Кнопки SB 13 и SB 14 расположены на внутренней стороне двери, первая из них предназначена для ее открывания, а вторая - для закрывания. При использовании электромеханического привода замка двери кнопка SB 14 не нужна. Двухцветный светодиод HL1 индицирует состояние замка: если горит светодиод красного цвета свечения - дверь закрыта, зеленый - открыта. Резистор R3 служит для ограничения тока через светодиод.

Рисунок 1

Для управления исполнительным механизмом - соленоидом YA1 (или электромеханическим приводом) - используется мощный полевой переключательный транзистор VT1. Если код набран правильно, с линии PD2 (вывод 6) микроконтроллера DD1 на затвор полевого транзистора поступит открывающее напряжение, на соленоид YA1 - напряжение питания, и он откроет замок.

Питание устройства осуществляется от сетевого стабилизированного блока питания напряжением 12 В с выходным током, достаточным для срабатывания исполнительного механизма. Напряжение питания микроконтроллера стабилизировано интегральным стабилизатором DA1. Аккумуляторная батарея GB1 используется как резервный источник при отсутствии сетевого напряжения Диоды VD1, VD2 обеспечивают развязку блока питания и аккумуляторной батареи

Чтобы открыть замок, необходимо ввести цифры кода в заданной последовательности. Для индикации нажатия на кнопку (при закрытом замке) светодиод красного цвета свечения гаснет примерно на 0,3 с, при этом светодиод зеленого цвета свечения не горит, пос¬ле чего опять загорается красный светодиод. После ввода последней цифры открывается транзистор VT1 и загорается светодиод зеленого цвета свечения, индицируя, что замок открыт

Чтобы закрыть замок, необходимо нажать на кнопку SB4 "*" или кнопку SB 14 "Закрыть".

Для изменения кода при открытом замке нажимают на кнопку SB12 "#", вводят новый код (минимум одна цифра, максимум - сто двадцать семь), после чего опять нажимают на кнопку SB 12 "#". Если при вводе кода была допущена ошибка, нажимают на кнопку SB4 "*", вводят правильный код и только затем нажимают на кнопку SB12 "#". При записи нового кода индикация нажатия на кнопки осуществляется так. Светодиод зеленого цвета свечения гаснет на 0,5 с, при этом загорается светодиод красного цвета свечения, а затем снова постоянно светит светодиод зеленого цвета.

Рисунок 2

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

Отличие работы замка с электромеханическим приводом от замка с соленоидом заключается только во входе в режим записи нового кода и закрытия замка. Замок в этом случае закрывается автоматически через 3 с после открытия, этого времени должно хватить для того, чтобы открыть дверь. Сделано это для того, чтобы не перегревался электродвигатель электромеханического привода. Для записи нового кода при открытом замке необходимо сначала нажать на кнопку SB13 "Открыть" и удерживать ее.

class="eliadunit">

После того как замок закроется и загорится светодиод красного цвета свечения, надо дополнительно нажать на кнопку SB13 "Открыть" и удерживать ее еще примерно 15 с, затем нажать на кнопку SB 12 "#" и при загорании светодиода зеленого цвета свечения ввести новый код, после чего снова нажать на кнопку SB 12 "#" для его записи. Если при вводе была допущена ошибка, то нажимают на копку SB4 "*", вводят правильный код и только тогда нажимают на кнопку SB 12 "#". Будьте внимательны при вводе нового кода!

Фото готового устройства.

Схема и программа цифрового кодового замка с инфракрасным ключом на микроконтроллере

Доброго дня уважаемые радиолюбители!
Приветствую вас на сайте “ “

Доброго дня уважаемые радиолюбители! Сегодня в разделе “Радиолюбительские схемы на микроконтроллерах” мы рассмотрим несложную схему – цифровой кодовый замок с ИК ключом.

Данный кодовый замок устанавливается на любой входной двери помещения с ограниченным доступом. Для открывания двери применен ИК ключ. Благодаря этому отпадает надобность во внешней клавиатуре для набора кода, и кроме того, перехватить сигнал в ИК диапазоне очень сложно. Схема кодового замка:

Кодовый замок находится в режиме ожидания, пока на фотодиод VD1 не поступит ИК сигнал, который преобразуется в электрические импульсы. Ключ представляет собой передатчик ИК сигнала и питается от одного гальванического элемента. На микросхеме собран преобразователь напряжения 1,5 вольта в 5 вольт. Данную часть схемы ключа с преобразователем напряжения можно игнорировать, но для этого потребуется подобрать подходящий источник питания ключа напряжением 5 вольт. Ключ активизируется подачей питающего напряжения выключателем SA1. При замене “секретных” слов надо изменить их коды в текстах программы как замка, так и ключа. Питают замок от сетевого блока питания напряжением 12 вольт. Его желательно дополнить аккумулятором для питания соленоида при отсутствии сетевого напряжения.

Принципиальная схема двухуровневой системы охраны, которая построена применением AVR микроконтроллеров серии ATMega. 1-й уровень охраны - кодовый замок. 2-й уровень охраны - устройство охраны. Две функциональные платы, входящие в систему выполнены на базе микроконтроллеров ATmega 8535.

Структурная схема

Микроконтроллеры (семейства AVR, MCS-51 и др.) со своей архитектурой, программными и аппаратными ресурсами, как цифровые кубики идеально подходят для разработки различных устройств охраны, сигнализации, кодовых замков и пр.

Рис. 1. Структурная схема системы охраны.

В системе (рис. 1) имеется две основных составных части: кодовый замок А2, и устройство охраны А1. Устройство охраны А1 имеет 24 независимых входных линии к которым подключены концевые выключатели S1...S24. Данные выключатели контролируют состояние окон 01...05, двери Д1, люков Л1, Л2.

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

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

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

Рассмотрим работу устройства охраны. Внешними (выносными) элементами по отношению к устройству являются 24 концевых выключателя (S1...S24), которые позволяют контролировать состояние 24 объектов (например, дверь). Один концевой выключатель контролирует состояние одной двери. Если дверь закрыта - концевой выключатель разомкнут.

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

Если дверь открыта - концевой выключатель замкнут. Индикатор - периодически мигает. Если дверь закрыта - концевой выключатель разомкнут. Индикатор - не горит (погашен). Пусть концевой выключатель S1 установлен в двери № 1. Пусть концевой выключатель S2 установлен в двери № 2 и т. д.

Если открыта дверь № 1, то периодически мигает индикатор HL2 (если дверь № 1 закрыта индикатор HL2 - погашен). Если открыта дверь № 2, то периодически мигает индикатор HL3 (если дверь № 1 закрыта индикатор HL3 - погашен) и т. д.

Автор, не будет останавливаться на каком-то конкретном конструктивном исполнении установки концевого выключателя, а так же конструкции самого устройства. В интерфейс контроля и управления устройства входят: тумблеры SA1, SA2, индикаторы HL1...HL25. Конструктивно, все вышеуказанные элементы целесообразно разместить на отдельной панели управления.

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

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

  • SA1 (ОХРАНА) - тумблер сигнализации. При установке данного тумблера в положение "ВКЛ" - устройство ставится под охрану. Устройство ставится под охрану, через ~ 10 сек. с момента установки тумблера SA1 в положение "ВКЛ" из положения "ВЫКЛ". После установки под охрану, сигнализация срабатывает через ~ 10 сек с момент замыкания любого концевого выключателя S1...SA24.
  • SA2 - тумблер выключения звука. Данный тумблер функционирует только в режиме контроля состояния дверей. Тумблер SA1 должен быть установлен в положении "ВЫКЛ". При установке тумблера SA2 в положение "ВКЛ" при открытии любой двери пьезоэлектрическим излучатель ВА1 сразу выдаст звуковой сигнал, длительностью ~ 2 сек. Если данный тумблер в положение "ВЫКЛ", то при открытии любой двери, будет периодически мигать только соответствующий индикатор, пьезоэлектрическим излучатель ВА1 - будет выключен.
  • HL1 - индикатор активации режима охраны. Если устройство находится в режиме "охрана", данный индикатор - горит, если в режиме " контроль состояния дверей" данный индикатор - погашен.

Сигнализация срабатывает - это значит: реле К1 - постоянно включено. Выводы 5 и 6, а так же 2 и 3 данного реле - замкнуты. Пьезоэлектрическим излучатель ВА1 - включается и выключается с периодом ~ 1 сек. Для выключения сигнализации необходимо тумблер SA1 установить в положение "ВЫКЛ".

Рассмотрим основные, функциональные узлы принципиальной схемы устройства. Основой устройства служит микроконтроллер DD1, рабочая частота которого задается генератором с внешним резонатором ZQ1 на 10 МГц.

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

К порту PD микроконтроллер DD1 подключены выключатели SA1, SA2 пьезоэлектрическим излучателем ВА1, индикатор HL1, ключ на транзисторах VT1, VT2 для управления реле К1. К портам РВ, РА, PC микроконтроллера DD1 подключены концевые выключатели S1...S24 и индикаторы HL2...HL25.

Питание на данные индикаторы поступает через ключ на транзисторе VТЗ, который управляется с вывода 21 микроконтроллера DD1. Резисторы R10...R17, R20...R27, R28...R35 - токоограничительные для индикаторов HL2...HL25. Резистор R8 - токоограничительный для индикатора HL1.

Реле К1 управляется соответственно с вывода 14 микроконтроллера DD1. Питающее напряжение +12 В и +5В поступает на устройство с соединителя XI. Конденсатор С5 фильтрует пульсации в цепи питания +5 В. Блокировочный конденсаторы С4 стоит по цепи питания микроконтроллера DD1.

В алгоритме работы устройства можно выделить два режима работы: режим контроля состояния дверей и режим охраны. Рассмотрим алгоритм работы устройства в режиме контроля состояния дверей. Пусть все двери охраняемого объекта закрыты. Тумблер SA1 в положении "ВЫКЛ".

Тумблер SA2 в положении "ВКЛ". После подачи питания на устройство, при инициализации во все разряды портов РВ, РА, PC микроконтроллера DD1 записываются лог. 1. Ключи на транзисторах VT1...VT2 закрыты, индикатор -HL1 - погашен.

Индикаторы HL2...HL25 -погашены. Концевые выключатели S1...S24 -разомкнуты. С вывода 21 микроконтроллера DD1 генерируется периодический сигнал (меандр) с периодом порядка 1 с. Если, открыть дверь № 1, включится концевой выключатель S5.

Индикатор HL2 будет периодически мигать с периодом ~ 1 сек. Пьезоэлектрический излучатель ВА1 выдаст звуковой сигнал длительностью ~ 3 сек.

Если, открыть дверь № 2, включится концевой выключатель S6. Индикатор HL2 будет периодически мигать с периодом ~ 1 сек. Пьезоэлектрический излучатель ВА1 выдаст звуковой сигнал длительностью ~ 2 сек и т. д. Если установить тумблер SA2 в положении "ВКЛ", то при замыкании любого концевого выключателя (при открывании любой двери) будет только мигать соответствующий индикатор.

Рассмотрим работу устройства в режиме охраны. Пусть все двери охраняемого объекта закрыты. Тумблер SA1 установлен в положении "ВЫКЛ".

Устройство переходит в режим охраны, через ~10 сек с момента установки тумблера SA1 в положении "ВКЛ". За это время необходимо закрыть все двери и покинуть охраняемый объект. Понятно если периметр охраняемого объекта достаточно большой и за 10 сек. невозможно закрыть все двери, то все двери необходимо закрыть до постановки объекта под охрану.

Если в режиме охраны включится любой из концевых выключателей S1...S24 (будет открыта любая дверь) при этом на соответствующем выводе портов РВ, РА, PC микроконтроллера DD1 будет присутствовать сигнал уровня лог.0. то через ~ 10 сек. включится звуковая сигнализация (пьезоэлектрический излучатель ВА1). При этом на выводе 14 микроконтроллер DD1 установит уровень лог.0 (Включится реле К1).

Если на охраняемый объект проникает "свой", то ему необходимо за ~ 10 сек и установить тумблер SA1 в положении "ВЫКЛ", иначе сработает сигнализация. Понятно, что доступ к выключателю SA1 должен быть ограничен.

Если на охраняемый объект (через вскрытую дверь) проникает "чужой", то ему необходимо за ~10 сек. найти выключатель SA1 и установить его в положении "ВЫКЛ". Сигнализация включится и в том случае если любой из концевых выключателей S1...S24 включится на короткое время (например, закрыть и тут же закрыть дверь). Контакты реле К1 можно использовать для замыкания цепей управления или питания различных исполнительных устройств, например для механизма блокировки дверей или для включения сирены (ревуна).

Разработанная программа на ассемблере занимает всего-то порядка 0,4 КБайт памяти программ микроконтроллера DD1. Незадействованные аппаратные (линии PD6, PD7) и программные (порядка 7,6 Кбайт) ресурсы микроконтроллера DD1 можно использовать для дополнительных опций.

Например, можно установить пару кнопок и добавить функцию постановки и снятия с охраны устройства через код доступа или управлять какими-то другими исполнительными устройствами. Разобравшись в программе можно заменить установленные программно параметры устройства:

  • период мигания индикатора HL1;
  • длительность звуковой сигнал пьезоэлектрический излучателя ВА1 в режиме контроля состояния дверей;
  • время постановки устройства под охрану, а так же время задержки на включение сигнализации.

В устройстве использованы резисторы С2-ЗЗН-0.125, подойдут любые другие с такой же мощностью рассеивания и погрешностью 5 %. Конденсатор С5 типа К50-35. Конденсатор С1...С4 типа К10-17а. Конденсатор С4 устанавливаются между цепью +5V и общим проводником микроконтроллера DD1. Тумблеры SA1...SA2 типа МТД1.

Реле К1, типа РЭС48Б исполнения РС4.590.202-01. Данные реле, с рабочим напряжением 12 В (или с каким-то другим рабочим напряжением), для каждого конкретного случая, можно подобрать совершенно любые, учитывая при этом коммутируемые ток и напряжение подключаемого исполнительного устройства.

Концевые выключатели можно подобрать совершенно любые под каждый конкретный случай. Это может быть кнопка типа ПКН124, или например, влагозащищенный выключатель путевой типа ВПК2111. Пьезоэлектрический излучатель ВА1- НРМ14АХ.

Транзистор VT1 - КТ829А. Транзисторы VT2, VT3 -КТ3107Е. Индикатор HL1 - АЛ307АМ, красного цвета. Индикатор HL1 можно заменить на любой другой, желательно, с максимальным прямым током до 20 мА.

Рассмотрим работу кодового замка (далее замка) по рисунку 3. Алгоритм его работы достаточно прост: в режиме записи в EEPROM микроконтроллера заносится код, который состоит из 4-х десятичных цифр и набирается на 7- кнопочной клавиатуре. Далее, для проверки записанный код читается в режиме чтения. В рабочем режиме замок ждет ввода кода.

Вводимый код, микроконтроллер записывает в ОЗУ и побайтно сравнивает его с кодом, записанным в EEPROM. Если коды совпали, то микроконтроллер на пять секунд подает сигнал на включение механизма открывания замка.

Кроме того, процедура набора кода может открытой (набранный код индицируется на дисплее, каждой нажатой кнопке ставится в соответствие число на дисплее) и закрытой (при наборе кода на дисплее индицируются одинаковые, заранее определенные символы, каждой нажатой кнопке ставится определенный символ, например).

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

В интерфейс устройства входят шкальный, знакосинтезирующий индикатор HG1, блок индикации (дисплей) из цифровых семисегментных индикаторах HG2...HG4, переключатель SA1, и клавиатура (кнопки S1...S8).

Кнопки S1...S7 обозначены цифрами от "1" до "7". Данные кнопки задают код ввода Кнопкой S8 (Р) задается, в цикле, один из трех режимов работы: "режим № 1", "режим № 2", "режим № 3". После режима № 3 включается режим №1.

Элемент №1 индикатора HG1 включен при работе в режиме №1", элемент №2 индикатора HG1 включен при работе в режиме № 2, и элемент №3 включен соответственно при работе в режиме №3. На 5-ти разрядном дисплее (сдвоенные цифровые индикаторы индикатор HG2, HG3 отображается вводимый код. Индикатор HG4 индицирует символы "3" (при закрытом замке) и "0" (при открытом замке).

Переключателем SA1 задается режим отображения кода на дисплее устройства. Если данный переключатель находится в положении "1", то код задаваемый с клавиатуры индицируется на дисплее устройства. Если в положении "2" (скрытый режим), то при наборе кода на дисплее устройства в каждом разряде индицируются символы

В режиме №1 (рабочий режим) замок готов к вводу кода для открывания замка (если конечно код был предварительно записан в EEPROM). Перед набором кода на дисплее индицируется код 0000. Элемент №1 индикатора HG1 включен (остальные элементы индикатора HG1 выключены).

Индикатор HG4 индицирует символ "3" (закрыто). Кнопками S1...S7 набирается 4-х разрядный код. Набранный код индицируется на дисплее. Микроконтроллер после нажатия любой из кнопок S1...S7 записывает полученный 4-х разрядный код в ОЗУ и начинает сверку кода записанного в ОЗУ и кода записанного в EEPROM. Коды сравниваются побайтно.

Если сравнение прошло успешно, микроконтроллер подает сигнал на исполнительный механизм открывания замка. На пять секунд включается элемент №4 индикатора HG1, индикатор HG4 индицирует символ "О" (открыто) и устанавливается лог. 0 на выводе 21.

Спустя пять секунд выключается элемент №4 индикатора HG1 на выводе 21 устанавливается лог. 1. На дисплее снова индицируется код 0000. Индикатор HG4 снова индицирует символ "3" (закрыто).

В режиме №2 (режим записи) осуществляется запись секретного кода в EEPROM. На дисплее индицируется код 0000. Элемент №2 индикатора HG1 включен. Индикатор HG4 индицирует символ "3" (закрыто). Кнопками SI...S7 набирается код. Набранный код индицируется на дисплее.

Микроконтроллер записывает в EEPROM индицируемый на дисплее 4-х разрядный код после нажатия любой из кнопок 51...57. После записи кода на дисплее снова индицируется код 0000.

В режиме №3 (режим проверки записанного кода) осуществляется проверка записанного секретного кода в EEPROM. Элемент №3 индикатора HG1 включен. Индикатор HG4 индицирует символ "3" (закрыто). Записанный код в EEPROM, индицируется на дисплее.

Понятно, что доступ к кнопке S8 и переключателю SA1 должен быть ограничен. Конструктивно это сделать не так уж и сложно.

Рассмотрим основные, функциональные узлы устройства (рис. 3). Основой устройства служит микроконтроллер DD1, рабочая частота которого задается генератором с внешним резонатором ZQ1 на 11.0592 МГц. Порт PD микроконтроллера DD1 управляет динамической индикацией.

Динамическая индикация собрана на транзисторах VT1...VT5, сдвоенных, цифровых, семисегментных индикаторах HG2, HG3 и одинарном цифровом индикаторе HG4. Резисторы R7...R14 - токоограничительные для сегментов индикаторов HG2...HG4. Коды для включения вышеуказанных индикаторов при функционировании динамической индикации поступают в порт PC микроконтроллера DD1.

Для функционирования клавиатуры задействован вывод 19 (PD5) микроконтроллера DD1. Элементы шкального индикатора HG1 подключены к выводам порта РВ микроконтроллера DD1. Резисторы R2...R5 - токоограничительные для элементов индикатора HG1.

Сразу после подачи питания на выводе 9 микроконтроллера DD1 через RC-цепь (резистор R1, конденсатор С3) формируется сигнал системного аппаратного сброса для микроконтроллера DD1. На дисплее индицируется код 0000. Элемент №1 индикатора HG1 -включен. Индикатор HG4 индицирует символ "3" (закрыто).

Питающее напряжение +5V поступает на устройство с соединителя XI. Конденсатор С5 фильтрует пульсации в цепи питания +5 В. Блокировочный конденсатор С4, стоит по цепи питания DD1.

Совсем коротко о программе. В программе используются два прерывания: Reset и прерывание таймера ТО, обработчик которого начинается с метки ТІМ0. При переходе на метку Reset инициализируются стек, таймер, порты, а так же флаги и переменные используемые в программе.

Таймер ТО генерирует прерывания по переполнению (в регистре TIMSK установлен бит TOIE0). Коэффициент предварительного деления тактовой частоты таймера установлен равным 64 (в регистре TCCR0 записано число 3).

В основной программе осуществляется включение элементов индикатора HG1. Включенные элементы данного индикатора, как уже упоминалось выше определяют текущий режим работы замка. В обработчике прерывания таймера ТО осуществляется: процедура опроса кнопок S1...S8, функционирование динамической индикации, запись секретного кода в EEPROM, чтение секретного кода из EEPROM, перекодировка двоичного числа в код для отображения информации на семисегментнных индикаторах устройства, а так же временной интервал длительностью пять секунд, необходимый для включения исполнительного устройства соленоида.

В ОЗУ микроконтроллера с адреса $61 по адрес $70 организован буфер отображения для динамической индикации. Ниже приведено подробное распределение адресного пространства в ОЗУ микроконтроллера.

  • $60 - адрес начала ОЗУ микроконтроллера.
  • $61...$64 - адреса, где хранится задаваемый код для открывания замка и символ "3". Эти адреса выводятся на индикацию в режиме №1 (буфер №1).
  • $66...$69 - адреса, где хранится код читаемый из EEPROM и символ "3". Эти адреса выводятся на индикацию в режиме № 3 (буфер №2).
  • $6С...$70 - адреса, где хранятся символы при скрытом наборе кода, и символ " 3". Эти адреса выводятся на индикацию в режиме № 1(буфер №3).

Флаги, задействованные в программе, находятся в регистрах R19 (flo) и R25 (flo1).

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

Применены резисторы типа С2-ЗЗН подойдут любые другие с такой же мощностью рассеивания и погрешностью 5 %. Конденсаторы С1...С4, типа - К10-17а, С5 - К50-35а. соединитель XI типа WF-4. Конденсатор С4 устанавливается между цепью +5V и общим проводником микроконтроллера DD2. Для отработки макета применялся выключатель SA1 типа ВДМЗ-8.

Для установки в блочный корпус, можно применить, например, переключатель типа МТДЗ. В дисплее выделен разряд, индицирующий символы "3", "О" (индикатор HG4) на фоне остальных разрядов интерфейса. Поэтому для данного разряда выбран семисегментный индикатор зеленого цвета HDSP-F501, индикаторы HG2, HG3 зеленого цвета DA56-11GWA.

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

Исходный код и прошивки программ - Скачать (8 КБ).

Шишкин С. В. РК-07-16.

Литература:

  1. А. В. Белов Создаем устройства на микро-контроллерах.
  2. С. В. Шишкин. Кодовый замок на базе микроконтроллера. Р-10-2011.

Ограничивать доступ посторонних лиц в помещения с ценными вещами поможет кодовый замок. Один из вариантов реализации кодового замка на микроконтроллере 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