Fakulteta za elektrotehniko v Ljubljani
 
Mikroprocesorji v elektroniki
šl. 1999/2000

 
Ključavnica - Prenos - Vrata
   
UVOD  
  
     Kako odpreti od ključavnice dislocirana vrata in to preko infrardečega oddajnika in sprejemnika ter še kaj več, je bil cilj te seminarske naloge. Ključavnica naj na podlagi pravega vstavljenega ključa da podatek o možnem dostopu do stvari, varovanih z vrati. Podatek se prenese preko serijskega vmesnika in IR oddajno-sprejemnega sistema do sistema za koračno krmiljenje zapaha vrat. Potrebno je preverjati tudi pravilno zaprtost vrat. Vse delo je bilo opravljeno na dveh integriranih razvojnih okoljih HC11 IDE, narejenih za mikrokrmilnik Motorola M68HC11A8. Celotno delo smo si delili trije: Uroš Merc, Andrej Nussdorfer in Borut Repič. Vsak je obdelal eno izmed področij, ki so: Elektronska ključavnica , Prenos po IR vmesniku in Odpiranje vrat s koračnim motorjem. Po opravljenem posameznikovem delu je bilo potrebno projekte še združiti. Elektronska ključavnica in Odpiranje vrat s koračnim motorjem sta bila vsak na svojem mikroprocesorskem sistemu, vsak od njiju pa je pustil nekaj prostora še serijski komunikaciji.
   
1. Elektronska ključavnica     (Uroš Merc) 

     Za že obstoječo strojno opremo elektronske ključavnice je potrebno narediti še programsko. Ključavnica s svetlobnimi senzorji bere kodo ključa in jo po PII prenaša v procesor kot vlak impulzov. Cilj tega projekta je torej napisati programsko kodo procesorju, kako naj sprejme impulze, jih obdela ter zagotovi ustrezne krmilne spremenljivke ostalim rutinam. Zaradi večje možnosti preureditve lastnim potrebam in lažje nadgradnje tega sistema naj bo ves program napisan v eni rutini in naj bo, po možnosti, iz urnika klican le enkrat. Če ga v urnik vstavimo večkrat, pa bo zmožen hitreje brati kodo. Vendar to v našem primeru ni potrebno, saj se urnik bere 64-krat v sekundi, prebrati mora cel ključ, za kar potrebuje 32 klicev rutine (v najslabšem primeru pa še skoraj enega zraven), in je torej maksimalna frekvenca branja ključa nekaj manjša od 2 Hz. V tem času (0.5 s) bi naj bil ključ do konca vstavljen in do konca izvlečen, za kar pa menim, da je napram človeškim razmeram in real-time problemu kar dovolj.

     Strojna oprema 

     Ključavnica s senzorji bere dve vrednosti, vsako iz svoje strani ključa. Na eni strani so urini impulzi za določanje takta, v katerem naj se koda ključa iz druge strani ključa bere. Urini impulzi so izdelani ožje, da ne prihaja do potencialnih nepravilnosti pri branju zaradi slabo izdelanega ali pa po strani vstavljenega ključa, v kolikor se ključ in ključavnica ne prilegata dovolj dobro. 

     Koda ključa ima 8 spremenljivk (0/1), zato je potrebnih prav toliko tudi urinih impulzov. Ker nam ob prehodu skozi senzor ena v kodi ali urinem impulzu prekrije senzor, dobimo takrat na izhodu nič. Tovrstnega delovanja se moramo dobro zavedati pri programiranju.

     Programska oprema 

     Rutina bere kodo ključa, ko ga vstavljamo. Prebrano kodo primerja s pravilno, in v kolikor to je, pri izvlačenju preverja še to, ki pa mora biti enaka pravilni, le v obratnem vrstnem redu oz. enaka prvič prebrani kodi (v obratnem vrstnem redu). Tako se tudi ve, da je ključ v celoti izvlečen. Če je ključ napačen, se naslednji lahko vstavi kar takoj, če pa je prišlo do napake pri branju kode, je potrebno ključ izvleči ter počakati približno 4 s, da bo naslednjič zagotovo lahko pravilno prebran. Vsak delno vstavljen ali izvlečen ključ bo postal neveljaven po 4 s, ko ne bo prebrana nobena nova vrednost z njega.

     Kratek potek algoritma 

 - Preveri, če se stanje vstavljenega ključa ni spremenilo že 4 s; 
 - Bere PIO; 
 - Ugotavlja prisotnost urinega impulza; 
 - Prebere vrednost kode; 
 - Določa smer gibanja ključa; 
 - Prebrano vrednost kode vpisuje, primerja s pravilno ali primerja z vpisano; 
 - Nastavi se spremenljivka za odklepanje.

     Diagram poteka
     Programska koda - rutina
     Rutino se da z nekaj vrsticami zelo enostavno nadgraditi, da recimo po nekaj neuspelih branjih prepove naslednja branja za določen čas, ali da čaka na kakšen drug ukaz, tudi tistega od zunaj. Rutina je dokaj optimizirana (zakon sicer pravi, da se da vsako rutino še vsaj za polovico skrajšati – čaprav ne vem, kje se to potem neha), tako da je do 1200 ciklov, kolikor jih je namenjenih za eno klicanje urnika, še precej na razpolago. 
2. IR prenos     (Andrej Nussdorfer)

     Ta del seminarske naloge obravnava brezžični prenos podatkov med dvema procesorskima ploščama, pri katerem uporabljamo kot prenosni medij IR svetlobo. Zaradi enostavnosti naloge poteka prenos enosmerno, iz plošče, ki ima priključeno ključavnico, na ploščo, ki ima priključen mehanizem vrat. Protokol prenosa je podoben RS232 protokolu. Paket podatkov vsebuje 1 start bit, 8 podatkovnih bitov in 4 stop bite. Napake pri prenosu se ugotavljajo le s pomočjo stop bitov, saj ni nobenega preverjanja paritete ali kakega drugačnega mehanizma detekcije napak. Prenos poteka pri hitrosti 256bps, kar zagotovimo tako, da damo oddajno opravilo 4x v razvrščevalnik (na enakomernih intervalih!!). Pri tej hitrosti prenosa se paket podatkov (dolg 13 bitov) prenese v slabih 51ms, kar ne predstavlja prevelike dodatne zakasnitve za celoten sistem.

     Strojna oprema 

     Uporabljena strojna oprema je zaključni izdelek ing. Oliverja Uranjeka. Kot oddajnik se uporablja IR LED dioda LD275, proizvajalca SIEMENS, kot sprejemnik pa hibridno integrirano vezje SFH605-40, istega proizvajalca. To integrirano vezje združuje v zatemnjenem plastičnem ohišju vso potrebno elektroniko za sprejemanje podatkov preko IR svetlobe. Poleg fotodiode vsebuje še ojačevalnik s prilagodljivim ojačanjem (AGC vezje), pasovno sito (sredinska frekvenca 40kHz, pasovna širina okoli 10kHz) in demodulator. Vse to, vgrajeno v ohišje, ki deluje kot optični filter, optimiziran za valovno dolžino 950nm, nam da sprejemnik, ki je dokaj odporen na motnje iz okolja in predvsem neobčuitljiv na dnevno svetlobo. Ta sprejemnik ima to lastnost, da ima v mirovanju (ni osvetljen) na izhodu logično 1 in zato morajo biti dobljeni podatki tudi pravilno interpretirani. Zaradi pasovnega sita mora biti IR signal amplitudno moduliran, z nosilno frekvenco 40kHz. To dosežemo tako, da izhod oscilatorja vežemo na IR LED preko tranzistorja, ki določa kdaj bi dioda svetila.

     Shema oddajnika 

     Shema sprejemnika 

     Programska oprema 

     Ker poteka prenos enosmerno, sta opravili 2. Eno je namenjeno oddajanju podatkov, drugo pa sprejemanju podatkov.

     Oddajno opravilo 

     Oddajno opravilo je seveda ta enostavnejše, saj pri oddajanju samo podatke pomikamo in glede na stanje C bita prižigamo ali ugašamo oddajno LED. Oddajanje sprožimo s tem, da v spremenljivko ODDAJA damo podatke za prenasat, v spremenljivko ODDANO pa vpišemo 1. Ta spremenljivka bo 1 vse dokler bo potekalo oddajanje podatkov, ob zaključenem prenosu pa se postavi zopet na 0. To spremenljivko uporabljamo za sporazumevanje med opravili, saj preko te spremenljivke dobi oddajno opravilo informacijo, da je opravilo, zadolženo za branje ključa, zaznalo pravi ključ in je potrebno vrata odpreti. Za to opravilo mora biti oddajna LED krmiljena z bitom 1 porta B PIA.

     Grob diagram poteka oddajnega opravila
     Izvorna koda oddajnega opravila
     Sprejemno opravilo 

     Sprejemno opravilo je malo bolj zapleteno od oddajnega. Največji problem pri asinhronem sprejemanju podatkov je to, da ne vemo kdaj podatki nastopijo - sprejemnik se mora za vsak paket podatkov sinhronizirati z oddajnikom. Ko je sprejemnik enkrat sinhroniziran je potrebno le še v določenih časovnih intervalih vzorčiti vhodni signal in to lepiti k trenutnemu podatku. V tej izvedbi sprejemnega opravila se sinhronizacija izvrši tako, da vhodni signal večkrat vzorčimo znotraj iste časovne rezine tako, da je dejanski interval vzorčenja signala v resnici krajši od časovne rezine in tako ni nevarnosti, da bi kak bit zgrešili zaradi kakšnih zakasnitev (prižiganje LED, filtriranje signala, demodulacija). Vsakokrat, ko pride sprejemno opravilo na vrsto 3x vzorči vhodni signal z 0.15ms intervali (to vzorčenje porabi skoraj pol časovne rezine). Iz the vzorcev izluščimo informacijo o podatku na vhodu. Če na start bit še čakamo, se odločimo, ali je pravkar prispel, in če je, kateri vzorec moramo brati, da bo prenos kar najbolj zanesljiv. Če pa je prenos že v teku, samo vzamemo vrednost vstreznega vzorca in jo prilepimo k trenutnemu podatku. 
     Izhod IR sprejemnika je vezan na bit 0 porta B PIE. 

     Grob diagram poteka sprejemnega opravila
     Izvorna koda sprejemnega opravila
3. Krmiljenje mehanizma vrat     (Borut Repič)

     Imamo maketo zapaha s koračnim motorjem. Koračni motor krmilimo z mikroprocesorjem s pomočjo perifernega vmesnika PIA. Programska oprema napišemo kot rutino, ker mikroprocesor upravlja še druge naprave, ki delujejo v realnem času.

     Strojna oprema 

     Maketa ključavnice je narejena kot zapah. Zapah predstavlja ročica montirana na os koračnega motorja. Z zasukom koračnega motorja v levo oziroma desno za 90 stopinj se vratca sprostijo oziroma zapahnejo. Na vratca je montirano tudi stikalo, katerega potrebujemo za detekcijo odprtih oziroma zaprtih vrat. Na spodnji sliki je pogled na maketo z vrha:

Za direktno krmiljenje koračnega motorja s pomočjo PIA je potrebno dodati med koračnim motorjem in PIA še buffer. To vezje je realizirano kar na maketi ključavnice, tako da maketo lahko direktno priključimo na napajanje in na PIA.
Žice na maketi so naslednje: 
ČRNA: Masa 
RDEČA: +5 V napajanje 
RUMENA – BELA: Signal iz stikala (Logična "1" če so vrata odprta) 

Priključitev na vhod PIA 
BELA: Koračni motor, priključitev na izhod iz PIA 
ORANŽNA: Koračni motor, priključitev na izhod iz PIA 
MODRA: Koračni motor, priključitev na izhod iz PIA 
RUMENA: Koračni motor, priključitev na izhod iz PIA

     Programska oprema 

     Program je zasnovan kot rutina, ki je vključena v urnik mikroprocesorskega sistema. Ob vsakem ciklu se izvede enkrat. Deluje pa na naslednji način. Ko dobi iz rutine, ki krmili IR sprejemnik ukaz za odpiranje, se začne vrteti koračni motor, tako da sprosti zapah in vrata se s pomočjo vzmeti v stikalu takoj odprejo. Če pa nekdo vrata zapre, se sama zaklenejo takoj, ko so spet zaprta. Zaklepanje in odklepanje vrat je izvedeno z zasukom koračnega motorja za 90 stopinj v levo ali desno. Ker deluje mikroprocesorski sistem v realnem času, je treba vedeti, da rutina ob vsakem prehodu premakne motor le za en korak. Začetno stanje vrat-motorja, se prepozna v inicializaciji sistema, tako da se ob resetiranju sistem ne zmede. 

     Za izvedbo neke naloge (npr. odklepanje vrat) potrebuje rutina več prehodov (za odklepanje vrat potrebuje rutina toliko prehodov, kolikor stopej potrebuje koračni motor za zasuk 90 stopinj).

     Diagram poteka
     Programska koda
 
 
zadnja sprememba 22.02.2000