21_24.PDF

(227 KB) Pobierz
Zamek szyfrowy do sejfu - AVT-5042
Zamek szyfrowy do sejfu
Zamek szyfrowy do sejfu
„Ucho od śledzia panie Kwinto”
AVT−5042
Kwinto podszed³ wolnym
krokiem do czaj¹cej siÍ
w†k¹cie bankowego skarbca
bestii, ktÛr¹ by³ dla niego
sejf znienawidzonego Kramera.
Obecni, szeregowi pomocnicy
od wykonywania czarnej
roboty w†rodzaju wysadzania
dynamitem úciany skarbca,
wstrzymali oddech, kiedy
mistrz po³oøy³ rÍce na
lúni¹cych pokrÍt³ach zamka
szyfrowego, arcydzie³a
dominuj¹cej w†úwiecie,
szwajcarskiej mechaniki
precyzyjnej. Przez d³uøsz¹
chwilÍ by³o s³ychaÊ jedynie
cichutki terkot obracanych
przek³adni. Nagle da³ siÍ
s³yszeÊ niezbyt g³oúny trzask,
potem drugi, trzeci... Kwinto
poci¹gn¹³ za uchwyt i†drzwi
sejfu zaczͳy siÍ powoli
otwieraÊ...
PiÍkna scena, piÍkne czasy! Cza-
sy, w†ktÛrych krÛlami przestÍpcÛw
nie byli zwykli bandyci, ale genial-
ni kasiarze, otwieraj¹cy kaødy za-
mek bez uøywania si³y i†robienia
komukolwiek krzywdy. Mechanicz-
ne zamki do sejfÛw by³y prawdzi-
wymi cudami Ûwczesnej techniki,
obecnie zast¹pionymi przez bez-
duszne zamki elektroniczne.
SprÛbujemy jednak zbudowaÊ
elektroniczny odpowiednik szyf-
rowego zamka do sejfu, ktÛry przy
obecnym stanie elektroniki powi-
nien byÊ uk³adem banalnie pros-
tym. Tylko, øe tym razem: ucho
od úledzia, panie Kwinto, ucho od
úledzia! Tego zamka nie otworzy
nawet najgenialniejszy kasiarz, ani
Pan ani nawet sam mistrz Szpic-
brÛdka! Nawet najlepszy s³uch
i†najwiÍksze ìczucieî w†palcach
s¹ bezradne wobec nowoczesnej
elektroniki!
Prezentowany w†artykule zamek
moøe byÊ zarÛwno niezwykle efek-
town¹ zabawk¹, jak i†w†pe³ni uøy-
tecznym urz¹dzeniem zabezpiecza-
j¹cym dostÍp, moøe nie do skarbca
bankowego, ale do domowego sej-
fu czy skrytki. Moøe byÊ takøe
³atwym w†obs³udze i†trudnym do
otwarcia przez niepowo³ane osoby
zamkiem do drzwi wejúciowych
domu lub innego pomieszczenia.
Kluczem do zamka jest dowol-
ny ci¹g liczb ( nie cyfr! ) dwucyf-
rowych. Dowolny, poniewaø ich
maksymalna liczba wynosi 125,
co znacznie przekracza moøliwoú-
ci pamiÍciowe przeciÍtnego cz³o-
wieka. Nawet przy wykorzystywa-
niu kilku liczb odgadniÍcie klucza
jest praktycznie niemoøliwe,
a†w†kaødym razie wymaga wiÍcej
szczÍúcia niø wylosowania ìszÛst-
kiî w†Toto Lotku.
Dok³adne skopiowanie w sposÛb
elektroniczny klasycznego zamka
szyfrowego do sejfu nie mia³oby
chyba wiÍkszego sensu. Prowadzi-
³oby to do zastosowania kilku
pokrÍte³, czyli do niepotrzebnego
komplikowania konstrukcji oraz
zwiÍkszenia kosztÛw wykonania.
Dlatego teø w†uk³adzie zastosowa-
³em tylko jedno pokrÍt³o (impul-
sator obrotowy) oraz podwÛjny wy-
úwietlacz siedmiosegmentowy LED,
na ktÛrym jest prezentowane aktu-
alne po³oøenie pokrÍt³a zamka.
Nawet najlepszy zamek szyfro-
wy niewiele by³by wart bez uk³a-
dÛw wykonawczych. Uk³ad nasze-
go zamka zosta³ wyposaøony
w†dwa wyjúcia. W jednym zasto-
sowano zwyk³y przekaünik o†duøej
obci¹øalnoúci stykÛw, za poúred-
nictwem ktÛrego moøemy sterowaÊ
dowolnym urz¹dzeniem elektrycz-
nym nie pobieraj¹cym wiÍcej niø
8A przy 220VAC. Natomiast do
drugiego wyjúcia moøemy do³¹czyÊ
typowy serwomechanizm modelar-
ski. Po otwarciu zamka wa³ na-
pÍdowy serwa ustawiany jest
w†jednym ze skrajnych po³oøeÒ,
a†po zamkniÍciu, w†przeciwnym,
po obrÛceniu wa³u o†180 o . Serwo-
mechanizm modelarski charakte-
Elektronika Praktyczna 1/2002
21
P R O J E K T Y
32249071.016.png
Zamek szyfrowy do sejfu
Rys. 1. Schemat elektryczny zamka.
ryzuje siÍ znacznym momentem
obrotowym, co umoøliwia przesu-
wanie nawet bardzo ciÍøkich za-
suw, a†nawet ich zespo³Ûw.
Uk³ad zamka szyfrowego do
sejfu nie jest skomplikowany i†jest
moøliwy do wykonania nawet
przez zupe³nie pocz¹tkuj¹cych
konstruktorÛw.
Wszystkie wyjúcia portu B†pro-
cesora zosta³y wykorzystane do
sterowania segmentami wyúwietla-
czy siedmiosegmentowych DP1
i†DP2. WspÛlne anody tych wy-
úwietlaczy s¹ zasilane za pomoc¹
tranzystorÛw T1 i†T2. Bazy tych
tranzystorÛw s¹ wysterowywane
z†wyjúÊ 0†i†1†portu D.
Do wprowadzania danych za-
stosowano obrotowy impulsator,
ktÛry podczas obracania jego oúk¹
generuje impulsy na dwÛch wyj-
úciach. KolejnoúÊ wystÍpowania
tych impulsÛw jest taka, øe do-
³¹czony do wyjúÊ impulsatora pro-
cesor moøe z†³atwoúci¹ nie tylko
je zliczyÊ, ale takøe okreúliÊ kie-
runek obrotu oúki impulsatora.
WewnÍtrzny oscylator proceso-
ra stabilizowany
jest rezonatorem
kwarcowym
o†czÍstotliwoúci
podstawowej
8MHz. Jako ele-
ment wykonaw-
czy, do³¹czany
do z³¹cza CON2,
zastosowano
przekaünik RL1,
ktÛrego cewka za-
silana jest przez
tranzystor T3,
wysterowywany
z wyjúcia PD6
procesora. Z³¹cze CON3 s³uøy do
do³¹czenia do uk³adu serwome-
chanizmu modelarskiego.
Uk³ad zasilany jest napiÍciem
sta³ym o†wartoúci oko³o 12VDC,
doprowadzonym do z³¹cza CON1.
NapiÍcie to jest nastÍpnie obniøa-
ne i†stabilizowane na poziomie
5VDC za pomoc¹ scalonego stabi-
lizatora napiÍcia IC1. Uk³ad
DS1813 zapewnia pewny start pro-
cesora po w³¹czeniu zasilania i†za-
bezpiecza przed niekontrolowanym
dzia³aniem procesora w†przypadku
obniøenie napiÍcia zasilania poni-
øej dopuszczalnej wartoúci.
AnalizÍ dzia³ania uk³adu roz-
poczniemy od momentu pierwsze-
go w³¹czenia napiÍcia zasilaj¹ce-
go. Pierwsz¹ czynnoúci¹, jak¹ wy-
Opis dzia³ania uk³adu
Schemat elektryczny uk³adu za-
mka do sejfu pokazano na rys. 1 .
Najwaøniejszym elementem, decy-
duj¹cym o†jakoúci dzia³ania, jest
zaprogramowany procesor typu
AT90S2313, RISC-owy odpowied-
nik popularnego '2051. Procesor
'2313 ma wbudowan¹ nieulotn¹
pamiÍÊ danych EEPROM, co zwal-
nia z†koniecznoúci przechowywa-
nia w†pamiÍci zewnÍtrznej liczb
wchodz¹cych w†sk³ad klucza. Dru-
gim atutem procesora '2313, ktÛry
przes¹dzi³ o†zastosowaniu go
w†uk³adzie zamka, jest jego sprzÍ-
towy watchdog. Zgodnie ze swoim
przeznaczeniem, uk³ad zamka
szyfrowego ma dzia³aÊ w†stanie
czuwania ca³e miesi¹ce i lata.
W†ci¹gu tak d³ugiego czasu zawie-
szenie procesora na skutek cho-
ciaøby zak³ÛceÒ zewnÍtrznych jest
wiÍcej niø prawdopodobne. Przed
takim w³aúnie przypadkiem strze-
øe nas sprzÍtowy watchdog.
Rys. 2. Zawartość pamięci danych EEPROM
podczas działania podprogramu rejestracji kodu.
22
Elektronika Praktyczna 1/2002
32249071.017.png 32249071.018.png 32249071.019.png 32249071.001.png 32249071.002.png 32249071.003.png 32249071.004.png 32249071.005.png 32249071.006.png 32249071.007.png 32249071.008.png 32249071.009.png 32249071.010.png
Zamek szyfrowy do sejfu
List. 1.
Sub Numbers_registration 'podprogram rejestracji kodu dostępu
Eeprom_address = 1
'wstępne ustawienie adresu pamięci danych EEPROM na 1
'sprawdź stan przycisku
'impulsatora
If Pind.3 = 0 Then
'jeżeli przycisk został
'naciśnięty, to:
Verification
EndIf
For Temp1 = 1 To 10
Flash_flag = Not Flash_flag 'zmień wartość zmiennej pomocniczej FLASH_FLAG na
'przeciwną. Efekt działania tego fragmentu programu możemy
'prześledzić analizując podprogram sterowania multipleksowanym
'wyświetlaniem danych
Waitms 100
Next Temp1
Do
Switch_scan 'wezwij podprogram badania stanu styków impulsatora. Procedura ta
'została omówiona w EP5/2001 (regulator obrotów silników DC)
If Button_flag = 1 Then 'jeżeli został naciśnięty przycisk impulsatora, to:
Writeeeprom Disp, Eeprom_address 'zapisz w pamięci danych EEPROM aktualnie
'prezentowaną na wyświetlaczach liczbę
Reset Watchdog
Loop
End Sub
Flash_flag = 0
'włącz wyświetlanie kropek dziesiętnych na wyświetlaczach LED
Waitms 100
Flash_flag = 1
'wyłącz wyświetlanie kropek dziesiętnych na wyświetlaczach LED
Wait 1
Set Portd.3 'spróbuj ustawić stan wysoki na przycisku impulsatora
If Pind.3 = 0 Then 'jeżeli próba nieudana, co oznacza że przycisk jest naciśnięty
'dłużej niż 1 sekundę, to:
Writeeeprom Eeprom_address, 126 'zapisz w pamięci danych EEPROM informację
'o ilości wprowadzonych liczb
Temp1 = 133 'zmienna pomocnicza TEMP przyjmuje wartość 133
'(patrz opis procedury badania stanu pamięci EEPROM)
Writeeeprom Temp1, 127
'zapisz tą wartość pod adresem 127
NaciúniÍcie przycisku impulsa-
tora powoduje natychmiastowe
przejúcie do podprogramu identy-
fikacji wprowadzanego kodu klu-
cza. W³¹czone zostaj¹ wyúwietla-
cze i†trzykrotnym b³yskiem kropek
dziesiÍtnych jest sygnalizowana
gotowoúÊ uk³adu do przyjmowa-
nia wprowadzanych liczb. Dla
wygody uk³ad startuje z†pocz¹tko-
w¹ wartoúci¹ rÛwn¹ 50 ( list. 3 ).
Waiting
'wezwij podprogram oczekiwania na podanie kodu dostępu
End If
Incr Eeprom_address 'zwiększ wartość adresu pamięci EEPROM o 1
End If
Loop
End Sub
konuje procesor jest sprawdzenie,
czy w†pamiÍci danych EEPROM
znajdujÍ siÍ liczby, wchodz¹ce
w†sk³ad klucza:
mu MULTIPLEXING, wywo³ywa-
nego przez przerwanie pochodz¹-
ce od timera0 ( list. 2 ).
Po zarejestrowaniu kodu klucza
dostÍpu, podobnie jak po otwarciu
i†ponownym zamkniÍciu zamka
program przechodzi do podpro-
gramu oczekiwania WAITING. Nie
dzieje siÍ tam nic szczegÛlnego,
poniewaø jedyn¹ funkcj¹ wykony-
wan¹ przez program jest sprawdza-
nie, czy przycisk impulsatora nie
zosta³ przypadkiem naciúniÍty oraz
zerowanie sprzÍtowego watchdoga.
Montaø i†uruchomienie
Na rys. 3 pokazano rozmiesz-
czenie elementÛw na p³ytce dru-
kowanej, wykonanej na laminacie
dwustronnym z†metalizacj¹ otwo-
rÛw. Montaø tak prostego uk³adu
nie wymaga chyba szczegÛ³owych
komentarzy, z†wyj¹tkiem jednego:
wyúwietlacze siedmiosegmentowe
LED oraz impulsator obrotowy
musz¹ zostaÊ zamontowane od
umownej strony úcieøek, czyli od
strony lutowania. Pozwoli to na
³atwiejsze umieszczenie uk³adu
w†obudowie.
Zmontowany ze sprawdzonych
elementÛw uk³ad zamka nie wy-
maga regulacji i†po zaprogramowa-
niu kodu klucza nadaje siÍ do
eksploatacji. Po pierwszym w³¹-
czeniu zasilania uk³ad automatycz-
nie przechodzi do trybu rejestracji
kodu klucza dostÍpu, o†czym jes-
Readeeprom Temp, 127
If Temp <> 133 Then
Numbers_registration
EndIf
Ca³kowicie umowna liczba
ì133î jest zapisywana w†pamiÍci
EEPROM pod adresem 127 po
zarejestrowaniu kodu klucza.
Stwierdzenie innej wartoúci pod
tym adresem powoduje automa-
tyczne przejúcie do podprogramu
rejestracji kodu klucza otwieraj¹-
cego zamek ( list. 1 ).
Efekt dzia³ania podprogramu
rejestracji klucza moøna zobaczyÊ
na rys. 2 , gdzie pokazana zosta³a
zawartoúÊ pamiÍci danych EEP-
ROM. Zosta³y tam zapisane daty
bitew pod Grunwaldem i†Auster-
litz, data urodzin autora tego
projektu i†kilka innych liczb.
Szczerze polecam tak¹ metodÍ
ìkomponowaniaî kodu klucza,
u³atwiaj¹c¹ jego zapamiÍtanie.
W†uk³adzie zamka zastosowano
multipleksowane wyúwietlanie da-
nych, realizowane z†czÍstotliwoú-
ci¹ ok. 488Hz. Multipleksowanie
taktowane jest za pomoc¹ timera0 ,
ktÛrego konfiguracjÍ sprzÍtow¹
i†programow¹ okreúlaj¹ polecenia:
Sub Waiting
'podprogram oczekiwania na
'wybranie kodu dostępu
Disable Timer0
'zawieś obsługę przerwania
'timera0
Set Portd.0: Set Portd.1
'wyłącz wyświetlacze
Wait 1
'zaczekaj sekundę
Do
Set Portd.3
List. 2.
Multiplexing:
Set Portd.0: Set Portd.1 'wstępnie wyłącz obydwa wyświetlacze
Portb = 255 'wyłącz wszystkie segmenty wyświetlaczy
Digit_number = Not Digit_number 'zmień numer aktywnego wyświetlacza
If Digit_number = 0 Then 'jeżeli aktywny będzie wyświetlacz 0, to:
Temp = Disp / 10 'oblicz wartość dziesiątek wyświetlanej liczby
Portb = Lookup(temp, 7segment) 'przekodowanie otrzymanej wartości na kod wyświetlacza
'siedmiosegmentowego
If Flash_flag = 1 Then Set Portb.7 'jeżeli punkty dziesiętne wyświetlaczy nie mają
'migotać, to ustaw stan wysoki na pinie 7 portu B
Reset Portd.1
'włącz pierwszy wyświetlacz
End If
If Digit_number = 1 Then
'jeżeli aktywny będzie drugi wyświetlacz, to:
Temp = Disp / 10
'oblicz wartość jednostek wyświetlanej liczby
Temp = Temp * 10
Temp = Disp - Temp
Portb = Lookup(temp, 7segment)'przekodowanie otrzymanej wartości na kod wyświetlacza
'siedmiosegmentowego
If Flash_flag = 1 Then Set Portb.7 'jeżeli punkty dziesiętne wyświetlaczy nie mają
'migotać, to ustaw stan wysoki na pinie 7 portu B
Config Timer0=Timer, Prescale=64
On Timer0 Multiplexing
Reset Portd.0
'włącz drugi wyświetlacz
End If
Return
.............
7segment:
Data 64, 121, 36, 48, 25, 18, 2, 120, 0, 16
Wyúwietlanie danych realizo-
wane jest za pomoc¹ podprogra-
Elektronika Praktyczna 1/2002
23
32249071.011.png
Zamek szyfrowy do sejfu
List. 3.
Sub Verification
Disp = 50
'ustaw wstępną wartość wyświetlanej liczby na 50
WYKAZ ELEMENTÓW
Rezystory
R1, R2: 3,3k
Enable Timer0
'włącz wyświetlacze
For Temp1 = 1 To 3
Flash_flag = Not Flash_flag 'zmień wartość zmiennej pomocniczej FLASH_FLAG na
'przeciwną. Efekt działania tego fragmentu programu możemy prześledzić
'analizując podprogram sterowania multipleksowanym wyświetlaniem danych
R3, R4, R5: 1k
Waitms 200
Next Temp1
Time_counter = 0 'wyzeruj licznik upływu czasu
Eeprom_address = 1 'ustaw wstępnie adres pamięci danych EEPROM na 1
Code_flag = 1 'zakładamy, że wprowadzany kod jest poprawny
Readeeprom Numbers, 126'odczytaj z pamięci EEPROM ilość liczb w kodzie
Do
F/16V
C2, C3: 100nF
C4: 100
F/10V
C5, C6: 27pF
Półprzewodniki
D1: 1N4148
IC1: 7805
IC2: AT90S2313 (zaprogramowany)
IC3: DS1813
T1, T2: BC557
T3: BS107
Różne
CON1: ARK2 (3,5mm)
CON2: ARK3
CON3: 3 x goldpin
DP1, DP2: wyświetlacz
siedmiosegmentowy LED, wsp.
anoda
Q1: rezonator kwarcowy 8MHz
RL1: przekaźnik RM96
S1: impulsator obrotowy
Switch_scan 'wezwij podprogram badania stanu styków impulsatora. Procedura ta
'została omówiona w EP5/2001 (regulator obrotów silników DC)
If Button_flag = 1 Then 'jeżeli został naciśnięty przycisk impulsatora, to:
Time_counter = 0 'wyzeruj licznik upływu czasu
Readeeprom Temp1, Eeprom_address 'odczytaj z pamięci EEPROM wartość kolejnej liczby kodu
If Temp1 <> Disp Then Code_flag = 0
'jeżeli odczytana wartość nie jest równa wartości wprowadzonej, to wyzeruj zmienną
'poprawności kodu. Od tego momentu wprowadzanie dalszych liczb nie odnosi już żadnego
'skutku
If Code_flag = 1 And Eeprom_address = Numbers Then Opening
'jeżeli wszystkie wprowadzone liczby są poprawne, zostały podane w prawidłowej
'kolejności i żadna liczba nie została do kodu dodana, to wezwij podprogram otwierania
'zamka
Incr Eeprom_address 'zwiększ wartość licznika adresu pamięci EEPROM o 1
Flash_flag = 0
'wygeneruj krótki błysk punktów dziesiętnych wyświetlaczy
Waitms 255
Flash_flag = 1
End If
If Time_counter > 12000 Then Exit Do
'jeżeli licznik czasu osiągnął wartość 12000, to powróć do stanu oczekiwania
Loop
End Sub
teúmy zawiadamiani dziesiÍcioma
b³yskami kropek dziesiÍtnych na
wyúwietlaczach. KolejnoúÊ postÍ-
powania podczas programowania
kodu klucza jest nastÍpuj¹ca:
1. Za pomoc¹ pokrÍt³a impul-
satora ustawiamy na wyúwietla-
czach pierwsz¹ liczbÍ wchodz¹c¹
w†sk³ad kodu.
2. KrÛtkie naciúniÍcie przycis-
ku impulsatora powoduje wpro-
wadzenie ustawionej liczby do
pamiÍci i†automatyczne przejúcie
do programowania kolejnej liczby.
Potwierdzane jest to krÛtkim b³ys-
kiem kropek dziesiÍtnych na wy-
úwietlaczach.
3. Czynnoúci opisane w†punk-
tach 1 i†2 powtarzamy tyle razy,
ile liczb mamy zamiar zaprogra-
mowaÊ. Moøe ich byÊ maksymal-
nie 125.
4. Po ustawieniu na wyúwiet-
laczach ostatniej liczby kodu klu-
cza przytrzymujemy przycisk d³u-
øej niø uprzednio, przez okres
oko³o 1†sekundy. Spowoduje to
zapisanie do pamiÍci ostatniej
liczby, wy³¹czenie wyúwietlaczy
i†przejúcie uk³adu w†stan czuwa-
nia, o†czym zostajemy zawiado-
mieni za pomoc¹ piÍciu b³yskÛw
punktÛw dziesiÍtnych na wyúwiet-
laczach.
Otwieranie zamka przebiega
w†sposÛb podobny do jego progra-
mowania. Pierwsze naciúniÍcie
przycisku impulsatora powoduje
w³¹czenie wyúwietlaczy i†przygo-
towanie uk³adu do wprowadzenia
kodu klucza. Za pomoc¹ pokrÍt³a
impulsatora ustawiamy na wy-
úwietlaczach kolejne liczby kodu
i†potwierdzamy to krÛtkim naciú-
niÍciem przycisku. NastÍpnie,
w†identyczny sposÛb wprowadza-
my kolejne liczby. Jeøeli wszys-
tkie liczby wchodz¹ce w†sk³ad
kodu zostan¹ wprowadzone we
w³aúciwej kolejnoúci, to zamek
otworzy siÍ natychmiast po poda-
niu ostatniej liczby. Zamek pozo-
stanie otwarty aø do ponownego
naciúniÍcia przycisku impulsatora.
Wprowadzenie b³Ídnej liczby
lub liczby wchodz¹cej w†sk³ad
kodu klucza, ale podanej w†nie-
w³aúciwej kolejnoúci powoduje
uniewaønienie ca³ej operacji wpro-
wadzania kodu, a†otwarcie zamka
staje siÍ niemoøliwe. Naleøy wte-
dy odczekaÊ ok. 20 sekund, po
czym wyúwietlacze zostan¹ wy³¹-
czone, a†my moøemy rozpocz¹Ê
kolejn¹ prÛbÍ wprowadzenia po-
prawnego klucza.
Podczas eksploatacji zamka mo-
øe zajúÊ koniecznoúÊ zmiany usta-
wionego uprzednio kodu klucza.
Ponowne przejúcie w†tryb rejest-
racji kodu wymuszamy nastÍpu-
j¹co:
1. Wy³¹czamy zasilanie zamka.
2. Naciskamy przycisk impul-
satora
3. Trzymaj¹c ca³y czas przy-
cisk impulsatora naciúniÍty po-
nownie w³¹czamy zasilanie.
Po wykonaniu tych czynnoúci
uk³ad automatycznie przejdzie
w†tryb rejestracji nowego kodu
dostÍpu.
Zbigniew Raabe
zbigniew.raabe@ep.com.pl
Rys. 3. Rozmieszczenie elementów
na płytce drukowanej.
Wzory p³ytek drukowanych w for-
macie PDF s¹ dostÍpne w Internecie
pod adresem: http://www.ep.com.pl/
?pdf/styczen02.htm oraz na p³ycie
CD-EP01/2002B w katalogu PCB .
24
Elektronika Praktyczna 1/2002
Kondensatory
C1: 470
32249071.012.png 32249071.013.png 32249071.014.png 32249071.015.png
Zgłoś jeśli naruszono regulamin