Электронный замок с ключом iButton (DS1990A)

Вашему вниманию представлена схема электронного замка с ключом таблеткой iButton модели DS1990A (Touch Memory). Ключ представляет собой устройство, которое имеет в своей памяти   уникальный серийный номер. Уникальность состоит в том, что серийный номер состоит из 48 бит и как следствие этому, количество возможных его вариантов составляет  281474976710656.

Описание электронного замка

Замок собран на микроконтроллере фирмы Microchip PIC16F627A(628A, 648A). После подачи питания, микроконтроллер посылает импульс сброса  длительностью 500 мкс и через 70 мкс проверяет ответ от DS1990A. Если ответа нет, то микроконтроллер ждёт еще примерно 80 мс  и снова передаёт импульс сброса. По такому алгоритму проверяется подключение ключа к замку.

Электронный замок с ключом iButton DS1990A

Если ответ  есть, значит  DS1990A подключен к замку. Затем посылается команда «читать ROM» (33h), после чего микроконтроллер переходит на приём и записывает в ОЗУ переданный таблеткой DS1990A  номер, где сравнивает его с записанным  в EEPROM. Если он совпадает с одним из них, то выдается звуковой сигнал, и  устанавливается высокий уровень на выводе RA1 в течение 1.5 с.

Запись номера ключа в EEPROM: приложить ключ к замку и после звукового сигнала нажать кнопку  B1. Кнопку располагают, естественно, в недоступном для посторонних людей месте. Для очистки всех номеров  из EEPROM удерживать нажатой кнопку B1 в течение 5с. После стирания EEPROM замок издает звуковой сигнал.

Общее количество серийных номеров в памяти — не более 21.

Чтобы микроконтроллер не пострадал из-за статического разряда,  в схеме применен стабилитрон VD1 на 5В.  В схеме замка можно применить любой из микроконтроллеров PIC16F627A, PIC16F628A, PIC16F648A. Для микроконтроллера PIC12F629/675 необходимо применить другую программу. Запитать схему можно от стабилизатора на  микросхеме LM317.

При программировании PIC программатором, следует выставить следующие биты:

  • Тип генератора IntRC,
  • WDT включен,
  • PWRT включен,
  • MCLR выключен.
Файлы к данной схеме (1,1 Mb, скачано: 2 661)
редактор

6 комментариев

  • 06.05.2011 в 16:06

    Кто-нибудь может поправить прошивку и увеличить длительность сигнала на выводе RA1 до 20-30сек?
    Очень нужно, а в программировании не силен.

    Ответить
  • 18.06.2012 в 08:58

    Уважаемые у Вас небыло глюков с данным замком???
    А именно…. После прошивки контроллера невозможность потом его стереть и залить другую прошивку, количество ключей больше 9 нельзя записать.
    Прорграмматор видит контроллер, в режиме стирания процесс проходит без ошибок ног контроллер не стирается и нельзя прочитать содержимое залитой прошивки.
    Как можно востановить контроллер в первоначальное состояние, скорее всего в исходнике или НЕХ файле включен бит защиты. Контроллер PIC16F628A новый ниразу до этого не прошивался. Запорол уже два штуки.
    Хотя контроллеры в схеме работаю, программатор видит и считывает но в буфере все нолики или FF, Я в написании программ не силен.
    Спасибо за поддержку.

    Ответить
  • 18.09.2012 в 14:22

    Отличное устройство (очень нравится), но проблема с прошивкой напрягает — все что написано выше подтверждаю и самое печальное нельзя стереть ключи из памяти, с 12f629 глюки такие же, если автор подправит буду очень благодарен, спасибо

    Ответить
  • 18.11.2014 в 11:07

    фрагмент исходника:
    clrf EEADR
    movlw 0x00
    movwf EEDATA
    goto _write_first
    _nx_adr movlw 0xFF
    movwf EEDATA
    _write_first:
    call _eeprom_write
    incf EEADR, f
    movlw 0x80
    subwf EEADR, w ;:-STATUS НА ПЕРЕПОЛНЕНИЕ EEADR НИКАК НЕ РЕАГИРУЕТ
    btfss STATUS, C

    он же с доработкой:
    _ms_del
    _eadr
    endc
    ..
    ——————————
    ——————————
    ..
    clrf EEADR
    clrf _eadr
    movlw 0x00
    movwf EEDATA
    goto _write_first
    _nx_adr movlw 0xFF
    movwf EEDATA
    _write_first:
    call _eeprom_write
    incf EEADR, f
    incf _eadr
    movlw 0x80
    subwf _eadr, w
    btfss STATUS, C
    goto _nx_adr

    Ответить
  • 12.04.2016 в 10:02

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

    Ответить

Добавить комментарий

Ваш электронный адрес не будет опубликован.

*