edin mešanović
DESCRIPTION
Automatizirani nadzor višespratnog parking prostoraTRANSCRIPT
UNIVERZITET U TUZLI
FAKULTET ELEKTROTEHNIKE
ZAVRŠNI RAD
PRVOG CIKLUSA STUDIJA
Automatizirani nadzor višespratnog parking
prostora
STUDENT
EDIN MEŠANOVIĆ
TUZLA, JUNI 2015. GODINE
2
Sažetak
Jedan od najbitnijih segmenata sistema u realnom vremenu su svakako ugrađeni sistemi.
Tehnologija real-time ugrađenih sistema je najbrži razvojni sektor u informacionim
tehnologijama današnjice, te je interesantno istražiti i vidjeti koje mogućnosti nam nude
mikrokontroleri u sklopu ugrađenih sistema. Automatizacija upravljanja parking
prostorom postaje sve veća i značajnija potreba, posebno u velikim naseljima sa naglim
porastom broja vozila. Iz razloga nedostatka prostora, neophodno je planirati višespratne
parking prostore. Cilj ovog završnog rada je monitoring raspoloživog prostora za parking,
korištenjem Atmel mikrokontrolera, uz prikaz stanja na LCD displeju i dizajniranom panel
modulu. Ovo rješenje nam omogućava povećavanje efikasnosti korištenja raspoloživih
parking prostora, a smanjuju probleme i troškove koji se pojavljuju u klasičnim
neautomatizovanim pristupima korištenja parkinga.
3
Abstract
One of the most important segments of systems in real time is embedded systems. The
technology of real-time embedded systems is the fastest development sector of information
technologies, and it is interesting to investigate and see which possibilities are offered by
microcontrollers in embedded systems. Automatization of controlling parking places is
becoming great and important need, especially in places where there is sudden increase in
number of cars. Due to the lack of parking places, it is necessary to plan multi-storey
parking places. The aim of this final work is representing controlling available parking
space using Atmel microcontrollers, and showing the state on LCD display and designed
panel modul. The solution of using microcontrollers will help in increasing the efficiency
of using the available parking places, and decrease problems and costs that occur in
classical unautomatized access to using parking place.
4
Sadržaj
Sažetak ................................................................................................................................... 2
Abstract .................................................................................................................................. 3
1. Automatizirani nadzor parkinga .................................................................................... 8
2. Ugrađeni sistemi .......................................................................................................... 11
2.1. Ugrađeni mikrokontroleri .................................................................................... 12
2.2. Pregled programabilnih struktura ........................................................................ 13
2.2.1. Diskretna rješenja ........................................................................................ 13
2.2.2. Namjenski integrirani krugovi (ASICs) ...................................................... 13
2.2.3. Programabilni logički uređaj – FPGA ......................................................... 13
2.3. Mikrokontroleri ................................................................................................... 15
2.4. Projektovanje ugrađenih sistema ......................................................................... 16
3. Osnovne karakteristike mikrokontrolera ..................................................................... 18
3.1. Osnove mikrokontrolera ...................................................................................... 18
3.2. Arhitekture mikrokontrolera ................................................................................ 19
4. ATMEL Mikrokontroleri ............................................................................................. 21
4.1. AVR Familija ...................................................................................................... 21
4.2. Građa ATMEL Mikrokontrolera ......................................................................... 22
4.3. Karakteristike Atmega32 mikrokontrolera .......................................................... 24
4.3.1. Objašnjenje pinova ...................................................................................... 27
5. Platforma KR-mega32-16 V2.3 ................................................................................... 29
5.1. Hardverski koncept .............................................................................................. 29
5.2. Softverski koncept ............................................................................................... 35
5.2.1. Opšti AVR Studio ........................................................................................ 35
5.2.2. Funkcionalnost KRmega32 platforme ......................................................... 37
5
6. Senzori i logička kola .................................................................................................. 41
6.1. Senzor prisutnosti ................................................................................................ 41
6.2. Logička kola ........................................................................................................ 42
6.2.1. Multiplekser ................................................................................................. 42
6.2.2. Registri ........................................................................................................ 45
7. Nadzor višespratnog parking prostora ......................................................................... 48
7.1. Uvod .................................................................................................................... 48
7.2. Senzori i multiplekseri ......................................................................................... 49
7.3. Spajanje logičkih kola na KR-mega ploču .......................................................... 51
7.4. Ispis i prikaz rezultata .......................................................................................... 56
Zaključak ............................................................................................................................. 58
Literatura ............................................................................................................................. 59
Dodatak ................................................................................................................................ 60
6
Popis slika
Slika 1.1 Problem parkiranja između dva vozila ................................................................... 8 Slika 1.2 Zauzimanje dva parking mjesta .............................................................................. 9 Slika 1.3 Primjer parking prostora ......................................................................................... 9 Slika 2.1 FPGA sa osiguračima ........................................................................................... 14 Slika 2.2 FPGA sa antiosiguračima ..................................................................................... 14
Slika 3.1 Opšta blok struktura mikrokontrolera .................................................................. 18 Slika 3.2 Harvardova i Von Neumannova arhitektura mikroračunara ................................ 19 Slika 4.1 Kratak pregled razvoja AVR mikrokontrolera ..................................................... 21 Slika 4.2 Opšta šema AVR mikrokontrolera ....................................................................... 23 Slika 4.3 Blok dijagram AVR CPU-a .................................................................................. 24 Slika 4.4 Šema ulazno-izlanog pina .................................................................................... 26
Slika 4.5 Atmega32 8-bitni mikrokontroler ........................................................................ 26 Slika 5.1 KR-mega32-16 platforma .................................................................................... 29
Slika 5.2 Šema priključaka .................................................................................................. 31 Slika 5.3 (a, b) Detaljni prikaz priključaka .......................................................................... 31 Slika 5.4 (a-d) Detaljni prikaz priključaka .......................................................................... 32 Slika 5.5 (a-d) Detaljni prikaz priključaka .......................................................................... 33
Slika 5.6 (a-c) Detaljni prikaz priključaka........................................................................... 34 Slika 5.7 Programmers Notepad .......................................................................................... 35
Slika 5.8 Podešavanje parametara programa ....................................................................... 36 Slika 5.9 PonyProg .............................................................................................................. 37 Slika 6.1 Konstrukcija i princip rada fotootpornika ............................................................ 41
Slika 6.2 Šema spajanja senzora .......................................................................................... 42 Slika 6.3 Unutrašnja struktura multipleksera i njegova šematska oznaka ........................... 42
Slika 6.4 Multiplekser 4/1 ................................................................................................... 43 Slika 6.5 Kaskadiranje multipleksera .................................................................................. 44
Slika 6.6 4-bitni registar ...................................................................................................... 45 Slika 6.7 Blok dijagram 4-bitnog pomjeračkog registra sa serijskim ulazom i pomjeranjem
podataka u lijevo .................................................................................................................. 46 Slika 6.8 Vremenski dijagram 4-bitnog pomjeračkog registra sa serijskim ulazom i
pomjeranjem podataka u lijevo ........................................................................................... 46 Slika 6.9 4-bitni pomični registar s paralelnim ulazom i pomjeranjem podataka u desno .. 47 Slika 7.1 Blok šema spajanja senzora, multipleksera, mikrokontrolera, registara i LED
dioda .................................................................................................................................... 48 Slika 7.2 Spajanje senzora na multiplekser (Blok1) ............................................................ 50
Slika 7.3 Vremenski dijagram ulaza i izlaza multipleksera................................................. 51 Slika 7.4 Dio programa mikrokontrolera ............................................................................. 53
Slika 7.5 Oznake analognih ulaza po kolonama .................................................................. 54 Slika 7.6 Vremenski dijagram ulaza i izlaza mikrokontrolera prvog sprata ....................... 54 Slika 7.7 Vremenski dijagram ulaza i izlaza mikrokontrolera drugog sprata ..................... 55 Slika 7.8 Prikaz registra ....................................................................................................... 55 Slika 7.9 Vremenski dijagram ulaza i izlaza registra .......................................................... 56
Slika 7.10 LCD displej ........................................................................................................ 56 Slika 7.11 Šema spajanja izlaza registra sa LED diodama .................................................. 57 Slika 7.12 Prikaz panela ...................................................................................................... 57
7
Popis tabela
Tabela 6.1 Funkcijska tablica multipleksera ....................................................................... 43 Tabela 7.1 Prikaz izlaza multipleksera ................................................................................ 51 Tabela 7.2 Raspored zauzimanja pinova KRmega ploče .................................................... 52
8
1. Automatizirani nadzor parkinga
Potrebe savremenog društva postaju sve veće i zahtijevnije sa povećanjem populacije.
Sve veće potrebe se javljaju i za prostorom koji je neophodan u svakodnevnim obavezama,
kao što su odlazak u školu, na posao, kupovinu ili bilo koji način kretanja ljudskog bića.
Danas je nezamisljivo kretanje bez nekog prevoznog sredstva koje je potrebno negdje
parkirati, ali se to treba odraditi da sve ostalo može da funkcioniše bez ometanja. Prevozna
sredstva koji vrše svakodnevni prevoz putnika zahtijevaju sve više prostora za bezbjedno i
sigurno parkiranje. U manjim gradovima, ako posmatramo teritoriju, parkiranje vozila ne
predstavljalja veliki problem jer je u tim gradovima manji broj vozila, međutim u većim
gradovima to predstavlja jedan od većih problema jer je veliki broj vozila na ulicama
svakog dana. Stanovnici ovih gradova najviše koriste lična vozila (automobile) da bi se
prevezli do svojih radnih mjesta, jer su neki poprilično udaljeni od radnog mjesta. Ta
vozila je neophodno negdje parkirati a da se dalji tok saobraćaja ne ometa. U većim
gradovima nije lako naći odgovarajuće mjesto za parkiranje vozila.
Na osnovu ovih činjenica može se zaključiti da potrebe društva za parkiranjem vozila
postaju sve veće. S obzirom da u saobraćaju učestvuje sve više vozača prosječnim psiho-
fizičkih sposobnosti i kada treba izvesti neki zahtjevniji manevar sa vozilom mnogi imaju
problem. Jedan od velikih problema je taj kada treba vozilo da se uparkira, između dva
vozila jer je pravilno parkiranje nemoguće (prikaz na slici 1.1). Za veliki broj vozača ovo
predstavlja poteškoće i oni zaobilaze ovakva mjesta za parkiranje.
Slika 1.1 Problem parkiranja između dva vozila
9
Također veliki problem predstavlja i neodgovorno ponašanje nekih vozača koji često
mogu da svojim parkiranjem zauzmu i po dva parking mjesta i time smanje kapacitet
određenog parkirališta (slika 1.2).
Slika 1.2 Zauzimanje dva parking mjesta
Promjena slike saobraćaja u svakom gradu, koja neminovno prati razvoj društva i
specifične okolnosti vezane za samu prirodu odvijanja života, dovodi, prije ili kasnije, do
problema nagomilavanja vozila, pogotovo u centralnim djelovima grada kao i na
lokacijama visokog stepena atraktivnosti. Povećavanjem stepena motorizacije i mobilnosti,
pojavljuje se problem uvećanog dinamičkog i stacionarnog saobraćaja, pa je rješavanje
problema parkiranja, kao jednog od podsistema transportnog sistema svakog grada, važno
pitanje. Saobraćajna slika jednog grada predstavlja integrisani sistem cjelokupnog
dinamičkog saobraćaja, javnog gradskog prevoza putnika i stacionarnog saobraćaja,
odnosno parkiranja.
Porast životnog standarda stanovnika, težnja za što većom pokretljivošću,
samostalnošću i udobnošću izazvalo je sve veću potrebu za korišćenjem individualnih
vozila, a porastom broja automobila stvaraju se problemi raspoloživog prostora za smještaj
vozila. Zbog pojave ovog problema automatizacija upravljanja parking prostorom postaje
sve veća i značajnija potreba, posebno u velikim naseljima sa naglim porastom broja
vozila. Rješenja i sistemi koji to omogućavaju povećavaju efikasnost korištenja
raspoloživih parking prostora, a smanjuju probleme i troškove koji se pojavljuju u
klasičnim neautomatizovanim pristupima korištenja parkinga. Izgradnjom
automatizovanog parking sistema problem parkiranja bi se sveo na minimum.
Slika 1.3 Primjer parking prostora
10
Potreba za automatizovanim parkinzima proizilazi iz dva faktora:
- potreba za parking mjestima
- nedostatak raspoloživog zemljišta
U budućnosti će senzori, ugrađeni u cestovne površine i automobile u prolazu,
automatski prepoznavati i izvještavati o slobodnim mjestima. Senzori prepoznaju je li
parkirno mjesto zauzeto ili ne, te dijele te informacije putem interneta. U budućnosti će čak
i automobili koji prolaze pokraj slobodnih parkirnih mjesta moći o njima izvještavati.
Budući da su mnoga vozila sada umrežena, ta se informacija može i prenijeti putem
interneta i prikazati na karti u stvarnom vremenu. Prenošenje ovih informacija u stvarnom
vremenu na pametne mobitele korisnika ili izravno na navigacijske uređaje u njihovim
automobilima može skratiti potragu za parking mjestima koja vozačima često zadaje muke.
Cilj ovog završnog rada je korištenjem Atmel mikrokontrolera, vršiti monitoring
raspoloživog prostora za parking, uz prikaz stanja na LCD displeju i dizajniranom panel
modulu.
Prikazano rješenje prvenstveno nam obezbjeđuje tačne podatke vezane za slobodna i
zauzeta parking mjesta. Signalizacijski panel pomoću LED dioda je sistem za davanje
informacija vozačima koji se po ulasku na parkiralište informišu o slobodnim i zauzetim
parking mjestima. Na svakom parking mjestu nalazi se po jedan senzor koji nam daje
informaciju o zauzetosti parking mjesta. Ovaj panel precizno uz pomoć mikrokontrolera i
logičkih kola čita podatke unesene od strane senzora prisutnosti. Pored panela nalazi se
LCD displej koji na pregledan način prikazuje informaciju o ukupnom broju slobodnih
mjesta parkinga na svakom spratu. Iz razloga nedostatka prostora, neophodno je planirati
višespratne parking prostore.
11
2. Ugrađeni sistemi
Opća definicija ugrađenih ili ugradbenih sistema (engl. embedded) jeste da su to sistemi
sa čvrsto uparenom hardverskom i softverskom integracijom, koja je dizajnirana da bi
obavljala tačno određenu funkciju.
Postoji više definicija embedded sistema, tri najkarakterističnije bi bile slijedeće:
Ugrađeni sistemi su računarski sistemi sa jako izraženom integracijom hardvera i
softvera, prije svega namjenjeni da obavljaju specifične funkcije.
Ugrađeni sistemi su računarsko bazirani sistemi ugrađeni u okviru drugog sistema,
za koga obezbjeđuju bolju funkcionalnost i performanse.
Ugrađeni sistemi su sistemi specijalne namjene kod kojih je računar u potpunosti
enkapsuliran od strane uređaja koga on kontroliše.
Ugrađeni sistemi imaju danas široku primjenu: od mobilnih telefona, digitalnih
fotoaparata, medicinskih uređaja, pa sve do upravljačkih sistema u automobilima,
avionima i satelitima. Ovi sistemi su u protekle tri decenije, od jednostavnih kontrolera sa
specifičnim softverom za određen upravljački zadatak prerasli u složene sisteme na kojima
se izvršava mnoštvo aplikacija, od kritičnih upravljačkih aplikacija do grafičkog
korisničkog interfejsa. Porast broja aplikacija koje se istovremeno izvršavaju neizbježno je
postavio zahtjev za operativnim sistemom u okviru ugrađenih sistema, koji bi to omogućio,
a da pri tome ne naruši stabilnost i odziv sistema za sve vremenski kritične zadatke. Za
ugrađene sisteme sa relativno jednostavnim hardverom i/ili sa malim brojem jednostavnih
funkcija najčešće nije potreban operativni sistem. S druge strane, sistemi na kojima se
izvršavaju relativno složene aplikacije zahtjevaju neku formu planera (engl. sheduler) i
samim tim zahtjevaju operativni sistem.
Hardver i softver kod ugrađenih sistema se razvijaju paralelno. Kod razvojnog modela,
nazvan hardver-softver ko-dizajn model, mora da postoji čvrsta uzajamna sprega u radu
između oba projektantska tima iz razloga što se embedded sistemi grade (realizuju) kako
od specijalizovanog hardvera, tako i specijalizovanog softvera.
Druga tipična karakteristika ugrađenih sistema se odnosi na metod razvoja softvera,
nazvan cross-platform razvoj. Standardno, softver za ugrađeni sistem se razvija na jednoj
platformi, a izvršava na drugoj. U tom kontekstu, platforma predstavlja kombinaciju
hardvera (kakva je, recimo struktura jednog mikroračunarskog sistema), operativnog
sistema i softverskih razvojnih sredstava. Host sistem je sistem na kome se embedded
softver razvija. Ciljni (engl. target) sistem je ugrađeni koji se razvija. U najvećem broju
slučajeva, host i ciljni sistem nisu bazirani na istom procesoru. Glavno softversko razvojno
sredstvo koje čini razvojnu kros-platformu mogućom predstavlja kros-kompajler. Kros-
kompajler je kompajler koji se izvršava na jednom tipu procesorske arhitekture, a generiše
objektni kôd za drugi, različit tip procesorske arhitekture. Kros-kompajler se koristi iz
prostog razloga što ciljni sistem ne može da "udomi" svoj sopstveni kompajler.
12
Jedna od bitnih karakteristika sistema u realnom vremenu pored njihove hardverske
strukture, jeste svakako i njihov specifični način programiranja. Moguća je sljedeća
klasifikacija programa:
- sekvencijalni programi (akcije striktno poredane u jednom vremenskom
redoslijedu (sekvenci)),
- multitasking programi (neke operacije se izvode paralelno, mada je i dalje u
nekim vremenskim periodima zastupljeno slijedno programiranje, pri čemu procesi
ili taskovi mogu komunicirati preko djeljenih varijabli i signala),
- programi realnog vremena (akcije vremenski ne slijede nužno jedna drugu,
sekvenca nekih akcija nije određena od strane projektanta, već od događaja koji se
dešavaju u realnom vremenu
Kod klasičnih (sekvencijalnih) programa, operacije se izvode u predefinisanom
rasporedu (sekvenci). S druge strane, kod multitasking programiranja, neke operacije se
izvode paralelno, mada je i dalje u nekim vremenskim periodima zastupljeno slijedno
programiranje. Pri tome, procesi ili taskovi mogu komunicirati preko djeljenih varijabli i
signala. Pri dizajniranju i implementaciji računarskih programa koji sadrže u sebi taskove
realnog vremena, moramo voditi računa koje su to neophodne forme koje ovakvi programi
zahjtevaju. Iskustveno da se pokazati da realizacija programa realnog vremena je znatno
teža od projektovanja sekvencijalnog softvera. Nezaobilazni faktor čine operacije reakcije
na događaje iz okruženja, tj. na događaje koji se dešavaju u realnom vremenu.
Ugrađeni sistem ćemo uzimati kao sistem koji:
- predstavlja kombinaciju hardvera i softvera da bi izvršio određenu zadaću
- je dio većeg sistema za kojeg nije neophodno da bude računar
- radi u reakciji sa okolinom gdje vremenska ograničenja mogu biti bitna
- ima softver koji obezbjeđuje osobine, pogodnosti i felksibilnost
- ima hardver (procesori, ASIC, FPGA, memorije...) koji obezbjeđuju performanse
(ponekad i bezbjednost)
2.1. Ugrađeni mikrokontroleri
Ovo je trenutno jedna od onih oblasti koja predstavlja kamen spoticanja kada je u
pitanju i samo definisanje pojma ugrađeni, ugradbeni mikrokontroleri. No, bez obzira na
definiciona razmimoilaženja sama oblast se izrazito brzo razvija i obično se baš na nju i
misli kada se kaže da je računar ušao u sve pore života. Sve što vrijedi za mikrokontrolere,
važi i za ugrađene mikrokontrolere. Ipak, i u literaturi i na tržištu se često sreće pojam
ugrađeni mikrokontroler, implicirajući distinkciju. Proizvođači često daju ugrađene
mikrokontrolere kao zasebnu klasu proizvoda, ali generalno, primjena i zahtjevi trebaju da
postavljaju uslove korištenja konkretnog mikrokontrolera, te je u općem slučaju moguće
korištenje i jednih i drugih. Distinkcija u pojmovima ugrađeni sistem i mikrokontrolerski
sistem je posljedica činjenice da su mikrokontroleri jedan on načina realizacije ugrađenih
sistema.
13
Pored mikrokontrolera, za realizaciju ugrađenih sistema se koriste:
- Diskretna rješenja
- ASIC (Application Specific Integrated Circuits)
- FPGA (Field Programmable Gate Arrays).
To implicira da se mikrokontrolerski sistemi mogu uzeti kao podskup ugrađenih
sistema u kojima se kao realizaciona tehnologija koriste odgovarajući mikrokontroleri.
2.2. Pregled programabilnih struktura
Mikrokontroleri kao komponente sa korisničkog stanovišta, možemo posmatrati kao
jednu od programabilnih strukutra, koje se koriste za rješavanje niza sličnih problema. Da
bi se imao uvidu kompletnu sliku, te poziciju mikrokontrolera, ovdje će se prvo napraviti
pregled strukutura koje se u općem slučaju mogu koristiti umjesto mikrokontrolerskih
sistema [5].
2.2.1. Diskretna rješenja
Diskretna rješenja ovdje navodimo samo zbog sveobuhvatnosti, a pod njima
podrazumijevamo cjelokupna rješenja sa tranzistorskom logikom, SSI (engl. small scale
integration) i MSI (engl.medium scale integration). Pogodni su za realizacije jako malih i
jednostavnih sistema, ali se za većinu drugih primjena u startu isključuju zbog ograničenja
na dimenzije i troškove [5].
2.2.2. Namjenski integrirani krugovi (ASICs)
Namjenski integrirani krugovi (engl. Application Specific Integrated Circuits - ASICs)
predstavljaju (najjeftinija) rješenja u situacijama kada se očekuje velika serija jednog čipa.
Uključuju relativno velike troškove inžinjeringa, a skoro nikakve mogućnosti promjene
napravljenog dizajna (bez dodatnih velikih troškova dorade maski). Kao proizvod ima se
čip koji je napravljen uz najbolju procesnu tehnologiju i koji tačno odgovara zahtjevima.
To obično daje odlične performanse, nisku potrošnju energije i malo zauzimanje prostora.
Treba istaći da i pored masovnosti proizvodnje ovih čipova, svaki čip je specifičan i radi se
samo za određenog (jednog) naručioca (najčešće je to firma koja je i dizajnirala čip).
Proces dobijanja namjenskih integriranih krugova se sastoji iz projektovanja u matičnoj
firmi, a potom slijedi izrada prototipa i proizvodnja u nekoj od fabrika specijalizovanih za
ovu namjenu. Projektovanje se danas obično radi uz pomoc CAD alata, odnosno u nekom
od HDL jezika (engl. Hardware Description Language) i može se reći da dosta liči na
programiranje. U domenu jezika za opisivanje hardvera su VHDL što je skraćenica VHSIC
(Very High Speed Integrated Circuit), Hardware Description Language i Verilog [5].
2.2.3. Programabilni logički uređaj – FPGA
FPGA (engl. Field Programmable Gate Arrays) krugovi predstavljaju digitalne
integrirane krugove koji sadrže konfigurabilne (programabilne) logičke blokove,
međusobno vezane konfigurabilnim vezama. Projektanti konfigurišu (programiraju) te
14
veze i time dobijaju uređaje sposobne da obavljaju izrazito širok spektar zadataka. Kako
se programiraju to su dostupni širem skupu korisnika i imaju određenu mjeru
univerzalnosti. Mnogo se koriste u projektovanju ugradbenih sistema. Zavisno od
proizvođača nazivaju se još i LCA (engl. logic-cell arrays), PAL (engl. programmed array
of logic), te CPDL (engl. complex programmable logic devices). Naravno, postoje
određene razlike između FPGA od jednog proizvođača i CPDL od drugog, ali generalno
među njima je mnogo više sličnosti nego razlika.
Ovi programabilni hardverski krugovi implementiraju kombinacionu i sekvencijalnu
logiku, koja se može konfigurisati učitavanjem podataka iz lokalne memorije koji onda
određuju međuveze logičkih blokova. Isporučuju se kao čipovi koji se programiraju u
jednom od HDL jezika (obično VHDL ili Verilog).
Programiranje se svodi na "pregaranje" osigurača-međuveza ili na njihovo kreiranje, u
zavisnosti od korištenog kola. Primjeri blokova sa osiguračima i antiosiguračima u FPGA
čipu su dati na slikama 2.1 i 2.2. Ovaj proces konfiguracije je reverzibilan i u praksi se
konfiguracija često uzima iz memorijskog kruga (tipično EEPROM), što daje veliku
fleksibilnost, laganu nadogradnju, uz zadržavanje svih pozitivnih osobina sekvencijalne
logike.
Slika 2.1 FPGA sa osiguračima
Slika 2.2 FPGA sa antiosiguračima
15
Neke od prednosti FPGA nad mikrontrolerima u projektovanju i gradnji ugradbenih
sistema su [5]:
- Implementacija stvarnog namjenskog projektovanja. Interni resursi kod FPGA se
mogu konfigurirati tačno prema zahtjevima primjene. Kod mikrokontrolera,
aplikacija se mora prilagoditi resursima koji stoje na raspolaganju, a u velikom
broju slučajeva se ne koriste svi resursi.
- Štampana ploča za FPGA krugove može biti jednostavnija nego za ekvivalentnu
ploču mikrokontrolerskog rješenja. Ovo je posljedica mogućnosti integriranja
eksternih hardverskih komponenti u jedan uređaj (FPGA).
- Nivo performansi koji se dobija sa FPGA je obično veći, čak i kada se koristi ista
brzina takta, a to je posljedica paralelne prirode hardverskih algoritama.
- Glavni nedostaci FPGA krugova su njihova visoka cijena, te ograničenja koja
postavljaju alati za sintezu, a koji se koriste za razvoj sistema sa visokim nivoom
apstrakcije.
2.3. Mikrokontroleri
Mikrokontroler je elektronički uređaj koji, slično kao i računar, ima zadaću da zamjeni
čovjeka u kontroli dijela proizvodnog procesa ili gotovo cijelog proizvodnog procesa [5].
Mikrokontroleri su uglavnom dizajnirani za specifične zadaće, vrlo raznolike od slučaja do
slučaja. U osnovi, pod mikrokontrolerom se može smatrati uređaj koji u sebi integrira
određene komponente mikroprocesorskog sistema u jednom jedinom čipu.
Mikrokontroleri se mogu proučavati iz više uglova: tehnološkog, računarskog i
korisničkog. Prva dva stanovišta su od interesa za inženjere mikroelektronike, te za
projektante hardvera, dok je za stručnjake, koji rade u području upravljanja sistemima i
gradnje ugrađenih sistema, mikrokontroler interesantan sa korisničkog stanovišta kao
komponenta ili procesor informacija koji treba da bude u stanju obaviti odgovarajuće
funkcije u nekom sistemu. Primjena ima mnogo, od jednostavne regulacije osvjetljenja,
alarmnih sistema, pa do upravljanja robotima u industrijskim pogonima. Prosječni
automobil danas, posjeduje na primjer oko 20-tak ugrađenih mikrokontrolera, (Mercedes S
klase iz 1999 godine posjedovao je 63 mikrokontrolera a automobil marke BMW iz iste
godine 65) dok je tipično srednje elektrificirano domaćinstvo opremljeno sa više od 50-tak
mikrokontrolera ugrađenih u različite električne i elektronske uređaje. Američka
kompanija Texas Instruments proizvela je prvi mikrokontroler serije TMS1000 sa dovoljno
RAM, ROM memorije i I/O hardverom koji je ugrađivan u mikrotalasne pećnice,
industrijske tajmere i kalkulatore. Mikrokontroleri, kao elementi nude opštija i za male
serije jeftina rješenja, jako širok izbor dobavljača i još širi izbor tehnoloških opcija.
Program ugrađen u mikrokontroler može biti jednostavno izmijenjen, čak i u toku same
proizvodnje.
16
2.4. Projektovanje ugrađenih sistema
Dizajn i projektovanje ugrađenih sistema se često bazira na faktorima koji se uopće ne
razmatraju kod projektovanja jakih desktop sistema. Opći zahtjevi koji se postavljaju pred
većinu projektanata ugrađenih sistema su:
- Niska cijena: Najveći dio ugrađenih proizvoda se radi za tržišta gdje krajnji
korisnik nije voljan da potroši nešto više novca za neznatno bolje performanse ili
nekoliko dodatnih pogodnosti. Stoga su projektanti prisiljeni da dizajniraju
proizvode sa optimalnim odnosom cijena/performansa, te da tražene performanse
izvuku za najmanju cijenu (ponekad i maksimalne performanse u okviru određenog
budžeta). To je i logično, jer se hardver isporučuje zajedno sa softverom, za razliku
od desktop sistema, gdje je softver u pravilu zaseban proizvod. Rezultat ovoga je da
su resursi, koji se nalaze na raspolaganju projektantu, minimalni.
- Napajanje: Potrošnja je još jedan kritičan faktor pri dizajnu ovih sistema. Ovo je
uglavnom zbog toga što veliki broj ovih sistema radi napajanje baterijskim
izvorom, a od njih se očekuje da rade i budu aktivni čak i u dužim periodima
vremena. Kao primjer, mogu se navesti mobilni telefoni, pejsmejkeri, senzori.
Digitalni senzori, na primjer, često rade u teškim i nekontrolisanim uslovima i
okolinama. Njihova veličina često isključuje upotrebu rashladnih sistema, a
smanjivanjem cijene ide se na plastična umjesto keramičkih pakovanja (opći trend
kod mikrokontrolera) što predstavlja samo još jednu nepovoljnost kada je u pitanju
hlađenje. Stoga, niska potrošnja je često obavezna.
- Predvidivost: Zbog čestih realno-vremenskih (engl. real-time) zahtjeva na sisteme,
a u kojima ugrađeni sistemi obično imaju svoju ulogu, predvidivost je esencijalna.
To bi značilo da se ponašanje sistema mora moći predvidjeti pod svim mogućim
uslovima i događajima. U ovim sistemima hardverska podloga mora garantirati da
će svaki kod koji se izvršava na njemu imati isti trošak/višak izvršavanja (engl.
executive overhead) prilikom svakog izvršavanja. Softver se često projektuje za
scenario najgoreg slučaja i to tako da je trošak/višak izvršavanja deterministički.
- Odziv: Ugrađeni sistemi poput upravljačkih i regulacionih sistema su određeni
događajima te stoga na njih moraju odgovarati dovoljno brzo. Takvi sistemi se
mnogo oslanjaju na prekide. Zbog toga moraju biti dizajnirani tako da imaju
dovoljno brze odzive na prekide, a takodjer i mali trošak/višak zbog obrade prekida.
- Vremenska tačnost: Distribuirani ugrađeni sistemi koji upravljaju udaljenim
bazama podataka i mrežni uređaji zahtjevaju preciznu vremensku granulaciju.
Rezolucija i tačnost koji se očekuju, za većinu ovih primjena, su reda mikrosekundi.
Većina ugrađenih aplikacija je ekstremno specijalizovana, odnosno visoko optimizirana.
Tipična projektna procedura ide kroz nekoliko koraka:
- Projektna specifikacija
- Hardver/ Softver razdvajanje
- Paralelni razvoj hardvera i softvera
- Integracija sistema i testiranje
Svaki od ovih koraka se čvrsto oslanja na iskustvo projektanta. Zadaci koji se stavljaju
pred projektanta su takve prirode da ostavljaju jako malo prostora za greške. Takva
17
nefleksibilnost dizajna čini da su svi troškovi, i korekcije grešaka u dizajnu i dodatnih
modifikacija, izrazito visoki. Dodatno, mogućnost ponovnog korištenja jednom napisanih
softverskih modula, kao i dodatnih portova su veoma male. Čak i nove verzije proizvoda
mogu zahtjevati ili kompletno projektovanje iznova ili značajan rad na inkorporaciji novih
osobina. Nadalje, stalno povećanje broja igrača na tržištu razvoja ugrađenih sistema, stvara
konstantan pritisak da se reducira vrijeme izlaska na tržiste (engl. time-to-market) kao i
broj odbačenih projekata. To uzrokuje da se projektanti okreću razvijanju generičkih i
fleksibilnih sistema. Bira se hardver koji je više generički, programira se u jezicima višeg
nivoa, te koliko je to moguće koriste se objektno orjentirani dizajn softvera.
Proizvođači hardvera se, također, nastoje uklopiti u ove trendove, tako da se
ugrađenom hardveru mogu sresti rješenja koja su "očerupani" desktop sistemi. Tako se i
kod procesora, namjenski razvijenih za "ugrađeno" tržište, javljaju hardverske strukture
poput keša (engl. cache) i jedinica za upravljanje memorijom (skr. engl. MMU- Memory
management unit). Kao primjer se uzimaju ARM i Hitchi SH7750 arhitekture. Neki
proizvođači su izašli i sa strategijama poboljšanja gustine koda. Ove strategije se baziraju
na kompresiji 32-bitnih instrukcija u 16-bitne i njihovu dekompresiju u toku rada.
18
3. Osnovne karakteristike mikrokontrolera
3.1. Osnove mikrokontrolera
Osnovu mikrokontrolera čini CPU jezgro i na osnovu njegove unutrašnje strukture
govorimo o 4-bitnim, 8-bitnim, 16-bitnim mikrokontrolerima. Većina današnjih
mikrokontrolera ima određenu količinu memorije integrirane na čip, a koja je podijeljena
na ROM za smještaj programa i RAM (radna memorija) za smještaj podataka i upravljanje
stekom (engl. stack). Kod PIC familije mikrokontrolera, RAM se koristi i za smještaj
registarskog steka. Familije mikrokontrolera označavaju dostupnost više različitih
mikrokontrolera sa istim osnovnim centralnim jezgrom, ali različitim periferalima,
pakovanjem, opcijama po pitanju radne brzine itd. Ulazi u mikrokontroler mogu biti
analogne i digitalne prirode i u suštini informacije o stanju objekta će slati neki mjerni
pretvarač (senzor). Izlazi iz mikrokontrolera također mogu biti analogne i/ili digitalne
prirode. Od namjene mikrokontrolera ovisiti će njegov izbor, te će jedni imati više I/O
port-ova, neki više ROM-a, a neki manje i sl.
Većina mikrokontrolera također ima i druge komponente kao što su:
- Tajmerski modul
- Ulazno/izlazne portove
- Konvertore signala (npr. A/D i D/A)
Ulazi u mikrokontroler mogu biti analogne i digitalne prirode i u suštini informacije o
stanju objekta će slati neki mjerni pretvarač (senzor). Izlazi iz mikrokontrolera također
mogu biti analogne i/ili digitalne prirode. Od namjene mikrokontrolera ovisiti će njegov
izbor, te će jedni imati više I/O port-ova, neki više ROM-a, a neki manje i sl. Osnovna
struktura mikrokontrolera prikazana je na slici 3.1.
Slika 3.1 Opšta blok struktura mikrokontrolera
19
Veliki broj mikrokontrolera različitih proizvođača, različitih arhitektura i performansi,
raspoloživ je danas na tržištu. Neki od njih podesni su za partikularne aplikacije dok su
drugi sasvim nepodesni za određenu klasu aplikacija. Prije bilo kakve komparacije
interesantno je za primjetiti da se u toku protekle dekade desila jedna masivna migracija sa
4-bitnih mikrokontrolera na 8-bitne, gdje je vjerovatno ključnu ulogu odigrala odluka
Intela da arhitekturu svog 8051 ostavi otvorenom, te je uslijedila njegova masovna
proizvodnja od strane velikog broja kompanija. Takva jedna dominantna arhitektura nije
nikada ostvarena na polju 16-bitnih uređaja, koje se uglavnom sastoji iz jezgri koje je
svaka kompanija razvijala ponaosob. Pošto periferali i memorija, na samom čipu
zauzimaju relativno mnogo (obično najviše) silicijskog prostora, sama cijena jezgre
praktično je mala stavka u ukupnom budžetu. Tako se desilo da se za većinu aplikacija
zbog velike razlike u cijeni, prelaz s 4-bitnih na 16-bitne mikrokontrolere čak nije ni
razmatran.
3.2. Arhitekture mikrokontrolera
U konstrukciji mikrokontrolera prisutne su dvije osnovne arhitekture [5]:
- Von Neumannova
- Harvardova
Na slici 3.2 prikazani su principi organizacije pomenutih arhitektura mikrokontrolera.
Slika 3.2 Harvardova i Von Neumannova arhitektura mikroračunara
Kao što se sa slike 3.2 može vidjeti, konvencionalna Von-Neumann arhitektura
mikrokontrolera posjeduje jednu internu magistralu koja povezuje CPU sa programskom
(ROM) i memorijom podataka (RAM). Ovakav koncept povezuje kompletan memorijski
prostor sa CPU jednom magistralom tako da podaci i instrukcije koriste istu magistralu.
Harvard arhitektura je noviji koncept u odnosu na Von-Neumannovu. Harvard
arhitektura mikroračunara bazira na principu fizičkog razdvajanja internih magistrala za
programsku memoriju (ROM) i memoriju podataka (RAM). Time je, zbog konkurentnog
pristupa programskoj memoriji i memoriji podataka, ukupan protok podataka kroz CPU
ubrzan. To ima za posljedicu razdvajanje internih sabirnica na čak 6 grupa:
- adresna sabirnica za program;
20
- adresna sabirnica za čitanje podataka iz memorije;
- adresna sabirnica za upisivanje podataka u memoriju;
- sabirnica za kod instrukcije;
- sabirnica za podatke koji se čitaju;
- sabirnica za podatke koji se upisuju;
Rezolucija magistrale podataka osmobitnog mikrokontrolera Harvard arhitekture je
osmobitna dok je rezolucija instrukcijske riječi (rezolucija programske magistrale)
uobičajeno veća od osam bitova (tipično 12, 14 ili 16). Instrukcije i podaci dobavljaju se
jednovremeno i izvršavaju u jednom instrukcijskom ciklusu. Tipično za Harvard
arhitekturu je da posjeduje manje raspoloživih instrukcija nego Von-Neumann-ova, i da se
većina instrukcija izvršava u jednom instrukcijskom ciklusu. Izuzetak su jedino instrukcije
koje mijenjaju status programskog brojača (PC1), a to su instrukcije grananja i instrukcije
skokova.
Mikrokontroleri Harvard arhitekture nazivaju se uopšteno RISC mikrokontrolerima (Re
duced Instruction Set Computer) i predstavljaju popularnu arhitekturu modernih procesora.
Jedan 8-bitni mokrokontroler ove arhitekture uobičajeno poseduje do nekoliko desetina
instrukcija.
Mikrokontroleri Von-Neumann-ove arhitekture nazivaju se CISC mikrokontrolerima
(Complex Instruction Set Computer). Magistrala podataka i programska magistrala su iste
rezolucije, npr. osmobitna, međutim, zbog zauzimanja zajedničke magistrale podaci i
instrukcijene mogu biti dobavljeni istovremeno. Tipični osmobitni mikrokontroleri Von-
Neuman arhitekture posjeduju preko dvije stotine instrukcija.
21
4. ATMEL Mikrokontroleri
4.1. AVR Familija
Familija mikrokontrolera AVR je uvedena na tržiste tokom 1997 god. od strane Atmel-
a. U osnovi Atmel AVR (nose oznaku AT90) familije se nalazi 8-bitni RISC
mikroprocesor koji sadrži 32 registra opće namjene, ali i relativno bogat set instrukcija.
Kao posljedica korištenja interne Flash programske memorije, koju je moguće veoma
jednostavno programirati ISP (engl. In-System Programming) metodom i veoma povoljnog
odnosa cijene i performansi ova Atmel-ova familija se dosta koristi.
AVR mikroprocesore odlikuje velika brzina izvršavanja do 16 MIPS, što je oko 12
puta više nego kod standardnih 8-bitnih mikroprocesora, dok su sa druge strane i
memorijske performanse znatno poboljšane kombinovanim korišćenjem Flash memorije
(trenutno veličine do 128KB) i EEPROM memorije. AVR mikrokontroleri nude povoljan
odnos brzine izvršavanja instrukcija i potrošnje (MIPS/mW) na tržištu 8-bitnih
mikrokontrolera. AVR RISC familija mikrokontrolera se proizvodi u Atmelovoj CMOS
tehnologiji koju karakterizira smanjena potrošnja - npr. AVR sa brzinom izvršavanja 10
MIPS ima potrošnju oko 40mW. Na slici 4.1 prikazan je trend razvoja AVR familije.
Slika 4.1 Kratak pregled razvoja AVR mikrokontrolera
22
Neki od najčešće korištenih Atmelovih procesora sa nekim svojim osobinama koje su
karakteristične za njih su: [7]
- AVR (Classic) predstavlja osnovnu familiju AVR mikrokontrolera. Tipičan
predstavnik je čip AT90S8515 koji posjeduje solidan broj mogućnosti.
- MEGA AVR familija mikrokontrolera ima jedinstvenu memoriju sa mogućnošću
samoprogramiranja (Self-Programming Memory), kao i mogućnost čitanja iz
memorije tokom upisa (Read while Write). Mikrokontroleri iz ove familije se mogu
naći u varijantama sa 8-12K Flash memorijom, do 4K EEPROM-a i do 4K RAM-a
i dolaze u 32-64 pinskom pakovanju. Usmjereni su na specijalizovane segmente
tržišta i često se koriste kao komponente u prenosivim uređajima, bežičnoj
komunikaciji, bezbjednosti, itd.
- LCD AVR pored standardnih mogućnosti posjeduju 4x25 segmentni LCD drajver,
kao i JTAG interfejs za on-chip debugging.
- RF AVR mikrokontroleri predstavljaju kombinaciju AVR mikrokontrolera i RF
transmitera visokih performansi, koji radi na frekvenciji 250-460MHz. Koriste se
na tržištima koja imaju potrebu za bežičnom daljinskom kontrolom po pristupačnoj
cijeni.
- SECURE AVR u mikrokontroleru su integrisani generator slučajnih brojeva,
kripto procesor i on-chip security. Upotreba: omogućuju dizajn embedded sistema
koji imaju potrebu za sigurnošću i kriptovanjem podataka kao što je to slučaj kod
Internet transakcija, pretplata na TV kanale, bankarstva.
- USB AVR posjeduje konfigurabilni low/high speed USB kontroler koji podrzava 5
end pointa i ima integrisan 12-kanalni 10-bitni AD konvertor. Koriste se kod
kontrolera za video igrice, uređaja za akviziciju podataka, senzora...
To su samo neki, najčešće korišteni mikrokontroleri iz porodice AVR mikrokontrolera.
4.2. Arhitektura ATMEL Mikrokontrolera
AVR mikrokontroleri imaju identično jezgro (engl. core), set instrukcija i organizaciju
memorije, a razlike koje postoje među raznim familijama AVR mikrokontrolera odnose se
na dodatne specifične mogućnosti koje su ugrađene u svaku od njih, kapacitet memorije,
radni napon napajanja, način pakovanja (broj pinova) itd. Ovo ima za posljedicu
jednostavnije programiranje u slučaju promjene mikrokontrolera u toku faze projektovanja
(nema potrebe za izmjenom napisanog koda,već se piše samo dodatni kod za rad sa
specifičnim komponentama novog mikrokontrolera).
Oznake različitih familija mikrokontrolera, kao sto su tinyAVR, AVR (Classic AVR) i
megaAVR se ne odnose na performanse, već predstavljaju naznaku kompleksnosti. Dok je
spektar mogućnosti kod megaAVR veoma širok, tako je kod TinyAVR ograničen i
predstavlja podskup mogućnosti AVR familije. Svaka od ovih klasa je pravljena za
specifičnu namjenu i proizašla je kao potreba tržišta za takvim tipom mikrokontrolera.
U cilju optimizacije veličine koda, performansi i potrošnje, arhitektura AVR
mikroprocesora objedinjuje veliki registarski fajl sa kratkim vremenom pristupa i brze
instrukcije koje se izvršavaju u samo jednom ciklusu. Brzo pristupni registarski fajl se
sastoji od 32 8-bitna radna registra opće namjene. Dok klasične arhitekture bazirane na
23
upotrebi akumulatora zahtjevaju veliku količinu programskog koda za prenos podataka
između akumulatora i memorije, kod AVR mikrokontrolera su ovi transferi podataka
eliminisani korišćenjem 32 radna registra, od kojih je svaki moguće koristiti kao
akumulator. U Atmelu se kaže da je AVR arhitektura razvijana imajući za cilj da se
efikasno programira kako u asembleru, tako i u C, naročito uzimajući u obzir korištenje
pointera, kao jednu od glavnih odlika programiranja u C. Na slici 4.2 prikazana je opšta
šema AVR mikrokontrolera.
Slika 4.2 Opšta šema AVR mikrokontrolera
Svi registri su direktno povezani sa aritmetičko logičkom jedinicom (ALU) čime je
omogućen pristup do dva nezavisna registra u toku izvršavanja jedne instrukcije. ALU
operacije se dijele u tri osnovne kategorije: aritmetičke, logičke i operacije nad bitima.
AVR koristi koncept Harvardske arhitekture – postoje posebne memorije i magistrale za
programski kod i podatke, koja predstavlja arhitekturu najpopularnijeg pocesora Classic
AVR familije. Programska memorija se izvršava sa dvostepenim pipeline-om. Paralelno sa
izvršavanjem tekuće instrukcije AVR dohvata narednu instrukciju i zatim je izvršava u
slijedećem ciklusu takta. Ovaj koncept omogućava da jedna instrukcija bude izvršena u
svakom taktu. Kod drugih CISC i RISC arhitektura, eksterni takt oscilatora se dijeli (do 12
puta) i na taj način se dobija interni izvršni takt. Mora se podvući da je to jedna od glavnih
prednosti AVR mikrokontrolera sa poboljšanom RISC arhitekturom - na AVR
mikroprocesoru od 8MHz izvrši se 8 miliona instrukcija u sekundi (MIPS), što je daleko
bolje od PIC mikroprocesora na 20MHz koji daje samo 3-4MIPS. Memorijski prostor
24
uređaja sadrži 64 adrese za periferijske funkcije kao što su kontrolni registri, tajmeri-
brojači, A/D konvertori, itd. I/O uređajima se pristupa direktno ili preko područja
podataka, budući da se oni takođe mapiraju u adresni prostor SRAM memorije [7]. Na slici
4.3 prikazan je blok dijagram AVR CPU-a.
Slika 4.3 Blok dijagram AVR CPU-a
4.3. Karakteristike Atmega32 mikrokontrolera
AVR® 8-bit Mikrokontroler visokih performansi i niske potrošnje [4]
Napredna RISC Arhitektura
• 131 Instrukcija – Većina se izvršava u jednom taktu
• 32 x 8 Registra opšte namjene
• Potpuno statičke operacije
• Do 16 MIPS pri 16 MHz
25
• dvociklični multiplikator u čipu
Neizbrisivi segmenti memorije visoke izdržljivosti
• 32K Bytes Flash memorije sa mogućnosti samoprogramiranja (In-System Self-
programmable)
• 1024 Bytes EEPROM
• 2K Byte Internog SRAM
• Ciklus Čitanja/Pisanja: 10.000 Flash/100.000 EEPROM
• Očuvanje podataka: 20 god. pri 85°C/100 god. pri 25°C
• Opcionalna Boot Code Sekcija sa nezavisnim bitovima zaključavanja (Lock
Bits)
• Programsko zaključavanje za sigurnost softvera
JTAG (IEEE std. 1149.1) Interfejs
• Podrška za debagiranje u čipu
• Programiranje Flash-a, EEPROM-a i bitova zaključavanja kroz JTAG Interfejs
Periferne mogućnosti
• Dva 8-bitna Tajmera/Brojača sa zasebnim preskalerima i modovima
uspoređivanja
• Jedan 16-bitni Tajmer/Brojač sa zasebnim preskalerom i modom uspoređivanja
• Brojači u realnom vremenu sa zasebnim oscilatorom
• Četiri PWM kanala
• 10-bitni ADC sa 8 kanala
• Bajtno orjentisan serijski interfejs
• Programabilni serijski USART
• Master/Slave SPI serijski interfejs
• Programabilni Watchdog Tajmer sa zasebnim oscilatorom u čipu
• Analogni komparator u čipu
Specijalne osobine mikrokontrolera
• Power-on Reset i Programabilna Brown-out detekcija
• Interno kalibrirani RC Oscilator
• Eksterni i interni izvor interapta
• Šest Sleep modova: Idle, ADC Noise Reduction, Power-save, Power-down,
Standby
• i Extended Standby
I/O i pakovanje
• 32 Programabilne I/O linije
• 40-pin PDIP, 44-lead TQFP, and 44-pad QFN/MLF
Radni naponi
• 2.7 - 5.5V za ATmega32L
• 4.5 - 5.5V ua ATmega32
Brzine
• 0 - 8 MHz za ATmega32L
• 0 - 16 MHz za ATmega32
Potrošnja energije pri 1 MHz, 3V, 25C za ATmega32L
• Aktivno: 1.1 mA
• U praznom hodu: 0.35 mA
Svi AVR portovi imaju funkcije čitanja, modifikovanja i pisanja kada se koriste kao
digitalni ulazno-izlazni portovi. Ovo podrazumijeva da se smjer porta može mijenjati. Svi
26
pinovi portova imaju zasebne pull-up otpornike sa konstantnom otpornošću. Na slici 4.4
prikazana je šema ulazno-izlaznog pina.
Slika 4.4 Šema ulazno-izlanog pina
Registri i reference bitova su pisani u generalnoj formi. Slovo “x” u indeksu određuje
koji se port koristi a broj “n“ broj bita. Ipak, kada koristimo registar ili definišemo bitove u
toku programa, precizna forma mora se koristiti, na primjer, PORTB3 za bit broj 3 u Portu
B.
Svaki port koristi tri ulazno – izlazne memorijske adresne lokacije:
- PORTx – Registar podatka (Data Register)
- DDRx – Registar smjera podatka (Data Direction Register)
- PINx – Ulazni pin porta (Port Input Pins)
Na slici 4.5 prikazan je Atmega32 mikrokontroler.
Slika 4.5 Atmega32 8-bitni mikrokontroler
27
4.3.1. Objašnjenje pinova
Port A(PA7..PA0) predstavlja analogni ulaz na A/D konvertor. Također služi i kao 8-
bitni bidirekcioni I/O port, ako se A/D konvertor ne koristi. Pinovi porta mogu obezbijediti
interni pull-up otpornik.
Port B(PB7..PB0) služi kao 8 bitni bidirekcioni I/O port sa interni pull up otpornicima
(selektabilno za svaki bit). Alternativne funkcije porta B su objašnjene u nastavku:
- Bit 7 – SCK: Master taktni izlazni, Slave taktni ulazni pin za SPI kanal. Kada je
SPI uključen kao Slave, ovaj pin je konfigurisan kao ulaz bez obzira koja je
vrijednost DDB7. Kada je SPI uključen kao Master, smjer podatka ovog pina
kontroliše DDB7.
- Bit 6 – MISO: (Master Input Slave Output) Master ulazni, Slave izlazni pin
podatka za SPI kanal. Kada je SPI uljučen kao Master, ovaj pin je konfigurisan kao
ulazni bez obzira koja je vrijednost DDB6. Kada je SPI uključen kao Slave, smjer
kontroliše DDB6.
- Bit 5 – MOSI: (Master Output Slave Input) SPI Master izlazni, Slave ulazni pin
podatka za SPI kanal. Kada je SPI uključen kao Slave, ovaj pin je konfigurisan kao
ulazni bez obzira koja je vrijednost DDB5. Kada je SPI uključen kao Master, smjer
kontroliše DDB5.
- Bit 4 – SS : (Slave Select) Kada je SPI uljučen kao Slave, ovaj pin je konfigurisan
kao ulazni bez obzira koja je vrijednost DDB4. Kada je SPI uključen kao Master,
smjer kontroliše DDB4.
- Bit 3 – AIN1/OC0:
o AIN1, negativni ulaz analognog komparatora.
o OC0: pin PB3 može da služi kao eksterni izlaz za vrijednost sa kojom se
upoređuje Timer/Counter0. Pin PB3 mora biti konfigurisan kao izlaz da bi
podržao funkciju.
- Bit 2 – AIN0/INT2:
o AIN0, pozitivni ulaz analognog komparatora.
o INT2: eksterni spoljašnji vanjski izvor prekida 2.
- Bit 1 – T1: brojački izvor za Timer/Counter1
- Bit 0 – TO/XCK:
o T0, brojački izvor za Timer/Counter0
o XCK:USART-ov eksterni takt. Pin XCK je aktivan samo kada USART radi
u sinhronom režimu
Port C je 8 bitni bidirekcioni I/O port sa interni pull up otpornicima (selektabilno za svaki
bit). Ako je JTAG interfejs uključen, pull - up otpornici na pinovima PC5, PC3 i PC2 biće
aktivirani čak i ako se resetuje sistem. Alternativne funkcije porta C su objašnjene u
nastavku:
- Bit 7 – TOSC2 (Timer Oscillator pin 2): Kada je bit AS2 u ASSR setovan,
omogućava asinhrono taktovanje Timer/Counter-a 2, pin PC7 je otkačen sa porta i
28
postaje ulaz invertujućeg pojačavača oscilatora. Ovaj režim se koristi kada je
kristalni oscilator povezan na ovaj pin i pin se ne može koristiti kao ulazno-izlazni.
- Bit 6 – TOSC1 (Timer Oscillator pin 1): Kada je bit AS2 u ASSR setovan,
omogućava asinhrono taktovanje Timer/Counter-a 2, pin PC6 je otkačen sa porta i
postaje ulaz invertujućeg pojačavača oscilatora. U ovom režimu, kristalni oscilator
je povezan na ovaj pin i pin se ne može koristiti kao ulazno – izlazni.
- Bit 5 – TDI (JTAG Test Data In): Serijski izlaz podatka pomjera u Instruction
Register ili Data Register.
- Bit 4 – TDO (JTAG Test Data Out): Serijski izlaz podatka pomjera iz Instruction
Registra ili Data Registra.
- Bit 3 – TMS (JTAG Test Mode Select): Ovaj pin se koristi za upravljanje state –
mašinom TAP kontrolera.
- Bit 2 – TCK (JTAG Test Clock): rad JTAG-a je sinhronizovan sa TCK.
- Bit 1 – SDA (Two Wire Serial Interface Data): Kada je bit TWEN u TWCR
setovan omogućava se Two Wire serijski interfejs. Tada je pin PC1 diskonektovan
sa porta i postaje Serial Data I/O pin za Two Wire Serial Interface.
- Bit 0 – SCL (Two wire Serial Interface Clock): Kada je bit TWEN u TWCR
setovan omogućava se Two Wire serijski interfejs. Tada je pin PC0 diskonektovan
sa porta i postaje Serial Clock I/O pin za Two Wire Serial Interface.
Port D ima osnovne funkcije kao i ostali portovi sa mogućnošću izbora alternativnih
funkcija kao što su:
- Bit 7 – OC2 (Timer/Counter2 Output Compare Match): Pin PD7 može da služi kao
eksterni izlaz za Timer/Counter2 Output Compare. Pin mora biti konfigurisan kao
izlazni.
- Bit 6 – ICP1 (Input Capture pin): Pin PD6 može da se ponaša kao Input Capture
pin za Timer/Counter1.
- Bit 5 – OC1A (Output Compare Match A): Pin PD5 može da služi kao eksterni
izlaz za Timer/Counter1 Output Compare A. Pin mora biti konfigurisan kao izlazni.
- Bit 4 – OC1B (Output Compare Match B): Pin PD4 može da služi kao eksterni
izlaz za Timer/Counter1 Output Compare B. Pin mora biti konfigurisan kao izlazni.
- Bit 3 – INT1 (External Interrupt Source 1): Pin PD3 može da služi kao eksterni
izvor prekida.
- Bit 2 – INT0 (External Interrupt Source 0): Pin PD2 može da služi kao eksterni
izvor prekida
- Bit 1 – TXD (Transmit Data): Izlazni pin podatka USART-a. Kada je uključen,
ovaj pin je izlazni.
- Bit 0 – RXD (Receive Data): Ulazni pin podatka USART-a. Kada je uključen, ovaj
pin je ulazni.
29
5. Platforma KR-mega32-16 V2.3
5.1. Hardverski koncept
KR-mega32-16 platforma je idealna za razvoj upravljačke elektronike i robotike.
Platforma je temeljena na razvojnoj pločici s ulazno/izlaznim konektorima i besplatnom
programskom podrškom. Glavna namjena cijelog sistema je komuniciranje s različitim
hardverom koji je na njega priključen. Na slici 5.1 prikazan je izgled platforme.
Slika 5.1 KR-mega32-16 platforma
Platforma KR-mega32-16 V2.3 raspolaže sljedećim karakteristikama: [3]
- Priključak za baterije (9,6 Volt)
- Zaštita priključka za baterije od pogrešne polarizacije
- Razdvojeno osigurane strujne krugove
- Automatske osigurače koji se sami vraćaju u slučaju iskakanja
- LCD-Display, opcionalno sa pozadinskim osvjetljenjem
- Opcionalno osvjetljenje se može jumperom postaviti na ON (konstantno svijetli),
OFF ili OUT21 (upravljano svijetli)
30
- 2 priključka za motore (za motore do 600mA, kod većih motora potreban eksterni
H-most)
- 2 priključka za servo motore
- I²C-priključak na koji se mogu priključiti dva uređaja. Jednostavna ekspanzija za
više uređaja.
- SPI-priključak koji se može koristiti kao Slave. Na ovaj priključak se također mogu
priključiti dva uređaja.
- RS232 Interface preko kojeg platforma može komunicirati sa računarom ili drugim
uređajima.
- RS232 Interface preko kojeg platforma može komunicirati sa računarom ili drugim
uređajima
- Selekcija RS232 načina rada (PC-RS232 ili TTL-RS232) vrši se jumperom.
- Posebno izdvojen UART priključak, preko kojeg je moguće uspostaviti nekoliko
različitih komunikacijskih protokola.
- Integrisan programator. Nije potreban poseban adapter za programiranje.
- 13 digitalnih ulaza/izlaza
- 8 analognih ulaza koji se također mogu koristiti kao digitalni ulazi/izlazi
- 3 eksterna Interapta (Interrupts)
- Dugme za reset
- 32 KByte memorije
- 16 MHz frekvencija
31
Slika 5.2 Šema priključaka
Priključci za motore
Platforma posjeduje mogućnost direktne
kontrole 2 DC motora. Motori se mogu
kontrolisati u smislu smjera i brzine vrtnje.
Izlazni signal je pulsno širinska modulacija
(PWM) [3]
Priključci za servo motore
Platforma posjeduje mogućnost direktne
kontrole nad 2 analogna servo motora.
Radni napon iznosi +5 V. [3]
a)
b)
Slika 5.3 (a, b) Detaljni prikaz priključaka
32
Priključci za serijski I2C bus
Platforma posjeduje mogućnost
priključivanja 2 serijske I2C linije. Oba
priključka su spojena paralelno. Radni
napon od +5 V se može koristiti za
napajanje dodatnih uređaja (npr. Senzora).
Preporučeno je da se ploča koristi kao
Master. Ako se ploča koristi kao Slave,
moraju se ukloniti otpori R6 i R7 [3].
Priključci za serijski SPI bus
Platforma posjeduje mogućnost
priključivanja 2 serijske SPI linije. Oba
priključka su spojena paralelno. Radni
napon od +5 V se može koristiti za
napajanje dodatnih uređaja (npr. Senzora)
[3].
Reset sistem
Platforma posjeduje mogućnost
priključivanja eksternog Reset signala.
Reset se može okidati pomoću npr.
kontakta ili tranzistora. Signal je LOW-
active. Taster je priključen paralelno
eksternom izvoru [3].
Interapt sistem
Platforma posjeduje mogućnost
priključivanja do tri eksterna interapt
signala. Int0, Int1 i Int2 se ispitivaju
softverski. Ispod interapt linije se nalazi
mogućnost napajanja +5 V i masa za
eventualne eksterne interapt izvore [3].
a)
b)
c)
d)
Slika 5.4 (a-d) Detaljni prikaz priključaka
33
Digitalni portovi – Tip I
Platforma posjeduje mogućnost
priključivanja osam digitalnih portova
(port 9-16). Ovi portovi su priključeni
direktno na mikrokontroler, pa time brži
nego digitalni portovi tipa II. U zavisnosti
od korištenja softvera, ovi portovi se mogu
koristiti kao ulaz ili izlaz. Ispod Interrupt
linije se nalazi mogućnost napajanja +5 V i
masa za eventualne eksterne senzore,
aktuatore, i sl. [3].
Digitalni portovi – Tip II
Platforma posjeduje mogućnost
priključivanja pet digitalnih portova (port
17-21). Ovi portovi su priključeni preko
I2C busa, tako da su ovi portovi sporiji
nego digitalni portovi tipa I. U zavisnosti
od korištenja softvera, ovi portovi se mogu
koristiti kao ulaz ili izlaz. Ispod portova se
nalazi mogućnost napajanja +5 V i masa za
eventualne eksterne senzore, aktuatore, i sl.
[3].
Analogni portovi
Platforma posjeduje mogućnost
priključivanja osam analognih portova
(port 1-8). Ovi portovi su priključeni
direktno na mikrokontroler. U zavisnosti
od korištenja softvera, ovi portovi se mogu
koristiti kao ulaz ili izlaz. Ispod portova se
nalazi mogućnost napajanja +5 V i masa za
eventualne eksterne senzore, aktuatore, i sl.
[3].
Kontrola baterije
Platforma posjeduje mogućnost
softverskog nadziranja baterije.
Setovanjem prekidača se napon baterije
preusmjerava na analogni port 01 i tu se
može softverski ispitati. Tačna vrijednost
za „prazne baterije“ se mora odrediti
eksperimentalno [3].
a)
b)
c)
d)
Slika 5.5 (a-d) Detaljni prikaz priključaka
34
RS-232 Interfejs za podatke
Standardni RS 232 interfejs je izveden na 9
pol. SUBD utičnicu. Raspored priključaka
je ekvalentan modemu. Na taj način se za
komunikaciju može koristiti standardni RS
232 kabal. Isti interfejs se može koristiti i
kao 5 V TTL signal za priključak na
periferni uređaj (npr.CMU CAM II).
Otvaranjem zatvorenog prekidača
aktiviramo komunikaciju preko 3-polnog
priključka. Uvijek smije biti aktivan samo
jedan interfejs inače može doći do smetnji
u protokolu, ili oštećenja hardvera u
najgorem slučaju [3].
RS-232 Interfejs za programiranje
Standardni RS 232 interfejs je izveden na 9
pol. SUBD utičnicu. Raspored priključaka
je ekvalentan modemu. Na taj način se za
programiranje može koristiti standardni RS
232 kabal. Za vrijeme programiranja se
procesor zaustavlja i resetuje [3].
a)
b)
c)
Slika 5.6 (a-c) Detaljni prikaz priključaka
35
5.2. Softverski koncept
5.2.1. Opšti AVR Studio
AVR Studio je Development Environment Integrated (IDE) za razvijanje 8-bit AVR
aplikacija na Windows NT/2000/XP/Vista/7 platformi. AVR Studio pruža sve potrebno za
razvijanje uključujući moćan debugger, pregled registara, memorije, I/O i sl. Neke bitne
osobine AVR Studia:
integrisan assembler
integrisan simulator
integriše GCC kompajler plug-in
podrška za sve Atmel alate koji podržavaju 8-bitnu AVR arhitekturu, uključujući
AVR ONE!, JTAGICE mkI, JTAGICE mkII, AVR Dragon, AVRISP, AVR ISPmkII,
AVR Butterfly, STK500 i STK600
AVR RTOS plug-in podrška
podrška za AT90PWM1 and ATtiny40
Cijeli postupak pisanja, kompajliranja i debagovanja C koda se obavlja u programu pod
nazivom Programmers Notepad [WinAVR] koji je prikazan na slici 5.7.
Slika 5.7 Programmers Notepad
36
Kako bismo bili u mogućnosti da pošaljemo program u mikrokontroler, potreban nam
je softver za računar.Program iskompajliran pomoću Programmers Notepad-a i WinAVR-a
treba ubaciti u program PonyProg koji će izvršiti programiranje priključene ploče datim
programom.
Ponyprog prije upotrebe treba kalibrirati i izvršiti setup konekcije. Ulaskom u podmeni
Setup, koji se nalazi u meniju Options, ostvaruje se podešavanje hardverskih parametara
programa PonyProg, što je ilustrovano na slici 5.8.
Slika 5.8 Podešavanje parametara programa
U Ponyprog-u možemo da izaberemo jedan od dva, za nas interesantna, tipa ponuđena
načina komunikacije:
SI Prog I/O
SI Prog API
SI Prog I/O je brži od API-a, i njega trebamo izabrati ukoliko na matičnoj ploči imamo
nativni RS-232 kontroler. Ukoliko nemamo nativni RS-232 kontroler, imamo mogućnost
korištenja nekog konvertora (USB->RS232, PCMCIA, i sl.). U tom slučaju je konekcija do
nekoliko puta sporija, a kao način komunikacije u tom slučaju moramo izabrati SI Prog
API. Na slici 5.9 prikazan je izgled PonyProg-a.
37
Slika 5.9 PonyProg
5.2.2. Funkcionalnost KRmega32 platforme
KRmega32 platforma dolazi sa vlastitom bibliotekom za programski jezik C, koja
ubrzava i u mnogim situacijama olakšava razvoj na Atmega32 mikrokontroleru. Da bi se
kompajler upoznao sa funkcijama KRmega biblioteke, mora se u datoteka.c uvezati
KRmega biblioteka. Jednostavnim #include "kr-mega32v23.h", ovaj zadatak je obavljen, i
kompajler je spreman za rad sa KRmega bibliotekom [3].
Funkcionalnost
Biblioteka sadrži sve funkcije za pristup periferiji ploče. Funkcije su podjeljenje na
sljedeća područja:
Pristup portovima
I2C Bus
Ispisne funkcije
UART
LCD
Servo rutine
Motor PWM
Enkoder
38
SPI Interfejs
Ostalo
Pristup portovima
Krmega32 ploča raspolaže sa 21 portom, na koja imamo direktni pristup. Portovi su
numerisani od 1 do 21. Svi portovi mogu služiti kao digitalni ulazi/izlazi. Portovi od 1 do
8, mogu služiti i kao analogni ulazi.
Da bi se sve portne funkcije mogle koristiti potrebno ih je aktivirati. Sve
funkcionalnosti portova se uključuju na sljedeći način: [3]
i2cInit(); - za pristup portovima od 17 – 21
a2dInit(); - za pristup portovima 1 – 8 kao analogni ulazi
Funkcijama nisu potrebni parametri.
Za korištenje portova kao digitalni izlaz postoje dvije fukcije. Kao argument se koristi
broj porta. Za slučaj digitalnog izlaza, taj broj se kreće 1-21.
setDigitalOut(int port); - postavljanje porta 'port' na HIGH (+5V)
clearDigitalOut(int port); - postavljanje porta 'port' na LOW (0V)
Za korištenje portova kao digitalni ulaz postoji jedna funkcija. Kao argument se koristi
broj porta.
int digital(int port); - vraća integer vrijednost porta
Za korištenje portova kao analogni ulaz postoji jedna funkcija. Kao argument se koristi
broj porta. Za slučaj analognog ulaza, taj broj se kreće 1-8.
int analog(int port); - vraća integer vrijednost porta
Gornja funkcija vraća integer vrijednost (0-255), koja je proporcionalna naponu na portu.
Ukoliko je na portu 0V, gornja funkcija vraća 0. Ukoliko je na portu +5V, gornja funkcija
vraća 255.
I2C Bus
Krmega32 ploča raspolaže sa jednim I²C busem, preko kojeg se mogu priključiti
dodatni senzori i aktuatori na Krmega32 platformu. Za I²C-Bus na raspolaganju su
slijedeće funkcije: [3]
void i2cInit(void); - inicijalizira I²C-Bus.
Ukoliko se inicijalizira LCD, incijalizira se automatski i I²C-Bus.
void i2cSetBitrate(u16 bitrateKHz); - postavlja brzinu busa
Gornja funkcija kontroliše brzinu kompletnog I²C-Busa. Vrijednost se daje u kHz.
Maksimalna brzina koju ova ploča podržava iznosi 500 kHz. Treba obratiti pažnju na
maksimalnu brzinu prenosa svih uređaja priključenih na bus. Brzina cjelokupnug I²C-Busa
smije biti onolika, kolika je najviša brzina najsporijeg uređaja na I²C-Busu [3].
void i2cMasterSend(u08 deviceAddr, u08 length, u08 *data); - Šalje podatke iz
niza data uređaju na adresi deviceAddr. Šalje se onoliko bajta, koliko je određeno sa
length.
39
void i2cMasterReceive(u08 deviceAddr, u08 length, u08* data); - Prima onoliko
bajta, koliko određeno sa length, od uređaja na adresi deviceAddr.
Ispisne funkcije
Za ispis se koristi sljedeća funkcija:
void rprintf(String);- Ispis se može preusmjeriti na LCD, ili na serijski interfejs.
UART
UART-Interfejs je u ovoj biblioteci najmešten na asinhroni prenos podataka na računar.
Taj se prenos bez većih problema može preusmjeriti prema drugoj KRmega ploči, ili
nekom drugom uređaju za akviziciju podataka [3].
Bazna funkcionalnost se postiže sljedećim funkcijama:
void uartInit(void); - Inicijalizira serijski interfejs.
void uartSetBaudRate(u32 baudrate); - Postavlja Baudrate sa kojom UART treba
da radi. Standard je 9600.
void uartSendByte(u08 data); - Šalje jedan bajt preko serijskog interfejsa.
int uartGetByte(&data); - Prima jedan bajt sa serijskog interfejsa i snima ga u
variablu data
rprintfInit(uartSendByte); - Preusmjerava izlaz rprintf rutine na serijski interfejs.
LCD
Uz KRmega platformu standardno dolazi 2x16 displej. Bez većih problema se mogu
priključiti i displeji drugih formata [3].
void lcdInit(void); - Inicijalizira displej. Sa LCD-om se automatski inicijalizira i
I²C-Bus, jer je LCD priključen preko I²C-Busa.
void lcdHome(void); - Postavlja kursor na početnu lokaciju (gore lijevo).
void lcdClear(void); - Briše sadržaj displeja.
void lcdGotoXY(u08 row, u08 col); - Postavlja kursor na datu poziciju.
void lcdDataWrite(u08 data); - Šalje jedan znak na displej.
rprintfInit(lcdDataWrite); - Preusmjerava izlaz rprintf rutine na LCD.
Servo rutine
Krmega32 ploča raspolaže sa dva priključka za servo motore [3].
void servoInit(void); - Inicijalizira Servo rutine.
void servoOff(void); - Oslobađa rutine.
void servoSetPosition(u08 channel, u08 position); - Postavlja poziciju servo motor
pri čemu je channel broj servo motora (0 ili 1) i position pozicija servo motora. Prima
vrijednost od 0 do 255.
Motor PWM
Krmega32 ploča raspolaže sa dva priključka za motore (do 600mA). Motori mogu primiti
od 0 Volti, do napona baterija. Motori se mogu kretati u dva smjera [3].
40
void motorInit(void); - Inicijalizacija PWM upravljanja za motore. Za motore se
koriti Timer0.
void motor(int port, int power); - Postavlja brzinu obrtanja motora, pri čemu je port
broj motora (1 ili 2) i power brzina motora. Prima vrijednosti od -100 do 100. Negativne
vrijednosti vrte motor unazad.
void motorStop(int port); - Zaustavlja motor na portu.
Enkoder
Krmega32 ploča raspolaže sa tri direktna priključka za enkodere. Preko tih priključaka
se enkoderi mogu direktno ispitivati. Većina enkodera ima dva kanala. Tako je moguće
odrediti smjer obrtanja točka. Kanal A se priključuje na jedan interrupt, a kanal B na jedan
digitalni port 14 do 16 [3].
Raspored portova enkodera 0:
Kanal A na interrupt 0
Kanal B na digitalni port 16
Raspored portova enkodera 1:
Kanal A na interrupt 1
Kanal B na digitalni port 15
Raspored portova enkodera 2:
Kanal A na interrupt 2
Kanal B na digitalni port 14
void encoderInit(void); - Inicijalizacija enkodera.
u32 encoderGetPosition(int port) - Vraća poziciju enkodera na portu port.
SPI Interfejs
SPI Interfejs je komunikacioni bus, preko kojeg se mogu priključiti dodatni kontroleri
ili dodatna periferija na KRmega platformu. Biblioteka stavlja sljedeće funkcije na
raspolaganje: [3]
void spiInit(void); - Inicijalizacija interfejsa.
void spiSendByte(u08 data); - Slanje jednog bajta (8 Bit). Ova funkcija čeka da se
oslobodi bus, i zatim šalje jedan bajt. Pri tome se ništa ne prima.
u08 spiTransferByte(u08 data); - Razmjena podataka sa jednim bajtom (8 Bit). Ova
funkcija šalje jedan bajt kad se oslobodi bus, a zatim prima jedan bajt sa busa.
u16 spiTransferWord(u16 data); - Razmjena podataka sa jednim Wordom(16 Bit).
Ova funkcija šalje jedan word kad se oslobodi bus, a zatim prima jedan word sa busa.
Ostalo
void timerPause(int msec); - Ova funkcija čeka u milisekundama [3].
41
6. Senzori i logička kola
6.1. Senzor prisutnosti
Osnovni element za izradu senzora prisutnosti je fotootpornik. Njegov otpor se mijenja
pod uticajem svjetlosti koja pada na njega. Kod fotoprovodnih elemenata se vrši apsorpcija
fotona svjetlosti u poluprovodniku što povećava koncentraciju njegovih slobodnih
nosilaca i mijenja električnu provodnost. Ako se na fotokondukti-van elemenat priključi
napon, onda se kroz njega uspostavlja struja, čija jačina zavisi od intenziteta svjetlosti. Na
tom principu je zasnovan rad fotootpornika. Konstrukcija fotootpornika i princip rada
prikazan je na slici 6.1.
Slika 6.1 Konstrukcija i princip rada fotootpornika
Na keramičkoj pločici je postavljen tanak sloj poluprovodnika jednog tipa, na primjer
N, na čijim su krajevima vezane metalne elektrode kao spoljni izvodi. Kućište ima stakleni
prozor ili sočivo za prolazak svjetlosti do poluprovodnika. Otpornost fotootpornika je
najveća u mraku, i u kolu na slici 3.1 teče malu struja. Ako se osvijetli svjetlošću čija
talasna dužina daje energiju fotona veću od energetskog procjepa poluprovodnika, broj
slobodnih nosilaca elektriciteta se povećava, tako da otpornost poluprovodnika opada.
Vanjski izvor (baterija) jednosmjernog napona uzrokuje elektrostatičko polje u
fotootporniku, tako da sile tog polja spriječavaju ponovnu rekombinaciju elektrona i
šupljina. Elektroni odlaze ka pozitivnom polu izvora a šupljine prema negativnom polu
izvora, što dovodi do porasta struje u vanjskom kolu. To znači da se usljed djelovanja
svjetlosti jedan njen dio pretvorio u električni signal.
Otpornost fotootpomika zavisi i od temperature jer njen porast povećava sopstvenu
koncentraciju slobodnih nosilca. Ovaj efekat treba svesti na najmanju mjeru kod foto-
provodnih elemenata da bi se postigla zavisnost koncentracije slobodnih nosilaca elek-
triciteta samo od svjetlosti. To je moguće izvesti biranjem poluprovodnika sa većim
energetskim procjepom, a to dovodi do smanjenja sopstvene koncentracije u polu-
provodniku a time i do smanjenja značaja njene promjene sa temperaturom.
42
Na osnovu vrijednosti otpora fotootpornika mi možemo zaključiti da li je neko tijelo
prisutno na njemu. Raspon otpora kod fotootpornika je od 200 KOhma (mrak) do 10
KOhma (svjetlost jačine 10 luxa), a osjetljiv je na svjetlo talasnih dužina od 400 [nm]
(ljubičasto) do 600 [nm] (narandžasto). Pored fotootpornika za izradu ovog senzora
potreban nam je otpornik. Spajanje je jednostavno, fotootpornik se spaja na način da mu
jednu nožicu spojimo na analogni gnd, a drugu na otpornik. Drugu nožicu otpornika
spojimo na 5 [V]. Kako bi dobili informaciju o stanju otpora na fotootporniku, analogni pin
spajamo na čvor koji spaja fotootpornik i otpornik. Šema spajanja je prikazana na slici 6.2.
Slika 6.2 Šema spajanja senzora
6.2. Logička kola
6.2.1. Multiplekser
Multiplekser je sklop koji informaciju prisutnu na jednome od ulaza bira odnosno
selektira između informacija prusutnih na drugim ulazima i šalje je na jedan izlaz.
Multiplekser se zato još zove i selektor podataka. Proslijeđivanje željenog podatka sa ulaza
ka izlazu se kontroliše sa SELECT ulazom (nekada se naziva adresni ulaz). Slika 6.3
pokazuje uopšteni multiplekser.
Slika 6.3 Unutrašnja struktura multipleksera i njegova šematska oznaka
Funkcija multipleksera je ekvivalentna funkciji koju obavlja neka višepoložajna
sklopka. Upravljačkim ili selektirajućim ulazima S0 do Sn-1 bira se jedan od ulaza Di i šalje
43
na izlaz Y. Postoje mnogi integrisani multiplekseri sa različitim brojem ulaza za podatke i
ulaza za selektovanje. Pošto je osnovni način rada isti za sve njih, posmatraćemo samo
jedan karakterističan primjer (slika 6.4). To je četveroulazni, 2-bitni multiplekser.
Slika 6.4 Multiplekser 4/1
U tabeli 6.1 prikazana je funkcijska tablica, tj. tablica kombinacija koja definiše logičku
funkciju sklopa. Ako je aktivirajući ulaz E u stanju 0, na izlazu je 0 bez obzira na stanje
ulaza. Ako je sklop aktiviran (E=1), onda se selektirajućim varijablama S1 i S0 bira jedan
od ulaza (D0 do D3) i šalje na izlaz. Za multiplekser sa n selekcionih ulaza, izlaz Y je dat sa
: Y=m0D0 + m1D1 + m2D2 + ..... + m2n
-1D2n
-1
Tabela 6.1 Funkcijska tablica multipleksera
E S1 S0 Y
0
1
1
1
1
X X
0 0
0 1
1 0
1 1
0
D1
D2
D3
D4
Kaskadiranje multipleksera
Kaskadiranje multipleksera omogućuje da sa nekoliko standardnih multipleksera
manjeg opsega od potrebnoga izgradi multiplekser sa traženim brojem ulaznih bitova. Na
slici 6.5 na taj način pomoću pet multipleksera 4/1 napravljen multiplekser 16/1. Dvije
44
najmanje značajne cifre S0 i S1 priključene su paralelno na upravljajuće ulaze multipleksera
prvog nivoa, a njihovim mijenjanjem od 00 do 11 iz svakog će se multipleksera izabrati
jedan od ulaza i uputiti na izlaze Y0 do Y3. Koji će od tih izlaza iz prvog nivoa biti izabran
i upućen na izlaz Y, ovisi o druga dva bita za selekciju što ih čine S2 i S3. Može se
upotrijebiti i drugi raspored selektirajućih bitova, samo što će njihovim kombinacijama biti
pridruženi ulazni podaci po nekom drugom redu [2].
Slika 6.5 Kaskadiranje multipleksera
Ostvarivanje logičkih funkcija i prenos podataka multipleksiranjem
Za ostvarivanje logičke funkcije kao sume minterma potpuno je dovoljan sklop
multipleksera. Treba samo izabrati one minterme koji čine funkciju, što će se učiniti tako
da se odgovarajući ulaz D postavi na stanje 1. Mintermi koji ne sudjeluju u funkciji
isključuju se tako da se na odgovarajući D-član dovede 0. Na taj se način može realizirati
bilo koja logička funkcija. Ulazne varijable dolaze pri tome na selektirajući ulaz
multipleksera. Multiplekser se za tu svrhu može i efikasnije iskoristiti ako se na ulaze D
dovodi osim 0 i 1, još jedna, dodatna ulazna varijabla. Podaci koji se istovremeno, tj.
paralelno nalaze na ulazima multipleksera mogu se serijski odaslati na izlaz ako se
selektirajući bitovi sukcesivno, npr. pod uticajem taktnog impulsa, mjenjaju od najniže do
najviše vrijednosti. Takva paralelno-serijska transformacija podataka posebno je
interesantna kad se želi izvršiti prenos na veće daljine i kada bi, stoga, veći broj prenosnih
linija bio preskup. Naravno na prijemnoj strani treba serijske podatke obično opet
pretvoriti u paralelne. To je inverzna opercija i predstavlja serijsko-paralelnu
transformaciju, a obavlja se inverznim sklopom, tj. demultiplekserom [2].
45
6.2.2. Registri
Registar je najjednostavnija komponenta za memorisanje koju čini skup od n flip-
flopova (n≥1). S obzirom da je svaki flip-flop u stanju da pamti jednobitnu informaciju (n-
bitni registar čini n flip-flopova) za ovakav registar kažemo da memoriše n-bitnu binarnu
informaciju. Najjednostavniji registar je registar koji sadrži samo flip-flopove bez spoljnih
kola. Tipičan registar prikazan je na slici 6.6, sastavljen od četiri bistabila, koji kod pojave
okidnog signala s pozitivnom ivicom prenosi podatake s ulaza D3, D2, D1 i D0 na izlaze Q3,
Q2, Q1, i Q0.
Slika 6.6 4-bitni registar
Registar služi za uzimanje binarnih podataka i njihovo zadržavanje (engl. sample and
hold). Kod velikog broja rješenja podatak treba da ostane zapamćen tokom perioda od
nekoliko taktnih intervala prije nego što upiše novi. Iz ovog razloga poželjno je raspolagati
dodatnim upravljačkim ulazom čije stanje određuje kada je upis u registar dozvojen, a kada
ne. Kod najvećeg broja kola ovaj upravljački signal se naziva punjenje (engl. load ) ili
dozvola (engl. enable) i on omogućava punjenje podataka u registar. Ovakav tip registra
poznat je kao registar sa paralelnim punjenjem (engl. parallel load register). Registri se
općenito izvode kao integrirani krugovi srednjeg stepena integracije.
Pomjerački registri
Registar koji je u stanju lateralno da pomjera memorisane bitove u oba smijera naziva
se pomjerački registar (engl. shift register). Logička konfiguracija pomjeračkog registra se
realizuje kao lanac kaskadno povezanih flip-flopova, pri čemu je izlaz jednog flip-flopa
povezan kao ulaz narednog flip-flopa. Binarni podatak se prenosi bit po bit sa izlaza
tekućeg bistabila na ulaz sljedećeg bistabila. Svi flip-flopovi primaju zajednički takt koji
aktivira pomjeranje sa jednog stepena prema narednom. Slika 6.7 prikazuje 4-bitni serijski
pomjerački registar za izvođenje operacije pomjeranja binarnih podataka u lijevu stranu,
izveden korištenjem D bistabila. Krajnji bistabil na desnoj strani registra prima stanje
izlaza krajnjeg bistabila na lijevoj strani registra, u ritmu takt impulsa na svom ulazu
istovremeno kada predaje bit sa svoga izlaza bistabilu D1. Slično tome, drugi bistabil s
desne strane registra prima stanje izlaza od Q0 dok sam predaje stanje svoga izlaza
bistabilu D2. Tok operacije je prikazan na vremenskom dijagramu, na slici 6.8.
46
Slika 6.7 Blok dijagram 4-bitnog pomjeračkog registra sa serijskim ulazom i pomjeranjem
podataka u lijevo
Slika 6.8 Vremenski dijagram 4-bitnog pomjeračkog registra sa serijskim ulazom i pomjeranjem
podataka u lijevo
Uz jednostavne izmjene u načinu povezivanja flip-flopova prethodno opisani
pomjerački registar može služiti za izvođenje operacije pomaka u desnu stranu, a uz
dodatna osnovna logička vrata može služiti za izvođenje operacija pomaka binarnih
podataka u lijevu ili u desnu stranu. Čest slučaj primjene pomjeračkog registra sa serijskim
ulazom je shodan potrebi serijsko-paralelne transformacije podataka kod razmjene
podataka između računala.
47
Pomjerački registar s paralelnim ulazom
Pomjerački registar s paralelnim ulazom omogućava paralelno-serijsku transformaciju
podataka. Slika 6.9 prikazuje blok dijagram 4-bitnog pomjeračkog registra s paralelnim
ulazom koji izvodi operaciju pomaka podataka u desnu stranu. Kada se upravljački signal
nalazi u stanju logičke jedinice, aktivna je operacija puni, vrijednosti na
ulazima od U0 do U3 biti će prenesena na izlaze od Q0 do Q3, u skladu sa signalom takta.
Međutim, kada se upravljački signal nalazi u stanju logičke nule, aktivna
je operacija pomjeranja, pri svakoj pojavi signala takta, izvodi se operacija pomjeranja
podataka u desnu stranu. Vrijednost sljedećeg bita najveće težine se prenosi na izlaz Q3,
vrijednost sa izlaza Q3 se prenosi na Q2, vrijednost s Q2 na Q1, a vrijednost Q1 na Q0.
Slika 6.9 4-bitni pomični registar s paralelnim ulazom i pomjeranjem podataka u desno
Najčešće operacije koje se izvode pomičnim registrima su operacije pomaka u lijevu
stranu, pomaka u desnu stranu, paralelnog ulaza i operacije zadržavanja postojećeg stanja
izlaza. Registri navedenih svojstava se nazivaju univerzalnim registrima. Primjer
univerzalnog registra predstavlja integrisani krug 74LS178.
48
7. Nadzor višespratnog parking prostora
7.1. Uvod
Nedovoljan broj ulaza i izlaza mikrokontrolera je jedan od glavnih problema nadzora
parking prostora. U ovom radu opisan je parking prostor koji se sastoji od dva sprata, pri
čemu svaki sprat sadrži po dvanaest parking mjesta. Na svakom parking mjestu postavljen
je senzor prisutnosti, pri čemu je potrebno svaki izlaz senzora spojiti na analogni ulaz
mikrokontrolera. Na slici 7.1 prikazana je blok šema spajanja senzora, multipleksera,
mikrokontrolera, registara i LED dioda.
Slika 7.1 Blok šema spajanja senzora, multipleksera, mikrokontrolera, registara i LED dioda
Blokovi (Blok1, Blok2, Blok3…) na slici 7.1 predstavljaju kombinaciju multipleksera
spojenog sa četiri senzora. Na selekcione ulaze multipleksera dovedeni su digitalni izlazi
mikrokontrolera, dok su izlazi iz multipleksera spojeni na anlogne ulaze mikrokontrolera.
Također digitalni izlazi mikrokontrolera spojeni su na ulaze 8-bitnih registara (Registar1,
49
Registar2, Registar3 i Registar4), pri čemu se koristi prvih šest ulaza registra. Izlazi iz
registara dovedeni su na D blokove (D1, D2, D3...). Svaki D blok predstavlja jedno
parking mjesto na LED panelu (prikazano sa jednom crvenom i jednom zelenom LED
diodom).
Ukupan broj senzora je veći od broja analognih ulaza mikrokontrolera, pa zbog toga
moramo koristiti analogne multipleksere. Analogni multiplekser, u zavisnosti od
kombinacije selekcionih ulaza, bira informaciju prisutnu na jednome od ulaza i šalje je na
izlaz. Na osnovu vrijednosti informacije prisutne na analognom ulazu mikrokontrolera,
mikrokontroler mora odlučiti da li je parking mjesto zauzeto ili slobodno. U ovom radu
korištena je KR-mega ploča koja sadrži LCD displej. Na displeju je moguće prikazati
ukupan broj slobodnih mjesta na svakom spratu. Pored prikaza na LCD displeju, svako
parking mjesto moguće je prikazati i na LED panelu. Zbog nedovoljnog broja izlaza
mikrokontrolera primorani smo koristiti dodatna logička kola. Svi multiplekseri su spojeni
na iste selekcione ulaze, što znači da svi multiplekseri istovremeno selektiraju sljedeći
ulaz. Prilikom selektiranja sljedećeg ulaza multipleksera prethodne ulaze je potrebno
memorisati. Memorisanje prethodnih ulaza multipleksera smo izveli primjenom registara.
Izlaze iz registara smo doveli na LED diode panela i na taj način smo prikazali stanje
svakog parking mjesto. U ovom poglavlju detaljnije ćemo objasniti način spajanja i rada
svih komponenti parkinga.
7.2. Senzori i multiplekseri
Na svako parking mjesto postavljen je po jedan senzor prisutnosti. U našem slučaju
imamo 24 senzora koja je potrebno spojiti na 6 analognih ulaza KR-mega ploče. Jedini
način spajanja svih senzora na analogne ulaze KRmega ploče je pomoću analognih
multipleksera. Postoje različite izvedbe spajanja senzora, multipleksera i analognih ulaza
KRmega ploče. Parking prostor se sastoji od dva sprata, pri čemu svaki sprat sadrži tri reda
i četiri kolone parking mjesta. Svaki red senzora parking mjesta potrebno je spojiti na
pojedinačni multiplekser. Jedan od načina je korištenje šest analognih multipleksera 4/1.
Da bih multiplekseri obavljali svoju funkciju potrebno mu je dovesti selekcione ulaze sa
digitalnih izlaza KR-mega ploče. U našem slučaju potrebna su dva selekciona ulaza i oni
se spojaju paralelno na sve multipleksere. Zbog nemogućnosti nabavke multipleksera 4/1,
korišten je 16/1 multiplekser. Da bih multiplekser 16/1 radio na isti način kao 4/1
multiplekser potrebno je na selekcione ulaze C i D dovesti logičku 0. Primjer spajanja
jednog reda senzora na multiplekser ( na slici 7.1 predstavljeno sa Blok1, Blok2,Blok3…)
prikazan je na slici 7.2.
50
Slika 7.2 Spajanje senzora na multiplekser (Blok1)
Prilikom dolaska automobila na parking mjesto, vrijednost otpora fototpornika se
povećava. Povećavanjem otpora dolazi do povećanja napona na fotootporniku. Taj napon
jednak je: 𝑈𝑓 =𝑈
𝑅+𝑅𝑓𝑅𝑓 , pri čemu je Rf vrijednost otpora fotootpornika, R =22 kΩ
vrijednost otpora spojenog serijski sa fotootpornikom, U = 5 V napon napajanja senzora.
Kada je parking mjesto slobodno napon Uf iznosi manje od 1V, dok prilikom zauzimanja
parking mjesta taj napon iznosi više od 4V. Napon Uf se dovodi na jedan od četiri ulaza
multipleksera. Važno je napone senzora Uf dovesti na ulaze multipleksera istim
redoslijedom kao što se senzori nalaze na parking mjestima. Za ispravan rad multipleksera
potrebno je dovesti selekcione ulaze A i B. Ti ulaze se dovode sa digitalnih izlaza KRmega
ploče. U nastavku prikazana je tabela izlaza multipleksera u zavisnosti od selekcionih
ulaza i vremenski dijagram ulaza i izlaza multipleksera.
51
Tabela 7.1 Prikaz izlaza multipleksera
A B izlaz
0
1
0
1
0
0
1
1
Uf1
Uf2
Uf3
Uf4
Slika 7.3 Vremenski dijagram ulaza i izlaza multipleksera
Sa vremenskog dijagrama vidimo da senzor1 i senzor4 imaju mnogo manju vrijednost
napona od senzor2 i senzor3. Kada su selekcioni ulazi AB=00 , multiplekser na izlaz šalje
vrijednost napona prvog senzora. Vrijednost tog napona je vrlo mala, pa možemo zaključiti
da je to parking mjesto slobodno. Za vrijednost selekcionih ulaza AB=10 i AB=01, na
izlazu imamo veliku vrijednost napona, što znači da su parking mjesta zauzeta. Za AB=11
parking mjesto je slobodno.
7.3. Spajanje logičkih kola na KR-mega ploču
Krmega32 ploča raspolaže sa 21 portom, pri čemu svi portovi mogu služiti kao
digitalni ulazi/izlazi. Portovi od 1 do 8, mogu služiti i kao analogni ulazi. Prije korištenja
ovih portova potrebno ih je aktivirati. Sve funkcionalnosti analognih portova se uključuju
na sljedeći način: [3]
a2dInit(); // za pristup portovima 1 – 8 kao analogni ulazi
Na analogne ulaze KR-mega ploče potrebno je dovesti izlaze iz analognih
multipleksera. U našem slučaju potrebno je dovesti izlaze iz multipleksera na prvih šest
analognih ulaza. Da bismo pristupili vrijednosti analognog ulaza moramo koristiti sljedeću
funkciju: int analog(int port); //vraća integer vrijednost porta
52
Kao argument se koristi broj porta i ova funkcija vraća integer vrijednost (0-255),
koja je proporcionalna naponu na portu. Ukoliko je na portu 0 V, gornja funkcija vraća 0.
Ukoliko je na portu +5 V, gornja funkcija vraća 255. U tabeli 7.2 prikazan je raspored
priključenih logičkih kola na KR-mega ploču.
Tabela 7.2 Raspored zauzimanja pinova KRmega ploče
Analogni ulazi Zauzimanje porta
1 prvi multiplekser
2 drugi multiplekser
3 treći multiplekser
4 četvrti multiplekser
5 peti multiplekser
6 šesti multiplekser
7 slobodan
8 slobodan
Digitalni ulazi/izlazi brzi Zauzimanje porta
9 prvi ulaz u registre
10 drugi ulaz u registre
11 treći ulaz u registre
12 četvrti ulaz u registre
13 peti ulaz u registre
14 šesti ulaz u registre
15 selekcioni ulaz A
16 selekcioni ulaz B
Digitalni ulazi/izlazi spori Zauzimanje porta
17 enable ulaz prvog registra
18 enable ulaz drugog registra
19 enable ulaz trećeg registra
20 enable ulaz četvrtog registra
21 slobodan
53
Nakon pristupa vrijednostima analognih ulaza potrebno je odrediti granicu napona
senzora između slobodnog i zauzetog mjesta. Granicu napona treba odabrati tako da nije
manja od maksimalne vrijednosti napona senzora kada je parking mjesto slobodno,
odnosno da nije veća od minmalne vrijednosti napona senzora kada je parking mjesto
zauzeto. Mi smo uzeli da ta granica iznosi 100, što odgovara naponu od 2 V. Nakon
određivanja granice potrebno je ispitati svaki senzor, odnosno uporediti napon senzora sa
granicom i zaključiti da li je parking mjesto slobodno ili zauzeto. Upoređivanje napona
senzora sa granicom vrši mikrokontroler. U nastavku prikazan je prvi dio programa
mikrokontrolera koji upoređuje senzore sa granicom.
Slika 7.4 Dio programa mikrokontrolera
U prvom dijelu programa selekcioni ulazi iznose AB=00. Analogni ulazi 1, 2 i 3
KRmega ploče predstavljaju prvu kolonu senzora prvog sprata, dok analogni ulazi 4,5 i 6
predstavljaju prvu kolonu senzora drugog sprata. Pomoću if naredbe ispitujemo svaki
analogni ulaz da li je veći od granice. Ukoliko jeste postavljamo odgovarajući izlaz na
logičku jedinicu i smanjujemo broj slobodnih mjesta. Ukoliko nije postavljamo
odgovrajući izlaz na logičku nulu. Nakon provjere prve kolone senzora, potrebno je
provjeriti i ostale kolone. Prije toga moramo zapamtiti prethodne izlaze koji su korišteni za
prikaz slobodnih i zauzetih mjesta, jer se isti izlazi koriste za ispis prilikom provjere
ostalih kolona senzora. Na slici 7.5 prikazana je matrica oznaka analognih ulaza po
kolonama.
54
Slika 7.5 Oznake analognih ulaza po kolonama
Vrijednosti analognih ulaza se upisuju u određenu kolonu matricu u zavisnosti od
selekcionih ulaza A i B. Setovanjem upravljačkog ulaza registra u određenim trenucima
vršimo upis podataka. Nakon upisa podataka u prvi 8-bitni registar, selekcioni ulazi se
postavljaju na vrijednost AB=10. Postupak ispitivanja analognih ulaza i upis podataka u
drugi registar se ponavlja. Isti postupak se ponavlja za vrijednosti selekcionih ulaza AB=01
i AB=11. Na slikama 7.6 i 7.7 predstavljeni su vremenski dijagrami ulaza i izlaza KRmega
ploče.
Slika 7.6 Vremenski dijagram ulaza i izlaza mikrokontrolera prvog sprata
55
Slika 7.7 Vremenski dijagram ulaza i izlaza mikrokontrolera drugog sprata
Za memorisanje izlaza koristili smo 8-bitne registre. Izlazi za prikaz slobodnih i
zauzetih mjesta spajaju se direktno na prvih šest ulaza registra. Primjer spajanja izlaza
KRmega ploče sa registrom prikazan je na slici 7.8.
Slika 7.8 Prikaz registra
Svi podaci za upis u registre se dovode paralelno sa izlaza KRmega ploče. Upis
podataka u registar vrši se dovođenjem logičke jedinice na upravljački ulaz. Dovođenjem
logičke nule na E1, prethodni podaci ostaju na izlazu. U praktičnom dijelu završnog rada
korišteno je četiri 8-bitna registra. Prva tri izlaza iz registara predstavljaju prvi sprat
parking prostora, dok ostala korištena tri izlaza predstavljaju drugi sprat.
Na dijagramu 7.9 vidimo da izlazi registra imaju vrijednost ulaza kada se upravljačkom
ulazu E1 dovede logička jedinica.
56
Slika 7.9 Vremenski dijagram ulaza i izlaza registra
7.4. Ispis i prikaz rezultata
Nakon ispitivanja svih kolona senzora i memorisanje odgovarajućih izlaza potrebno je
ispisati broj slobodnih mjesta prvog i drugog sprata na LCD displeju. Prije ispisa podataka
LCD displej mora se inicijalizirati. Inicijalizacija displeja se vrši pozivom funkcije:
void lcdInit(void);
Sa LCD-om se automatski inicijalizira i I²C-Bus, jer je LCD priključen preko I²C-Busa.
Nakon inicijalizacije potrebno je pozvati funkciju rprintfInit(lcdDataWrite) i time smo
preusmjerili izlaz rprintf rutine na LCD. Na slici 7.10 prikazan je LCD displej na kome je
ispisan broj slobodnih mjesta prvog i drugog sprata.
Slika 7.10 LCD displej
Sve izlaze iz registara potrebno je spojiti na LED panel. Na panelu svako parking
mjesto predstavljeno je pomoću jedne crvene i jedne zelene LED diode, pri čemu treba
dozvoliti da radi samo jedna dioda. Kada je parking mjesto zauzeto, napon na izlazu
registra iznosi 3 V. Za spajanje dvije LED diode na jedan izlaz registra moramo koristiti
dodatno napajanje sa KRmega ploče. Na slici 7.11 je prikazano spajanje jednog izlaza
registra sa led diodama ( na slici 7.1 predstavljeno sa blokovima D1, D2, D3...).
57
Slika 7.11 Šema spajanja izlaza registra sa LED diodama
Dovedeni napon KR-mega ploče smo podijelili pomoću otpornog djelitelja napona na
vrijednosti od 3 V i 2 V . To smo postigli spajanjem napona ploče sa serijskom vezom dva
otpornika. Odnos između ta dva otpornika mora biti R2/R1 =1,5. Napon sa otpornika R2
potrebno je dovesti na svaki par LED dioda kao što je prikazano na slici 7.12 . Napon
između tačke 1 i 3 iznosi: U13 =𝑉1
𝑅1+𝑅2𝑅2 .
Kada je izlaz registra jednak nuli ( parking mjesto slobodno), napon između tačke 1 i 2
bit će jednak U12=3V. Tada je zelena LED dioda direktno polarizovana, dok je crvena
dioda inverzno polarizovana. U slučaju kada je napon na izlazu registra jednak 3 V (
parking mjesto zauzeto), napon između tačke 2 i 3 bit će jednak U23=3V. Tada je zelena
LED dioda inverzno polarizovana, dok je crvena direktno polarizovana. Na slici 7.12
prikazan je konačan izgleda panela.
Slika 7.12 Prikaz panela
58
Zaključak
Mikrokontroleri, kao dijelovi elektronskih uređaja i sistema doživljavaju ekspanziju i
pojavljuju se u gotovo svim oblastima i djelatnostima. Od dječijih igračaka i ukrašavanja
izloga u najzabačenijim dijelovima svijeta, preko industrije do upravljačkih mehanizama
aviona i svemirskih brodova. Mikrokontroleri se mogu proučavati iz više uglova:
tehnološkog, računarskog i korisničkog. Prva dva stanovišta su od interesa za inženjere
mikroelektronike, te za projektante hardvera, dok je za stručnjake, koji rade u području
upravljanja sistemima i gradnje ugrađenih sistema, mikrokontroler interesantan sa
korisničkog stanovišta kao komponenta ili procesor informacija koji treba da bude u stanju
obaviti odgovarajuće funkcije u nekom sistemu.
Atmel-ova porodica mikrokontrolera AVR izazvala je malu revoluciju svojom
pristupačnom cijenom, visokim performansama naspram konkurencije i moćnom
bibliotekom za C jezik, koja programeru omogućava izradu kompleksnih aplikacija u
kratkom vremenskom roku poznavajući samo C programski jezik osnove mikrokontrolera.
Primjer primjene ugrađene real-time strukture je automatizacija višespratnog parking
prostora, koja je prikazana u sklopu ovog završnog rada. U praktičnom dijelu završnog
rada koristili smo KRmega32 ploču koja sadrži LCD displej. LCD displej nam prikazuje
informaciju o ukupnom broju slobodnih mjesta parkinga na svakom spratu. Na svako
parking mjesto postavljen je po jedan senzor i na osnovu njega zaključujemo da li je
parking mjesto slobodno. Problem nedovoljnog broja ulaza i izlaza KRmega ploče riješili
smo korištenjem multipleksera i registara. Pored LCD displeja, informaciju o slobodnim
mjestima prikazuje nam LED panel. Na panelu nalazi se za svako parking mjesto po jedna
crvena i zelena LED diode.
Ovo rješenje omogućava povećanje efikasnosti korištenja raspoloživih parking
prostora, a smanjuje probleme i troškove koji se pojavljuju u klasičnim neautomatizovanim
pristupima korištenja parkinga. Opisani postupak praktične realizacije daje relativno
jednostavno i jeftino, a uglavnom univerzalno rješenje.
59
Literatura
1. Dr.Sc.Lejla Banjanović - Mehmedović: “Sistemi u realnom vremenu”, Predavanja,
Univerzitet u Tuzli, Fakultet Elektrotehnike, Tuzla, 2009
2. Prof.dr. Uroš Peruško: “Digitalna elektronika”, Školska knjiga, Fakultet
elektrotehnike i računarstva u Zagrebu, 1996.
3. Produktinformation, KR-mega32-16 V2.3, KR Robotics
4. Atmel ATMega32 Product Informations, http://www.atmel.com
5. Senad Huseinbegovic,dipl.ing.el.: “Mikrokontroleri”, Predavanja, Univerzitet u
Sarajevu, Elektrotehnički fakultet Sarajevo
6. S.S. Ge, F.L. Lewis: „Autonomous Mobile Robots, Sensing, Control, Decision
Making, Applications“, 2006.
7. Ana Balević, Gvozden Marinković, “Atmel AVR mikrokontroleri”, Predavanja,
Univerzitet u Beogradu, Elektrotehnički fakultet Beograd
8. Milan Verie: “Pic mikrokontroleri”, Mikroelektronika, Beograd, 2008
9. Nayab Suhail Hamirani, Imdad Ali Ismaili, Asad Ali Shaikh, Faheem Ahmed,
Azhar Ali ShahPassword Based Rotational Multistory Car Parking System, Journal
of Emerging Trends in Computing and Information Sciences, VOL. 2, NO. 12,
December 2011
10. Richard Arnott, John Rowse: Downtown parking in auto city, Regional
Science and Urban Economics, Volume 39, Issue 1, January 2009.
11. Darmin Blažević: Navigacija mobilnog robota KRmega 32-16 V2.3 baziranog na
ATMEGA32 mikrokontroleru, diplomski rad, Fakultet elektrotehnike Univerzitet u
Tuzli, 2010.
12. J. K. Peckol: „ Embedded Systems, A Contemporary Design Tool“, J. Wiley &
Sons Inc., 2007.
60
Dodatak
Izvorni kod mikrokontrolera:
#include "kr-mega32v25.h"
#define GRANICA 100
int main(void)
//Inicijalizacija portova 1-8 za analogni pristup
a2dInit();
//Inicijalizacija portova 17 – 21
i2cInit();
//Inicijalizacija LCD displeja
lcdInit();
while (1)
//Ukupan broj slobodnih parking mjesta
int prvi_sprat=12;
int drugi_sprat=12;
int i;
//onemugućen upis u registre
clearDigitalOut(17);
clearDigitalOut(18);
clearDigitalOut(19);
clearDigitalOut(20);
// selekcioni ulaz A
clearDigitalOut(15);
// selekcioni ulaz B
clearDigitalOut(16);
61
for (i=1;i<=6;i++)
int j=i+8;
// prvojera prvih analognih ulaza na muxevima
if((analog(i)> GRANICA)&&(i < 4))
// postavljanje izlaza prvog sprata na 1 (zauzeto)
setDigitalOut(j);
prvi_sprat--;
else if((analog(i)> GRANICA)&&(i >= 4))
// postavljanje izlaza drugog sprata na 1 (zauzeto)
setDigitalOut(j);
drugi_sprat--;
else
clearDigitalOut(j);
// dozvoljen upis podataka na prvi registar
setDigitalOut(17);
clearDigitalOut(17);
// selekcioni ulazi
clearDigitalOut(15);
setDigitalOut(16);
for (i=1;i<=6;i++)
int j=i+8;
// prvojera drugih analognih ulaza na muxevima
if((analog(i)> GRANICA)&&(i < 4))
62
// postavljanje izlaza prvog sprata na 1 (zauzeto)
setDigitalOut(j);
prvi_sprat--;
else if((analog(i)> GRANICA)&&(i >= 4))
// postavljanje izlaza drugog sprata na 1 (zauzeto)
setDigitalOut(j);
drugi_sprat--;
else
clearDigitalOut(j);
// dozvoljen upis podataka na drugom registru
setDigitalOut(18);
clearDigitalOut(18);
// selekcioni ulazi
setDigitalOut(15);
clearDigitalOut(16);
for (i=1;i<=6;i++)
int j=i+8;
// prvojera trećih analognih ulaza na muxu
if((analog(i)> GRANICA)&&(i < 4))
// postavljanje izlaza prvog sprata na 1 (zauzeto)
setDigitalOut(j);
prvi_sprat--;
else if((analog(i)> GRANICA)&&(i >= 4))
63
// postavljanje izlaza drugog sprata na 1 (zauzeto)
setDigitalOut(j);
drugi_sprat--;
else
clearDigitalOut(j);
// dozvoljen upis podataka na trećem registru
setDigitalOut(19);
clearDigitalOut(19);
// selekcioni ulazi
setDigitalOut(15);
setDigitalOut(16);
for (i=1;i<=6;i++)
int j=i+8;
// prvojera četvrtih analognih ulaza na muxu
if((analog(i)> GRANICA)&&(i < 4))
// postavljanje izlaza prvog sprata na 1 (zauzeto)
setDigitalOut(j);
prvi_sprat--;
else if((analog(i)> GRANICA)&&(i >= 4))
// postavljanje izlaza drugog sprata na 1 (zauzeto)
setDigitalOut(j);
drugi_sprat--;
else
clearDigitalOut(j);
64
// dozvoljen upis podataka na četvrtom registru
setDigitalOut(20);
clearDigitalOut(20);
lcdHome();
//Preusmjeravanje ispisa na LCD displej
rprintfInit(lcdDataWrite);
rprintf("PRVI SPRAT: %d",prvi_sprat);
lcdGotoXY( 0, 1);
rprintf("DRUGI SPRAT: %d",drugi_sprat);
return 0;