Smreka

Glavni elementi elektronskega vezja za smreko so mikrokontroler PIC16F628a, napetostni stabilizator, ki napetost 9 V baterije stabilizira na napetost 5 V (ta je potrebna za napetostno napajanje mikrokontrolerja), LED diode z zaščitnimi upori in oscilator 4 MHz, ki daje takt mikrokontrolekju. Načrt vezja prikazuje slika 1:

Slika 1: Električni načrt za smreko

Opis vezja:

Glavni element vezja je mikrokontroler PIC16F628a. Vanj zapišemo program, ki določa delovanje. Programsko določimo hitrost utripanja LED diod in vzorec, po katerem se vklapljajo in izklapljajo. Na en priključek mikrokontrolerja (od RB0 do RB7) so priključene po dve LED diodi. Skupaj jih je torej 16. Kako so razporejene po smreki, je odvisno od posameznika.

Mikrokontroler deluje pri napetosti 5 V. Da lahko vezje priključimo na višjo napetost (od 9 V do 12 V), je vezju dodan napetostni stabilizator IC 7805, ki da na svojem izhodu napetost 5 V.

LED diode (glej: Elektrotehnični elementi) moramo zaščititi z zaščitnimi upori, da jih ne uničimo. Napetost na LED diodi je lahko največ 2 V, zato mora preostanek napetosti 3 V nase prevzeti zaščitni upor (upori R1 do R16).

Posamezni priključek mikrokontrolerja lahko obremenimo s tokom največ 25 mA.

Program za mikrokontroler je napisan v programskem jeziku asembler (zbirnik) v okolju MPLAB IDE. S pomočjo programatorja PICkit 2 zapišemo program v mikrokontroler.

 

Spisek elementov vezja:

Vzorec utripanja LED diod:

Slika 2: Vzorec za LED diode

Na priključke (pine) mikrokontrolerja (od RB0 do RB7) so povezane po dve LED diodi. To pomeni, da bodo tiste, ki so povezane na isti priključek, istočasno svetile in bodo tudi istočasno izklopljene.

Vzorec utripanja lahko določimo sami. Slika 2 prikazuje primer vzorca s 16-timi različnimi stanji (v priloženem programu je 32 kombinacij). V prvi vrstici bodo svetile le tisti dve LED diodi, ki sta priključeni na pin RB7, druga vrstica prikazuje vklop LED diod, ki sta priključeni na pin RB6, v predzadnji vrstici pa vklop vseh LED diod. Podatke o izdelanem vzorcu vpišemo v program, v za to določeno tabelo (slika 3).

Slika 3: Tabela s podatki izbranega vzorca

Stanje pinov mikrokontrolerja od RB0 do RB7 zapišemo v obliki dvojiškega (binarnega) zapisa. Ker po vzorcu v prvi vrstici (slika 2) sveti le LED dioda, priključena na pin RB7, ostale pa ne, to zapišemo 1000 0000. Zapisane enice predstavljajo vklop LED diod, zapisane ničle pa izklop LED diod. Če želimo vklopiti LED diode na vseh osmih pinih, zapišemo osem enic (1111 1111), če pa želimo izklopiti vse LED diode, zapišemo osem ničel (0000 0000).

S pomočjo računala pretvorimo dvojiško zapisana števila v šestnajstiške vrednosti. Te po vrstnem redu zapišemo v tabelo programa, pred vsako šestnajstiško vrednost pa zapišemo predpono 0x. Ta pove mikrokontrolerju da je število, zapisano za njo, v šestnajstiškem številskem sistemu.

Hitrost utripanja LED diod:

Programsko določimo hitrost utripanja s spremembo vrednosti spremenljivke Stevec ali s spremembo vrednosti prvih treh bitov registra OPTION. Vrednost spremenljivke Stevec lahko spreminjamo od 0 do 255 (to je decimalna vrednost), vrednost prvih treh bitov registra OPTION pa od 000 do 111 (vrednosti so binarne). Pri vrednosti prvih treh bitov registra OPTION 000, bodo LED diode utripale hitreje, pri vrednosti 111 pa najpočasneje. Na voljo imamo 8 različnih vrednosti:

Slika 4: Register OPTION

 Od vrednosti prvih treh bitov registra OPTION je odvisno, kako hitro se bo povečevala vrednost časovnika (Timer) v mikrokontrolerju. Časovnik namreč po vsakem strojnem ciklu poveča vrednost za 1, od 0 do 255, ko nastane prekoračitev. Število teh prekoračitev določimo s spremenljivko Stevec. Ko je dosegel želeno vrednost prekoračitev, program "vzame" iz tabele naslednji vzorec za LED diode.

Slika 5: Prikaz prvih treh bitov registra OPTION

Program v okolju MPLAB IDE:

Ko odpremo programsko okolje MPLAB IDE, najprej ustvarimo novi projekt: Project > New. Pod Project Name vpišemo ime projekta (npr. Smreka), pod Project Directory pa določimo pot do ustvarjene mape (to si določimo sami), kamor se bo projekt shranjeval in pritisnemo na gumb OK. Nato kliknemo v menijski vrstici na View in izberemo Project. V menijski vrstici izberemo File > New in takoj za tem File > Save As... Odpre se okno Shrani kot v katekem pod Ime datoteke: zapišemo ime našega projekta (npr. Smreka.asm), imenu obvezno dodamo končnico .asm. Preden shranimo, moramo pod Shrani v: poiskati mapo, kamor se bo projekt shranjeval. To mapo smo določili že prej, sedaj jo le poiščemo. Nato moramo dodati še naš projekt. Z desnim klikom miške kliknemo na Source Files in nato kliknemo na Add Files... V oknu Add Files to Project izberemo naš projekt ter ga odpremo s klikom na Odpri.

Sedaj lahko začnemo s pisanjem novega projekta ali pa ga v našem primeru iz priloge kopiramo (Utripanje LED diod, program.txt) v projekt in prilepimo.

CPU (centralna procesna enota) mikrokontrolerja ne razume višjih programskih jezikov, zato moramo program prevesti. Program prevedemo z ukazom Project > Build All. Po prevajanju programa se pojavi novo okno, v katerem se bodo med drugim izpisala opozorila in morebitne napake v programu. Če napak po koncu prevajanja ni, se poročilo o prevajanju konča z "BUILD SUCCEEDED". Ob tem se ustvari v mapi projekta datoteka s končnico .hex. S programatorjem (PICkit 2) jo prenesemo v programski pomnilnik mikrokontrolerja.

Zapis programa v mikrokontroler:

Programator PICkit 2 povežemo z mikrokontrolerjem (slika 6) in preko USB-vhoda z računalnikom. Nato zaženemo program  PICkit 2 v2.61 in uvozimo (Import Hex) datoteko s hončnico hex, ki je shranjena v mapi projekta. Program nato le še zapišemo (Write) v mikrokontroler.

Slika 6: Priključitev programatorja z mikrokontrolerjem