Krmiljenje hitrosti utripanja LED diode

Krmiliti želimo hitrost utripanja LED diode s pomočjo vmesnika okolja LabVIEW. Uporabili bomo razvojno ploščo Arduino Uno, povezano z USB vhodom na računalniku. Led diodo bomo prek zaščitnega upora vrednosti 470 ohm priključili na digitalni pin 8 razvojne plošče Arduino Uno.

Na vmesniku (Čelni plošči) naj bo prikazan čas trajanja periode utripanja LED diode v ms, frekvenca utripanja LED diode v Hz in prikaz utripanja LED diode, ki mora v vskem primeru, ko virtualni instrument s tipko stop ustavimo, izklopiti.

Slika 1: Signal na digitalnem pinu 8 razvojne plošče Arduino Uno

Virtualni instrument naj bo izdelan tako, da lahko spreminjamo hitrost utripanja LED diode.

Čas trajanja ene periode T je čas, ko LED dioda sveti in čas, ko LED dioda ne sveti (slika 1). Če ta čas poznamo, lahko izračunamo frekvenco utripanja LED diode po enačbi:

                      f = 1 / T  (Hz)

Če je čas trajanja ene periode T podan v sekundah, je izračunana frekvenca v enoti Hz.

Poglejmo izdelani algoritem v okolju LabVIEW, Blok diagram in Čelno ploščo. Program (algoritem) in posamezne objekte bomo komentirali v nadaljevanju.

Slika 2: Algoritem za utripanje LED diode, Blok diagram

Slika 3: Vmesnik za krmiljenje hitrosti utripanja LED diode, Čelna plošča

Določitev parametrov bloka Init.vi za komunikacijo razvojne plošče Arduino Uno in LabVIEW prek serijske povezave:

Ko določimo potrebne parametre bloka Init.vi, moramo v bloku Set Digital Pin Mode.vi določiti pin 8 kot izhodni pin Arduino Uno, saj bomo na ta pin priključili LED diodo. V kontroli na čelni plošči moramo izbrati pin 8:

V zanki While, ki se neprestano ponavlja, dokler ne pritisnemo na tipko stop, uporabimo blok Digital Write Pin.vi, saj bomo spreminjali logična stanja na pinu 8. Ko bo na pinu 8 vrednost logične 1 (5 V), bo LED dioda svetila, ko pa bo na pinu 8 vrednost logične 0 (0 V) pa bo LED dioda izklopljena.

Da lahko spreminjamo vrednost na pinu 8, smo uporabili pomikalni register (Shift Register):

Kreiramo ga v priročnem meniju zanke While. Z miško se postavimo na rob zanke While in pritismeno desno tipko na miški. V priročnem meniju izberemo Add Shift Register. Na levi in desni strani okvirja zanke While se pojavita znaka pomikalnega registra. Pomikalni registri omogočajo dostop do podatkov iz prejšnjih iteracij (izvajanj) zanke While. Pomikalni registri delujejo tako, da se vrednost, ki je pripeljana na desno stran pomikalnega registra v naslednji iteraciji zanke prenese na levo stran pomikalnega registra. Če se na levi strani nahaja več elementov (v našem primeru se nahaja samo en), se ob prehodu v novo iteracijo vrednosti elementov premaknejo za en element navzdol oziroma v elemente, ki se nahajajo pod njim.

Primer delovanja pomikalnih registrov v okolju LabVIEW:

V našem primeru smo na vhod pomikalnega registra priključili Booleanovo konstanto False (logična 0). Do nje pridemo v Booleanovi podpaleti: Functions > Programming > Boolean > False Constant. V zanki While smo nanjo priključili negator Not, ki negira vhodno vrednost. Zato je po prvi interaciji zanke While na desni strani pomikalnega registra vrednost logične 1, ki se nato prenese na levo stran pomikalnega registra. Postopek se ponavlja, na levi strani pomikalnega registra se po vsaki iteraciji zanke While logično stanje spremeni (0, 1, 0, 1, ...). Te vrednosti so tipa Boolean, na vhod Value(0) bloka Digital Write Pin.vi pa moramo pripeljati celo število 0 za izklop oziroma celo število 1 za vklop LED diode, priključene na pin 8.

Zakaj so barve in debeline povezav v Blok diagramu različne?

Barva in debelina povezav v Blok diagramu podajata informacijo o tem, kakšen podatek se po posamezni povezavi prenaša.

Oranžna barva ponazarja prenos realnega števila, modra prenos celega števila, zelena prenos podatka tipa Boolean in vijolična prenos znakovnega niza.

Tanka povezava ponazarja prenos skalarne vrednosti, debelejša prenos enodimenzionalnega polja podatkov (1D polje) in dvojna povezava prenos dvo ali večdimenzionalnega polja podatkov. Večja kot je dimenzija polja, večja je razdalja med vzporednima črtama povezave.

Slika 4: Barva in debelina povezav v Blok diagramu

Če želimo na vhod Value(0) bloka Digital Write Pin.vi pripeljati celo število 0 za izklop oziroma celo število 1 za vklop LED diode, moramo spremeniti podatkovni tip iz tipa Boolean v tip celega števila (integer). To lahko storimo s funkcijskim blokom  Boolean To (0,1):

Na vhodu tega bloka imamo podatek tipa Boolean (zelena povezava), na izhodu pa podatek tipa integer (celo število), ki je predstavljen s povezavo modre barve. Booleanovo vrednost True (res je) pretvori v celo število 1, vrednost False (ni res) pa v celo število 0.

V okolju LabVIEW imamo na razpolago orodje za kontekstno pomoč, vprašaj (?) na dasni strani orodne vrstice. Če kliknemo na vprašaj in se nato z miško postavimo na katerikoli uporabljeni objekt v Blok diagramu, nam LabVIEW ponudi kratki opis objekta, nad katerim smo se postavili z miško. Za funkcijski blok Boolean To (0,1) nam prikaže:

Slika 5: Kontekstna pomoč za blok Boolean To (0,1)

LED dioda mora v vsakem primeru po zaustavitvi virtualnega instrumenta izklopiti. Izklopiti mora LED dioda, priključena na pin 8 razvojne plošče Arduino Uno in simulacijska LED dioda v virtualnem instrumentu.

1. Izklop LED diode, priključene na pin 8 smo dosegli z blokom Digital Write Pin.vi izven zanke While, pred blokom Close vi tako, da smo mu na priključek Value (0) pripeljali celoštevilčno vrednost 0.

2. Izklop simulacijske LED diode v Blok diagramu oz. na Čelni plošči smo dosegli z logičnim vezjem, v katerem smo uporabili logična vrata NALI, negirani ALI (Not Or). Negirani ALI z dvema vhodoma deluje po naslednji pravilnostni tabeli:

Slika 6: Vloga logičnih vrat NOR

Kako sploh dosežemo krmiljenje utripanja LED diode?

Po vsaki iteraciji zanke While se vrednost levega pomikalnega registra spremeni, s tem se spremeni tudi stanje LED diode.

V zanko While smo namestili funkcijo Wait Until Next ms Multiple (Wait (ms)). Na njen vhodni priključek smo povezali kontrolo Perioda utripanja LED diode (ms). Tej kontroli lahko spreminjamo vrednost na Čelni plošči virtualnega instrumenta v ms. Ker se mora za eno periodo (glej sliko 1) zanka While izvesti dvakrat, dobimo prikazan čas periode utripanja LED diode tako, da vrednost kontrole delimo z 2 (polovico periode LED dioda sveti, drugo polovico periode LED dioda ne sveti).

Slika 7: Algoritem za prikaz periode utripanja LED diode in njeno frekvenco utripanja

Če želimo na indikatorju Frekvenca utripanja LED diode (Hz) prikazovati frekvenco v Hz, moramo upoštevati, da ima 1 s 1000 ms in da je f = 1 / T.

Vrednost kontrole Perioda utripanja LED diode (ms) lahko enostavno spremenimo, če želimo počasnejše utripanje LED diode. Spremenimo vrednost, ki jo želimo spremeniti in pritisnemo na tipko enter. Na spodnjem posnetku je tudi prikazana namestitev funkcije status v Blok diagram, ki omogoči ustavitev virtualnega instrumenta, če med izvajanjem pride do napake (npr. nismo določili izhodnega pina, ...).