daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

66
SVEUČILIŠTE U SPLITU FAKULTET ELEKTROTEHNIKE, STROJARSTVA I BRODOGRADNJE DIPLOMSKI RAD DALJINSKO UPRAVLJANJE I DIJAGNOSTIKA FLUOROSCENTNIH RASVJETNIH TIJELA Tino Filipović Split, rujan 2015

Transcript of daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

Page 1: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

SVEUČILIŠTE U SPLITU

FAKULTET ELEKTROTEHNIKE, STROJARSTVA I

BRODOGRADNJE

DIPLOMSKI RAD

DALJINSKO UPRAVLJANJE I DIJAGNOSTIKA FLUOROSCENTNIH

RASVJETNIH TIJELA

Tino Filipović

Split, rujan 2015

Page 2: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

SADRŽAJ

1. UVOD ................................................................................................................................................. 1

2. OPIS I STRUKTURA KONTOLERA ............................................................................................ 3

2.1 Mikrokontroler ............................................................................................................................ 4

2.2 Arduino UNO ............................................................................................................................... 4

2.2.1 Arduino sklopovlje ............................................................................................................... 5

2.2.2 Spajanje napajanja i povezivanje s računalom ................................................................. 6

2.3 Komunikacijski modul nRF24L01 ............................................................................................. 7

2.3.1 Dijagram stanja .................................................................................................................. 11

2.3.2 Načini rada i konfiguriranje nRF24L01 ........................................................................... 13

2.3.3 Cijevi podataka (Data Pipes) ............................................................................................. 14

2.4 Relej s optozaštitom ................................................................................................................... 15

2.5 Fototranzistor ............................................................................................................................ 17

2.6 PIR (eng. Passive Infrared) senzor .......................................................................................... 21

3. OBRADA PRIKUPLJENIH PODATAKA ................................................................................... 23

3.1 AD pretvorba ............................................................................................................................. 23

3.2 Usrednjavanje ............................................................................................................................ 25

3.3 Postupak obrade prikupljenih podataka ................................................................................. 26

3.4 Analiza mjerenja u Matlabu .................................................................................................... 27

4. REALIZACIJA ............................................................................................................................... 31

4.1 Software „Diag“ ......................................................................................................................... 31

4.2 Opis programa ........................................................................................................................... 32

4.3 Upravljanje ................................................................................................................................ 36

4.4 Kućište kontrolera ..................................................................................................................... 37

4.5 Prednosti i nedostatci realiziranog rješenja ............................................................................ 39

4.6 Primjer moguće primjene ......................................................................................................... 41

5. ZAKLJUČAK .................................................................................................................................. 43

SAŽETAK ............................................................................................................................................ 44

Page 3: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

KLJUČNE RIJEČI ............................................................................................................................. 44

LITERATURA .................................................................................................................................... 45

POPIS OZNAKA I KRATICA .......................................................................................................... 47

DODATAK .......................................................................................................................................... 48

A. Kod programa za dijagnostiku .................................................................................................. 48

B. Kod uređaja za daljinsko upravljanje ...................................................................................... 57

C. Kod kontolera rasvjete ............................................................................................................... 59

Page 4: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

1

1. UVOD

U današnjem industrijskom okruženju obično smo suočeni sa potrebom nadzora i upravljanja

raznim procesima. U najjednostavnijem slučaju to znači da je proces opremljen nekom vrstom

uređaja za mjerenje (senzorom) te uređajem za upravljanje. Tek kada sustav posjeduje mjerni

i izvršni član može kontrolirati proces za koji je odgovoran. Čest je slučaj da se tehničko-

tehnološki procesi sastoje iz više funkcionalno različitih podsustava i prostorno su dislocirani

[1].

Cilj diplomskog rada je stvoriti sustav daljinskog upravljanja i dijagnostike rasvjetnih tijela,

odnosno potrebno proučiti mjerljive parametre kvarova fluorescentnih lampi te realizirati

sustav koji će bežično upravljati radom rasvjetnih tijela. U radu je realizirano upravljanje

rasvjetnim tijelom, te je stvoren sustav za praćenje parametara rada rasvjetnog tijela

(fluorescentne lampe).

Naime kod fluorescentnih (kod nas se nazivaju i neonske jer u sebi sadržavaju plemeniti plin

neon) cijevi vidljiva se svjetlost dobiva na fluorescentnom sloju koji se pobudi

ultraljubičastim zračenjem. To ultraljubičasto zračenje nastaje kao posljedica električnog

izboja u smjesi živine pare i plemenitih plinova [2].

U odnosu na običnu žarulju sa žarnom niti, fluorescentnu cijev odlikuje veća efikasnost

pretvaranja električne energije u svjetlost i dulji životni vijek. Uobičajena fluorescentna

žarulja ima efikasnost pretvaranje električne energije u svjetlosnu energiju od 17 – 21 % [3].

Tako fluorescentna žarulja od 14W daje svjetlost kao obična žarulja sa žarnom niti od 60W

[4].

Početna investicija u fluorescentne žarulje (cijevi) je nešto veća nego za korištenje žarulja sa

žarnom niti, no trošak njihova rada je znatno manji. Tako je, na primjer u velikim prostorima

(npr. skladišta, fakulteti i sl.) energetska efikasnost rasvjete bitan parametar uštede koje je

dugoročno isplativ. Sustav za dijagnostiku koristan je također zato što ukazuje na kvar na

rasvjeti, i otkriva potencijalne kvarove te se na osnovu tih podataka može vršiti planiranje

servisa rasvjete.

Još jedna stvar koja razlikuje fluorescentnu cijev od žarulje je ta što cijev pred sam istek

svoga roka trajanja počinje pokazivati određene nepravilnosti u svom radu kao što su učestalo

treperenje, kašnjenje pri paljenju, porast u vremenu potrebnom da postigne određen intenzitet

osvijetljenosti. Da bi se te pojave mogle detektirati bilo je potrebno konstruirati kontroler koji

Page 5: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

2

će uz to još dodatno moći i upravljati rasvjetom i obavještavati korisnika na nepravilnosti u

radu. Uz kontroler koji upravlja radom rasvjete i očitava vrijednosti sa senzora koji prate

razinu osvijetljenosti, razvijen je i računalni program „Diag“ preko kojega se upravlja

rasvjetom i u kojemu se vrši grafički prikaz svih vrijednosti sa senzora. Preko programa je

moguće detektirati i nestanak struje. U tom slučaju kontroler se prebacuje na baterijsko

napajanje i zadržava svoju potpunu funkcionalnost.

U narednim poglavljima bit će predstavljen kontroler, njegova struktura, opis pojedinih

komponenti,a zatim i način prikupljanja i obrade podataka te na samom program za

dijagnostiku i njegova funkcionalnost.

Page 6: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

3

2. OPIS I STRUKTURA KONTOLERA

Da bi se uopće moglo upravljati procesom, odnosno da bi realizirali projektirani sustav bilo je

potrebno odabrati odgovarajući kontroler koji može izvršavati zahtjeve koje korisnik postavi

pred njega, te da ima mogućnost prikupljanja podataka da bi se mogla izvršiti dijagnostika

sustava. Zbog svojih mogućnosti i jednostavnosti korištenja izabran je kontroler Arduino

UNO. Budući da je komunikacija sustava realizirana bežično bilo je potrebno koristiti dva

mikrokontrolera s dvosmjernim komunikacijskim modulom. Postavljeni su na dvije lokacije:

• Prvi mikrokontroler koji upravlja procesom postavljen je na rasvjetnom tijelu,

mjeri razinu osvjetljenja te šalje izmjerene podatke prema drugom

mikrokontroleru koji ih prosljeđuje računalu;

• Drugi mikrokontroler postavljen je u kontrolnoj sobi. Njegova uloga je da

prima podatke, prosljeđuje ih računalu te prima naredbe od računala koje

prosljeđuje prvom mikrokontroleru.

Način rada sustava prikazan je blok shemom na Slici 2.1

Slika 2.1. Blok shema sustava

Page 7: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

4

2.1 Mikrokontroler

Za mikrokontroler možemo reći da je „mozak“ koji upravlja radom nekog sustava umjesto

čovjeka, te je karakteriziran malim dimenzijama i niskom potrošnjom energije.

Mikrokontroler se može definirati kao elektronička komponenta koja objedinjuje, u formi

integriranog kruga, procesor i periferne sklopove poput memorije, digitalnih i analognih ulaza

i izlaza, sklop za kontrolu napona i ispravnost rada, oscilator, brojače, vremenske sklopove

itd. To je ona kategorija sklopovlja koja je u modernom svijetu praktički nevidljiva, a nalazi

se svugdje: u automobilima, perilicama rublja, mikrovalnim i običnim pećnicama te praktički

svugdje gdje je potrebno nešto pametno napraviti s uređajem.

2.2 Arduino UNO

Razvojna platforma Arduino je alat za dizajn i razvoj ugradbenih računalnih sustava [5].

Središnja komponenta Arduino okruženja je 8 bitni Atmelov ATmega328P mikroprocesor.

Arduino platforma temelji se na otvorenom sklopovlju dostupnom svima, što znači da svatko

može izraditi svoj vlastiti Arduino uređaj.

Sama cijena, fleksibilnost, te laka dostupnost doprinijeli su iznimnoj popularnosti ovog

uređaja. Međutim najveća prednost Arduina u odnosu na ostale razvojne okoline je njegova

lakoća korištenja. Svatko kome elektronika nije bliska, može u relativno kratkom vremenu

savladati osnove korištenja i započeti vlastite projekte.

Također postoji i velika zajednica ljudi koji koriste Arduino, dijele svoje kodove, biblioteke i

električne sheme te na taj način pomažu drugima. Iz svih tih nabrojanih razloga za rješavanje

zadatka ovog diplomskog rada odabran je Arduino UNO R3 (Slika 2.2.), prikladan zbog broja

ulaza i performansi.

Page 8: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

5

Slika 2.2. Korišteni Arduino UNO

2.2.1 Arduino sklopovlje

Kao što je u uvodu rečeno, sam sklop se sastoji od 8 bitnog Atmelovog procesora [6].

ATmega328P osigurava sljedeće mogućnosti: 32KByta ISP flash memorije za pohranu

programa, 2 KByta SRAM memorije za varijable, 1 KByte EEPROM memorije za podatke

koji ostaju pohranjeni u programu za naknadnu uporabu, 23 ulazno izlazne linije opće

namjene, 32 radna registra opće namjene, tri brojača (timera) s modom za uspoređivanje,

vanjske i unutarnje prekide, univerzalni predajnik/prijemnik za prijenos sinkronih/asinkronih

podataka (USART – Universal Synchronous/Asynchronous Reciever/Transmitter), serijski

port za dvožično sučelje(TWI- Two Wire Interface), port za sučelje za serijsku periferiju(SPI

– serial peripheral interface) i 6 kanalni 10 bitni analogno/digitalni pretvornik (Slika2.3) [7].

Svi ovi periferni uređaji upravljaju se preko registara. To su manje memorijske jedinice

ugrađene u samom procesoru. Registri služe za privremeni smještaj programskog koda i

podataka iz radne memorije te rezultata aritmetičko-logičkih operacija koje se izvršavaju u

samom procesoru. Upravljanje registrima vrši se korištenjem odgovarajućih adresa preko

pokazivača realiziranih korištenjem C programskog jezika (ili asemblera) [8].

Page 9: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

6

Slika 2.3. Shematski prikaz Arduino UNO sklopovlja

2.2.2 Spajanje napajanja i povezivanje s računalom

Arduino kontroleri napajaju se vanjskim istosmjernim naponom u opsegu od 6 – 20 V.

Preporučeni naponski opseg je od 7 – 12 V. Glavni razlog je taj što napon manji od 7 V može

za posljedicu imati nestabilan radni napon cijelog sklopa, kao i nestabilan i manji napon na

izvodima 5 V. Napon veći od 12 V može uzrokovati pretjerano i nepotrebno zagrijavanje

stabilizatora napona, pa i trajno oštećenje regulatora napona od 3.3 V. To posebno dolazi do

izražaja u ovom radu, budući da je naponski izlaz od 3.3 V prijeko potreban za napajanje

bežičnog modula nRF24L01. Budući da je cijeli sustav prostorno dislociran bilo je potrebno

osigurati zasebno napajanje za svaki od kontrolera.

Napajanje od prvog Arduina, onoga povezanog s računalom, riješeno je na trivijalan način

tako što je povezano putem USB kabela. Preko tog istog USB kabela odvija se i serijska

komunikacija mikrokontrolera i računala.

Drugi Arduino, onaj koji mjeri parametre rasvjetnog tijela i vrši upravljanje, napajan je

direktno iz mreže putem AC-DC ispravljača.

Page 10: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

Ispravljač ima sljedeće karakteristike:

• Ulazni napon: AC 100

• Izlazni napon: DC 5 V

• Maksimalna struja: 1000 mA

• Minimalna struja: 150 mA

Slika 2.4

Transformator pretvara izmjenični napon mreže u

vrijednosti 9 V. Preko Graetzov

kondenzator ima ulogu filtriranja istosmjernog napona, odnosno da dodatno „ispegla“

punovalno ispravljeni napon.

napon i na svom izlazu daje

automatski prebacuje na baterijsko napajanje

ono s većim naponom, potrebno je baterijsko napajanje preko regulatora napona spustiti ispod

6.6 V da bi ono bilo zadržano kao sekundarno

ispravljača baterija 9 V) .

U tom slučaju ne dolazi do prekida komunikacije

funkcionalnost. Tako će korisnik koji vrši nadzor rasvjete biti obaviješten o nepravilnostima u

radu rasvjete ili o nestanku električne energije.

2.3 Komunikacijski modul nRF

Nordic Semiconducor nRF24L01 je

aplikacije s niskom potrošnjom

Ispravljač ima sljedeće karakteristike:

V - 250 V 50/60 Hz

V

Maksimalna struja: 1000 mA

Minimalna struja: 150 mA

Slika 2.4. Shema kruga za pretvorbu napona

izmjenični napon mreže u izmjenični napon sekundara efektivne

Graetzov-a spoja izmjenični napon se punovalno ispravlja. Elektrolit

kondenzator ima ulogu filtriranja istosmjernog napona, odnosno da dodatno „ispegla“

. Integrirani krug LM7805 ima ulogu da

stabilnih 5V. U slučaju nestanka električne energije sustav se

ebacuje na baterijsko napajanje. Pošto Arduino kao primarno napajanje od

, potrebno je baterijsko napajanje preko regulatora napona spustiti ispod

6.6 V da bi ono bilo zadržano kao sekundarno (shema kao na Slici 2.4. samo što je umjesto

slučaju ne dolazi do prekida komunikacije i kontroler zadrža

funkcionalnost. Tako će korisnik koji vrši nadzor rasvjete biti obaviješten o nepravilnostima u

o nestanku električne energije.

nRF24L01

nRF24L01 je jedinstveni 2.4 GHz primopredajnik dizajniran za bežične

aplikacije s niskom potrošnjom [9]. nRF24L01 je pronašao svoju primjenu na mnogo mjesta.

7

enični napon sekundara efektivne

ispravlja. Elektrolitski

kondenzator ima ulogu filtriranja istosmjernog napona, odnosno da dodatno „ispegla“

LM7805 ima ulogu da stabilizira filtrirani

U slučaju nestanka električne energije sustav se

Pošto Arduino kao primarno napajanje odabire

, potrebno je baterijsko napajanje preko regulatora napona spustiti ispod

samo što je umjesto

kontroler zadržava svoju potpunu

funkcionalnost. Tako će korisnik koji vrši nadzor rasvjete biti obaviješten o nepravilnostima u

dizajniran za bežične

nRF24L01 je pronašao svoju primjenu na mnogo mjesta.

Page 11: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

8

Ponajprije valja istaknuti bežične PC periferije (bežični miš, tastatura, jojstick), zatim tu su

ultra nisko potrošačke senzorske mreže, VOIP (eng. Voice over Internet Protocol) slušalice,

alarmni i sigurnosni sustavi, aktivni RFID (eng. Radio-frequency identification) te mnogi

drugi sustavi koji za svoj rad zahtijevaju bežični prijenos podataka. Domet korištenog modula

je oko 20 m u zatvorenom prostoru, te 100 m u otvorenom prostoru. Poboljšana verzija

modula nRF24L01+ koja posjeduje dodatnu antenu, ima domet do 1000 m u otvorenom

prostoru. Izgled nRF24L01 prikazan je na Slici 2.5 [9].

U ovom projektu uloga komunikacijskog modula je bežično povezivanje kontrolera koji

upravlja rasvjetom s prijemnikom spojenim na računalu. Prednost ovog nad ostalim ovakvog

tipa je mogućnost istovremenog slanja i primanja podataka, niska cijena, jednostavnost i

potpuna kompatibilnost s Arduino razvojnom okolinom budući da postoje gotove biblioteke

koje olakšavaju programiranje i korištenje.

Primopredajnik sadrži potpuno integrirani frekvencijski alat za sintezu, pojačalo, kristalni

oscilator, demodulator, modulator i Enhanced Shock Burst protokol. nRF24L01 je projektiran

za rad na širokopojasnom ISM frekvencijskom rasponu od 2.400 - 2.4835 GHz. Izlazna snaga,

frekvencijski kanali i protokol lako se unose otvorenim SPI interfejsom.

Pomoću mikrokontrolera, nRF24L01-a i nekoliko dodatnih pasivnih komponenti moguće je

realizirati jednostavan radio prijemnik. Sklop u svom dizajnu ima implementiranu automatsku

potvrdu o primitku poruke, mogućnost spajanja s do 6 različitih uređaja u istom

frekvencijskom kanalu, te još neke druge mogućnosti.

Slika 2.5. Izgled nRF 2401l

nRF24L01 je konfiguriran i upravljan preko serijskog komunikacijskog protokola (eng. Serial

Peripheral Interface – SPI).

Page 12: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

9

Ovaj protokol omogućava dvosmjernu komunikaciju i preko njega je moguće ostvariti veće

brzine prijenosa nego kod ostalih komunikacijskih standarda. Brzina prijenosa podataka kod

nRF24L01 kreće se do 2 Mbps što ga uz izuzetno nisku potrošnju energije svrstava u

poželjnije uređaje ovog cjenovnog razreda. Na Slici 2.6. prikazan je blok dijagram uređaja te

raspodjela pinova .

Slika 2.6. Blok dijagram nRF24L01

Slika 2.7. Raspodjela pinova chipa

Page 13: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

10

Na Slici 2.7. prikazan je raspored pinova nRF240l primopredajnika. Funkcionalni opis dat je

u Tablici 2.1.

Tablica 2.1. Tablica funkcionalnosti pinova i njihov opis

Pin Ime Funkcija pina Opis

1 CE Digitalni ulaz Aktivira RX ili TX način rada

2 CSN Digitalni ulaz SPI odabir chipa

3 SCK Digitalni ulaz SPI takt

4 MOSI Digitalni ulaz Pomicanje podataka(master out slave in)

5 MISO Digitalni izlaz Pomicanje podataka(master in slave out)

6 IRQ Digitalni izlaz Interapt pin

7 VDD Napajanje Napajanje (1.9V – 3.6V DC)

8 VSS Napajanje Uzemljenje (0V)

9 XC2 Analogni izlaz Oscilator pin 2

10 XC1 Analogni ulaz Oscilator pin 1

11 VDD_PA Vanjsko napajanje Napajanje(1.8V) za unutarnje pojačalo. Mora

biti povezano na ANT1 i ANT2

12 ANT1 RF Priključak za antenu 1

13 ANT2 RF Priključak za antenu 2

14 VSS Napajanje Uzemljenje (0V)

15 VDD Napajanje Napajanje (1.9V – 3.6V DC)

16 IREF Analogni ulaz Referentna struja; priključiti 22k otpornik

prema uzemljenju

17 VSS Napajanje Uzemljenje (0V)

18 VDD Napajanje Napajanje (1.9V – 3.6V DC)

19 DVDD Vanjsko napajanje Interni digitalni izlaz za svrhe prespajanja

20 VSS Napajanje Uzemljenje (0V)

Na Slici 2.8. dana je shema nRF24L01 komunikacijskog modula. Sklop je napajan direktno s

Arduino mikrokontrolera koji u sebi sadrži linearni naponski regulator koji generira izlazni

napon od 3,3 V potreban za napajanje nRF24L01. Uređaj ne može započeti s radom sve dok

je napon napajanja manji od 1.9 V. Ukoliko je napon napajanja veći od 3.6 V dolazi do

pregrijavanja komunikacijskog modula.

Page 14: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

11

Slika 2.8. Shema nRF24L01

2.3.1 Dijagram stanja

Dijagram stanja prikazuje modove u kojima nRF24L01 može raditi te na koji su način se

njima pristupa. Uređaj počinje raditi kada je napon VDD 1.9 V ili veći. Kada se to dogodi

nRF24L01 resetira stanje u kojemu je posljednji put bio, tu ostaje 10.3 ms, a zatim ulazi u

„Power down“ mod. Čak i dok se uređaj nalazi u „Power down“ modu mikrokontroler ga

može kontrolirati kroz SPI protokol i CE (eng. Chip enable) pin (zauzeta tri stanja u

dijagramu). “Recommended operating mode” – (preporučeni način rada) je stanje koje se

Page 15: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

12

koristi tijekom normalnog rada. “Possible operating mode” – (mogući način rada) je stanje

koje je dozvoljeno za koristiti, ali se ne koristi tijekom normalnog rada. Treće stanje je

transition state (prijelazno stanje) koje je limitirano stanje – u njemu se nalazi u vrijeme

starta. Na Slici 2.9. [9] prikazana su stanja u kojima se nRF24l01 može nalaziti i načini

prelaska iz jednog u drugo stanje.

Slika 2.9. Prikaz dijagrama stanja (prikazani uvjeti prijelaza iz jednog načina rada u drugi)

Page 16: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

13

2.3.2 Načini rada i konfiguriranje nRF24L01

Ovdje će biti opisani različiti modovi rada nRF24L01 modula i parametri iskorišteni za

kontrolu.

U „Power Down“ modu rada nRF24L01 je onemogućen i tada troši najmanje struje. U ovom

načinu rada sve vrijednosti iz registra dostupne su iz SPI-a i zadržane te SPI može biti

aktiviran. Ovaj mod rada se pokreće tako da se PWR_UP bit u CONFIG registru postavi na

LOW.

Ako postavimo PWR_UP bit u CONFIG registru na 1 (HIGH), uređaj ulazi u standby-I način

rada. Standby-I način rada se koristi da se smanji prosječna potrošnja struje. U ovom modu

kristalni oscilator je djelomično aktivan. Ovo je mod rada na koji se vraća nRF24L01 nakon

TX ili RX moda kada je CE bit postavljen na 0 (LOW).

U Standby II modu, aktivni su taktni buffer-i i usporedno s standby I modom povećana je

potrošnja do deset puta. Standby II mod se može ostvariti kada je CE u visokom stanju PTX

uređaja sa praznim TX FIFO registrom. Za vrijeme Standby modova sadržaj konfigurirane

riječi je održan i aktiviranje SPI protokola je moguće.

RX način rada je aktivan kada nRF24l01 radi kao prijemnik. Ovaj mod pokrećemo tako da

postavimo PWR_UP bit u 1, PRIM_RX bit u 1, te CE pin na HIGH. U ovom načinu rada

nRF24l01 demodulira signale iz RF kanala. Uređaj ostaje u RX modu rada sve dok ga

mikrokontroler ne vrati u Standby-I režim ili Power down mod.

TX mod je aktivan onda kada nRF24L01 šalje podatke. Da bismo pokrenuli ovaj način rada

nRF24L01 mora imat PWR_UP bit postavljen u 1, PRIM_RX bit u 0 i visoki impuls na pinu

CE (jedinica u tom pinu) mora biti duži od 10µs.

nRF24L01 ustaje u TX režimu rada sve dok ne završi slanje trenutnog paketa podataka. Ako

je pin CE u 0 uređaj se vraća u standby-I režim rada (mod).

Page 17: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

14

Tablica 2.2. Modovi nRF24L01

MOD PWR_UP

registar

PRIM_RX

registar CE

TX FIFO (eng. First In

First Out) stanje

RX mod 1 1 1 -

TX mod 1 0 1 Podaci u TX FIFO

TX mod 1 0 1 → 0

Ostaje u TX modu prije

nego što je prijenos paketa

završen

Standby-II 1 0 1 TX FIFO- prazan

Standby-I 1 - 0 Nema prijenosa podataka

Power Down 0 - - -

2.3.3 Cijevi podataka (Data Pipes)

nRF24L01 konfiguriran kao PRX može primiti podatke kroz šest različitih cijevi podataka u

jednom frekvencijskom kanalu. Svaka cijev ima svoju jedinstvenu adresu i može biti

konfigurirana da ima vlastito ponašanje. Podatkovne cijevi dostupni su za adresiranje u

EN_RXADDR_PX registru. Već unaprijed zadane su samo „0“ i „1“ cijev podataka. Uvijek

se mora osigurati da svaka podatkovna cijev ima različitu adresu. Prva podatkovna cijev

(indeks [0]) ima jedinstvenu 5 Byte-nu konfiguriranu adresu. Ostale cijevi (1-5) dijele iste

visoko definirane bajtove (4 Byte zajednička). Zadnji Byte mora biti jedinstven za svaku

cijev. Adresiranje svake cijevi podataka izvršava se u RX_ADRR_PX registru. Slika 2.10. [9]

pokazuje adresiranje podatkovnih cijevi.

Page 18: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

15

Slika 2.10. Adresiranje cijevi podataka

Adresiranje cijevi podataka u programskom kodu riješeno je na sljedeći način:

const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

radio.openWritingPipe(pipes[1]); // otvaranje cijevi za pisanje

radio.openReadingPipe(1,pipes[0]); // otvaranje cijevi za čitanje

2.4 Relej s optozaštitom

Postoje mnoge situacije u kojima je potrebno prenijeti podatke i signale u okviru elektronskog

uređaja iz jednog podsustava u drugi, ili između različitih uređaja, bez postojanja direktne

galvanske veze. Čest razlog za ovo je taj da izvorište i odredište rade sa različitim naponskim

nivoima (npr. procesor, koji radi na 5 V DC treba upravljati radom trijaka koji

prekida/uključuje 230 V AC. U takvim slučajevima, veza između ova dva bloka treba biti

galvanski izolirana, kako bi se omogućila zaštita u radu procesora. Galvanska izolacija je

princip izoliranja funkcionalnih cjelina električnog sustava u cilju sprečavanja toka neželjenih

Page 19: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

16

struja. Komponente koje se koriste za opto-izolaciju, a objedinjuju u jednom kućištu foto-

predajnik (LED) i foto-prijemnik (fototranzistor) zovu se optokapleri [10].

U primjeru daljinskog upravljanja rasvjetom optokapler galvanski izolira mikrokontroler od

proboja izmjenične struje s trošila.

U ovom slučaju preko optokaplera upravljamo radom releja koji uključuje i isključuje

rasvjetu. To je integrirani chip koji u sebi sadrži diodu i fototranzistor. Kada digitalni izlaz

mikrokontrolera D5 bude u stanju HIGH, dolazi do pada napona na diodi te ona zasvijetli. U

tom trenutku fototranzistor provede, zatvori se strujni krug između tranzistora i releja

prikazan na Slici 2.11. Dakle tranzistor radi kao sklopka. U shemu je još dodana i tzv.

Flyback dioda. Postavljamo je paralelno s relejom, ali s različitim polaritetom.

Naime relej se ponaša kao induktivitet i u sebi akumulira energiju. Da se ta akumulirana

energija ne bi prenijela na mikrokontroler i ostale komponente, potrebno je postaviti diodu i

preko nje discipirati tu energiju natrag prema trošilu.

Slika 2.11. Shema strujnog kruga za upravljanje rasvjetom

Page 20: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

17

2.5 Fototranzistor

Fotometrija je mjerenje svjetla definirano kao elektromagnetsko zračenje koje detektira

ljudsko oko. Ograničeno je na valne duljine od oko 360 do 830 nanometara. Ljudski vid je

subjektivan i složen proces. Naime kada se promatra fluorescentna (neonska) svijetlost

ljudsko oko ne može zapaziti treperenje neonske lampe te se stječe dojam da neonka radi

stabilno i bez oscilacija [11]. Međutim ostvarena mjerenja ukazuju na konstantno treperenje

svijetla koje ljudsko oko ne može primijetiti.

U radu je za preciznu detekciju svijetla korišten Siemensov npn BP 103-3 fototranzistor (Slika

2.12.) [12]. Odlikuje ga visoka linearnost u radu, radno područje valnih duljina od 420 –

1130 nm, te brzi odziv na svjetlosnu pobudu. Koristi se u za mjerenje bljeskova, opto-

izolaciju, regulaciju svijetla i ostalu primjenu u industrijskoj elektronici.

Slika 2.12. Fizički izgled fototranzistora

Detaljne specifikacije dane su u Tablici 2.3.

Page 21: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

18

Tablica 2.3. Specifikacija BP 103-3

Opis Simbol Vrijednost Jedinica

Radna temperatura Top – 40 ... + 80 °C

Temperatura

lemljenja TS 260 °C

Napon kolektor-

emiter UCE 50 V

Struja kolektora ICE 100 mA

Napon baza-emiter UBE 7 V

Termalni otpor RthJA 500 K/W

Valna duljina

maksimalne

osjetljivosti

λS max 850 nm

Raspon osjetljivosti λ 420 ... 1130 nm

Površina osjetljivog

područja S 0.12 mm

Kut upada φ ±55 grad

Relativna spektralna osjetljivost tranzistora prikazana je na Slici 2.13.

Page 22: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

19

Slika 2.13. Osjetljivost BP 103-3 fototranzistora

Mjerenja su vršena na dva mjesta, na sredini neonske lampe i na početku lampe, gdje su

primijećene najveće oscilacije u radu. Mjerenje započinje tako što se baza fototranzistora

dovede na analogni ulaz od mikrokontrolera. Struja baze se mijenja s promjenom svijetla.

Veći intenzitet svijetla iznad tranzistora rezultira većom strujom baze. Da bi se povećala

rezolucija očitanja, odnosno raspon struje koja teče kroz bazu u odnosu na osvijetljenost

potrebno je kalibrirati fototranzistor. Zbog toga je dodan otpornik na emiter tranzistora i na taj

način povećana struja kroz bazu i time povećana rezolucija analognog očitanja. Shema

senzora svijetla prikazana je na Slici 2.14.

Page 23: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

Za ova mjerenja izabran je fototranzistor zbog svojih jako dobrih specifikacija. Osim izuzetno

velikog raspona osjetljivosti, treba istaknuti i njegov jako brzi odziv na promjenu svijetla. Ova

ista mjerenja nisu mogla biti obavljena s fotootpornicima jer o

imaju jako spor odziv, odnosno sporo mijenjaju svoj otpor i ne mogu zabilježiti

u radu neonske lampe. Jedan fototranzistor je postavljen na sredinu neonske cijevi, a drugi je

postavljen na rub neonske cijevi z

svijetlosti.

Slika 2.14. Shema senzora svijetla

Za ova mjerenja izabran je fototranzistor zbog svojih jako dobrih specifikacija. Osim izuzetno

velikog raspona osjetljivosti, treba istaknuti i njegov jako brzi odziv na promjenu svijetla. Ova

ista mjerenja nisu mogla biti obavljena s fotootpornicima jer oni za razliku od fototranzistora

imaju jako spor odziv, odnosno sporo mijenjaju svoj otpor i ne mogu zabilježiti

. Jedan fototranzistor je postavljen na sredinu neonske cijevi, a drugi je

postavljen na rub neonske cijevi zbog toga što je na rubovima zabilježeno najveće treperenje

20

Za ova mjerenja izabran je fototranzistor zbog svojih jako dobrih specifikacija. Osim izuzetno

velikog raspona osjetljivosti, treba istaknuti i njegov jako brzi odziv na promjenu svijetla. Ova

ni za razliku od fototranzistora

imaju jako spor odziv, odnosno sporo mijenjaju svoj otpor i ne mogu zabilježiti brze promjene

. Jedan fototranzistor je postavljen na sredinu neonske cijevi, a drugi je

bog toga što je na rubovima zabilježeno najveće treperenje

Page 24: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

21

2.6 PIR (eng. Passive Infrared) senzor

PIR senzor (Slika 2.15.) je senzor za detekciju ljudskog pokreta u području njegova dosega.

Karakterizira ih mala potrošnja struje, laka implementacija u sustav i dug vijek trajanja.

Upravo iz tih razloga PIR senzori su našli raznoliku primjenu u jednostavnim alarmima i

ostalim uređajima u kojima je potrebno detektirati ljudsku prisutnost [13].

Slika 2.15. PIR senzor

Osnovni dio svakog PIR senzora je piroelektrični element koji detektira različite stupnjeve

infracrvenog zračenja i podijeljen je na dva dijela. Ukoliko jedan dio primi više zračenja od

drugog, stanje na izlazu senzora će se promijeniti. Svaki PIR senzor sadrži tzv. Fresnelovu

leću izrađenu od plastike, koja omogućuje podjelu vidljivosti na manja područja. Na

korištenom senzoru bilo je moguće kalibrirati mogući domet, od maksimalnih 7 metara do

minimalnih tri metra. Također je moguće kalibrirati dužinu vremenskog intervala u kojem će

izlaz PIR senzora biti u stanju HIGH.

Svrha PIR senzora u ovom sustavu je da detektira prisutnost ili kretanje u prostoriji gdje je

kontroler postavljen te da se pošalje obavijest programu za nadzor i dijagnostiku. Stanja

senzora (HIGH, LOW) se bilježe na grafu, te je moguće naknadno utvrditi da li je bilo

kretanja u prostoriji u nekom prijašnjem trenutku (Slika 2.16). Dijagnostika je zamišljena na

način da kontroler kada je senzor u stanju LOW (nema kretanja) šalje programu vrijednost 50,

Page 25: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

22

a u stanju HIGH (pokret) šalje vrijednost 5. Pošto graf svakih 0,1 s iscrtava stanje senzora,

vrijednost 100 na vremenskoj osi x označava 10 sekundi odnosno 100 iscrtanih uzoraka.

Slika 2.16. Stanja PIR senzora u programu za dijagnostiku

Page 26: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

23

3. OBRADA PRIKUPLJENIH PODATAKA

3.1 AD pretvorba

Da bi se uopće moglo govoriti o obradi signala potrebno je izvršiti pretvorbu iz analognog u

digitalni signal. Komponenta koju koristimo za to je analogno digitalni pretvarač koje je

implementiran u Arduinu. U njemu se vrše sljedeće radnje (Slika3.1):

• Kvantizacija (diskretizacija) po vremenu,

• Kvantizacija po amplitudi uz zadržavanje trenutne vrijednosti cijeli diskretni interval

vremena,

• Kodiranje u n-bitnu binarnu formu.

Slika 3.1. Shematski prikaz A/D pretvarača

A/D pretvarač je određen s dvije temeljne značajke:

• Frekvencijom uzorkovanja

• Stupnjem kvantizacije (brojem bita pretvorbe) koji se najčešće naziva vertikalna

rezolucija.

Postupak pretvorbe analogne u diskretnu digitalnu veličinu nazivamo diskretizacija [14].

Arduino u sebi posjeduje 10-bitni A/D pretvarač koji radi na principu sukcesivne

aproksimacije.

Važnost postojanja više analognih ulaza nije potrebno posebno pojašnjavati. Većina signala

koji se detektiraju preko senzora su analogni i smješteni su u intervalu Vmin < VA < Vmax.

Page 27: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

24

Ukoliko je napon preko Vmax postavlja se naponsko dijelilo. Shema sukcesivnog AD

pretvarača prikazana je na Slici 3.2 [15] .

Slika 3.2. Shema sukcesivnog AD pretvarača

AD pretvorba započinje tako što se na pozitivni ulaz komparatora dovodi nepoznati napon

VA, a na negativni ulaz se dovodi izlazni napon iz D/A pretvarača. Izlaz komparatora (koji

može biti 1 ili 0 ovisno o tome je li Ux < UA) dovodi se na ulaz sklopa LOGIKA, a izlaz iz tog

sklopa upravlja radom D/A pretvarača.

Vertikalna rezolucije određuje prirast napona ∆� izmeđju dvije kvantizacijske razine. Što je

prirast ∆� manji to je AD pretvarač bolji. U Tablici 3.1 dana je veza između broja bitova

pretvorbe i broja kvantizacijskih razina.

Tablica 3.1. Ovisnost broja kvantizacijskih razina o bitovima pretvorbe

Broj bitova pretvorbe [n] 4 8 12 16

Broj razina [ 2�] 16 256 4096 67538

Arduino u sebi posjeduje 10bitni AD pretvarač i može mjeriti napone u rasponu od 0 – 5 V. Iz

ta dva podatka možemo izračunati prirast napona ∆� između dva susjedna broja:

∆� = ��2� − 1 = 5

1023 = 0.0048876� (3.1)

Mjerenje svjetline se odvija na način da se mjeri napon baza - emiter fototranzistora. Kolektor

fototranzistora spojen je na 5 V, a emiter na masu. Za neku srednju osvijetljenost (UBE=3.88

V) sukcesivnom pretvorbom AD pretvarač daje vrijednost od 1100011010(2) =794(10) . Ta

Page 28: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

25

vrijednost odgovara naponu od 3.8807429 V što znači da je pogreška mjerenja u ovom

slučaju:

∆� = � − �������� = 0,00074929� (3.2)

Izračunata greška je mala za primjenu i osigurava detektiranje oscilacija u rasvjeti.

3.2 Usrednjavanje

Od različitih tehnika potiskivanja smetnje i izvlačenja signala iz šuma najčešće se

upotrebljava metoda usrednjavanja. Usrednjavanje signala je tehnika koja se odvija u

vremenskom području. Usrednjavanje se često koristi pri obradi EEG prilikom obrade

evociranih potencijala (prate se odzivi u mozgu prouzrokovano svjetlosnim bljeskovima) kada

je potrebno odvojiti komponentu signala od komponente šuma. Usrednjavanjem se nastoji

povećati snaga signala u odnosu na šum koji ga ometa, tj. nastoji se izvući osnovni signal iz

šuma. Na Slici 3.3. je prikazano usrednjavanje na osnovu odabira različita broja uzoraka [16].

Slika 3.3. Usrednjavanje signala

Usrednjavanje vršimo prema formuli za aritmetičku sredinu

� = 1

!"�#�

#$%

(3.3)

Signal i šum mogu se razdvojiti na dvije komponente:

Page 29: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

26

� = 1

! "�š#�

#$%+ 1

!"�'#�

#$%

(3.4)

gdje je prvi član komponenta šuma, a drugi komponenta signala. Prvi član, odnosno

komponenta šuma približava se nuli zbog toga što je šum sam po sebi slučajan te u sebi sadrži

pozitivne i negativne amplitude koje se zbrajanjem poništavaju odnosno zbroj im teži nuli. S

drugim članom je drukčije budući da su njemu amplitude istog predznaka tako da se

povećanim brojem uzoraka njegova vrijednost povećava u odnosu na šum.

Usrednjavanje je u ovom radu važno zbog velikih oscilacija u razinama intenziteta svjetla

fluorescentne lampe koje su izazvane njenim načinom rada.

3.3 Postupak obrade prikupljenih podataka

Sama realizacija svih prethodno opisanih postupaka vršila se na slijedeći način. Signal je

doveden na analogni ulaz mikrokontrolera, gdje se preko AD pretvarača vrši njegova

pretvorba u digitalni rezolucijom od 10 bita, odnosno postiže vrijednost od 0-1023. Zatim,

zbog same prirode signala fluorescentnog (neonskog) svijetla koje nema stalnu – kontinuiranu

vrijednost, bilo je potrebno izvršiti usrednjavanje signala.

Neonsko svijetlo treperi jako brzo, te stoga ne bi bilo moguće detektirati ikakve promjene bez

da se signal ne usrednji. Sam taj postupak odvijao se na način da je se prikupi po 10 očitanja

te se računa aritmetička sredina. Zatim bi se ta vrijednost u paketu zajedno s drugim podacima

slala bežično na mikrokontroler koji komunicira s računalom, gdje je ta vrijednost iscrtana na

grafu i vrši se dijagnostika. Konkretno, s programerskog stajališta događa se sljedeće:

• Izvršava se očitanje analognog ulaza i vrijednost se šalje funkciji za računanje

sredine

• inicijaliziran je niz od 10 članova

• svaki član niza predstavlja jedno očitanje senzora

• članovi niza se periodično zbrajaju

Page 30: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

27

• kada dođe do zadnjeg člana, izračuna se prosjek, vrijednost se vraća u glavni

program i šalje se u paketu drugom mikrokontroleru koji ga prosljeđuje računalu

3.4 Analiza mjerenja u Matlabu

Na Slici 3.4 prikazan je razina osvjetljenja prostorije pri normalnom dnevnom svijetlu. Da se

primijetiti da je se svijetlost ustalila na vrijednostima oko vrijednosti 230 s AD pretvarača.

Signal lagano oscilira zbog toga što nije izvršeno prethodno usrednjavanje, te kad ga se

usporedi oscilacijama kod neonske svijetlosti može se zaključiti da su oscilacije zanemarive.

Slika 3.4. Osvijetljenost prostorije po danu

Međutim kada je u pitanju neonska svijetlost na senzoru dobijemo sasvim drugačija očitanja.

Na Slici 3.5. prikazano je očitanje s neonke bez dodatne obrade signala.

Page 31: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

28

Slika 3.5. Očitanje s neonske svjetiljke

Signal ima ovakav oblik zbog samog načina rada neonke, te zbog toga što je frekvencija

uzorkovanja 10 Hz, a frekvencija mreže 50 Hz. Iz priloženog se vidi da je ovakva slika

neupotrebljiva u daljnjem postupku dijagnostike, te da je nužno izvršiti obradu signala,

odnosno u ovom slučaju usrednjavanje. Prilikom usrednjavanja uzeti su uzorci od po deset

vrijednosti što predstavlja vrijeme od 1 sekunde (period uzorkovanja 0,1 s) i zamijenjeni sa

srednjom vrijednošću. Dakle dobije se signal koji izgleda kao na Slici 3.6.

Slika 3.6. Prikaz usrednjenog signala

Page 32: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

29

Na slici se jasno vidi da se vrijednost osvjetljenja ustali na neku vrijednost od oko 6000 lx.

Sada se već mogu detektirati prekidi u radu neonske lampe, odnosno kašnjenja u dostizanju

određene osvijetljenosti što također može ukazivati na kraj životnog vijeka žarulje.

Prilikom paljenja svijetla bilo je potrebno određeno vrijeme da neonka počne svijetliti punim

intenzitetom. Općenito u automatici vrijeme porasta se definira kao vrijeme potrebno da odziv

sustava poraste sa 10% na 90% (Slika 3.7). U programu za dijagnostiku definirana je posebna

funkcija koja mjeri vrijeme porasta, odnosno vrijeme od kada korisnik pritisne tipku za

paljenje svijetla do porasta svjetline na određenu vrijednost. Program zatim ispisuje vrijeme

porasta te ukoliko je ono preveliko, znači da je došlo do kvara na starteru neonske lampe.

Slika 3.7. Vrijeme porasta(s lijeva) i isječak iz programa gdje se korisnik upozorava (za

slučaj kada je vrijeme starta predugo)

Budući da je senzor fiksiran na jednom mjestu, na tom mjestu je izmjerena vrijednost

osvjetljenja te se ta vrijednost uzima kao ustaljeno stanje osvijetljenosti prostorije. Mjerenje

ustaljenog stanja vrši se na osnovu informacija s jednog senzora.

Page 33: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

30

Na Slici 3.7 s lijeve strane obilježeno je vrijeme porasta, odnosno vrijeme paljenja rasvjete. S

desne strane prikazano je na koji način program upozorava korisnika ukoliko se cijev kasno

pali.

Simulacija prekida rada lampe prikazana je na Slici 3.8. Fototranzistorom je mjerena je

osvijetljenost prostorije u vremenu od 40 sekundi te su prouzročena dva treptaja sa svrhom da

se provjeri može li fototranzistor detektirati tu nepravilnost odnosno pokvarenu lampu.

Budući da je period uzimanja uzoraka kod ovog mjerenja bio 0.1 s, sve promjene koje su

trajale duže od perioda uzorkovanja su detektirane. Na realiziranom kontroleru period

uzimanja uzoraka još je kraće, te je moguće detektirati promjene reda veličine par

milisekundi.

Slika 3.8. Treperenje u radu neonske žarulje

Page 34: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

4. REALIZACIJA

Realizacija projekta podrazumijevala

modulom i ostalim sklopovljem

realizirati odgovarajuće softversk

Razvijen je računalni program „Diag“

sustavu, a detaljnije je opisan u nastavku.

4.1 Software „Diag“

Program „Diag“ izrađen je u razvojnoj okolini Microsoft Visual Studio 2010

cijelosti je kompatibilan s Windows

programskom jeziku, te se posebno

programom na mikrokontroleru. Bilo je bitno postići potpunu usklađenost ovih dvaju

jer bi i najmanja pogreška u komunikaciji dovela

Slika 4.1. Razvoj

Za grafički prikaz vrijednosti sa senzora korištena je biblioteka ZedGraph

programskom jeziku, a koristi se za crtanje 2D grafova i dijagrama. Moguće je prilagoditi

podrazumijevala je povezivanje Arduino kontrolera s komunikacijskim

modulom i ostalim sklopovljem, te izrada kućišta za cijeli sklop. Također

softverske potpore preko koje će se moći nadzirati cijeli sustav.

Razvijen je računalni program „Diag“, u kojem je grafički prikazano sve što se događa u

, a detaljnije je opisan u nastavku.

“ izrađen je u razvojnoj okolini Microsoft Visual Studio 2010

Windows 7 i novijim operativnim sustavima. Pisan je u C#

, te se posebno vodilo računa o tome da se program izvršava

programom na mikrokontroleru. Bilo je bitno postići potpunu usklađenost ovih dvaju

pogreška u komunikaciji dovela do pucanja programa „Diag“.

Razvoj programa u okolini Visual Studio 2010

Za grafički prikaz vrijednosti sa senzora korištena je biblioteka ZedGraph [17]

programskom jeziku, a koristi se za crtanje 2D grafova i dijagrama. Moguće je prilagoditi

31

je povezivanje Arduino kontrolera s komunikacijskim

, te izrada kućišta za cijeli sklop. Također je potrebno

preko koje će se moći nadzirati cijeli sustav.

u kojem je grafički prikazano sve što se događa u

“ izrađen je u razvojnoj okolini Microsoft Visual Studio 2010 (Slika 4.1.), i u

operativnim sustavima. Pisan je u C#

izvršava paralelno s

programom na mikrokontroleru. Bilo je bitno postići potpunu usklađenost ovih dvaju sustava,

do pucanja programa „Diag“.

programa u okolini Visual Studio 2010

[17]. Pisana je u C#

programskom jeziku, a koristi se za crtanje 2D grafova i dijagrama. Moguće je prilagoditi da

Page 35: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

32

se prikaže više grafova odjednom, a što je najvažnije za ovaj projekt, moguće je crtati graf u

stvarnom vremenu, i time imati grafički uvid u sva prošla i sadašnja stanja senzora. Samo

crtanje vrijednosti na grafu je složen proces i da bi bio moguć potrebno je pravilno sortirati i

prilagoditi vrijednosti te ih pakirati u niz iz kojeg se kasnije crtaju. Proces crtanja se odvija

ciklički u for petlji, na način da se iscrta točka po točka te se zatim pomiče u desno. Samo

crtanje se odvija u klasi timer. Kada Timer otkucava (pokrenut event Timer_tick) izvršava se

metoda ZedGraphControl.AxisChange(). Timer pokrećemo u onom trenutku kada se

uspostavi serijska veza između računala i mikrokontrolera. Brzina crtanja grafa ovisi o

intervalu otkucaja timera i o brzini serijske komunikacije.

Veza između računala i mikrokontrolera ostvarena je preko serijskog porta. Serijski port

zasniva svoj rad na UART (Universal Asynchronous Receiver/Transmitter) kontrolorskom

čipu, koji predstavlja ključnu komponentu serijske komunikacije. Ovaj čip, s jedne

strane prihvaća bajtove podataka od mikroprocesorskog sustava, transformira ih u niz

bitova i šalje bit-po-bit. S druge strane, prihvaća niz bitova koji stižu od nekog

vanjskog uređaja, pakira ih u bajtove i predaje mikroprocesorskom sustavu. Za

komunikaciju se koriste dva pina, Tx - predajni i Rx - prijemni. Na razini UART-a

komunikacija je dvosmjerna (full duplex) što znači da je moguć istovremeni prijem i predaja

podataka.

Microsoft Visual Studio u sebi posjeduje već ugrađenu klasu SerialPort koja u sebi sadrži

metode i evente koji su potrebni za rad programa. Posebno je potrebno istaknuti metodu

GetPortNames() koja dohvaća imena korištenih portova na računalu. Na taj način lako se

odabere port na koji je priključen mikrokontroler putem ComboBoxa, što je omogućilo

korištenje programa na bilo kojem računalu budući da isti uređaj na različitom računalu

rezervira različit port. Na isti način definirana je brzina prijenosa podataka preko serijske

linije odnosno baud rate. Zbog stabilnije komunikacije nRF24L01 modula i mikrokontrolera

brzina prijenosa podataka postavljena je na 57600 bps.

4.2 Opis programa

Grafičko korisničko sučelje omogućava korisniku interakciju s računalom pomoću aktivnih

grafičkih elemenata kao što su tipke (eng. buttons), grafovi, indikatori itd. Grafičko sučelje

predstavlja značajan odmak od sučelja temeljenih na tekstualnom prikazu i unosu. Rad unutar

grafičkog sučelja je intuitivniji i ne zahtjeva prethodno poznavanje tekstualnih naredbi.

Page 36: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

Nakon pokretanja programa nužno je odabrati port preko kojeg se odvija serijska

komunikacija. Program će automatski na grafu početi prikazivati vrijednosti sa senzora.

Moguće je pratiti stanje svakog senzora posebno ili svih senzora skupa na jednom grafu.

problem koji je se javio prilikom iscrtavanja grafa na računalu bio je taj kako posebno

grupirati vrijednosti s jednog senzora, s drugog senzora, vrijeme paljenja rasvjete itd.

Računalo kada prima vrijednosti od mikrokontrolera, ono dobiva sve u jednom paketu. Stoga

je trebalo pronaći način kako odvojiti

predstavlja svjetlinu, koji PIR

Riješiti problem nije bilo moguće samo na računalu ili samo na mikrokontroleru, nego je bilo

bitno sinkronizirati programe, odnosno poslati podatak u takvom obliku da ga računalo može

prepoznati, zatim ih kasnije obraditi.

Slika 4.2. Slanje paketa podataka

Zato je između svake dvije vrijednosti poslane na serijski port umetnut znak „ , “ kao na

4.2. Zatim program „Diag“ prima paket podataka, formira niz znakova

dobivene vrijednosti baš na način da traži znak „ , “.

rama nužno je odabrati port preko kojeg se odvija serijska

e automatski na grafu početi prikazivati vrijednosti sa senzora.

Moguće je pratiti stanje svakog senzora posebno ili svih senzora skupa na jednom grafu.

se javio prilikom iscrtavanja grafa na računalu bio je taj kako posebno

grupirati vrijednosti s jednog senzora, s drugog senzora, vrijeme paljenja rasvjete itd.

Računalo kada prima vrijednosti od mikrokontrolera, ono dobiva sve u jednom paketu. Stoga

rebalo pronaći način kako odvojiti podatke s različitih senzora, a uz to

senzor itd.

Riješiti problem nije bilo moguće samo na računalu ili samo na mikrokontroleru, nego je bilo

e, odnosno poslati podatak u takvom obliku da ga računalo može

kasnije obraditi.

podataka preko serijskog porta i odvajanje vrijednosti senzora na

računalu

Zato je između svake dvije vrijednosti poslane na serijski port umetnut znak „ , “ kao na

4.2. Zatim program „Diag“ prima paket podataka, formira niz znakova

dobivene vrijednosti baš na način da traži znak „ , “.

33

rama nužno je odabrati port preko kojeg se odvija serijska

e automatski na grafu početi prikazivati vrijednosti sa senzora.

Moguće je pratiti stanje svakog senzora posebno ili svih senzora skupa na jednom grafu. Prvi

se javio prilikom iscrtavanja grafa na računalu bio je taj kako posebno

grupirati vrijednosti s jednog senzora, s drugog senzora, vrijeme paljenja rasvjete itd.

Računalo kada prima vrijednosti od mikrokontrolera, ono dobiva sve u jednom paketu. Stoga

a uz to znati koja broj

Riješiti problem nije bilo moguće samo na računalu ili samo na mikrokontroleru, nego je bilo

e, odnosno poslati podatak u takvom obliku da ga računalo može

preko serijskog porta i odvajanje vrijednosti senzora na

Zato je između svake dvije vrijednosti poslane na serijski port umetnut znak „ , “ kao na Slici

4.2. Zatim program „Diag“ prima paket podataka, formira niz znakova – string, i parsira

Page 37: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

Na Slici 4.3. prikazana je glavna forma programa za dijagnostiku i upravljanje.

Na desnoj strani sučelja nalazi se indikator koji je žut kada je uključena rasvjeta, a crven kada

je isključena. Ovdje valja istaknuti da indikator neće promij

prikazana je glavna forma programa za dijagnostiku i upravljanje.

Slika 4.3. Izgled programa

Na desnoj strani sučelja nalazi se indikator koji je žut kada je uključena rasvjeta, a crven kada

Ovdje valja istaknuti da indikator neće promijeniti boju onda kada se pritisne

34

prikazana je glavna forma programa za dijagnostiku i upravljanje.

Na desnoj strani sučelja nalazi se indikator koji je žut kada je uključena rasvjeta, a crven kada

eniti boju onda kada se pritisne

Page 38: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

35

tipka uključi ili isključi, nego tek onda kada se s mikrokontrolera dobije povratna informacija

da je svijetlo stvarno uključeno ili isključeno. Ukoliko korisnik pritišće tipku za paljenje, a

indikator ne reagira, detektira se kvar u rasvjetnom tijelu. Odmah iznad indikatora bilježi se

vrijeme porasta intenziteta svijetla. Vrijeme porasta svjetline važno je za dijagnostiku stanja

neonske cijevi. Definirano je vremenom od pritiska tipke „Upali svijetlo“ do vremena kada

senzor vrati vrijednost određene razine osvjetljenja. U normalnim uvjetima (senzor priključen

na pravu lokaciju) vrijeme ne prelazi 3-4 sekunde maksimalno. Ukoliko se ne upali na vrijeme

prijavljuje se obavijest o grešci.

Stanje PIR senzora prikazano je na tri mjesta: na grafu (plavom bojom), desno od grafa u

tekstualnom obliku i na indikatoru koji je plav ukoliko se detektira pokret, a u suprotnom je

siv. Graf ima vrijednost 50 za stanje LOW (nema pokreta) i 5 za stanje HIGH (kretanje).

Pri testiranju uređaja korištena su dva senzora svijetla, gdje je jedan bio postavljen na sredini

neonske cijevi gdje su zabilježeno manje treperenje, a drugi na kraju cijevi pokazujući veće

smetnje u radu fluorescentne lampe (Slika 4.4). Također mjerenjem je utvrđeno da intenzitet

svijetlosti nije jednak duž cijele cijevi, odnosno da je najjače osvjetljenje oko sredine neonske

lampe (korišteni su isti senzori).

Slika 4.4. Treperenje svijetlosti uz kraj cijevi u odnosu na sredinu

U programu je dodana mogućnost spremanja slike u .jpg datoteku. Također je moguće

spremiti i vrijednosti senzora u .txt datoteku (Slika4.5.), što je korisno kod daljnje obrade

podataka i analize parametara u programskim paketima kao što je Matlab.

Page 39: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

36

Slika 4.5. Spremanje podataka

4.3 Upravljanje

U prethodnom poglavlju je već objašnjen način paljenja i gašenja rasvjetnog tijela, ali samo iz

hardverske perspektive. Da bi uopće mogao dati na svom izlazu 5V i tako pobuditi optokapler

koji dalje otvara relej, mikrokontroler mora dobiti naredbu. Korisnik pali svijetlo klikom na

tipku „Upali Svijetlo“, čime se na serijski port šalje određena vrijednost koju mikrokontroler

zaprima i izdaje naredbu za paljenje. Bilo je potrebno voditi računa o sinkronizaciji svih triju

programa; na računalu, na mikrokontroleru koji radi kad daljinski upravljač i na

mikrokontroleru koji upravlja samom rasvjetom.

Korisnik pritiskom na pritiskom na tipku „Upali svijetlo“ šalje „1“ daljinskom upravljaču,

koji dalje bežičnim putem prosljeđuje naredbu kontroleru koji pali ili gasi rasvjetu. U Tablici

4.1. nalaze se dijelovi koda, paralelno pisani na računalu i na mikrokontrolerima, koji su

vezani isključivo za upravljanje.

Page 40: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

37

Tablica 4.1. Dio koda koji upravlja paljenjem/gašenjem rasvjete

Računalo Daljinski Kontroler

private void Upali_Click(object

sender, EventArgs e)

{

if (SerialPort.IsOpen)

{

SerialPort.Write("1");

}

else

MessageBox.Show("Greška! \n

Niste povezani.");

}

private void Ugasi_Click(object

sender, EventArgs e)

{

if (SerialPort.IsOpen)

{

SerialPort.Write("8");

}

else

MessageBox.Show("Greška!

\nNiste povezani.");

}

radio.stopListening();

// Prekidamo slušanje

if ( c == '1')

{

PaliGasiVrijeme[0] = 1;

radio.write

(&PaliGasiVrijeme, sizeof

(PaliGasiVrijeme) );

//šaljem stanje tipkala

}

if ( c == '8')

{

PaliGasiVrijeme[0] = 0;

radio.write(&PaliGasiVrijeme,

sizeof (PaliGasiVrijeme) ); //

šaljem stanje tipkala

}

radio.startListening();

// Nastavljamo slušati

.read( &PaliGasiVrijeme,

sizeof(PaliGasiVrijeme) );

If(PaliGasiVrijeme[0]==1)

{

stanje = HIGH;

svijetlina[3] = 10;

}

digitalWrite(5, stanje);

/// Svijetlo se pali

4.4 Kućište kontrolera

Oba uređaja imaju svoja zasebna kućišta. Prvi uređaj koji radi kao daljinski u sebi ima manje

komponenti i zbog toga je i manjih dimenzija. U njemu se nalaze Arduino i nRF24L01

primopredajnik, nalazi se na Slici 4.6. Moguće je proširiti mogućnosti daljinskog uređaja

ugradnjom LCD ekrana za prikaz vrijednosti senzora i ugradnjom tipki za direktno

upravljanje rasvjetom.

Page 41: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

38

Slika 4.6. Uređaj za daljinsko upravljanje (prikaz izvana i iznutra)

Kontroler rasvjete je svojim dimenzijama nešto veći od daljinskog. To je ponajprije zbog toga

što u sebi posjeduje više komponenti. Kućište u sebi sadrži Arduino, nRF24L0l za bežičnu

komunikaciju, PIR senzor za detekciju pokreta, relej za upravljanje i konektore za lakše

priključivanje senzora. Na Slici 4.7. s lijeve strane, prikazan je ožičeni kontroler. S lijeve

strane u jedan konektor, spojen je fazni vodič COM (točka na potencijalu 230 V), a u drugi

konektor - NO (normally open), spojena je žica koja dalje vodi do rasvjetnog tijela. Kada relej

preklopi, ove dvije žice se spajaju i pali se rasvjeta. Ovo je najkritičniji dio uređaja zbog toga

što je pod stalnim naponom i jako je bitno voditi računa da su sve žice dobro izolirane, jer u

suprotnom postoji mogućnost strujnog udara ili požara.

Na desnoj strani kontrolera ostavljen je dodatni konektor na koji je moguće priključiti još

jednu neonsku lampu kojom će se upravljati ili neki novi senzor, u slučaju da se želi proširiti

mogućnosti sustava.

Page 42: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

39

Slika 4.7. Kontroler rasvjete(prikaz izvana i iznutra)

4.5 Prednosti i nedostatci realiziranog rješenja

Na kraju valja istaknuti da je ovakvo rješenje upravljanja i dijagnostike cjenovno prihvatljivo

u odnosu na neka alternativna rješenja (Siemens LOGO 12/24 RCo, cijena 848,7 kn) [18].

Sklop je testiran u radnim uvjetima. Cjelokupan sustav sastavljen je od niza relativno jeftinih

dijelova, ali obavlja svoj zadatak jednako dobro kao što bi ga obavljali neki skuplji PLC.

Glavna prednost ovakvoga rješenja nadzora, dijagnostike i upravljanja rasvjetom je svakako

cijena uređaja (Tablica 4.2.) i to što sam po sebi ne zahtjeva ništa osim računala. Cjenovno je

prihvatljiv ponajprije jer je sastavljen od niza jeftinih i lako dostupnih komponenti. Također

treba istaknuti i jako pouzdanu bežičnu komunikaciju između RF uređaja, koji imaju jako brz

odziv i brzo uspostavljaju međusobnu komunikaciju što je jako bitno u slučajevima kada je

potrebno pratiti brze promjene signala.

Nedostatak je svakako otežano programiranje ovakvog kontrolera. Sinkronizacija bežičnih

uređaja, prijenos podataka na računalo, daljnja obrada na računalu nisu jednostavan proces za

nekoga tko se prvi put upušta u ovakvo nešto. Da bi ovaj kontroler dobio neku drugu

namjenu, bilo bi mu potrebno u cijelosti reprogramirati kod, a što je znatno jednostavnije kod

ostalih uređaja na tržištu koji se programiraju pomoću grafičkih blokova, ledder diagrama i sl.

Page 43: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

40

Još jedan od nedostataka ovakvog sustava je i sama sigurnost, budući da komunikacija nije

kodirana, ali je i to moguće realizirati.

Tablica 4.2. Popis elektroničkih komponenti s cjenikom

Naziv Količina Trgovina Mjesec /

Godina Cijena

UNO R3 Development Board

Microcontroller MEGA328P

ATMEGACH340G Compat

fo Arduino

2

eBay

siječanj, 2015

61,35 kn

5V 1-Channel Relay Module

with Optocoupler 1 eBay

siječanj, 2015 7,98kn

Dupont wire jumper cables

20cm 40 eBay

siječanj, 2015 14kn

NRF24L01+ 2.4GHz Wireless

Transceiver Module

2

eBay

travanj, 2015

27,3kn

HC-SR501 IR Pyroelectric

Infrared PIR Motion Sensor

Detector

1

eBay

travanj, 2015

7,15kn

Kućište za kontrolere 2 Bauhaus srpanj, 2015 18 kn

Čahurasta stezaljka,

plastična 1 Bauhaus srpanj, 2015 8 kn

OPTO BP 103-3 (foto

trans.100mA 50V) 2 Chipoteka travanj, 2015 48 kn

Otpornik 4.7k 10 Chipoteka siječanj, 2015 1,8 kn

Led red 3mm 2 Chipoteka siječanj, 2015 1,06

Vijak M3 X 10mm ravni

cilindrični + matica 10 Chipoteka travanj, 2015 2,7kn

Ukupno: 197,34 kn

Page 44: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

4.6 Primjer moguće primjene

Na Slici 4.8. prikazana je moguća

prostoriji. U prostoriji se nalaze tri neonske lampe i dva PIR

Kontroler je moguće podesiti da pali rasvjetu ukoliko se zabilježi pokret preko pir senzora

postavljenih uz neonske lampe.

Slika 4.8

U nadzornoj prostoriji (Slika 4.9

dijagnostiku. Računalo je spojeno s daljinskim uređajem koji komunicira s kontrolerom

rasvjete. Ukoliko dođe do nepravilnosti u radu, program obavještava korisnika koji vrši

nadzor.

primjene

prikazana je moguća implementacija sustava. Slika prikazuje kretanje

laze tri neonske lampe i dva PIR senzora za detekciju pokreta.

podesiti da pali rasvjetu ukoliko se zabilježi pokret preko pir senzora

postavljenih uz neonske lampe.

8. Prikaz prostorije u kojoj se vrši nadzor

lika 4.9.) nalazi se računalo na kojem se izvodi program za

dijagnostiku. Računalo je spojeno s daljinskim uređajem koji komunicira s kontrolerom

rasvjete. Ukoliko dođe do nepravilnosti u radu, program obavještava korisnika koji vrši

41

prikazuje kretanje osobe u

senzora za detekciju pokreta.

podesiti da pali rasvjetu ukoliko se zabilježi pokret preko pir senzora

) nalazi se računalo na kojem se izvodi program za

dijagnostiku. Računalo je spojeno s daljinskim uređajem koji komunicira s kontrolerom

rasvjete. Ukoliko dođe do nepravilnosti u radu, program obavještava korisnika koji vrši

Page 45: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

Slika 4.10 prikazuje sučelje programa za dijagnostiku. S lijeve

zabilježena su neka prošla kretanja u prostoriji, te razine osvjetljenja. S desne strane prikazuje

se trenutno stanje. Indikator PIR

pod 1 i 3 je upaljeno (žuta boja), a svijetlo pod 2 ugašeno (crvena boja).

Slika 4.

Slika 4.9. Nadzorna prostorija

prikazuje sučelje programa za dijagnostiku. S lijeve strane na grafičkom sučelju

zabilježena su neka prošla kretanja u prostoriji, te razine osvjetljenja. S desne strane prikazuje

Indikator PIR 2. je crvene boje što znači da je detektiran pokret. Svijetlo

pod 1 i 3 je upaljeno (žuta boja), a svijetlo pod 2 ugašeno (crvena boja).

Slika 4.10. Stanje u programu za dijagnostiku

42

strane na grafičkom sučelju

zabilježena su neka prošla kretanja u prostoriji, te razine osvjetljenja. S desne strane prikazuje

2. je crvene boje što znači da je detektiran pokret. Svijetlo

Page 46: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

43

5. ZAKLJUČAK

Daljinsko upravljanje i dijagnostika rasvjete je projekt koji zahtjeva mnogo vremena i truda.

Glavna ideja projekta bila je bežičnim putem osigurati upravljanje rasvjetom i prijenos

podataka iz kojih se vrši dijagnostika sustava. Osim u sam razvoj programskog rješenja, dosta

vremena uloženo je u izradu kontrolera i uređaja za daljinsko upravljanje. Bilo je potrebno

smjestiti sve komponente u kućište i osigurati izolaciju da ne dođe do kratkog spoja ili nekog

drugog neželjenog događaja.

Razvojna okolina Arduino pokazala kao se pravi odabir za kontrolu jednostavnih sustava gdje

nije potrebna velika procesorska snaga. U odnosu na ostala hardverska rješenja, dolazi sa već

izvedenim sklopovima perifernim sklopovima (napajanje, serijsku komunikaciju, takt i sl.) te

je na taj način ušteđeno dosta vremena i olakšan sam postupak projektiranja regulatora.

Iako je u radu detaljno opisan kontroler sa svim svojim komponentama, posebno treba

istaknuti komunikacijski modul nRF24L01 zadužen za bežično komuniciranje. Osim jako

dobrih specifikacija, modul nRF24L01 odlikuje niska cijena, a prilikom testiranja nije

zabilježeno niti jedno slučajno pucanje veze (svaki prekid veze bio je izazvan ili lošim

ožičenjem ili predalekim udaljavanjem primopredajnika).

Moguće su daljnje dorade i poboljšanja sustava u vidu poboljšanja upravljanje, nadogradnje

software-a za dijagnostiku (promjena dizajna, poboljšavanje biblioteke za iscrtavanje

grafova). Moguće je realizirati upravljanje cijelim objektom na način da se preko

komunikacijskog modula nRF24l01 poveže s programom „Diag“ i iz njega odvija upravljanje

i nadzor više sustava.

Ovaj sustav svoju primjenu može naći u skladištima, poslovnim prostorima ili dvorištima

obiteljskih kuća gdje može raditi kao alarmni uređaj (detektira svako kretanje, bilježi ga u

programu, izdaje svjetlosno upozorenje i upozorava korisnika).

Pošto fluorescentne žarulje karakterizira veća efikasnost pretvaranja električne energije u

svjetlosnu, njihovom kombinacijom s PIR senzorom pokreta postižu se značajne uštede

električne energije na osvjetljenju prostora.

Iz svega prethodno navedenog može se zaključiti da su predstavljeni kontroler zasnovan na

Arduino platformi i program za dijagnostiku potpuno funkcionalni te je uz neke manje

nadogradnje moguće postići njihov potpuno autonomni način rada.

Page 47: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

44

SAŽETAK

Glavni cilj ovoga rada bio je realizirati sustav koji će bežično upravljati radom rasvjetnih

tijela, kontinuirano pratiti njihov rad te obavještavati ukoliko se primijeti znatna promjena

parametara. Na kontroler je moguće spojiti više rasvjetnih tijela, ali su sva testiranja i

mjerenja zbog jednostavnosti rađena na jednoj neonskoj lampi.

U radu su detaljno opisane sve elektroničke komponente koje su bile potrebne za izradu

kontrolera. Opisano je na koji se način odvija bežična komunikacija između daljinskog

uređaja i kontrolera rasvjete, te na koji način mikrokontroler upravlja električnom rasvjetom.

Predstavljen je komunikacijski modul nRF24L01, način na koji se on programira i povezuje s

mikrokontrolerom.

Da bi se uopće moglo govoriti o obradi signala potrebno je izvršiti pretvorbu iz analognog u

digitalni signal. Komponenta koju koristimo za to je analogno digitalni pretvarač. Nakon što

senzori pošalju vrijednosti mikrokontroleru, izvodi se usrednjavanje podataka, a zatim se te

vrijednosti šalju računalu preko serijskog porta.

Dijagnostika sustava odvija se kroz računalni program „Diag“, gdje se vrijednosti sa senzora

prikazuju grafički i može se točno utvrditi svaka promjena parametara. U programu se može

detektirati treperenje svijetla, slaba osvijetljenost prostorije, kašnjenje u paljenju neonskih

cijevi, kretanje u prostoriji te je sva izvršena mjerenja moguće pohraniti u slikovnom ili

tekstualnom formatu.

KLJUČNE RIJEČI

Arduino, daljinsko upravljanje, dijagnostika, nRF24L01

Page 48: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

45

LITERATURA

[1]. Božičević J.; „Temelji automatike I“, Zagreb, Školska knjiga, 1992.

[2]. Fluorescentne svjetiljke, s Interneta, 20.8.2015,

https://hr.wikipedia.org/wiki/Fluorescentna_cijev

[3] Energetska efikasnost rasvjete, s Interneta, 20.8.2015.

http://www.greenhome.co.me/index.php?IDSP=451&jezik=lat

[4]. Philips katalog sijalica i predspojnih sprava, s Interneta, 27.8.2015.

http://www.elektrotehna-sistem.co.rs/philips.html

[5]. Arduino – HomePage, s Interneta, 24.5.2015.

https://www.arduino.cc/

[6]. ATmega 328P – Atmel Corporation, s Interneta, 24.5.2015.

http://www.atmel.com/devices/atmega328p.aspx

[7]. Bonković, M.; Musić J.; Stančić I.; „Mikroregulatori i ugradbeni mrežni sustavi u

Arduino razvojnom okruženju“, Split, FESB, 2013.

[8]. Mateljan I.; „Programiranje C jezikom“, Split, FESB, 2013.

[9]. Datasheet nRF24L01, s Interneta 20.5.2015.

https://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P

[10]. Beroš S.; „Digitalna instrumentacija, I dio - temelji tehničke i programske

potpore“, Split, FESB, 2008.

[11]. Parametri svjetla u kontekstu javne rasvjete, s interneta, 20.8.2015

http://www.elicom.hr/dokumenti/opcenitojr.pdf

[12]. NPN Silizium BP 103-3 - Fototransistor, s Interneta 20.5.2015.

http://pdf.datasheetcatalog.com/datasheet/siemens/BP103-2.pdf

[13]. Detekcija pokreta primjenom PIR senzora, s Interneta 20.5.2015.

Page 49: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

46

http://www.automatika.rs/projekti/detekcija-pokreta-primenom-pir-senzora.html

[14]. Virtualna učionica diskretnih regulacijskih sustava, s Interneta, 22.5.2015.

http://laris.fesb.hr/digitalno_vodjenje/

[15]. Slapničar P.; „Impulsna i digitalna tehnika“, Split, FESB, 2001.

[16]. Synchronous Averaging, s Interneta, 22.5.2015.

http://azimadli.com/vibman/synchronousaveraging.htm

[17]. Plotting graphs in C# with ZedGraph, s Interneta, 29.6.2015.

https://codeabout.wordpress.com/2012/02/10/plotting-graphs-in-c-with-zedgraph- and-vs-2010/

[18]. Katalog Siemens PLC-ova, s Interneta 20.8.2015.

http://www.imbrija-promet.hr/katalog/siemens/niski-napon/nadzor-upravljanje-i- javljanje/p-logo-12-24rco/

Page 50: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

47

POPIS OZNAKA I KRATICA

AC (eng. Alternating current), izmjenična struja

A/D Analogno/Digitalna pretvorba

Arduino IDE (eng. Arduino Integrated Development Enviroment), Arduino

razvojno okruženje

DC (eng. Direct current), istosmjerna struja

FIFO (eng. First In First Out), metoda upravljanja i organiziranja

podataka na sabirnici

Itd. Kratica od i tako dalje

JPEG (eng. Joint Photographic Experts Group), komprimirani slikovni

format

LSB (eng. least significant bit) najmanje značajan bit

MSB (eng. most significant bit) najviše značajan bit

Npr. Kratica od na primjer

PIR (eng Passive Infrared), senzor pokreta

PLC (eng. Programmable Logic Controller), programabilni logički

regulator

RFID (eng. Radio-frequency identification), tehnologija koja koristi

radio frekvenciju kako bi se razmjenjivale informacije između

prijenosnih uređaja

SPI (eng. Serial Peripheral Interface), serijski protokol za

komunikaciju s perifernim uređajima

USB (eng. Universal Serial Bus), vanjska sabirnica računala

VOIP (eng. Voice over Internet Protocol), komunikacijska tehnologija

koja omogućava prijenos zvučne komunikacije preko Internet

mreže

Page 51: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

48

DODATAK

A. Kod programa za dijagnostiku

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Threading;

using System.IO;

using System.IO.Ports;

using ZedGraph;

namespace DataPlot3

{

public partial class Form1 : Form

{

String COMRx; // string u koji se ispisuje vrijednost s serijskog porta

int NoOfCurves, Samples; // broj grafova(senzora) koja biramo i broj

uzoraka po koliko se prikazuje

int[,] colourList =

{{128,0,0},{0,128,0},{0,0,128},{0,128,128},{128,128,0},{255,0,0},{0,255,0},

{0,0,255},{255,255,0},{255,0,255},{0,255,255}};

List<PointPairList> Data = new List<PointPairList>(); // lista

delegate void SerialDataReceivedDelegate(object sender,

SerialDataReceivedEventArgs e);

delegate void SerialErrorReceivedDelegate(object sender,

SerialErrorReceivedEventArgs e);

public Form1()

{

InitializeComponent();

Page 52: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

49

}

private void Form1_Load(object sender, EventArgs e)

{

saveFileDialog2.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif

Image|*.gif";

saveFileDialog2.Title = "Spremi sliku";

saveFileDialog1.Title = "Spremi tekst";

saveFileDialog1.Filter = "Tekstualna datoteka|*.txt";

// Postavljanje naziva osi X Y

// MAA

ZedGraphControl1.GraphPane.Title.Text = "Vrijeme";

ZedGraphControl1.GraphPane.XAxis.Title.Text = "Uzorci";

ZedGraphControl1.GraphPane.YAxis.Title.Text = "";

ZedGraphControl1.GraphPane.XAxis.Scale.MaxGrace = 0;

ZedGraphControl1.GraphPane.YAxis.MajorGrid.IsVisible = true;

ZedGraphControl1.GraphPane.XAxis.MajorGrid.IsVisible = true;

ZedGraphControl1.GraphPane.Legend.Position = ZedGraph.LegendPos.Right;

}

private void COMConnectBtn_Click(object sender, EventArgs e)

{

COMConnectButton.Enabled = false;

COMPortStatusLight.Value = 3;

if (SerialPort.IsOpen)

{

timer1.Enabled = false;

SerialPort.Close();

Page 53: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

50

COMPortStatusLight.Value = -1;

COMConnectButton.Text = "Povezivanje";

}

else

{

SerialPort.PortName = COMPortComboBox.Text;

SerialPort.BaudRate = 57600; // moguće mijenjati, ali zbog nrf-a

stavljeno ovoliko

try

{

SerialPort.Open();

MessageBox.Show("Povezano\n" + SerialPort.PortName.ToString() +

" " + SerialPort.BaudRate.ToString());

}

catch

{

COMPortStatusLight.Value = -1;

MessageBox.Show("Greška pri povezivanju " +

COMPortComboBox.Text);

}

if (SerialPort.IsOpen)

{

COMPortStatusLight.Value = 1;

COMConnectButton.Text = "Prekini vezu";

Data.Clear();

deleteCurves();

initCurves();

timer1.Enabled = true;

}

}

COMConnectButton.Enabled = true;

} // prepoznavanje i odabir serijskog porta

private void initCurves() // graf, riješena iscrtavanja

{

Page 54: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

51

Samples = int.Parse(SampleTextBox.Text); // broj uzoraka po koliko

crta

NoOfCurves = (int)NoOfDataNumericUpDown.Value; // broj grafova

string[] oznake = { "Fototranzistor", "Fototranzistor", "Detektor

svijetla","Pir senzor" };

for (int j = 0; j < NoOfCurves; j++)

{

PointPairList tempppl = new PointPairList();

for (double x = 0; x < Samples; x++)

{

tempppl.Add(x, 0);

}

Data.Add(tempppl);

ZedGraphControl1.GraphPane.AddCurve(oznake[j] , Data[j],

Color.FromArgb(colourList[j, 0], colourList[j, 1], colourList[j, 2]),

SymbolType.None);

}

}

private void deleteCurves()

{

ZedGraphControl1.GraphPane.CurveList.Clear();

} // brisanje grafa

// event za prikupljanje podataka sa serijskog porta

private void ProcessCOMRx(object sender, EventArgs e)

{

if (!string.IsNullOrEmpty(COMRx))

{

string[] parsed = COMRx.Split(',');

int curveNo;

if (parsed.Count() > ZedGraphControl1.GraphPane.CurveList.Count())

// crta onoliko grafova koliko je zadao

curveNo = ZedGraphControl1.GraphPane.CurveList.Count();

Page 55: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

52

else

curveNo = parsed.Count();

for (int k = 0; k < curveNo; k++)

{

for (int j = ZedGraphControl1.GraphPane.CurveList[k].NPts - 1;

j > 0; j--)

{

ZedGraphControl1.GraphPane.CurveList[k].Points[j].Y =

ZedGraphControl1.GraphPane.CurveList[k].Points[j - 1].Y;

}

double temp = 0;

try

{

temp = double.Parse(parsed[k]);

}

catch

{

RawTextBox.AppendText("Parse Error\n");

}

ZedGraphControl1.GraphPane.CurveList[k].Points[0].X = 0 ;

ZedGraphControl1.GraphPane.CurveList[k].Points[0].Y = temp;

}

string[] s = COMRx.Split(','); // razdvaja se string COMRx po

',' i trazi se član koji određuje vrijeme potrebno za doseg zadane osvijetljenosti

label3.Text = s[4] + " s";

long aa = long.Parse(s[4]);

if (aa> 5)

{

label8.Text = "Provjerite starter";

Page 56: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

53

ovalShape3.BackColor = Color.Red;

}

else

{

ovalShape3.BackColor = Color.LightGray;

label8.Text = "";

}

if (s[3].Equals("5"))

{

label7.Text = "Detektiran pokret";

ovalShape2.BackColor = Color.BlueViolet;

}

else

{

label7.Text = "Nema kretanja";

ovalShape2.BackColor = Color.LightGray;

}

if (s[2].Equals("10"))

{

ovalShape1.BackColor = Color.Yellow;

label4.Text = "Uključeno";

}

else

{

ovalShape1.BackColor = Color.Red;

label4.Text = "Isključeno";

}

RawTextBox.AppendText(COMRx + '\n');

COMRx = "";

}

}

private void ReadLineError(object sender, EventArgs e)

{

Page 57: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

54

RawTextBox.AppendText("Read Line Error\n");

} // javlja gresku ocitanja

private void SerialPort_DataReceived(object sender,

System.IO.Ports.SerialDataReceivedEventArgs e) /// isčitavanje serijskog

{

int BufferLength = SerialPort.BytesToRead;

while (BufferLength > 0 && SerialPort.IsOpen)

{

try

{

COMRx = SerialPort.ReadLine();

this.BeginInvoke(new EventHandler(ProcessCOMRx));

if (SerialPort.IsOpen)

BufferLength = SerialPort.BytesToRead;

}

catch

{

this.BeginInvoke(new EventHandler(ReadLineError));

}

}

}

private void timer1_Tick(object sender, EventArgs e)

{

SerialPort.Write("7");

ZedGraphControl1.AxisChange();

ZedGraphControl1.Invalidate();

} // timer iscrtava

private void Upali_Click(object sender, EventArgs e)

{

if (SerialPort.IsOpen)

Page 58: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

55

{

SerialPort.Write("1");

}

else

MessageBox.Show("Greška! \nNiste povezani.");

} // za paljenje i gasenje

private void Ugasi_Click(object sender, EventArgs e)

{

if (SerialPort.IsOpen)

{

SerialPort.Write("8");

}

else

MessageBox.Show("Greška! \nNiste povezani.");

}

private void COMPortComboBox_DropDown(object sender, EventArgs e)

{

// Prikuplja imena serijskih portova

string[] ports = System.IO.Ports.SerialPort.GetPortNames();

// Čisti comboBox list

COMPortComboBox.Items.Clear();

foreach (string port in ports)

{

.

COMPortComboBox.Items.Add(port);

}

}

private void izlazToolStripMenuItem_Click(object sender, EventArgs e)

{

this.Close();

Page 59: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

56

}

private void probaToolStripMenuItem_Click(object sender, EventArgs e)

{

saveFileDialog1.ShowDialog();

}

private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)

{

using (StreamWriter sw = new StreamWriter(saveFileDialog1.OpenFile()))

{

for (int i = 0; i < RawTextBox.Lines.Length; i++)

{

sw.WriteLine(RawTextBox.Lines[i]);

}

sw.Flush();

// MessageBox.Show("Mjerenja spremljena");

sw.Close();

}

}

private void spremiSlikuToolStripMenuItem1_Click(object sender, EventArgs

e)

{

saveFileDialog2.ShowDialog();

}

private void saveFileDialog2_FileOk(object sender, CancelEventArgs e)

{

string ime = saveFileDialog2.FileName;

ZedGraphControl1.GetImage().Save(ime);

}

}

}

Page 60: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

57

B. Kod uređaja za daljinsko upravljanje

#include <SPI.h>

#include "nRF24L01.h"

#include "RF24.h"

#include "printf.h"

RF24 radio(9,10);

int tipkalo = 6;

char c;

const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

void setup(void)

{

Serial.begin(57600);

printf_begin();

radio.begin();

radio.openWritingPipe(pipes[1]); // otvaranje cijevi za pisanje

radio.openReadingPipe(1,pipes[0]); // otvaranje cijevi za citanje

radio.startListening();

radio.printDetails();

}

void loop(void)

{

if( Serial.available())

{

c = Serial.read();

if ( radio.available() ) // ako ima podataka za preuzet

{

unsigned long svjetlina[5]; // svjetlina[0] - senzor 1;

unsigned long PaliGasiVrijeme[2]; // podaci koji se šalju;

bool done = false; // upravljanje

while (!done)

Page 61: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

58

{

done = radio.read( &svjetlina, sizeof(svjetlina) ); /// očitanje

poslane vrijednosti

delay(2);

}

radio.stopListening();

if ( c == '1')

{

PaliGasiVrijeme[0] = 1;

radio.write( &PaliGasiVrijeme, sizeof(PaliGasiVrijeme) ); //

šaljem stanje tipkala

}

if ( c == '8')

{

PaliGasiVrijeme[0] = 0;

radio.write( &PaliGasiVrijeme, sizeof(PaliGasiVrijeme) ); //

šaljem stanje tipkala

}

radio.startListening();

Serial.print(svjetlina[0]); // prvi fototranz

Serial.print(',');

Serial.print(svjetlina[2]); // drugi fototranz

Serial.print(',');

Serial.print(svjetlina[3]); // svijetlo je li upaljeno ili

ugašeno

Serial.print(',');

Serial.print(svjetlina[1]); // pir senzor

Serial.print(',');

Serial.print(svjetlina[4]); // vrijeme porasta; brzina paljenja

Serial.print(',');

Serial.println(0);

delay(10);

}

}

}

Page 62: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

59

C. Kod kontolera rasvjete

#include <SPI.h>

#include "nRF24L01.h"

#include "RF24.h"

#include "printf.h"

RF24 radio(9,10);

const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

int calibrationTime = 5; //vrijeme potrebno PIR senzoru da se kalibrira

(10-60 sekundi prema datasheetu)

int pirPin = 7; //izlazni pin od pir senzora

int ledPin = 8;

const int numReadings = 10; // broj očitanja koja se usrednjavaju

int readings[numReadings];

int index = 0; // index trenutnog očitanja

int total = 0; // ukupna vrijednost

unsigned long average = 0; // prosjek

const int numReadings1 = 10;

int readings1[numReadings1];

int index1 = 0;

int total1 = 0;

unsigned long average1 = 0;

int inputPin = A0;

int inputPin1 = A2;

long brojac;

int pomocna;

void setup(void)

{

Serial.begin(57600); // početak serijske komunikacije

pinMode(pirPin, INPUT); //PIR

pinMode(ledPin, OUTPUT); //PIR

digitalWrite(pirPin, LOW); //PIR

digitalWrite(ledPin, HIGH);

Page 63: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

60

pinMode(5, OUTPUT); // svijetlo(glavni izlaz), nisam ga

deklarirao

printf_begin();

radio.begin();

printf("calibrating sensor ");

/* for(int i = 0; i < calibrationTime; i++) //PIRRRRR

{

Serial.print(".");

delay(1000);

}

*/

printf(" done");

printf("SENSOR ACTIVE");

for (int thisReading = 0; thisReading < numReadings; thisReading++)

// postavljanje svih očitanja na 0

readings[thisReading] = 0;

for (int thisReading1 = 0; thisReading1 < numReadings1;

thisReading1++)

readings1[thisReading1] = 0;

radio.openWritingPipe(pipes[0]); // otvaranje "cijevi" za pisanje

radio.openReadingPipe(1,pipes[1]); // otvaranje "cijevi" za slušanje

radio.startListening();

radio.printDetails();

brojac= millis();

}

void loop(void)

{

radio.stopListening(); // prvo prestani slušati da može započeti slanje

unsigned long svijetlina[5];

Page 64: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

61

svijetlina[0]= funkcija(analogRead(A0));

svijetlina[2]= funkcija2(analogRead(A1));

svijetlina[4] = 0;

bool stanje;

if( svijetlina[0] < 400 ) // čekanje da dosegne odreñenu vrijednost

osvjetljenja

{

pomocna = millis()- brojac; // pomoćna varijabla

pomocna = pomocna/1000;

}

if( svijetlina[0] > 400 )

{

svijetlina[4]= pomocna;

}

if(digitalRead(pirPin) == HIGH)

{

svijetlina[1] = 5; //PIRRR pokret

}

if(digitalRead(pirPin) == LOW)

{

svijetlina[1] = 50; // PIR nema pokreta

}

radio.write( &svijetlina, sizeof(svijetlina) ); // šalje podatke

radio.startListening(); // Nastavljamo slušati

unsigned long started_waiting_at = millis();

bool timeout = false;

while ( ! radio.available() && ! timeout )

if (millis() - started_waiting_at > 200 )

timeout = true;

if ( timeout ) // ako nije ništa primljeno

Page 65: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

62

{

printf("Svijetlo upaljeno\n\r"); // svijetlo ostaje upaljeno

}

else // inače palimo/ gasimo svijetlo

{

unsigned long PaliGasiVrijeme[2];

radio.read( &PaliGasiVrijeme, sizeof(PaliGasiVrijeme) );

if (PaliGasiVrijeme[0] ==1 )

{

stanje = HIGH;

brojac = millis();

svijetlina[3] = 10; /// Svijetlo se pali

printf("Palim Svijetlo %lu \n\r" ,PaliGasiVrijeme[0]);

}

else if (PaliGasiVrijeme[0] ==0)

{

stanje = LOW;

svijetlina[3] = 0; // Svijetlo se gasi

printf("Gasim Svijetlo %lu \n\r", PaliGasiVrijeme[0]);

}

digitalWrite(5, stanje);

}

}

int funkcija(float x) // funkcija za usrednjavanje

{

total= total - readings[index]; // oduzmemo zadnje očitanje

readings[index] = x; // očitanje sa senzora

total= total + readings[index]; // sumiranje očitanja

index = index + 1; // uvećanje indeksa

if (index >= numReadings) /// ako smo došli do kraja niza

Page 66: daljinsko upravljanje i dijagnostika fluoroscentnih rasvjetnih tijela

63

index = 0; // početak novog niza

average = total / numReadings; // izračunaj prosjek

return average; // vraća prosjek u glavnu funkciju

delay(10); // čekanje izmeñu dva očitanja radi stabilnosti

}

int funkcija2(float x) // ista kao i funkcija jedan ali samo za drugi

senzor

{

total1= total1 - readings1[index1];

readings1[index1] = x;

total1= total1 + readings1[index1];

index1 = index1 + 1;

if (index1 >= numReadings1)

index1 = 0;

average1 = total1 / numReadings1;

return average1;

delay(10);

}