Кодовый замок на PIC12F675. Кодовый замок с одной кнопкой на микроконтроллере PIC16F628 Схема собрана на двухсторонней печатной плате

Alan Parekh

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

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

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

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

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

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

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

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

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

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

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

Опции меню:

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

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

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






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

Загрузки

Hex-файл для программирования микроконтроллера -

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

Устройство предназначено для защиты помещений, шкафов и сейфов от несанкционированного вскрытия.

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

Эта несложная схема вполне по силам многим радиолюбителям.

А продуманный алгоритм работы, доставит вам удовольствие эксплуатации этой схемы.

Основой устройства служит микроконтроллер PIC16F628A (DD1 на схеме рис. 1).

После подачи питания программа микроконтроллера настраивает его порты, а также отключает источник образцового напряжения, модуль ШИ/захвата сравнения, таймеры, компараторы и аппаратный USART - эти модули не нужны для работы замка. Затем начинается опрос клавиатуры. Она состоит из двух частей. Первая - кнопки SB3-SB14 - находится снаружи охраняемого объекта. Вторая - кнопки SB1, SB2 и выключатель SA1 - расположена внутри помещения. Кнопки SB3-SB 13 первой части клавиатуры объединены в матрицу. Кнопка SB 14 в матрицу не входит, она предназначена для перезапуска микроконтроллера в случае какого-либо сбоя в программе, а также в ряде других случаев, о которых будет рассказано ниже.

Кнопка SB1 "Открыть" установлена внутри помещения около двери. Нажатием на нее можно открывать дверь изнутри, не набирая кода. SB2 - кнопка перезапуска программы; кнопки SB2 и SB И включены параллельно. Кнопкам матрицы присвоены обозначения: SB3 - "1", SB4 - "4", SB5 - "7", SB6 -"Открыть". SB7 - "2", SB8 - "5", SB9 -"8 " , SB10 - "О", SB11 - "3", SB12 - "6". SB13 - "9". Тумблером SAI выбирают режим закрывания замка. Код вводят поочередным кратковременным нажатием на цифровые кнопки. В подтверждение нажатия прозвучит короткий тональный сигнал пьезоизлучателя НА1. управляемого транзистором VT2.

Перед тем как открыть дверь, вводят четырехзначный код с паузами между соседними нажатиями не более 3 с. а затем в течение 3 с надо кратковременно нажать на кнопку SB6 Через 2 с на выходе RAO микроконтроллера DD1 установится высокий уровень, откроется транзистор VT1 и сработает электромагниту!, который приведет в движение ригель замка, сжимая его пружину, и дверь откроется.

Если пауза между соседними нажатиями превысит 3 с, то прозвучит сигнал с уменьшающейся частотой. Это означает, что программа начала выполняться заново и код надо вводить сначала. Диод VD1 предназначен для защиты транзистора VT1 от всплеска напряжения самоиндукции обмотки электромагнита Y1. Перед срабатыванием электромагнита прозвучит сиг нал такой же частоты, как и при нажатии цифровых клавиш, но большей длительности, что сигнализирует об открывании двери.

Когда контакты выключателя SA1 разомкнуты, электромагнит закроет замок через определенное время (по умолчанию - 12 с). Это время устанавливают при программировании микроконтроллера. В программе, которую нужно будет загрузить в контроллер, в поле работы с EEPROM, в ячейку с адресом 0x06 (седьмая по счету) необходимо вставить число от 0x01 до OxFF, из расчета 1 единица = 2,5 с. Минимально возможная пауза равна 2,5 с, максимальная - 10 мин.

В случае, если контакты выключателя SA1 замкнуты, т. е. на входе RA4 микроконтроллера DD1 установлен низкий уровень, то закрывание замка происходит после нажатия на кнопку SB 14 либо на SB2. После того как закроется транзистор VT1, электромагнит обесточится и пружина замка вытолкнет ригель обратно - дверь снова окажется запертой.

Для открывания двери изнутри помещения нажимают на кнопку SB1 и удерживают ее до срабатывания электромагнита, о чем оповестит тональный сигнал длительностью 2 с. Открыть дверь изнутри можно в любой момент. Если открывания двери не произойдет, необходимо нажать на кнопку SB2 (перезапустить программу) и снова нажать на кнопку SB 1.

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

Устройство снабжено системой блокировки. Каждый раз при введении неверного кода замок воспроизведет два сигнала частотой 1000 Гц и один частотой 500 Гц. Ошибочным контроллер считает нажатие на кнопку SB6 в то время, когда в рабочих регистрах находится неверный код, и введение пяти цифр кода. После трех ошибок подряд микроконтроллер DD1 установит на выходе RA2 высокий уровень. При этом откроется транзистор VT3, который включит тревожное устрой­ство. Этим устройством может быть сирена или узел дозвона по телефону.

Одновременно включится светодиод HL1, установленный на панели клавиатуры, который покажет, что опрос клавиатуры (кроме тумблера SA1 и кнопок SB1, SB2, SB14) отключен. Затем следует десятиминутная пауза, во время которой работает тревожное устройство и включен светодиод HL1. В течение этого времени открыть замок можно только изнутри. Если нажать на кнопки SB 14 и SB2 (кнопки перезапуска программы микроконтроллера), то десятиминутный отсчет начнется заново. После паузы контроллер предоставит только одну возможность ввести код, и если он будет неверным, десятиминутная пауза с включением тревожного устройства повторится снова. И так будет продолжаться до введения правильного кода. Каждый раз после верного введения кода счетчик ошибок обнуляется.

Питает устройство источник постоянного тока напряжением 10...15 В. При отключении электроэнергии в сети 220 В замок продолжает работать от аккуму­ляторной батареи. Схема простейшего варианта такого блока питания показана на рис. 2.

Трансформатор Т1 понижает сетевое напряжение 220 В до 15...20 В. Максимальный ток вторичной обмотки трансформатора не должен быть менее 1,5 A. DA1 - регулируемый стабилизатор напряжения. Изменяя сопротивление построечного резистора R2, устанавливают на выходе стабилизатора DA1 такое напряжение, при котором ток зарядки заряженной аккумуляторной батареи GB1 не превышает 100...200 мкА. При этом во время большого потребления тока, когда сработал электромагнит Y1, основную часть тока дает аккумуляторная батарея, что позволяет не перегружать стабилизатор DA1. Диод VD5 предназначен для защиты стабилизатора DA1 в случае отсутствия на его входе напряжения.

Аккумуляторная батарея должна обеспечивать ток 300...600мА (емкость - 7 А-ч). Стабилизатор DA1 следует установить на теплоотвод площадью 30...40 см2.

Клавиатуру можно изготовить из отдельных кнопок. Подойдут, к примеру, DIPTRONICS DTSMW-66N. Но можно применить и готовую клавиатуру от кнопочного телефонного аппарата или калькулятора. Как правило, можно легко подключить такую клавиатуру к устройству, собрав кнопки в подходящую матрицу. Также необходимо вынести на панель клавиатуры светодиод HL1.

Пьезоизлучатель подойдет любой из серии ЗП. Электромагнит Y1 применен от лентопротяжного механизма магнитофона, но подойдет любой другой, подходящий по габаритам и с максимальным током обмотки не более 1,3 А. Если ток, потребляемый электромагнитом, будет больше 1 А, то транзистор VT1 следует установить на теплоотвод площадью 30... 40 см2.

Архив с микропрограммой

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

Ток потребления схемы является низким, потому что микроконтроллер спит большую часть времени, и просыпается только для обработки нажатий клавиш. Контроллер 16F628A уже работает от внутреннего RC генератора, так что никаких внешних кристаллов не требуется. Каждое нажатие на клавишу дублируется звуковым сигналом зуммера BM1. Зуммер используется с внутренним генератором. Состояние прибора высвечивается на LCD индикаторе типа 16x02 с контроллером HD44780. В замке используется стандартная матричная клавиатура с количеством столбцов 3 и количеством строк 4. Схема замка на рисунке ниже.

Для того чтобы открыть замок введите правильный код и используйте "#" в качестве клавиши "ввод". Первоначальный код 623342. Код может быть изменен в любое время после ввода действующего кода. Клавиша "*" используется для изменения кода. Введите фактический код, и нажмите "*". Если код введен правильно, индикатор изменения кода HL1 загорится, после этого введите новый код дважды подтверждая ввод клавишей "#". Так же можно изменить длину кода.

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

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

Данный микроконтроллер снабжен 10 битным АЦП с диапазоном преобразования от 0 до 1023. Суть метода в том, что клавиатура представляет из себя, по сути, делитель напряжения на резисторах R1-R12 и при нажатии определенной кнопки клавиатуры на вход 7 микроконтроллера поступает напряжение, величина которого характерна только для данной кнопки.

Работа кодового замка на PIC12F675

Для записи 4 цифр секретного кода сперва необходимо нажать кнопку “CODE” и удерживать ее до того момента когда загорится светодиод LED. Затем поочередно нужно набрать 4 цифры секретного кода. По завершению ввода, данный код будет записан в энергонезависимую память микроконтроллера.

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

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

Как это работает

Нажмите 4 кнопки в определенной последовательности, и реле замкнет цепь замка примерно на 5 секунд. Но снаала нужно запрограммировать код следующим образом: нажать и держать кнопку CODE, пока не загорится светодиод. Когда светодиод загорится, введите свой код. После введения четвертой цифры код запишется в eeprom, и включить реле будет возможно только используя этот код. Если при вводе кода ошибиться 10 раз, то включится второе реле, отвечающее за сигнал тревоги.


Распознавание кнопок с помощью АЦП

Как видно из схемы, клавиатура собрана из набора кнопок и резисторов. Клавиатура подключена только тремя проводами:, +5V, земля и сигнальный провод, подключенный к выводу 7 контроллера. Резисторы подключены последовательно, и в каждой точке соединения существует свое напряжение. Когда мы нажимаем кнопку, мы подаем определенное напряжение на вывод 7 микроконтроллера. Вывод 7 сконфигурирован как вход и подключен к модулю АЦП контроллера. PIC12F675 имеет 10-битный АЦП и диапазон значений варьируется от 0 до 1023. Так, если мы имеем 12 кнопок, диапазон между ними составляет 85 единиц. Кнопка “0” лежит в диапазоне 0-85, Кнопка “1” 86-170, Кнопка “2” 171-256 … и т.д.