centralka alarmowa.pdf

(740 KB) Pobierz
67_020.pdf
Projekty AVT
+
D o m o w a c e n t r a l a a l a r m o w a
z p r o c e s o r e m AT 9 0 S 2 3 1 3
i u k ł a d a m i 1 W I R E
2483
Do czego to służy?
Jak wszyscy doskonale zdajemy sobie spra−
wę, żyjemy obecnie w niezbyt bezpiecznych
czasach. Przemiany gospodarcze i politycz−
ne, które zaszły w naszym kraju w przeciągu
ostatnich dziesięciu lat pociągnęły za sobą ła−
twe do przewidzenia i naturalne zjawisko:
gwałtowny wzrost przestępczości. Obecnie,
częściej niż kiedykolwiek w przeszłości je−
steśmy narażeni na utratę naszego mienia i,
co nieraz jest jeszcze gorsze od samej kra−
dzieży, na zniszczenie przez włamywaczy
naszego domu. Kradzieże mieszkaniowe są
ostatnio prawdziwą plagą, a wykrywalność
tych przestępstw jest, niestety, niezbyt wyso−
ka. Ponieważ, z oczywistych przyczyn,
w przypadku kradzieży policja może inter−
weniować dopiero po fakcie, ogromne zna−
czenie mają wszelkie działania prewencyjne,
mające na celu zabezpieczenie naszego ma−
jątku i zniechęcenie złodziei do sięgania po
niego.
Środki zabezpieczania naszych domów
przed włamywaczami możemy podzielić na
dwie grupy: zabezpieczenia mechaniczne
w rodzaju odpowiednio wzmocnionych
drzwi i skomplikowanych zamków i elektro−
niczne, czyli popularne systemy alarmowe.
Elektroniczne układy nadzorujące nasze
mienie są tak stare, a właściwie tak młode jak
sama elektronika. Od samego powstania na−
szej ulubionej dziedziny techniki była ona wy−
korzystywana jako tarcza ochronna przeciwko
włamywaczom, a pierwsze systemy alarmowe
budowane były jeszcze z wykorzystaniem
lamp elektronowych. Systemy alarmowe na
początku swojego istnienia zyskały sobie ra−
czej złą sławę: były bardzo zawodne i kojarzy−
ły się głównie z syrenami wyjącymi podczas
fałszywych alarmów. Obecnie elektronika
osiągnęła szczytowy poziom niezawodności,
co dotyczy także układów alarmowych. Mo−
żemy przyjąć, że nieprawidłowe działanie
obecnie konstruowanych systemów alarmo−
wych prawie zawsze wynika z nieprzemyśla−
nego zainstalowania czujników lub niemożli−
wych do przewidzenia zbiegów okoliczności,
a praktycznie nigdy nie jest spowodowane złą
jakością elementów elektronicznych.
Wielokrotnie wyrażałem już swój pogląd
na amatorska budowę układów alarmowych.
Ma ona uzasadniony sens, ponieważ układ
amatorski będzie zawsze o rząd wielkości
tańszy od swojego odpowiednika produkcji
fabrycznej, bynajmniej nie ustępując mu ja−
kością. Zawsze też twierdziłem, że sprytnie
pomyślana amatorska konstrukcja może sta−
nowić znacznie skuteczniejsze zabezpiecze−
nie naszego mienia, niż systemy alarmowe
produkowane przez nawet najbardziej reno−
mowane firmy. Powód tego zjawiska jest
oczywisty: przecież wiadomo, kto pierwszy
zaopatruje się w nowo wyprodukowane cen−
trale alarmowe, czujniki i inne elementy słu−
żące ochronie mienia. Wizerunek złodzieja
przedstawianego jako prymitywnego ban−
dziora z łomem w ręku i workiem na plecach
należy już do przeszłości. Nie jest też dla ni−
kogo tajemnicą, że grupy złodziei zatrudnia−
ją fachowców − elektroników, których jedy−
nym zadaniem jest rozpracowywanie poja−
wiających się na rynku nowych systemów
alarmowych.
Natomiast konstrukcja amatorska zawsze
będzie dla potencjalnych intruzów wielką za−
gadką. Zarówno elektronika, jak i sposób
wykonania instalacji, różny od typowych in−
stalacji zakładanych przez firmy ochrony
mienia, mogą zniechęcić niejednego amatora
cudzej własności do prób wtargnięcia na za−
bezpieczony obszar.
Proponowany układ centrali alarmowej
jest urządzeniem bardzo prostym i łatwym
do wykonania. Zawiera tylko jeden "waż−
ny" układ scalony − procesor typu AT90
S2313, "pinowy" odpowiednik dobrze Wam
znanego AT89C2051. Jednak pomimo tej
prostoty układ zawiera w sobie przynaj−
mniej jedno niekonwencjonalne i ośmielam
się twierdzić nowatorskie rozwiązanie. Jak
dotąd bowiem nikt jeszcze nie stosował...
termometrów cyfrowych jako kluczowych
elementów przeciwłamaniowego systemu
alarmowego!
Właśnie zastosowanie do kontroli linii do−
zorowych układów 1WIRE, w założeniu
przeznaczonych do realizacji zupełnie innych
celów, odróżnia nasz układ od wielu mu
podobnych. Cyfrowe kodowanie każdej z li−
nii dozorowych znacznie zwiększyło odpor−
ność systemu alarmowego na próby sabotażu
lub wtargnięcia na strzeżony teren.
Proponowany układ nadaje się doskonale
do zabezpieczania przed włamaniem mie−
szkań, a nawet dużych pomieszczeń i do−
mów. Jego ogromnym atutem jest to, że mo−
że być wyposażony w dowolną liczbę wy−
łączników szyfrowych zlokalizowanych
w dowolnych punktach strzeżonego obszaru.
Podstawowe dane techniczne centrali
alarmowej:
− Współpraca z trzema liniami dozorowymi:
1. Linia pracujące bez opóźnienia. Powsta−
nie na tej linii kryterium alarmu spowoduje
natychmiastowe włączenie sygnalizacji
alarmowej, o ile układ znajdował się w sta−
nie aktywnym.
20
Elektronika dla Wszystkich
599202524.032.png 599202524.033.png
Projekty AVT
2. Linia pracująca z opóźnieniem. Powsta−
nie na tej linii kryterium alarmu spowoduje
włączenie sygnalizacji alarmowej po
zadanym czasie opóźnienia, o ile układ
znajdował się w stanie aktywnym
3. Linia antysabotażowa. Jeżeli centrala
znajduje się w stanie nieaktywnym, to po−
wstanie na tej linii kryterium alarmu spo−
woduje włączenie sygnalizacji akustycznej
o małej sile sygnału. Jeżeli system został
uaktywniony, to przerwanie linii antysabo−
tażowej wywoła natychmiastowe włącze−
nie sygnalizacji alarmowej.
− Uaktywnianie systemu alarmowego i jego
dezaktywacja dokonywane są naprzemien−
nie za pomocą przyłożenia do czytnika TO−
UCH MEMORY zarejestrowanej uprzednio
tabletki z serii DS19XX. Maksymalna liczba
kluczy − tabletek wynosi 10.
− Jako wyjścia wykonawcze zastosowano
trzy przekaźniki o dużej obciążalności sty−
ków. Daje to użytkownikowi pełną swobodę
w doborze sygnalizatorów alarmowych.
− W układzie centrali zastosowano dwa dodat−
kowe wyjścia o obciążalności 500mA/12VDC,
aktywne podczas włączenia pełnej sygnalizacji
alarmowej.
− Układ centrali powinien być zasilany napię−
ciem stałym niekoniecznie stabilizowanym
o wartości ok. 12VDC. Pobór prądu bez
uwzględniania przekaźników włączanych
podczas alarmu nie przekracza 3mA.
czonego do nich obwodu elektrycznego, skła−
dającego się z połączonych szeregowo styków
czujników alarmowych. A zatem, najprostszym
rozwiązaniem będzie szeregowe połączenie
wszystkich czujników i zamknięcie obwodu po−
przez masę ( rys. 1A ).
Jest to rzeczywiście rozwiązanie najprost−
sze, lecz taka centralka może być stosun−
kowo łatwo "oszukana" przez amatorów
Jak to działa?
Zanim przejdziemy do analizy schematu na−
szej centrali, zastanówmy się, w jaki sposób
centrala alarmowa może być połączona z czuj−
nikami sygnalizującymi wtargnięcie intruzów
na strzeżony obszar. Nie
jest na razie istotne, jakie−
go typu są to czujniki.
Każda centrala wypo−
sażona jest z zasady w co
najmniej jedno wejście, na
którym powstanie kryte−
rium alarmu powoduje
uruchomienie układów
wykonawczych z pewnym,
regulowanym opóźnie−
niem i także w co najmniej
jedno (najczęściej kilka)
wejście o działaniu natych−
miastowym. Stosowane są
także specjalne wejścia an−
tysabotażowe, reagujące na
próbę uszkodzenia systemu alarmowego także
podczas jego stanu nieaktywnego. Wszystkie te
wejścia reagują najczęściej na rozwarcie dołą−
Rys. 1
Rys. 2
Elektronika dla Wszystkich
21
599202524.034.png 599202524.035.png 599202524.001.png 599202524.002.png 599202524.003.png 599202524.004.png 599202524.005.png 599202524.006.png 599202524.007.png 599202524.008.png 599202524.009.png 599202524.010.png 599202524.011.png 599202524.012.png 599202524.013.png 599202524.014.png 599202524.015.png 599202524.016.png 599202524.017.png 599202524.018.png 599202524.019.png
 
Projekty AVT
cudzej własności. Przecięcie lub zwarcie
w odpowiednim miejscu przewodów prowa−
dzących do czujników może natychmiast
unieszkodliwić nasz system alarmowy. Dla−
tego też w bardziej nowoczesnych central−
kach stosowane są tzw. wejścia parametrycz−
ne, najczęściej rezystancyjne ( rys. 1B ). Wej−
ścia takie reagują nie na zwarcie lub rozwar−
cie obwodu elektrycznego lecz na zmianę
ustawionego na nich napięcia. Jest to rozwią−
zanie gwarantujące znacznie lepszy poziom
ochrony przed działalnością intruzów, ale
i centralę wyposażoną w wejścia parame−
tryczne można dość łatwo "przechytrzyć".
Dlatego też chciałbym zaproponować
Wam rozwiązanie pokazane na rysunku 1C .
Linia dozorowa jest tu zakończona jakimkol−
wiek układem 1WIRE posiadającym własny,
niepowtarzalny numer seryjny. Może to być
DS1820, DS2504 czy też nawet któraś z ta−
bletek serii DS199X. Złodziejowi nie pomo−
że zwieranie do masy przewodu linii dozoro−
wej w pobliżu centrali czy też dobieranie re−
zystancji linii parametryzowanej. Procesor
centrali nieustannie przeszukuje wszystkie li−
nie dozorowe, wysyłając na nie rozkaz zgło−
szenia się uprzednio zarejestrowanego ukła−
du. W przypadku braku poprawnej odwiedzi
uruchamiana jest sygnalizacja alarmowa.
"Podrobienie" układu 1WIRE jest prak−
tycznie niemożliwe, a Czytelników, którzy
chcieliby spróbować zachęcam do oblicze−
nia, ile możliwych kombinacji zawiera liczba
ośmiobajtowa, jaką jest numer seryjny każ−
dego układu 1WIRE. Tak więc jakiekolwiek
próby zwierania linii dozorowych czy też sy−
mulowania ich prawidłowego stanu są skaza−
ne na niepowodzenie. Czy to oznacza, że li−
nii dozorowych naszej centrali nie da się
sforsować? Bynajmniej, zawsze pozostaje
metoda robienia "bajpasów" w miejscach,
w których złodziej będzie chciał wejść na
strzeżony obszar. Jest to jednak zadanie dość
skomplikowane i wymagające sporych umie−
jętności fachowych, obcych z pewnością zło−
dziejom, którzy chcieliby okraść nasze
skromne mieszkania.
Na rysunku 2 został pokazany schemat
elektryczny proponowanego układu centrali
alarmowej. Sercem układu i jego jedynym
aktywnym elementem jest zaprogramowany
procesor typu AT90S2313, do którego po−
rtów dołączone zostały układy wykonawcze −
przekaźniki RL1 ... RL3 oraz diody LED za−
warte wewnątrz obudowy czytnika TOUCH
MEMORY, czyli tabletek DALLAS1990.
Uważni Czytelnicy, porównując zdjęcia
prototypu ze schematem i rysunkiem płytki
obwodu drukowanego, z pewnością zauważy−
li, że w prototypie wprowadzone zostały zna−
czące zmiany. Tak rzeczywiście było: podczas
prac nad konstrukcją prototypu centrali zmie−
niony został jego główny element: procesor
typu AT89C2051 zastąpiony został jego "pi−
nowym" odpowiednikiem z rodziny AVR.
Pierwszym powodem takiej decyzji była chęć
uproszczenia układu i zmniejszenia kosztów
jego wykonania. Procesory AVR mają wbudo−
waną w swoją strukturę nieulotną pamięć typu
EEPROM i stosowanie pamięci zewnętrznej
stało się całkowicie zbędne (pusta podstawka
pod pamięć szeregową na zdjęciu prototypu).
Drugim powodem było lenistwo. Zawsze
wyznawałem zasadę, że jeżeli nie muszę
stać, to siadam, jeżeli nie muszę siedzieć, to
się kładę, a jeżeli mogę zastąpić kilkanaście
linijek programu jednym prostym polece−
niem, to natychmiast to robię. Jednym z naj−
większych "fajerwerków" ostatniej edycji
BASCOM−a AVR jest nowy pakiet poleceń
ułatwiających obsługę magistrali 1WIRE.
Czytelnicy, którzy podczas kursu BASCOM
College zapoznali się z obsługą układów 1WI−
RE z poziomu "starej" wersji języka MCS
BASIC będą mogli w pełni ocenić jakie moż−
liwości daje najnowsza wersja tego języka,
która w najbliższej przyszłości zostanie także
zaimplementowana do pakietu BASCOM
8051, oczywiście w wersji komercyjnej.
Podobnie jak w przypadku innych ukła−
dów mikroprocesorowych, odpowiedź na py−
tanie "Jak to działa" zawarta będzie nie w opi−
sie części hardware'owej urządzenia, ale
w analizie sterującego nią programu, ilustro−
wanej listingami ukazującymi jego najistot−
niejsze fragmenty.
Zakładamy, że poprawnie zmontowany
układ centrali został wyposażony w zapro−
gramowany procesor i ma zostać zamonto−
wany w pomieszczeniu, którego nietykalno−
ści ma pilnować. Jednak w tym momencie
układ nie jest jeszcze zdolny do jakiegokol−
wiek działania. Jego pamięć danych jest je−
szcze pusta i pierwszą czynnością, jaką bę−
dziemy musieli wykonać będzie zarejestro−
wanie kluczy sterujących pracą układu, czyli
popularnych tabletek DS1990. Tu, na margi−
nesie jedna uwaga: kluczem 1WIRE może
być dowolny układ z rodziny i−BUTTON,
np. DS1991, DS1994 czy też każda inna "ta−
bletka" DALLAS−a. Preferuję układ DS1990
tylko z jednego powodu: ponieważ zawiera
on w swej strukturze jedynie numer seryjny
bez jakichkolwiek funkcji dodatkowych
i w związku z tym jest najtańszy. Powiem
Wam więcej: kluczem może być także KAŻ−
DY układ 1WIRE, niezależnie od pełnionych
przez niego funkcji. Jednak pozostańmy przy
przeznaczonych do tego celu tabletkach, po−
nieważ przykładanie do czytnika TOUCH
MEMORY np. termometru DS1820 byłoby
jakby "trochę" niewygodne.
Aby dokonać rejestracji kluczy sterują−
cych pracą centrali alarmowej oraz układów
"zamykających" linie dozorowe, musimy
PRZED włączeniem zasilania zewrzeć jum−
per JP1. Skutki tego działania pokazane zo−
stały na listingu 1 .
Rejestracja kluczy dokonywana jest
w podprogramie, którego treść została poka−
zana na listingu 2 . Pragnąłbym zwrócić
uwagę Czytelników na procedurę zapisu da−
nych do pamięci EEPROM i porównanie jej
z procedurami stosowanymi w procesorach
'51 bez wewnętrznej pamięci EEPROM.
Trochę to prostsze...
'Listing 1
Set Portb.6 'spróbuj ustawić stan wysoki na
wejściu PB.6 procesora
If Pinb.6 = 0 Then Call Setup
'jeżeli próba nieudana, to wezwij
podprogram SETUP
Call Stand_by 'następnie wezwij podprogram
oczekiwania
'..........................................
Sub Setup 'podprogram konfiguracyjny
Call Ds1990_registration
'wezwij podprogram rejestracji
tabletek DS1990
Call Sensors_registration
'wezwij podprogram rejestracji
trzech układów linii
Call Main_loop 'na koniec idź to pętli głównej
programu
End Sub
'Listing 2
Sub Ds1990_registration
Eeprom_address = 1
'wstępne ustawienie adresu
pamięci EEPROM
Call Redlong
'wezwij podprogram generujący
długi błysk czerwonej diody LED
Do
Register_number(1) = 1wsearchfirst()
'spróbuj odczytać numer seryjny
tabletki DS1990
If Err = 0 And Pinb.2 = 1 Then
'jeżeli próba udana i linia 1WIRE
nie jest zwarta do masy, to:
For I = 1 To 8 'ośmiokrotnie:
Writeeeprom Register_number(i) , Eeprom_address
'zapisz odczytany bajt numeru
seryjnego tabletki pod wskazanym adresem pamię−
ci EEPROM
Incr Eeprom_address 'zwiększ wartość adresu
EEPROM o1
Next I
Call Greenlong 'wezwij podprogram generujący
długi błysk zielonej diody LED
End If 'koniec warunku
If Eeprom_address > 80 Then
'jeżeli zapisano już numery 10
tabletek, to:
For I = 1 To 5
'pięciokrotnie:
Call Greenlong
'długi błysk zielonej diody
Waitms 255
'zaczekaj 255 ms
Next I
Exit Do
'wyjdź z pętli programowej
End If
'koniec warunku
Loop
End Sub
Operacje dokonywane podczas rejestracji
numerów seryjnych tabletek sygnalizowane
są za pomocą dwóch diod LED, umieszczo−
nych wewnątrz czytnika TOUCH MEMORY.
Budowa wewnętrzna takiego czytnika zosta−
ła także pokazana na rysunku 2 .
Po zarejestrowaniu tabletek program
przechodzi do odczytywania i zapisywania
w pamięci EEPROM numerów seryjnych
układów 1WIRE, które będą stanowiły "za−
kończenie" linii dozorowych. Procedura ta,
pokazana na listingu 3 , jest praktycznie iden−
tyczna z procedurą rejestracji tabletek.
22
Elektronika dla Wszystkich
599202524.020.png 599202524.021.png
Projekty AVT
Efekt działania podprogramów konfigura−
cyjnych został pokazany na rysunku 3 ,
przedstawiającym mapę pamięci EEPROM
procesora po zarejestrowaniu czterech table−
tek DS1990, trzech układów DS1820 i zapi−
saniu czasu trwania opóźnienia alarmu.
Po zarejestrowaniu układów 1WIRE
i czasu opóźnienia włączania alarmu pro−
gram przechodzi do pętli głównej, w której
wykonywane są czynności pokazane na
listingu 4 . W tym momencie układ centralki
jest nieaktywny i dlatego sprawdzana jest tyl−
'Listing 4
ko jedna linia dozorowa, zabezpieczająca sy−
stem przed próbami uszkodzenia. Procedura
ta wykonywana jest zawsze, niezależnie od
aktualnego stanu systemu, różne są tylko
skutki wykrycia kryterium alarmu na linii an−
tysabotażowej. Niestwierdzenie na tej linii
obecności uprzednio zarejestrowanego ukła−
du 1WIRE spowoduje przejście do pętli pro−
gramowej SABOTAGE ( listing 8 ) i poinfor−
mowanie użytkowników za pomocą sygnału
akustycznego o niesprawności systemu.
Program sprawdza także, czy do czytnika nie
została przyłożona jedna z zarejestrowanych
Sub Main_loop
' główna pętla programowa
Call Beep
'po wejściu do podprogramu
wygeneruj jeden sygnał akustyczny
Waitms 255
'zaczekaj 255 ms
Do
Alarm_status_flag = 0
'zmienna pomocnicza
wyznaczająca aktualny stan systemu przyjmuje
wstępnie wartość 0
Call Ds1990_verification
'sprawdź, czy do czytnika nie
została przyłożona zarejestrowana tabletka 1WIRE
If Alarm_status_flag = 1 Then Call Stand_by
'jeżeli odczytano prawidłowy
numer seryjny tabletki, to wezwij podprogram
stanu aktywnego systemu
'Listing 3
Sub Sensors_registration
Eeprom_address = 90
'wstępne ustawienie adresu
Eeprom_address = 90
'wstępnie ustaw adres
pamięci na 90 (adres układu 1WIRE linii
anty sabotażowej)
For I = 1 To 8 'ośmiokrotnie:
Readeeprom Register_number(i) , Eeprom_address
'odczytaj kolejne bajty numeru
seryjnego tego układu
Incr Eeprom_address 'zwiększ adres pamięci
EEPROM o 1
'Listing 5
Sub stand_by
Call Beep
pamięci EEPROM na 90
For Temp = 1 To 3 'trzykrotnie:
Do 'początek pętli programowej
Register_number(1) = 1wsearchfirst()
'odczytaj numer seryjny układu
1WIRE, który znajduje się na linii
If Err = 0 And Pinb.2 = 1 Then
'jeżeli układ został odnaleziony,
'wygeneruj krótki sygnał
akustyczny
Waitms 255
'zaczekaj 255 ms
Call Beep
'ponownie wygeneruj sygnał
akustyczny
Next I
1wverify Register_number(1)
'sprawdź, czy układ, którego
adres został odczytany z pamięci jest obecny na
magistrali 1WIRE
Do
Alarm_status_flag = 0 'zmienna pomocnicza
ALARM_STATUS_FLAG przyjmuje wstępnie
wartość 0
Call Ds1990_verification 'sprawdź, czy do czytnika nie
została przyłożona "ważna" tabletka DALLAS
If Alarm_status_flag = 1 Then Call Main_loop
'jeżeli tak się stało, to
powróć do podprogramu oczekiwania
Eeprom_address = 90 'ustaw adres pamięci
EEPROIM na 90 (adres bazowy numeru seryjnego
układu 1WIRE w linii antysabotażowej)
For Temp = 1 To 3 'trzykrotnie:
For I = 1 To 8 'ośmiokrotnie:
Readeeprom Register_number(i),
Eeprom_address 'odczytaj z pamięci
EEPROM kolejne bajty numerów seryjnych trzech
układów nadzorujących linie dozorowe
Incr Eeprom_address 'zwiększ wartość adresu
pamięci EEPROm o 1
to:
For I = 1 To 8 'ośmiokrotnie
Writeeeprom Register_number(i) , Eeprom_address
'zapisz kolejne bajty numeru
seryjnego pod
Incr Eeprom_address 'sukcesywnie zwiększanym
adresem pamięci EEPROM
If Err = 1 Or Pinb.2 = 0 Then
'jeżeli tak nie jest lub linia
została zwarta do masy, to:
Waitms 255 'zaczekaj 255 ms
1wverify Register_number(1)
'ponownie sprawdź
obecność układu na magistrali 1WIRE
If Err = 1 Or Pinb.2 = 0 Then
'jeżeli ponowne sprawdzenie
dało wynik negatywny, to:
Call Sabotage 'wezwij podprogram sygnalizacji
próby sabotażu lub uszkodzenia systemu
End If : End If
Next I
Call Beep_long
'wygeneruj długi sygnał
akustyczny
Exit Do
'wyjdź z pętli programowej
End If
'koniec warunku
Loop
Eeprom_address = Eeprom_address + 2
'zwiększ wartość adresu
pamięci o 2 (adresy bazowe kolejnych zapisów
numerów seryjnych to: 90, 100 i 110 DEC)
Next Temp
End Sub
'koniec warunków
Call Greenshort
'wygeneruj krótki błysk
zielonej diody czytnika
Waitms 255
'zaczekaj 255 ms
Loop
End Sub
Next I
1wverify Register_number(1)
'sprawdź, czy kolejny układ
1WIRE odpowiada na wezwanie
If Err = 1 Or Pinb.2 = 0 Then
'jeżeli układ nie odpowiada
lub linia została zwarta do masy, to:
Waitms 255 'zaczekaj 255 ms
1wverify Register_number(1)
'ponownie sprawdź, czy
kolejny układ 1WIRE odpowiada na wezwanie
If Err = 1 Or Pinb.2 = 0 Then
'jeżeli układ ponownie nie
odpowiada lub linia została zwarta do masy, to:
Select Case Temp 'w zależności od tego, który
układ nie odpowiedział na wezwanie:
Case 1 : Call Alarm_on 'jeżeli był to układ
zamykający linię antysabotażową, to uruchom
natychmiast sygnalizację alarmową
Case 2 : Call Delay_on 'jeżeli był to układ zamykający
linię z opóźnieniem, to przejdź do podprogramu
realizującego włączenie alarmu po zadanym
okresie
Case 3 : Call Alarm_on 'jeżeli był to układ zamykający
linię uruchamiającą alarm bez opóźnienia, to
uruchom natychmiast sygnalizację alarmową
End Select 'koniec wyboru
End If: End If 'koniec warunków
Eeprom_address = Eeprom_address + 2
'zwiększ wartość adresu
pamięci EEPROM o 2
Rys. 3
Next Temp
Call Redshort
'wygeneruj krótki błysk
czerwonej diody LED
Waitms 255
'zaczekaj 255 ms
Loop
End Sub
Elektronika dla Wszystkich
23
599202524.022.png 599202524.023.png
Projekty AVT
uprzednio tabletek 1WIRE. W przypadku
wykrycia tabletki, układ przejdzie w stan ak−
tywny, wykonując pętlę programową poka−
zaną na listingu 6 .
Uaktywnienie systemu alarmowego sy−
gnalizowane jest dwoma krótkimi sygnałami
akustycznymi generowanymi przez prze−
twornik Q3. Podprogram STAND_BY, poka−
zany na listingu 5 jest bardzo podobny do
głównej pętli programowej, ale występują też
pomiędzy nimi bardzo istotne różnice:
1. Sprawdzany jest stan wszystkich linii do−
zorowych, a nie tylko linii antysabotażowej.
2. Odmienna jest także reakcja na powstanie
kryterium alarmu na tej linii, która nie powo−
duje włączenia sygnału akustycznego, lecz
poprzez przejście do podprogramu ALARM
ON pełnej sygnalizacji alarmowej.
3. Stan aktywny syste−
mu sygnalizowany jest
błyskami diody czer−
wonej.
Omówiliśmy w ten
sposób najważniejsze
podprogramy sterują−
ce pracą centrali. Po−
zostałe, małe progra−
miki pokazane na li−
stingach 6,7 i 8 pozo−
stawimy już bez ko−
mentarzy, a zajmiemy
się jeszcze tylko pod−
programem identyfi−
kacji pastylek DAL−
LAS, pokazanym na
listingu 9 . Chciałbym
zwrócić Waszą uwagę
na polecenia służące
identyfikacji układów
1WIRE, będące jed−
nym z największych "fajerwerków" najnow−
szej wersji języka MCS BASIC.
Do znanego już Wam pakietu poleceń ję−
zyka MCS BASIC zostały ostatnio dodane
nowe, sprowadzające niektóre niezwykle
skomplikowane procedury obsługi układów
1WIRE do poziomu niemal dziecinnej zaba−
wy. Niektóre z nich zostały użyte w progra−
mie obsługującym naszą centralę:
1wsearchfirst()
polecenie odczytuje numer seryjny pierwsze−
go (lub jedynego) układu dołączonego do
magistrali 1WIRE. Jego składnia jest nastę−
pująca:
' Listing 6
Sub Alarm_on
Set Portb.1 : Set Portd.0 : Set Portd.1: Set portd.3
For Temp2 = 1 To 255
Call Ds1990_verification
If Alarm_status_flag = 1 Then Call Main_loop
Wait 1
Next Temp2
Reset Portb.1
Portd = 0
Call stand_by
End Sub
Rys. 4 Schemat montażowy
Sprawdza, czy na magistrali 1WIRE znajdu−
je się układ o podanym numerze seryjnym.
Montaż
i uruchomienie
Na rysunku 4 zostało pokazane rozmie−
szczenie elementów na płytce obwodu dru−
kowanego wykonanego na laminacie dwu−
stronnym z metalizacją. Sposób montażu
układu centrali nie odbiega niczym od zasad
budowy innych układów elektronicznych
opisywanych już w EdW. Rozpoczniemy go
od wlutowania w płytkę nielicznych rezysto−
rów, następnie zamontujemy podstawki pod
układy scalone (podstawka pod procesor jest
obligatoryjna) i zakończymy montaż wluto−
waniem trzech przekaźników typu RM−96.
Następnie do złącza Q3 lutujemy przetwor−
nik piezo z generatorem, a do złącza Q2 czyt−
nik TOUCH MEMORY. Przewody czytnika
lutujemy do styków złącza według następują−
cego schematu:
'Listing 7
Sub Sabotage
Set Portd.2
Do
Call Beep_long
Call Ds1990_verification
If Alarm_status_flag = 1 Then Call Main_loop
Waitms 255
Loop
End Sub
Zmienna(1) = 1wsearchfirst()
A jego wydanie zwraca nam w przypadku
odnalezienia na linii chociażby jednego ukła−
du jego ośmiobajtowy numer seryjny. Oczy−
wiście przed jego wydaniem należy zadekla−
rować tablicę zmiennych, np.
DIM Zmienna(8) as Byte
1wserchnext()
Odczytuje numery seryjne kolejnych ukła−
dów dołączonych do magistrali 1WIRE.
Liczba układów jest ograniczona do... 65536
sztuk (sic!)
Polecenie to jest jednym z najwspanial−
szych "fajerwerków" najnowszych edycji
BASCOM−a AVR. Nie ukrywam, że próbo−
wałem kiedyś napisać "na piechotę" proce−
durę identyfikującą kilka układów 1WIRE
jednocześnie dołączonych do magistrali i że
ta próba zakończyła się porażką. Mark
sprowadził cały problem do jednego pole−
cenia, którego składnia jest identyczna jak
1wsearchfirst!
1wirecount
Sprawdza, ile układów zostało jednocześnie
dołączonych do magistrali 1WIRE. Jego
składnia jest następująca:
Zmienna = 1wirecount (gdzie Zmienna mu−
si być zadeklarowana jako WORD)
1wverify bajty_numeru_seyjnego(1)
'Listing 8
Sub Delay_on
For Temp2 = 1 To 60
Call Beep
Call Ds1990_verification
If Alarm_status_flag = 1 Then Call Main_loop
Waitms 255
Next Temp2
Call Alarm_on
End Sub
Numer
Kolor
wyprowadzenia Q2
przewodu
1
Zielony
2
Brązowy
3
Biały
4
Żółty
'Listing 9
Sub Ds1990_verification
Eeprom_address = 1
For Temp = 1 To 10
For I = 1 To 8
Readeeprom Register_number(i) , Eeprom_ad−
dress
Incr Eeprom_address
Next I
1wverify Register_number(1)
If Err = 0 Then Alarm_status_flag = 1
Next Temp
End Sub
5
Szary
Po optycznym sprawdzeniu poprawności
połączeń umieszczamy w podstawce zapro−
gramowany procesor, zwieramy jumper JP1
i przystępujemy do skonfigurowania centrali.
Po włączeniu zasilania początkowo nie
stanie się nic szczególnego. Program oczeku−
je na zarejestrowanie pierwszej tabletki
DS1990 i dopiero jej przyłożenie do czytnika
TOUCH MEMORY spowoduje pierwszą
reakcję programu − włączenie zielonej diody
24
Elektronika dla Wszystkich
599202524.024.png 599202524.025.png 599202524.026.png 599202524.027.png 599202524.028.png 599202524.029.png 599202524.030.png 599202524.031.png
Zgłoś jeśli naruszono regulamin