Кодовый замок с дисплеем на микроконтроллере avr. Схема охранной сигнализации с кодовым замком на AVR микроконтроллерах
Схема кодового звонка реализована на микроконтроллере ATtiny2313. Схема кодового замка состоит из микроконтроллера AVR и транзисторного ключа, управляющего реле.
Для записи кода замыкаем тумблер "sw", тем самым переводим замок в режим записи кода. Вводим размерность кодовой комбинации кнопками от 1 до 7 (кнопки 8, 9 и 0 в наборе размерности не задействованы), набираем любую кодовую комбинацию равную размерности кода.
Сработает эл. магнит замка, открыв его, тем самым сигнализируя, что кодовая комбинация записана в память "EEPROM".
Рабочий режим. Отключаем тумблер "sw", переводим замок в режим проверки, записанной кодовой комбинации. Повторяем последовательность для режима записи, вводим размер, вводим записанный код.
Принципиальная схема кодового замка на микроконтроллере AVR:
Набор кода всегда начинается с кн. 1 _ 7 (размерность). При наборе кодовой комбинации, код можно вводить не только по одной цифре, а так - же например, нажав кн. 7, не отпуская, нажать кн. 8 далее нажать кн. 6 и отпускать по одной кнопке в любой последовательности, в результате будет набрана пятизначная кодовая комбинация.
Если при правильно набранной комбинации замок не открылся нужно несколько раз нажать кн. 8 - 9 или 0, максимум 7 раз или нажать одновременно эти кнопки раза два и повторить набор кода. Это косвенно может означат, что замок пытались открыть.
При прошивке микроконтроллера fuse-биты надо выставить следующим образом:
Собранный кодовый замок выглядит так:
В различной радиолюбительской литературе можно обнаружить множество вариантов электронных кодовых замков.
Особенностью данной схемы кодового замка на микроконтроллере является принципиально новый метод считывания нажатия клавиш, используя всего лишь один порт микроконтроллера PIC12F675. Эта особенность может быть реализована только с микроконтроллерами в составе которого имеется модуль аналого-цифрового преобразователя (АЦП), к примеру как наш микроконтроллер PIC12F675.
Данный микроконтроллер снабжен 10 битным АЦП с диапазоном преобразования от 0 до 1023. Суть метода в том, что клавиатура представляет из себя, по сути, делитель напряжения на резисторах R1-R12 и при нажатии определенной кнопки клавиатуры на вход 7 микроконтроллера поступает напряжение, величина которого характерна только для данной кнопки.
Работа кодового замка на PIC12F675
Для записи 4 цифр секретного кода сперва необходимо нажать кнопку “CODE” и удерживать ее до того момента когда загорится светодиод LED. Затем поочередно нужно набрать 4 цифры секретного кода. По завершению ввода, данный код будет записан в энергонезависимую память микроконтроллера.
Теперь если набрать данный код на клавиатуре произойдет включение реле на 5 секунд. При десятикратной неверно набранном секретном коде прозвучит сигнал тревоги.
Данный проект будет отличным вариантом для повторения новичками, в нем используется ЖКИ дисплей 1602, клавиатура 4х4 из кнопок и конечно же сам контроллер. Кроме того, применены реле, кнопка и разъемы питания, PLS штырьки, пару транзисторов ну и по мелочи. Кстати, яркость дисплея в проекте будет регулироваться по методу ШИМ.
Это устройство может быть использовано для защиты практически любых объектов, пользователь должен ввести правильный пароль для получения доступа. Плата уже спроектирована удобным образом, и остается изготовить только красивый корпус для него. Пароль вводится с помощью встроенной в клавиатуру матрицы 4x4. Основной модуль ЖК-дисплея используется для отображения сообщений пользователю и текущей информации. Как только будет введен правильный пароль - сработает реле. Об этом так же будет свидетельствовать светодиод, установленный рядом с реле. Для отключения реле нужно нажать соответствующую кнопку на клавиатуре.
После ввода четырехзначного пароля необходимо нажать кнопку "ОК" (S8). В любое время вы можете нажать кнопку "Отмена" (S12), чтобы очистить код (например, при вводе любых неправильных цифр).
Код блокировки можно легко изменить, для этого нужно ввести специальный пароль "0000", как только вы введете этот пароль, устройство переключится в режим смены пароля. Здесь нужно ввести старый пароль, чтобы получить разрешение, а затем ввести новый пароль, все очень просто.
Подсветка ЖК-дисплея выключается автоматически, после того как система находится в режиме ожидания нескольких секунд. Затемнение подсветки происходит очень плавно, так же как например в мобильных телефонах. Дисплей можно заменить на любой аналогичный, с похожим контроллером или даже другого разрешения, главное советую обратить внимание на распиновку выводов, в некоторых моделях распиновка дисплеев может отличаться. Программа для контроллера написана в среде С++, исходники, а так же прошивка для контроллера прилагаются. Микроконтроллер можно применить с любым индексом, буква L означает пониженное энергопотребление.
Файл печатной платы для изготовления находится ниже в архиве, печатную плату можно заметно уменьшить, если применить кнопки поменьше, или если вынести клавиатуру на отдельную плату. Цифровые клавиши можно взять от старой клавиатуры компьютера или ноутбука.
Фьюзы:
HIGH=D9
LOW=E1
Скачать файл печатной платы, исходник и прошивку вы можете ниже
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
U1 | МК AVR 8-бит | ATmega8 | 1 | ATmega8L | В блокнот | |
U2 | Линейный регулятор | LM7805 | 1 | В блокнот | ||
Q1, Q2 | Биполярный транзистор | BC548 | 2 | В блокнот | ||
D1, D3 | Выпрямительный диод | 1N4007 | 2 | В блокнот | ||
D2, D4 | Светодиод | 2 | В блокнот | |||
С1, С3-С5 | Конденсатор | 0.1 мкФ | 4 | В блокнот | ||
С2 | Электролитический конденсатор | 470 мкФ | 1 | В блокнот | ||
R1 | Резистор | 200 Ом | 1 | В блокнот | ||
R2, R4, R6 | Резистор | 4.7 кОм | 3 | В блокнот | ||
R3, R5 | Резистор | 330 Ом | 2 | В блокнот | ||
RV1 | Подстроечный резистор | 10 кОм | 1 | В блокнот | ||
LCD1 | LCD-дисплей | 16x2 LCD | 1 | В блокнот | ||
RL1 | Реле | РСВ | 1 | В блокнот | ||
S1-S16 | Кнопка | 16 | В блокнот | |||
SW1 | Выключатель | 1 | В блокнот | |||
L1 | Катушка индуктивности | 10 мкГн | 1 |
Исполнительным механизмом в электронном замке, схема которого показана на рис. 1, служит электромеханический замок ЗНЭМ-1-2, открывающийся при подаче на встроенный в него электромагнит Y1 постоянного напряжения 12 В. Логическая часть электронного замка построена на микроконтроллере PIC16F630-I/R Кнопки SB1 и SB2 предназначены для ввода открывающего его кода. Светодиоды HL1—HL3 разного цвета свечения сигнализируют о состоянии и режиме работы. Полевой транзистор VT1 по сигналу, формируемому микроконтроллером на выходе РСЗ, управляет электромагнитом Y1.
Рис. 1
Устройство питается от гальванической или аккумуляторной батареи напряжением 12 В. Такое напряжение необходимо для надёжного срабатывания электромагнита Y1. Его можно подавать как от гальванической или аккумуляторной батареи, так и от сетевого блока питания. Батарея гарантирует возможность открыть замок при отсутствии напряжения в сети, но придётся постоянно следить за её заряженностью.
Напряжение 5 В {требующееся для питания микроконтроллера) получается из 12 В с помощью интегрального стабилизатора DA1. Если использовать исполнительное устройство на другое напряжение или отдельный источник его питания, напряжение, подаваемое на вход стабилизатора, может быть уменьшено до 7 В или увеличено до 15 В.
Ток, потребляемый замком, когда он закрыт, очень невелик и не превышает нескольких миллиампер. В процессе набора кода он возрастает до десятков миллиампер в зависимости от числа включённых светодиодов, а при срабатывании электромагнита — приблизительно до 1 А.
Рис. 2a. Вид со стороны компонентов
Рис. 2b. Вид со стороны дорожек
Замок собран на печатной плате. Расположение элементов и чертёж печатных проводников на ней показаны на рис. 2. Светодиоды HL1—HL3 и кнопки SB1, SB2 установлены отдельно на раме запираемой замком двери. Открывающему замок человеку светодиоды должны быть видны, а кнопки доступны для нажатия. Светодиоды, типы которых указаны на схеме, имеют диаметр корпуса 10 мм и повышенную яркость. Однако можно применить и другие, подходящих цветов свечения.
Программа микроконтроллера создана в среде "PIC Simulator IDE v6.91". Открывающий код представляет собой комбинацию из восьми нажатий в определённом порядке на кнопки SB1 и SB2. В программе нажатие на кнопку SB1 представляется логическим нулём в соответствующем порядковому номеру нажатия разряде ячейки памяти, а нажатие на кнопку SB2 — логической единицей в таком разряде. Общее число возможных комбинаций — 256.
Нажатие на любую кнопку подтверждается включением светодиода HL1, что позволяет визуально их контролировать. Набирая код, нельзя нажимать на обе кнопки одновременно. Это приведёт к отмене попытки набора и блокировке замка на 4 с. В случае слишком продолжительной паузы между нажатиями на кнопки или слишком длительного (более 3 с) удержания кнопки нажатой программа включает свето-диод HL3 и также отменяет попытку ввода, блокируя замок на 4 с.
Если код набран до конца, но не совпал с хранящимся в памяти микроконтроллера образцом, замок блокируется на 4 с, но светодиод HL3 при этом мигает. Три неверных набора кода заблокируют замок на минуту, что сопровождается включением всех трёх светодиодов. До окончания произошедшей по любой причине блокировки нажатия на кнопки не дают никакого эффекта.
Образцовая кодовая комбинация хранится в EEPROM микроконтроллера по адресу 1. В начале своей работы программа читает содержимое этой ячейки и присваивает его переменной code. Первоначально код заносят в EEPROM на этапе программирования микроконтроллера. Средства для этого имеются в программном обеспечении любого программатора. Например, в главном окне среды программирования "PIC Simulator IDE v6.91" достаточно перед загрузкой программы в микроконтроллер открыть пункт меню "Tools-* EEPROM Memory Editor" и в окне с образом EEPROM записать нужный код в ячейку по указанному выше адресу. Содержимое памяти здесь представляется в шестнадцатеричной системе счисления, поэтому, например, код 00110011 выглядит как 33.
В процессе эксплуатации замка можно сменить код, не перепрограммируя микроконтроллер. Для этого следует включить замок и правильно ввести код, действующий на данный момент. Должен включиться светодиод HL2, а замок — открыться. Пока он открыт, нажмите на обе кнопки одновременно.
Светодиод HL2 начнёт мигать, a HL3 включится. Отпустите кнопки и после того, как светодиод HL3 погаснет, начинайте ввод новой комбинации- Если требования к длительности нажатий на кнопки и пауз между ними при вводе не нарушены, светодиод HL2 продолжит мигать, а светодиод HL3 снова будет включён- После того как светодиод HL3 вновь погаснет (для этого обе кнопки должны быть отпущены), наберите ту же комбинацию ещё раз. Если она идентична первой, программа её примет и запишет в EEPROM.
Приложенный к статье исходный текст программы на языке BASIC содержит описания всех используемых переменных и комментарии к наиболее важным строкам. Таймер TMR0 микроконтроллера сконфигурирован так, что переполняется с периодом около 65,5 мс, каждый раз формируя запрос прерывания. Обрабатывая эти запросы, микроконтроллер определяет состояние кнопок и отсчитывает необходимые интервалы времени. Например, приблизительно минутная блокировка замка основана на отсчёте 1000 прерываний. Их счёт в данном случае ведётся в переменной den_p. Поскольку она имеет тип long, занимая четыре байта памяти, то может принимать значения от 0 до 232-1 (4294967295). Если, например, задать предельное значение результата счёта равным 3600/0,0655^56000, продолжительность блокировки увеличится до часа.
Устройство предназначено для защиты помещений, шкафов и сейфов от несанкционированного вскрытия. Все установки и код хранятся в энергонезависимой памяти микроконтроллера. Основой устройства служит микроконтроллер PIC16F628A (DD1 на схеме рис. 1). После подачи питания программа микроконтроллера настраивает его порты, а также отключает источник образцового напряжения, модуль ШИМ захвата сравнения, таймеры, компараторы и аппаратный USART - эти модули не нужны для работы замка. Затем начинается опрос клавиатуры.
Она состоит из двух частей. Первая - кнопки SB3-SB 14 - находится снаружи охраняемого объекта. Вторая - кнопки SB1, SB2 и выключатель SA1 - расположена внутри помещения. Кнопки SB3-SB 13 первой части клавиатуры объединены в матрицу. Кнопка SB 14 в матрицу не входит, она предназначена для перезапуска микроконтроллера в случае какого-либо сбоя в программе, а также в ряде других случаев, о которых будет рассказано ниже.
Кнопка SB1 "Открыть" установлена внутри помещения около двери. Нажатием на нее можно открывать дверь изнутри, не набирая кода. SB2 - кнопка перезапуска программы; кнопки SB2 и SB 14 включены параллельно. Кнопкам матрицы присвоены обозначения: SB3 - "1", SB4 - "4", SB5 - "7", SB6 - "Открыть", SB7 - "2", SB8 - "5", SB9 - "8", SB 10 - "0", SB11 - "3", SB 12 - "6", SB 13 - "9". Тумблером SA1 выбирают режим закрывания замка. Код вводят поочередным кратковременным нажатием на цифровые кнопки. В подтверждение нажатия прозвучит короткий тональный сигнал пьезоизлучателя НА1, управляемого транзистором VT2.
Перед тем как открыть дверь, вводят четырехзначный код с паузами между соседними нажатиями не более 3 с, а затем в течение 3 с надо кратковременно нажать на кнопку SB6. Через 2 с на выходе RA0 микроконтроллера 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 (перезапустить программу) и снова нажать на кнопку SB1.
Когда необходимо сменить код, сначала вводят старый точно так же, как и при операции открывания двери, но потом нажимают на кнопку SB6 не кратковременно, а удерживают ее до того момента, пока не прозвучат три тональных сигнала. Затем необходимо немедленно отпустить кнопку SB6, ввести новый четырехзначный код и сразу же в подтверждение введения еще раз нажать на кнопку SB6. Далее прозвучит сигнал с нарастающей частотой, который известит о том, что новый код принят. Он хранится в первых четырех ячейках энергонезависимой памяти микроконтроллера DD1.
Устройство снабжено системой блокировки. Каждый раз при введении неверного кода замок воспроизведет два сигнала частотой 1000 Гц и один частотой 500 Гц. Ошибочным контроллер считает нажатие на кнопку SB6 в то время, когда в рабочих регистрах находится неверный код, и введение пяти цифр кода. После трех ошибок подряд микроконтроллер DD1 установит на выходе RA2 высокий уровень. При этом откроется транзистор VT3, который включит тревожное устройство. Этим устройством может быть сирена или узел дозвона по телефону.
Одновременно включится светодиод HL1, установленный на панели клавиатуры, который покажет, что опрос клавиатуры (кроме тумблера SA1 и кнопок SB1, SB2, SB 14) отключен. Затем следует десятиминутная пауза, во время которой работает тревожное устройство и включен светодиод HL1. В течение этого времени открыть замок можно только изнутри. Если нажать на кнопки SB 14 и SB2 (кнопки перезапуска программы микроконтроллера), то десятиминутный отсчет начнется заново. После паузы контроллер предоставит только одну возможность ввести код, и если он будет неверным, десятиминутная пауза с включением тревожного устройства повторится снова. И так будет продолжаться до введения правильного кода. Каждый раз после верного введения кода счетчик ошибок обнуляется.
class="eliadunit"> |
Питает устройство источник постоянного тока напряжением 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 .