zajemanje in obdelava podatkov navti ýne … · kljuþne besede: mikroraþunalniki, sistemi v...

63
UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAýUNALNIâTVO IN INFORMATIKO Simon Raner ZAJEMANJE IN OBDELAVA PODATKOV NAVTIýNE NAVIGACIJSKE NAPRAVE Diplomska naloga Maribor, junij 2008

Upload: others

Post on 18-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERZA V MARIBORU

FAKULTETA ZA ELEKTROTEHNIKO,

RA UNALNI TVO IN INFORMATIKO

Simon Raner

ZAJEMANJE IN OBDELAVA PODATKOV

NAVTI NE NAVIGACIJSKE NAPRAVE

Diplomska naloga

Maribor, junij 2008

I

UNIVERZA V MARIBORUFAKULTETA ZA ELEKTROTEHNIKO,RA UNALNI TVO IN INFORMATIKO2000 Maribor, Smetanova ul. 17

Diplomska naloga visoko olskega programa

ZAJEMANJE IN OBDELAVA PODATKOVNAVTI NE NAVIGACIJSKE NAPRAVE

tudent: Simon Raner

tudijski program: visoko olski, Ra unalni tvo in informatika

Smer: Logika in sistemi

Mentor: red. prof. dr. Matja Colnari

Somentor: izred. prof. dr. Janez Brest

Maribor, junij 2008

II

III

ZAHVALA:

Zahvaljujem se mentorju dr. Matja u Colnari u

za pomo in vodenje pri opravljanju diplomske

naloge. Prav tako se zahvaljujem asistentu dipl.

in . Stanku Morausu za njegovo pomo pri

izdelavi prakti nega dela naloge.

Posebna zahvala velja star em, ki so mi

omogo ili tudij ter me ves as spodbujali in mi

svetovali ob te kih trenutkih tudija.

Zahvaljujem se tudi so olcem, ki so mi prisko ili

na pomo , kadar sem jo potreboval.

IV

ZAJEMANJE IN OBDELAVA PODATKOV

NAVTI NE NAVIGACIJSKE NAPRAVE

Klju ne besede: mikrora unalniki, sistemi v realnem asu, GPS navigacija

UDK: 004.6.031.43(043.2)

Povzetek

V diplomskem delu bomo predstavili zajemanje podatkov navti ne navigacijske naprave

in nadaljnjo obdelavo le-teh s pomo jo mikroprocesorja PIC16F877A in dodatnega vezja.

Izdelali bomo vezje, na katerega bo mogo e preko serijskega vmesnika priklju iti

navigacijsko napravo. To vezje bomo poimenovali 'GPS dekodirnik' in ga bodo sestavljali

naslednji moduli: mikroprocesor, LCD zaslon, serijski vmesnik, tipke, potenciometri in LED

diode. Sestavljeno vezje bo s pomo jo programske opreme sprejemalo in obdelovalo podatke,

ki jih bo sprejelo po serijskem vodilu ter s pomo jo teh podatkov krmililo module na vezju.

To vezje pa bo po serijskem vmesniku tudi po iljalo obdelane podatke drugim napravam v

obliki stavkov po standardu NMEA.

V

CAPTURING AND HANDLING DATA FROM

NAUTICAL NAVIGATION DEVICE

Key words: microcomputers, real time systems, GPS navigation

UDK: 004.6.031.43(043.2)

Abstract

In diploma work capturing the data from nautical device and further handling of those

with the help of microprocessor PIC 16F877A and additional hardware will be presented.

Hardware will be designed, on which will be possible, across the serial interface, to attach the

navigation device. The device will be called ‘GPS decoder’ and it will be combined with the

following modules: microprocessor, LCD screen, serial interface, switches, potentiometers

and LED diodes. Integrated hardware will receive and handle data over the serial bus and with

those data, it will control modules on the hardware. This hardware will then send handled data

over the serial interface to the other devices in the form of sentences of the NMEA standard.

VI

VSEBINA

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

1.1 Opis naloge .............................................................................................................2

2 SISTEM GPS .................................................................................................................3

2.1 Opis delovanja GPS sistema....................................................................................3

2.2 Primer uporabe GPS sistema ...................................................................................4

3 STANDARD NMEA......................................................................................................5

3.1 Opis standarda NMEA-0183 ...................................................................................5

3.1.1 Strojna povezava .............................................................................................5

3.1.2 Splo en format stavkov ...................................................................................6

3.2 Kratek opis stavkov NMEA-0183 ...........................................................................7

3.2.1 Opis standardnih stavkov.................................................................................9

3.2.2 Opis lastni kih stavkov..................................................................................12

4 OSNOVNI DELI NAPRAVE GPS DEKODIRNIK......................................................13

4.1 Mikrokrmilnik PIC 16F877A ................................................................................13

4.2 Serijski vmesnik Maxim MAX233........................................................................15

4.3 LCD zaslon DEM16216........................................................................................16

4.4 Potenciometer .......................................................................................................17

4.5 Stikala...................................................................................................................18

4.6 LED diode ............................................................................................................18

4.7 GPS naprava Garmin GPSmap 176C.....................................................................18

5 VEZJE GPS DEKODIRNIK.........................................................................................21

5.1 Shema vezja GPS dekodirnik ................................................................................21

5.2 Programiranje naprave GPS dekodirnik.................................................................23

5.2.1 Razvojno orodje MPLAB IDE.......................................................................23

5.2.2 Prevajalnik HI-TECH PICC-Lite...................................................................24

5.2.3 Programator MPLAB ICD2...........................................................................25

VII

6 PROGRAMSKI MODUL NAPRAVE GPS DEKODIRNIK.........................................26

6.1 Programski modul za LCD zaslon .........................................................................26

6.2 Programski modul za serijsko komunikacijo..........................................................29

6.3 Programski modul za zakasnitve ...........................................................................30

6.4 Programski modul za kro no vrsto ........................................................................31

6.5 Glavni program naprave GPS dekodirnik ..............................................................32

6.5.1 Inicializacija registrov ...................................................................................32

6.5.2 Pomo ne spremenljivke.................................................................................35

6.5.3 Pomo ne funkcije ..........................................................................................35

6.5.4 Glavna funkcija main() ..................................................................................38

6.6 Glavni program pomo ne naprave.........................................................................40

7 NAPRAVA GPS DEKODIRNIK .................................................................................42

7.1 Delovanje naprave.................................................................................................43

7.2 Priklju itev naprav ................................................................................................47

8 SKLEP .........................................................................................................................48

LITERATURA.....................................................................................................................50

PRILOGE.............................................................................................................................51

VIII

KAZALO SLIK

Slika 3-1 Primer zajetih podatkov GPS naprave Garmin GPSmap 176C.................................8

Slika 4-1 Mikrokrmilnik PIC16F877A ..................................................................................14

Slika 4-2 Shema mikrokrmilnika PIC16F877A......................................................................14

Slika 4-3 Serijski vmesnik MAX233.......................................................................................15

Slika 4-4 Shema serijskega vmesnika MAX233 .....................................................................16

Slika 4-5 LCD zaslon DEM16216.........................................................................................17

Slika 4-6 Shema LCD zaslona DEM16216............................................................................17

Slika 4-7 Potenciometer........................................................................................................18

Slika 4-8 Stikalo ...................................................................................................................18

Slika 4-9 LED dioda (rde a).................................................................................................18

Slika 4-10 GPS naprava Garmin GPSmap 176C...................................................................19

Slika 4-11 Shema podatkovnega kabla za napravo Garmin GPSmap 176C...........................20

Slika 5-1 Shema vezja GPS dekodirnik..................................................................................22

Slika 5-2 Zaslonska slika orodja MPLAB IDE ......................................................................24

Slika 5-3 Programator MPLAB ICD2...................................................................................25

Slika 7-1 GPS dekodirnik......................................................................................................42

Slika 7-2 Pomo no vezje .......................................................................................................43

Slika 7-3 Prikaz izpisa na LCD zaslonu naprave GPS dekodirnik .........................................44

Slika 7-4 Primer stavkov GPS dekodirnika po standardu NMEA...........................................45

Slika 7-5 Prikaz izpisa na LCD zaslonu pomo ne naprave ....................................................46

Slika 7-6 Primer stavkov pomo ne naprave po standardu NMEA..........................................46

Slika 7-7 Prikaz delovanja vseh treh naprav .........................................................................47

IX

UPORABLJENE KRATICE

NMEA - mednarodno pomorsko elektronsko zdru enje (National Marine Electronics

Association)

GPS - sistem globalnega dolo anja polo aja (Global Positioning System)

LCD - zaslon s teko imi kristali (Liquid Crystal Display)

LED - svetle a dioda (Light-Emitting Diode)

CR - znak za prehod v novo vrstico (Carriage Return)

LF - znak za pomik v novo vrstico (Line Feed)

Zajemanje in obdelava podatkov navti ne navigacijske naprave 1

1 UVOD

Navigacijske naprave so dandanes uporabni pripomo ki na ega vsakdanjika. Uporabljajo

se za dolo anje natan nega polo aja in asa kjerkoli na Zemlji. Zelo uporabni so tudi za

na rtovanje dolo ene poti, kamor se ho emo pripeljati z vozilom ali s plovili. V asih so se

ljudje orientirali po planetih in zvezdah ter s pomo jo kompasa, danes pa so jih nadomestili

postopki satelitske navigacije, ki pokrivajo celotno Zemljo in so mnogo bolj natan ni.

Sodobne navigacijske naprave nam podajo veliko informacij o to ki na Zemlji, kjer se

trenutno nahajamo. Podajo nam podatke o zemljepisni irini in zemljepisni dol ini, o

nadmorski vi ini, smeri neba, datum in uro ter e mnoge druge podatke, ki jih potrebujemo za

na namen. Navigacijske naprave so dandanes zelo majhne in dostopne ir emu krogu civilnih

uporabnikov. Besedo navigacijske naprave pogosto nadomesti kratica GPS naprava, ki

pomeni sistem globalnega dolo anja polo aja na Zemlji.

V grobem se delijo na ro ne, cestne in navti ne GPS naprave. Vse seveda delujejo na

podoben na in; pridobivajo podatke iz satelitov in nam jih prikazujejo na prikazovalniku. V

diplomski nalogi se bomo osredoto ili predvsem na navti ne GPS naprave, njihovo delovanje

in uporabo. Navti ne GPS naprave vsebujejo in prikazujejo najve podatkov o trenutni legi na

Zemlji ter ponujajo dodatne mo nosti priklju itve drugih naprav za upravljanje plovila.

Trenutni trend navti nih GPS naprav je, da bi lahko na GPS napravo priklju ili vse druge

naprave, ki bi samodejno krmilile plovilo na osnovi podatkov, ki jih dobijo prav od GPS

naprave. Nekatere naprave, kot so npr. avtopilot, e omogo ajo komunikacijo z GPS napravo,

saj 'razumejo' protokol delovanja GPS naprave in pomen dobljenih podatkov. Pojavile so se

torej potrebe po vmesniku, ki bi razumel protokol delovanja GPS naprav in bi s pomo jo teh

podatkov krmilil druge naprave na plovilu, kot so npr. zagon delovanja motorja, krmiljenje

krmila na plovilu, sprostitev jader na jadrnici, vklop in izklop dolo enih radarjev ter podobno.

2 Simon Raner, Diplomsko delo

Navti ne GPS naprave delujejo po standardu NMEA, ki specificira vmesnik in definira

strukturo stavkov za komunikacijo med razli nimi navti nimi napravami. V diplomski nalogi

bomo opisali standard NMEA-0183, ki ga podpira ve ina navti nih GPS naprav.

1.1 Opis naloge

V diplomski nalogi bomo predstavili zajemanje podatkov iz navti ne navigacijske naprave

Garmin GPSmap 176 in nadaljnjo obdelavo le-teh s pomo jo mikroprocesorja PIC 16F877A

in dodatnega vezja. Izdelali bomo vezje na testni plo ici, na katerega bo mogo e preko

serijskega vmesnika priklju iti navigacijsko napravo. To vezje bomo poimenovali 'GPS

dekodirnik' in ga bodo sestavljali naslednji moduli: mikroprocesor, LCD zaslon, serijski

vmesnik, stikala, potenciometri in LED diode, vse skupaj med seboj povezano v celoto na

testni plo ici. Sestavljeno vezje bo s pomo jo programske opreme sprejemalo in obdelalo

podatke, ki jih sprejme po serijskem vodilu ter s pomo jo teh podatkov krmililo module na

vezju. To vezje pa bo po serijskem vmesniku tudi po iljalo obdelane podatke drugim

napravam v obliki stavkov po standardu NMEA-0183. Ker bo GPS dekodirnik simuliral

delovanje vmesnika na plovilu in ker nimamo na razpolago drugih navti nih naprav, bodo

tipke, LED diode in potenciometri simulirali delovanje ostalih naprav, ki bi jih lahko

priklju ili na to vezje.

Programska oprema na Navigacijskem dekodirniku bo delovala na osnovi prekinitev (ki

jih tvorijo vhodi dekodirnika) in glavnega programa, v katerem se bodo zajeti podatki obdelali

in nato krmilili izhodne linije dekodirnika.

Izdelali pa bomo e dodatno vezje, ki je identi no GPS dekodirniku in bo namenjeno

preizku anju delovanja GPS dekodirnika. To vezje bomo poimenovali 'pomo no vezje'.

Zajemanje in obdelava podatkov navti ne navigacijske naprave 3

2 SISTEM GPS

Navigacijske naprave delujejo na osnovi GPS sistema, ki ga sestavlja GPS sprejemnik

(ponavadi e vgrajen v napravo) in sateliti, iz katerih dobimo podatke o trenutnem polo aju

na Zemlji. Prosto ga lahko uporablja vsak, ki ima ustrezen sprejemnik.

2.1 Opis delovanja GPS sistema

Sistem GPS (Global Positioning System) je satelitski navigacijski sistem, ki se uporablja

za dolo anje natan nega polo aja in asa kjerkoli na zemlji. Sistem GPS je zasnovalo

obrambno ministrstvo ZDA, ki ga tudi upravlja. Sistem sestavlja najmanj 24 satelitov v 6

ravninah tirnic. Vsak od njih Zemljo obkro i dvakrat dnevno na vi ini 20200 km in ima

name eno atomsko uro. Sateliti neprestano oddajajo as (po svoji uri) in podatke o tirnici

gibanja, ki jih dolo ajo zemeljske opazovalnice. Za pridobitev podatkov o zemljepisni dol ini

in irini, nadmorski vi ini ter to nem asu potrebujemo signale tirih satelitov. Iz razlike med

asom sprejema signala in asom njegove oddaje lahko dolo imo razdaljo med sprejemnikom

in satelitom. Nato iz njihovih signalov in notranje baze podatkov ugotovimo mesta satelitov.

Sprejemnik se torej nahaja na sferi, katere sredi e je satelit in katere polmer je dolo en z

razdaljo, ki jo premagajo radijski signali v asu od trenutka oddaje do trenutka sprejema

signala. Ker sprejemnik hkrati sprejema signale iz ve satelitov, je mogo e dolo iti polo aj

sprejemnika na osnovi prese a sfer s posameznih satelitov. Praviloma je za dolo itev

polo aja v tridimenzionalnem prostoru dovolj poznavanje treh sfer, zato bi bilo tudi za

dolo itev polo aja sprejemnika dovolj sprejemati signale s treh satelitov.

4 Simon Raner, Diplomsko delo

2.2 Primer uporabe GPS sistema

Da bi la je razumeli delovanje GPS sprejemnika, bomo opisali nekaj primerov uporabe, ki

jih dandanes sre amo v vsaki navigacijski napravi.

• Prikaz to ne lokacije: Osnovna funkcija GPS sprejemnika je prikaz to ne lokacije

geografskih koordinat sprejemnika. Koordinate so natan ne na 10 metrov (lokacija je

v krogu s polmerom 10m).

• Pot k dolo eni to ki: V sprejemnik vnesemo koordinate cilja in sprejemnik prika e, v

kateri smeri je cilj in koliko je oddaljen. Smer se prika e kot odstopanje od trenutne

smeri gibanja.

• Vodenje po poti: V sprejemnik vnesemo koordinate ve to k in jih med seboj

pove emo. Ko dose emo prvo to ko za ne sprejemnik prikazovati smer k naslednji

to ki in tako naprej.

• Povezava z zemljevidi: Naprednej i sprejemniki imajo nalo ene zemljevide

(predvsem cestne ali pomorske) in na prikazovalniku je prikazan trenutno aktualni

izrez iz zemljevida, polo aj in ostale zgoraj opisane informacije.

• Povezava z avtopilotom: Posebna strojna in programska oprema omogo a povezavo

z avtopilotom (na primer na plovilu) in sprejemnik po vneseni poti krmili avtopilota in

s tem plovilo.

• Lokalni as: Pogosto se uporablja signal iz sistema GPS tudi le za zelo natan no

dolo itev lokalnega asa.

Zajemanje in obdelava podatkov navti ne navigacijske naprave 5

3 STANDARD NMEA

Navti ne navigacijske naprave dobivajo podatke o trenutni legi na Zemlji iz satelitskega

navigacijskega sistema in jih s pomo jo nalo enih kart prikazujejo na prikazovalnik

navigacijske naprave. Teh podatkov, ki jih vidimo na GPS napravi, je ogromno, saj vsebujejo

tudi podatke o trenutni smeri plovila, smer in hitrost vetra, globino morja itd. Te podatke pa

GPS naprava tudi po ilja preko serijskega vmesnika za nadaljnjo uporabo in obdelavo na

osebnem ra unalniku ali kak ni drugi navti ni napravi. Ti podatki so zapisani v vnaprej

dolo enih stavkih. Vsak stavek ima svoj pomen in vsebuje vnaprej dolo ene podatke. V

navti nih GPS napravah se ti stavki oblikujejo po standardu NMEA; to je standard, ki

specificira vmesnik in definira strukturo stavkov za komunikacijo med razli nimi navti nimi

napravami. Poznanih je ve standardov NMEA, razlikujejo pa se po hitrosti prenosa

podatkov, strukturi stavkov in po imenih stavkov. V diplomski nalogi smo raziskali standard

NMEA-0183, saj je ta standard najbolj raz irjen in podpira ga navigacijska naprava, ki jo

uporabljamo v nalogi.

3.1 Opis standarda NMEA-0183

Standard NMEA-0183 omogo a enega govorca in ve poslu alcev na liniji oz. protokolu.

Priporo ena na povezava med napravami je oklopljena sukana parica (Shielded Twisted

Pair – STP kabel). Ta standard ne specificira to no dolo enega spojnika. Priporo ena serijska

povezava govor evega izhoda je standard EIA-422, vendar je povsem kompatibilna s

standardom RS-232, ki smo ga uporabili tudi v diplomski nalogi.

3.1.1 Strojna povezava

Strojna povezava z ra unalnikom ali z drugimi napravami podpira torej standardiziran

serijski prenos po protokolu RS-232, eprav je priporo en standard EIA-422 (RS-422). GPS

6 Simon Raner, Diplomsko delo

napravo smo povezali po standardu RS-232, oddajno linijo GPS naprave smo povezali

direktno s sprejemno linijo na vezju GPS dekodirnik.

eprav se lahko na nekaterih GPS napravah hitrost nastavi ro no, pa standard priporo a

vmesnik, katerega nastavitev hitrosti prenosa podatkov je 4800 bitov na sekundo. Standard

dolo a tudi 8 bitni prenos podatkov, brez paritete, z enim zaklju nim bitom. Vse naprave, ki

podpirajo standard NMEA, morajo podpirati to hitrost in te nastavitve. S to hitrostjo lahko

po ljemo le 480 znakov v eni sekundi in zaradi te omejitve nekatere GPS naprave po ljejo

podatke vsaki dve sekundi, privzeto pa je vsako sekundo.

3.1.2 Splo en format stavkov

Navigacijska naprava po ilja drugim napravam podatke po standard NMEA-0183 v obliki

stavkov, ki jih sestavljajo samo natisljivi znaki in dva nenatisljiva zaklju na znaka (znak za

prehod v novo vrstico <CR> in znak za pomik v novo vrstico <LF>). Vsak stavek je lahko

dolg najve 82 znakov (80 natisljivih znakov in dva zaklju na znaka) in se za ne z znakom '$'

ter kon a z zaklju nima znakoma. Takoj za znakom '$' sledi 5 znakov, ki pomenijo ukaz

stavka (prva dva znaka sta kratici za identiteto naprave, ki stavek po lje; naslednji trije znaki

so kratice za identiteto stavka), za ukazom je znak vejica; naslednji znaki (med seboj lo eni z

vejico) pa pomenijo podatke, ki jih po ilja naprava. Podatki so torej lo eni z vejico, e pa

podatka ni na voljo, pa se kot naslednji znak preprosto zapi e naslednja vejica. Za vsemi

podatki se vstavi e kontrolna vrednost stavka, ki jo sestavljajo znak zvezdica (*) in dva

estnajsti ka znaka, ki predstavljata vrednost operacije ekskluzivni ALI med vsemi znaki v

stavku med prvim znakom $ in znakom *. Za kontrolno vrednostjo se dodata e nenatisljiva

zaklju na znaka. Primer stavka ima torej naslednjo obliko: $ttsss,d1,d2,...,dn*cc <CR><LF> ,

pri katerem velja:

• tt pomeni kratico za identiteto naprave (npr.: GP je kratica za 'GPS

system')

• sss pomeni kratico za identiteto stavka (npr.: RMC je kratica za

'Recommended minimum specific GPS/Transit data)

• d1,d2,...,dn pomenijo podatke za dolo en stavek (npr.:

225446,A,4916.45,N,12311.12,W,000.5,054.7,191198,020.3,E)

Zajemanje in obdelava podatkov navti ne navigacijske naprave 7

• cc pomeni prera unano kontrolno vrednost (checksum) (npr.: 68 – to je

estnajsti ka vrednost, ki predstavlja operacijo ekskluzivni ALI med

znaki v stavku med znakoma $ in *)

Celoten stavek, opisan v primeru, se torej glasi:

$GPRMC,225446,A,4916.45,N,12311.12,W,000.5,054.7,191194,020.3,E*68<CR><LF>

Standard NMEA pa podpira tudi lastni ke stavke, ki pa se razlikujejo po ukazu stavka, saj

je ukaz sestavljen po naslednji obliki: $Pmmms,d1,d2,d3,...,dn*cc <CR><LF> , pri katerem

velja:

• P pomeni veliko rko P in mora biti vedno na prvem mestu ukaza

• mmm pomeni kratico za izdelovalca naprave (npr.: GRM za podjetje Garmin)

• s pomeni kratico za pomen stavka (npr.: M je kratica za 'Map Datum')

• ostali znaki pomenijo enako kot v prej njem primeru

Celoten stavek, opisan v primeru, se torej glasi:

$PGRMM,WGS 84*06<CR><LF>

3.2 Kratek opis stavkov NMEA-0183

GPS naprava po ilja standardne in lastni ke stavke po serijskem vmesniku. V nekaterih

napravah si lahko sami nastavimo, katere podatke naj naprava prikazuje in po ilja drugim

napravam. Primer podrobnega opisa in pomena stavka zgoraj:

$GPRMC,225446,A,4916.45,N,12311.12,W,000.5,054.7,191194,020.3,E*68<CR><LF> ;

kjer posamezen podatek pomeni:

• GP GPS naprava

• RMC priporo ljivi minimalni dolo eni navigacijski podatki

• 225446 as, dolo en ob 22:54:46

• A status podatkov (A=aktiven, V=prost)

• 4916.45,N 49 stopinj 16,45 minut zemljepisne irine, severne (N = North)

8 Simon Raner, Diplomsko delo

• 12311.12,W 123 stopinj 11.12 minut zemljepisne dol ine, zahodne (W = West)

• 000.5 hitrost v vozlih

• 054.7 kot gotove poti v stopinjah

• 191194 datum, dolo en dne 19.11.94

• 020.3 magnetno odstopanje v stopinjah, vzhodno (E = East)

Kadar naprava po lje podatke, po lje vse naenkrat (ve stavkov v enem paketu). Vrstni red

stavkov je zmeraj enak (na enaki napravi). Kateri stavki se bodo poslali, je tudi odvisno od

naprave in proizvajalca naprav, oblika stavkov pa ostaja pri vseh enaka, po standardu NMEA.

Slika 3-1 prikazuje zaslonski posnetek zajetih podatkov iz GPS naprave Garmin GPSmap

176C. Naprava je delovala v simulacijskem na inu, zato imajo nekateri podatki vrednost 0.

Na sliki pa lahko vidimo tudi primer, kadar podatka ni na voljo, in sicer v drugi vrstici ukaza

GPRMB, kjer 4. podatka ni bilo na voljo. Na sliki je primer dveh izpisov podatkov GPS

naprave; prvi izpis, zajet ob 10:04:50 sega od prve vrstice do vklju no enajste; drugi zapis,

zajet ob 10:04:52 pa od dvanajste vrstice do vklju no zadnje vrstice. V izpisu se ne vidita

zaklju na znaka, ker sta nenatisljiva.

Slika 3-1 Primer zajetih podatkov GPS naprave Garmin GPSmap 176C

Zajemanje in obdelava podatkov navti ne navigacijske naprave 9

3.2.1 Opis standardnih stavkov

Primer na sliki 3-1 prikazuje primer podatkov, ki so zajeti direktno iz GPS naprave. Kot

vidimo iz stavkov, je vse podatke poslala GPS naprava. V vsakem stavku so podatki, ki imajo

svoj pomen (nekateri podatki so enaki v ve stavkih, vendar ni nujno, da imajo enak pomen).

Standard NMEA podpira mnogo stavkov [5], v tem poglavju pa bomo opisali le zajete stavke

s slike 3-1.

$GPRMC,100450,V,4501.4453,N,01437.6787,E,0.0,0.0,030408,2.2,E,S*181 2 3 4 5 6 7 8 9 10 11 12 13

RMC priporo ljivi minimalni dolo eni GPS/prehodni podatki

1. 100450 as, dolo en ob 10:04:502. V status podatkov (A=aktiven, V=prost)3. 4501.4453 trenutna lega 45 stopinj 1,4453 minut zemljepisne irine4. N sever (N=sever, S=jug)5. 01437.6787 trenutna lega 14 stopinj 37,6787 minut zemljepisne dol ine6. E vzhod (W=zahod, E=vzhod)7. 0.0 hitrost v vozlih8. 0.0 kot gotove poti v stopinjah9. 030408 datum, dolo en dne 3.4.200810. 2.2 magnetno odstopanje v stopinjah11. E vzhod (W=zahod, E=vzhod)12. S simulator (A=neodvisen, D=diferencialen, E=prera unan, S=simulator)13. 18 kontrolna vrednost stavka

$GPRMB,V,0.00,L, ,MAP,4501.4935,N,01437.6360,E,0.057,327.9, ,V,S*28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

RMB priporo ljivi minimalni dolo eni navigacijski podatki

1. V status podatkov (A=aktiven, V=prost)2. 0.00 napaka poti v miljah3. L usmeriti na levo (L=levo, R=desno)4. trenutna zaporedna izvorna kontrolna to ka5. MAP naslednja zaporedna ciljna kontrolna to ka6. 4501.4935 ciljna to ka – 45 stopinj 1,4935 minut zemljepisne irine7. N sever (N=sever, S=jug)8. 01437.6360 14 stopinj 37,6360 minut zemljepisne dol ine9. E vzhod (W=zahod, E=vzhod)10. 0.057 oddaljenost do cilja potovanja v miljah11. 327.9 pravilna smer k ciljni to ki v stopinjah12. hitrost proti ciljni to ki v vozlih13. V status prihoda (A=prispel, V=ni prispel)14. S simulator (A=neodvisen, D=diferencialen, E=prera unan, S=simulator)15. 28 kontrolna vrednost stavka

10 Simon Raner, Diplomsko delo

$GPGGA,100450,4501.4453,N,01437.6787,E,8,11,2.0,-45.6,M,43.6,M, , *5B 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

GGA fiksni podatki sistema globalnega dolo anja polo aja

1. 100450 as, dolo en ob 10:04:502. 4501.4453 trenutna lega 45 stopinj 1,4453 minut zemljepisne irine3. N sever (N=sever, S=jug)4. 01437.6787 trenutna lega 14 stopinj 37,6787 minut zemljepisne dol ine5. E vzhod (W=zahod, E=vzhod)6. 8 simulacijski na in7. 11 tevilo satelitov, ki jih je sprejemnik zasledil8. 2.0 horizontalna slabitev pozicije9. -45.6 vi ina vi inske tipalke nad/pod morsko gladino10. M merska enota za vi insko tipalko11. 43.6 vi ina geoida nad WGS84 elipsoide12. M merska enota za vi ino geoida13. as v sekundah od zadnje posodobitve DGPS14. zaporedna tevilka postaje DGPS15. 5B kontrolna vrednost stavka

$GPGLL,4501.4453,N,01437.6787,E,100450,V,S*4B1 2 3 4 5 6 7 8

GLL geografska lega – zemljepisna irina/zemljepisna dol ina

1. 4501.4453 trenutna lega 45 stopinj 1,4453 minut zemljepisne irine2. N sever (N=sever, S=jug)3. 01437.6787 trenutna lega 14 stopinj 37,6787 minut zemljepisne dol ine4. E vzhod (W=zahod, E=vzhod)5. 100450 as, dolo en ob 10:04:506. V status podatkov (A=aktiven, V=prost)7. S simulator (A=neodvisen, D=diferencialen, E=prera unan, S=simulator)8. 4B kontrolna vrednost stavka

$GPBOD,327.9,T,325.7,M,MAP, *171 2 3 4 5 6 7

BOD smer – od izvorne to ke do ciljne to ke

1. 327.9 smer k ciljni to ki v stopinjah (od START do DEST)2. T to na smer3. 325.7 smer k ciljni to ki v stopinjah (od START do DEST)4. M magnetna smer5. MAP ciljna kon na kontrolna to ka (DEST)6. izvorna za etna kontrolna to ka (START)7. 17 kontrolna vrednost stavka

Zajemanje in obdelava podatkov navti ne navigacijske naprave 11

$GPBWC,100450,4501.4935,N,01437.6360,E,327.9,T,325.7,M,0.057,N,MAP,S*271 2 3 4 5 6 7 8 9 10 11 12 13 14

BWC smer in razdalja do ciljne to ke

1. 100450 as, dolo en ob 10:04:502. 4501.4935 ciljna to ka – 45 stopinj 1,4935 minut zemljepisne irine3. N sever (N=sever, S=jug)4. 01437.6360 14 stopinj 37,6360 minut zemljepisne dol ine5. E vzhod (W=zahod, E=vzhod)0.0 hitrost v vozlih6. 327.9 smer k ciljni to ki v stopinjah (od START do DEST)7. T to na smer8. 325.7 smer k ciljni to ki v stopinjah (od START do DEST)9. M magnetna smer10. 0.057 oddaljenost do cilja potovanja v miljah11. N navti ne milje (merska enota)12. MAP ciljna kon na kontrolna to ka (DEST)13. S simulator (A=neodvisen, D=diferencialen, E=prera unan, S=simulator)14. 27 kontrolna vrednost stavka

$GPVTG,0.0,T,357.8,M,0.0,N,0.0,K*471 2 3 4 5 6 7 8 9

VTG uspe no opravljena pot in hitrost

1. 0.0 stopinje smeri poti2. T to na smer3. 357.8 stopinje smeri poti4. M magnetna smer5. 0.0 hitrost v vozlih6. N vozli (merska enota)7. 0.0 hitrost v kilometrih na uro8. K kilometri na uro (merska enota)9. 47 kontrolna vrednost stavka

$GPXTE,V,V,0.00,L,N,S*11 1 2 3 4 5 6 7

XTE napaka navzkri ne poti, prera unana

1. V opozorilna zastavica (A=splo no opozorilo, V=SNR opozorilo)2. V status (A=ni v uporabi, V=opozorilna zastavica)3. 0.00 napaka navzkri ne poti obsega4. L smer usmeritve (L=levo, R=desno)5. N enota napake navzkri ne poti (N=navti ne milje)6. S simulator (A=neodvisen, D=diferencialen, E=prera unan, S=simulator)7. 47 kontrolna vrednost stavka

Obstaja e ve standardnih stavkov, ki pa si jih lahko ogledamo v lanku za NMEA

standard [5].

12 Simon Raner, Diplomsko delo

3.2.2 Opis lastni kih stavkov

Standard NMEA-0183 podpira tudi lastni ke stavke, ki jih ustvarijo podjetja GPS naprav,

vsebujejo pa podatke, katere dolo i izdelovalec naprave. Vsak lastni ki stavek se za ne s rko

P. Opis lastni kih stavkov, ki jih lahko vidimo na sliki 3-1, so:

$PGRME,15.0,M,22.5,M,27.0,M*1A1 2 3 4 5 6 7

GRM kratica za podjetje GarminE prera unana napaka polo aja

1. 15.0 prera unana horizontalna napaka polo aja2. M v metrih (merska enota)3. 22.5 prera unana vertikalna napaka polo aja4. M v metrih (merska enota)5. 27.0 celotna sferi na ekvivalentna napaka polo aja6. M v metrih (merska enota)7. 1A kontrolna vrednost stavka

$PGRMZ,-150,f,3*321 2 3 4

GRM kratica za podjetje GarminZ informacije o globini

1. -150 globina2. f v evljih (merska enota)3. 3 razse nost dolo anja polo aja (2=uporabni ka globina, 3=GPS globina)4. 32 kontrolna vrednost stavka

$PGRMM,WGS 84*061 2

GRM kratica za podjetje GarminM datum kartografije

1. WGS 84 trenutno aktiven horizontalni datum (WGS-84, NAD27,...)2. 06 kontrolna vrednost stavka

Zajemanje in obdelava podatkov navti ne navigacijske naprave 13

4 OSNOVNI DELI NAPRAVE GPS DEKODIRNIK

Izdelali smo vezje, s pomo jo katerega zajemamo podatke iz GPS naprave, jih obdelamo

in jih po ljemo drugim napravam. To vezje se imenuje GPS dekodirnik. Vezje sestavljajo

mikrokrmilnik PIC 16F877A, serijski vmesnik MAX 233, LCD zaslon DEM16216,

potenciometri, tipke in LED diode. Vsi elementi so med seboj povezani z kami na razvojni

plo i in delujejo na napetosti +5V. Za pravilno delovanje GPS dekodirnika smo morali na

vezje dodati e nekaj uporov.

4.1 Mikrokrmilnik PIC 16F877A

Mikrokrmilnik je procesna enota ra unalnika, izdelana na eni silicijevi rezini, ki ima na

enem ipu vgrajen mikroprocesor, podatkovni pomnilnik, programski pomnilnik in periferni

vmesnik. Je digitalno vezje, ki deluje v taktu z uro in program izvaja tako, da sledi zaporedju

vnaprej zapisanih ukazov. Glede na trenutni ukaz, ki ga mora izvesti, izvede mno ico

krmilnih signalov, s katerimi upravlja delovanje vseh komponent mikrora unalni kega

sistema.

Mikrokrmilnik PIC 16F877A je RISC mikrokrmilnik, ki pozna 35 ukazov fiksne dol ine.

Lastnosti mikrokrmilnika PIC 16F877A:

• 8Kx14 bitnih besed programskega pomnilnika (FLASH),

• 368 zlogov podatkovnega pomnilnika (registri),

• 256 zlogov elektri no zbrisljivega pomnilnika (EEPROM),

• 33 vhodno/izhodnih priklju kov,

• 3 asovniki (2x8 bit in 1x16 bit),

• 8 analognih vhodov za analogno/digitalno pretvorbo,

• 2 analogna primerjalnika,

14 Simon Raner, Diplomsko delo

• sinhroni in asinhroni serijski vmesnik (RS232),

• 15 prekinitvenih izvorov,

• 40 no no podno je itd.

Na sliki 4-1 lahko vidimo sliko mikrokrmilnika PIC 16F877A. Mikrokrmilnik nima

vgrajene ure takta, zato smo nanj priklju ili 16 MHz uro takta.

Slika 4-1 Mikrokrmilnik PIC16F877A

Slika 4-2 prikazuje shemo mikrokrmilnika PIC 16F877A in njegovih priklju kov.

Slika 4-2 Shema mikrokrmilnika PIC16F877A

Podrobne informacije o mikrokrmilniku so podane v uporabni kem priro niku za

mikrokrmilnik PIC 16F877A [1].

Zajemanje in obdelava podatkov navti ne navigacijske naprave 15

4.2 Serijski vmesnik Maxim MAX233

Podatke med mikroprocesorjem in drugimi napravami lahko prena amo na paralelni in

serijski na in (v diplomski nalogi na serijski na in). Pri serijskem na inu so signali asovno

multipleksirani, obi ajno na eni ali dveh podatkovnih linijah, prenos pa je sinhroniziran z

dodatno sinhronizacijsko linijo. Omogo a prenos na dolge razdalje in je po asnej i od

paralelnega prenosa.

Serijski vmesnik Maxim MAX233 omogo a prenos podatkov na dveh linijah (sprejemna

in oddajna linija) in deluje po standardu RS232. V diplomski nalogi se uporablja za

komunikacijo z GPS napravo in tudi za po iljanje stavkov drugim napravam. Lastnosti

serijskega vmesnika MAX233:

• ve kanalna podpora RS232 oddajnika/sprejemnika,

• 2 oddajni liniji,

• 2 sprejemni liniji,

• omogo a hitrost prenosa podatkov 120 Kbps itd.

Na sliki 4-3 lahko vidimo sliko serijskega vmesnika Maxim MAX233.

Slika 4-3 Serijski vmesnik MAX233

Slika 4-4 prikazuje shemo serijskega vmesnika MAX233 in njegovih priklju kov.

16 Simon Raner, Diplomsko delo

Slika 4-4 Shema serijskega vmesnika MAX233

Podrobne informacije o serijskem vmesniku so podane v uporabni kem priro niku za

ve kanalne serijske vmesnike RS232 [6].

4.3 LCD zaslon DEM16216

LCD zasloni se uporabljajo kot izhodne naprave, saj nam prikazujejo podatke, ki jih

elimo videti. Poznamo ve vrst zaslonov: rno-beli, barvni; zasloni na dotik; enovrsti ni in

ve vrsti ni, itd. V diplomski nalogi uporabljamo dvovrsti ni, enobarvni zaslon z osvetlitvijo.

LCD zaslon DEM16216 lahko prika e 32 znakov (2x16 znakov). Na zaslon izpisujemo

podatke, ki jih zajamemo iz GPS naprave (uro in datum, saj ni ve prostora na zaslonu).

Lastnosti LCD zaslona DEM16216:

• 2x16 znakov, dvovrsti ni,

• 4 bitni in 8 bitni vmesnik,

• 8320 bitov CGROM,

• 64x8 bitov CGRAM,

• 80x8 bitov za 80 znakov DDRAM,

• 16 priklju kov za prenos bitov itd.

Zajemanje in obdelava podatkov navti ne navigacijske naprave 17

Na sliki 4-5 lahko vidimo sliko LCD zaslona DEM16216.

Slika 4-5 LCD zaslon DEM16216

Slika 4-6 prikazuje shemo LCD zaslona DEM16216.

Slika 4-6 Shema LCD zaslona DEM16216

Podrobne informacije o LCD zaslonu so podane v uporabni kem priro niku za LCD

zaslon DEM16216 [3].

4.4 Potenciometer

Potenciometer ali tudi nastavljiv upor se uporablja za zvezno spreminjanje napetosti ali

toka. V nalogi ga uporabljamo za simulacijo spreminjanja poljubne vrednosti, ki bi krmilila

dolo eno napravo na plovilu, kot so: zasuk krmila plovila, dolo anje hitrosti plovila ipd.

Vhodne vrednosti se prera unajo iz analognih v digitalne in se lahko gibljejo med 0

(minimum) in 1023 (maksimum). Na sliki 4-7 lahko vidimo sliko potenciometra.

18 Simon Raner, Diplomsko delo

Slika 4-7 Potenciometer

4.5 Stikala

Stikala so preklopniki med logi no vrednostjo 0 in 1. V nalogi jih uporabljamo za

simulacijo vklopa in izklopa dolo enih naprav na plovilu, kot so: zagon in uga anje motorja

plovila, vklop in izklop radarjev, dvig in spust jader ipd. Ko je stikalo stisnjeno, ima logi no

vrednost 0; ko je stikalo spro eno, ima logi no vrednost 1. V nalogi se stikala uporabljajo

kot vhodne vrednosti. Na sliki 4-8 lahko vidimo sliko stikala.

Slika 4-8 Stikalo

4.6 LED diode

LED diode smo v nalogi uporabili za simulacijo delovanja dolo ene naprave na plovilu; e

dioda sveti, potem tista naprava na plovilu, ki jo nadome a LED dioda, deluje (je v teku) in

e dioda ne sveti, je tista naprava na plovilu v mirovanju (ne te e). LED diode se torej

uporabljajo kot kontrolne izhodne vrednosti. Na sliki 4-9 lahko vidimo sliko LED diode.

Slika 4-9 LED dioda (rde a)

4.7 GPS naprava Garmin GPSmap 176C

Garmin GPSmap 176C je navti na GPS naprava in deluje po standardu NMEA-0183. Iz te

naprave zajemamo podatke in jih nato obdelamo z GPS dekodirnikom. GPS naprava je torej

Zajemanje in obdelava podatkov navti ne navigacijske naprave 19

priklju ena na GPS dekodirnik (oddajni priklju ek GPS naprave je priklju en na sprejemni

priklju ek GPD dekodirnika). GPS dekodirnik zajame vse podatke, ki jih po lje GPS naprava,

vendar obdela in uporabi le tiste, ki jih potrebuje.

Funkcije in lastnosti GPS naprave Garmin GPSmap 176C so:

• 16 barvni zaslon z osvetlitvijo z diagonalo 9.65 cm,

• odstranljiva antena,

• 12 kanalni sprejemnik,

• 128 MB interni pomnilnik,

• 3000 vnosnih kontrolnik to k,

• 2500 pomnilnih to k poti,

• mo nost uporabe kot cestna GPS naprava,

• povezava z ra unalnikom preko podatkovnega kabla,

• podpora standardu NMEA-0183 itd.

Na sliki 4-10 lahko vidimo sliko GPS naprave Garmin GPSmap 176C.

Slika 4-10 GPS naprava Garmin GPSmap 176C

Slika 4-11 prikazuje shemo podatkovnega kabla, ki ga priklju imo na GPS napravo

Garmin GPSmap 176C. V shemi tudi vidimo 'Data Out' linijo, ki pomeni oddajna linija in to

linijo smo povezali z GPS dekodirnikom.

20 Simon Raner, Diplomsko delo

Slika 4-11 Shema podatkovnega kabla za napravo Garmin GPSmap 176C

Podrobne informacije o navigacijski napravi Garmin GPSmap 176C so podane v

uporabni kem priro niku za napravo Garmin GPSmap 176C [4].

Zajemanje in obdelava podatkov navti ne navigacijske naprave 21

5 VEZJE GPS DEKODIRNIK

V prej njem poglavju smo predstavili vse module, ki smo jih uporabili pri napravi GPS

dekodirnik in jih tudi na kratko opisali. Vse module smo dobili na fakulteti. Ko smo se z

mentorjem dokon no dogovorili, kaj bomo naredili za diplomsko nalogo, smo si naredili

pribli no shemo vezja, ki smo jo uporabili za nalogo. Za pomo pri delu smo se dogovorili z

asistentom, zato nam je on naredil to no shemo (na rt) vezja GPS dekodirnik, ki smo ga

morali sestaviti. Dal nam je tudi vse module, ki smo jih potrebovali.

5.1 Shema vezja GPS dekodirnik

Vezje smo sestavili na testni plo ici, kamor smo postavili vse module in jih nato med

seboj povezali z kami. Shemo vezja ter sheme vseh modulov in njihovih priklju kov lahko

vidimo na sliki 5-1. Module smo med seboj povezali tako, kot ka e shema GPS dekodirnika.

Na shemi lahko vidimo e tri dodatne module; vmesnik RS232, ki omogo a komunikacijo z

ra unalnikom; oscilator, ki daje procesorju takt ure (16MHz) in letvice, ki slu ijo za priklop

programatorja. Vsi moduli so priklju eni na napetost +5V.

Mikrokrmilnik torej dela po taktu ure, to je 16 MHz. Med procesorjem in stikali smo

dodali tudi ustrezne upore (33K ), ki poskrbijo za pravilno napetost in stanje stikal. Upore

smo dodali tudi med procesorjem in programatorjem. LED diode in LCD zaslon ter tudi

oddajna linija serijskega vmesnika delujejo kot izhodne linije GPS dekodirnika, vsi ostali

moduli pa delujejo kot vhodne linije.

Kot smo omenili v opisu naloge, smo izdelali e dodatno identi no vezje, ki ga sestavljajo

enaki moduli z enakimi povezavami. Ta naprava se od GPS dekodirnika razlikuje le v

programski opremi.

22 Simon Raner, Diplomsko delo

Slika 5-1 Shema vezja GPS dekodirnik

Zajemanje in obdelava podatkov navti ne navigacijske naprave 23

5.2 Programiranje naprave GPS dekodirnik

Da bi naprava lahko nekaj naredila, jo moramo sprogramirati, za programiranje naprave pa

potrebujemo ustrezno programsko in strojno opremo. Program za mikrokrmilnik napi emo v

ustreznem programskem jeziku, ki ga razume mikrokrmilnik. Za pisanje programske kode

smo uporabili razvojno okolje MPLAB IDE (verzijo 8.0), ki se uporablja za razvoj

programske opreme za dru ino Microchip PIC mikrokrmilnikov. Za programiranje

mikrokrmilnika PIC pa smo uporabili programator MPLAB ICD2, ki omogo a programiranje

in razhro evanje mikrokrmilnikov Microchip.

5.2.1 Razvojno orodje MPLAB IDE

Razvojno orodje MPLAB IDE se uporablja za razvoj programske opreme za Microchip-

ovo dru ino PIC mikrokrmilnikov in dsPIC digitalne signalne kontrolerje. To orodje omogo a

urejanje izvorne kode, prevajanje izvorne kode, analiziranje (razhro evanje) kode in

nalaganje kode na ciljni sistem. Lastnosti orodja MPLAB IDE so:

• urejanje izvorne kode,

• prevajanje in povezovanje izvorne kode,

• vgrajen razhro evalnik in simulator,

• merjenje asa izvajanja,

• prikazuje stanja spremenljivk in registrov,

• programiranje mikrokrmilnikov itd.

Primer zaslonske slike programa MPLAB IDE lahko vidimo na sliki 5-2, ki prikazuje

naslednja okna: urejevalnik izvorne kode, izhodno okno, programski pomnilnik, podatkovni

registri in okno za prikaz trenutnega stanja registrov in spremenljivk.

24 Simon Raner, Diplomsko delo

Slika 5-2 Zaslonska slika orodja MPLAB IDE

Za delo z razvojnim okoljem MPLAB IDE za diplomsko nalogo smo odprli program, nato

kreirali nov projekt s pomo jo vgrajenega arovnika, izbrali mikrokrmilnik in nastavili

nastavitve za jezikovna orodja in lokacije orodja ter nato e poimenovali projekt. Ustvaril se

je nov projekt z nastavitvami, ki smo jih dolo ili. V projektu smo uporabili prevajalnik PICC-

Lite, ki omogo a programiranje programske kode v programskem jeziku C.

5.2.2 Prevajalnik HI-TECH PICC-Lite

Prevajalnik PICC-Lite je dodatek k razvojnemu orodju MPLAB IDE in omogo a pisanje

izvorne kode v programskem jeziku C. Izvorno kodo v programskem jeziku C pa nato

prevede v strojni programski jezik. V diplomski nalogi smo uporabili prosto dostopno

razli ico prevajalnika PICC-Lite 9.60, ki ima omejitve pomnilnika, saj podpira le dve RAM

banki pomnilnika in 2K programskega pomnilnika, zaradi katerih smo imeli pri pisanju

Zajemanje in obdelava podatkov navti ne navigacijske naprave 25

programske opreme precej te av. Program v diplomski nalogi je v celoti napisan v

programskem jeziku C.

5.2.3 Programator MPLAB ICD2

Na vezju so z mikrokrmilnikom povezane letvice, na katere priklju imo programator, s

katerim lahko sprogramiramo mikrokrmilnik. Za programiranje mikrokrmilnika uporabljamo

programator MPLAB ICD2. Programator MPLAB ICD2 pove emo z ra unalnikom preko

serijskega vmesnika USB, na drugi strani pa ga pove emo direktno z mikrokrmilnikom.

MPLAB ICD2 je vgrajen serijski programator in razhro evalnik in se uporablja kot

pripomo ek za prera unavanje, razhro evanje in za programiranje v laboratorijskem okolju.

Lastnosti naprave ICD2 so:

• realno asovno in kora no izvajanje kode,

• opazovanje in spreminjanje registrov, spremenljivk in kontrolnih to k,

• vgrajeni razhro evalnik,

• statusne LED diode,

• MPLAD IDE uporabni ki vmesnik,

• RS-232 ali USB vmesnik za povezavo z osebnim ra unalnikom itd.

MPLAB ICD2 omogo a programiranje podprtih naprav, razhro evanje izvorne kode v

aplikacijah in razhro evanje strojne opreme v realnem asu. Na sliki 5-2 lahko vidimo sliko

programatorja ICD2.

Slika 5-3 Programator MPLAB ICD2

26 Simon Raner, Diplomsko delo

6 PROGRAMSKI MODUL NAPRAVE GPS DEKODIRNIK

Ko smo sestavili vezje, smo se lotili pisanja programske opreme, ki bo krmilila napravo

GPS dekodirnik. Programsko opremo smo pisali v razvojnem okolju MPLAB IDE (verzija

8.0) v programskem jeziku C, ki ga podpira prevajalnik PICC-Lite. V glavni program smo

vklju ili tudi nekatere knji nice, ki se nahajajo v programskem paketu PICC-Lite. Te

knji nice vsebujejo definicijo registrov za dolo en mikrokrmilnik in tudi knji nice, ki

omogo ajo uporabo standardnih funkcij za delo z nizi in podobno. V glavni program smo

vklju ili tudi posamezne programske module, ki krmilijo dolo eno strojno opremo na vezju

GPS dekodirnik. Pomo no vezje uporablja enako programsko opremo kot GPS dekodirnik,

razlikuje se le v glavnem programu.

6.1 Programski modul za LCD zaslon

Programski modul za LCD zaslon sestavljata dve datoteki, in sicer datoteka Lcd.h, v kateri

so navedeni prototipi funkcij in datoteka Lcd.c, v kateri so te funkcije programirane.

Programski modul za upravljanje LCD zaslona vsebuje naslednje funkcije: inicializacija

spremenljivk in registrov, zapis znakov na zaslon, zapis stavkov na zaslon, brisanje LCD

zaslona in postavitev kazalnika na dolo eno mesto. Programski modul za zaslon definira

naslednje priklju ke:

#define LCD_RW RE0 //pisanje/branje na zaslon (0=branje, 1=pisanje)#define LCD_RS RE1 //izbira registra (0=ukazni, 1=podatkovni)#define LCD_EN RE2 //omogo anje pisanja/branja

/* priklju ki za posamezne bite podatkov (8 bitov) */#define L_DATA0 RC0#define L_DATA1 RC1#define L_DATA2 RC3#define L_DATA3 RC4#define L_DATA4 RC5#define L_DATA5 RA2#define L_DATA6 RA4#define L_DATA7 RA5#define LCD_STROBE() ((LCD_EN = 1),(LCD_EN=0)) //preklaplja LCD_EN med 0 in 1

Zajemanje in obdelava podatkov navti ne navigacijske naprave 27

Funkcija lcd_init() nastavi za etne bite zaslona in se mora izvesti, preden za nemo pisati

na zaslon. LCD zaslon je programiran, da deluje v 8-bitnem na inu, kazalnik ne utripa in se

ne vidi na zaslonu, kazalnik se pomika v desno in DDRAM se pove uje za ena.

void lcd_init(){

/* vsi priklju ki so izhodi */ TRISC0 = TRISC1 = TRISC3 = TRISC4 = TRISC5 = TRISA2 = TRISA4 = TRISA5 = 0; TRISE = 0x00; LCD_RS = LCD_EN = LCD_RW = 0;

/* Inicializacija nastavitvenih bitov za 8-bitni na in prenos podatkov */ DelayMs(15); //zakasnitev 15 milisekund zdruzevanjeBitov(0x30); //8-bitni na in LCD_STROBE(); //preklop linije za branje/pisanje DelayMs(5); //zakasnitev 5 milisekund LCD_STROBE(); //preklop linije za branje/pisanje DelayUs(200); //zakasnitev 200 mikrosekund LCD_STROBE(); //preklop linije za branje/pisanje DelayUs(200); //zakasnitev 200 mikrosekund

/* Dodatne nastavitve zaslona */ lcd_write(0x38); //omogo anje dveh vrstic, znak v obliki 5x7 pik lcd_write(0xC); //zaslon vklju en, kazalnik izklju en, utripanje izklju eno lcd_clear(); //funkcija za brisanje vseh znakov zaslona lcd_write(0x6); //kazalnik se pomika v desno in DDRAM se pove uje za 1}

Funkcija zdruzevanjeBitov() sprejme vhodno vrednost velikosti 1 zlog (8 bitov), ki jih

mora zapisati na priklju ke zaslona. En zlog moramo 'razrezati' na 8 bitov in vsak bit podatka

nato prirediti dolo enemu zaporednemu priklju ku procesorja, tako da zaslon dobi teh 8 bitov,

zapisanih po vrsti od prvega do zadnjega.

void zdruzevanjeBitov (unsigned char c){

/* vrednost c razrezemo na bite in jih priredimo izhodnim linijam procesorja */ L_DATA7 = ((c >> 7) & 0x01); //pomik v desno in izvedba operacije 'logi ni in' L_DATA6 = ((c >> 6) & 0x01); L_DATA5 = ((c >> 5) & 0x01); L_DATA4 = ((c >> 4) & 0x01); L_DATA3 = ((c >> 3) & 0x01); L_DATA2 = ((c >> 2) & 0x01); L_DATA1 = ((c >> 1) & 0x01); L_DATA0 = (c & 0x01);}

Funkcija lcd_write() sprejme vhodno vrednost velikosti 1 zlog, po aka nekaj

mikrosekund, da je zaslon pripravljen in nato zapi e na izhodne priklju ke mikrokrmilnika

vrednost, ki jo dobi kot vhod.

28 Simon Raner, Diplomsko delo

void lcd_write(unsigned char c){ DelayUs(40); //zakasnitev 40 mikrosekund zdruzevanjeBitov(c); //vrednost c pretvori v 8 bitov LCD_STROBE(); //preklop linije za branje/pisanje}

Funkcija lcd_putch() sprejme vhodno vrednost velikosti 1 zlog, nastavi izbirni register

na podatkovni register in zapi e vhodno vrednost na izhod mikrokrmilnika.

void lcd_putch(char c){ LCD_RS = 1; //podatkovni register lcd_write( c ); //funkcija za zapis vrednosti c na izhodne priklju ke}

Funkcija lcd_puts() sprejme polje znakov (zlogov), nastavi izbirni register na podatkovni

register in zapi e vhodne vrednosti na izhod mikrokrmilnika.

void lcd_puts(const char * s){ LCD_RS = 1; //podatkovni register

while(*s) //zanka, da se obdelajo vsi vhodni znaki lcd_write(*s++); //zapis trenutne vrednosti s na izhod mikrokrmilnika}

Funkcija lcd_clear() postavi izbirni register na ukazni register, zapi e na izhod

mikrokrmilnika vrednost 0x01, ki zbri e vse znake na zaslonu in nato po aka nekaj

milisekund.

void lcd_clear(void){ LCD_RS = 0; //ukazni register lcd_write(0x1); //zapis na izhodne linije (ukaz za brisanje zaslona) DelayMs(2); //zakasnitev 40 milisekund}

Funkcija lcd_goto() postavi kazalnik na mesto, ki jo dobi kot vhodno vrednost.

void lcd_goto(unsigned char pos){ LCD_RS = 0; //ukazni register lcd_write(0x80+pos); //zapis na izhodne linije (ukaz za postavitev kazalnika)}

Zajemanje in obdelava podatkov navti ne navigacijske naprave 29

6.2 Programski modul za serijsko komunikacijo

Programski modul za serijsko komunikacijo sestavljata dve datoteki, in sicer datoteka

Usart.h, v kateri so navedeni prototipi funkcij in datoteka Usart.c, v kateri so te funkcije

programirane. Programski modul za upravljanje serijske komunikacije vsebuje naslednje

funkcije: branje iz serijskega kanala in pisanje na kanal. Programski modul za serijsko

komunikacijo definira naslednje priklju ke:

#define RX_PIN TRISC7 //priklju ek za sprejemno linijo mikrokrmilnika#define TX_PIN TRISC6 //priklju ek za oddajno linijo mikrokrmilnika/* nastavitev serijske komunikacije in priklju kov */#define init_comms(X)\ RX_PIN = 1; \ TX_PIN = 0; \ SPBRG = DIVIDER; \ RCSTA = (NINE_BITS|0x90); \ TXSTA = (SPEED|NINE_BITS|0x20)

Funkcija putch() sprejme vhodno vrednost velikosti 1 zlog, nato pogleda bit TXIF

(prekinitveni oddajni bit registra PIR1) in e je prazen (vrednost bita = 0), se izvajanje

programa nadaljuje od klica funkcije. e pa je TXIF bit enak 1, potem se v register TXREG

(oddajni register) vpi e vrednost vhodne spremenljivke.

void putch(unsigned char byte){

while(!TXIF) //dokler ni znaka za oddajocontinue; //nadaljevanje na za etku zanke

TXREG = byte; //v oddajni register se zapi e vhodna vrednost}

Funkcija getch() prebere vrednost iz sprejemnega registra (RCREG) in vrne vrednost

velikosti 1 zlog. Funkcija najprej pogleda, e je bit RCIF (prekinitveni sprejemni bit registra

PIR1) prazen. e je 1, potem nam funkcija vrne vrednost registra RCREG.

unsigned char getch(){

while(!RCIF) //dokler ni znak prispelcontinue; //nadaljevanje na za etku zanke

return RCREG; //vrne vrednost sprejemnega registra}

30 Simon Raner, Diplomsko delo

6.3 Programski modul za zakasnitve

Programski modul za zakasnitve sestavljata dve datoteki, in sicer datoteka Delay.h, v

kateri je napisana privzeta funkcija za zakasnitev v mikrosekundah in naveden je prototip

funkcije za izra un zakasnitev v milisekundah, katere funkcija pa se nahaja v datoteki

Delay.c.

Funkcija DelayUs() sprejme vhodno vrednost velikosti 1 zlog, ki predstavlja tevilo

zakasnitve v mikrosekundah. Funkcija definira zakasnitev v mikrosekundah in se prera unava

glede na frekvenco ure, ki jo definiramo na za etku.

#define XTAL_FREQ 16MHZ //definira frekvenco ure

#if XTAL_FREQ >= 12MHZ // e je takt ure ve ji od 12MHZ

#define DelayUs(x){

unsigned char _dcnt; \ _dcnt = (x)*((XTAL_FREQ)/(12MHZ)); \ //prera unana vrednost

while(--_dcnt != 0) \ //dokler ni prera unana vrednost enaka 0 continue; //nadaljuj}#else

#define DelayUs(x){

unsigned char _dcnt; \ _dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1; \ //prera unana vrednost

while(--_dcnt != 0) \ //dokler ni prera unana vrednost enaka 0continue; //nadaljuj

}#endif

Funkcija DelayMs() sprejme vhodno vrednost velikosti 1 zlog, ki predstavlja tevilo

zakasnitve v milisekundah. Funkcija definira zakasnitev v milisekundah in se prera unava

glede na frekvenco ure, ki jo definiramo na za etku.

void DelayMs(unsigned char cnt){#if XTAL_FREQ <= 2MHZ // e je takt ure manj i od 2MHZ

do { DelayUs(996); //izvede se zakasnitev 996 mikrosekund }

while(--cnt);#endif

#if XTAL_FREQ > 2MHZ // e je takt ure manj i od 2MHZ

Zajemanje in obdelava podatkov navti ne navigacijske naprave 31

unsigned char i;do {

i = 4; //pomo na spremenljivkado {

DelayUs(250); // izvede se zakasnitev 250 mikrosekund (4 krat) }

while(--i); }

while(--cnt);#endif}

6.4 Programski modul za kro no vrsto

Programski modul za kro no vrsto sestavljata dve datoteki, in sicer datoteka KroPom.h, v

kateri so navedeni prototipi funkcij, in datoteka KroPom.c, v kateri so te funkcije

programirane. Programski modul za upravljanje kro ne vrste vsebuje naslednje funkcije:

pisanje v kro no vrsto in branje iz kro ne vrste. Programski modul za kro no vrsto definira

polje velikosti 4 zlogov, v katere se shranjujejo vrednosti, ki jih mikrokrmilnik sprejme po

serijski komunikaciji. Kadar podatek prispe po serijskem vmesniku, se zapi e v kro no vrsto

(prekinitveno delovanje). Kro na vrsta deluje kot vmesna shramba podatkov, iz katere si GPS

dekodirnik cikli no (in ne prekinitveno) vzame trenutni podatek, ga obdela in zbri e iz kro ne

vrste. Za uspe no delovanje zadostuje polje velikosti 4 zlogov, saj GPS dekodirnik mnogo

hitreje obdela podatke kot jih GPS naprava po ilja. Programski modul za kro no vrsto

definira naslednje pomo ne spremenljivke:

extern unsigned char ringbuffer[4]; //polje kro ne vrste velikosti 4extern unsigned char getindex; //trenutni indeks za branjeextern unsigned char putindex; //trenutni indeks za pisanjeextern unsigned char buffersize; //trenutna velikost zasedenosti polja

Funkcija putring() sprejme vhodno vrednost velikosti 1 zlog in najprej pogleda, e je v

kro ni vrsti kak no prosto mesto za shranjevanje nove vrednosti. e ni, funkcija vrne

vrednost -1, e pa e je prostor v polju, pa vpi e novo vrednost na trenutno zaporedno prosto

mesto. Pomo ne indekse za delovanje kro ne vrste ustrezno pove a in prestavi.

int putring( char c ){

if (buffersize >= sizeof ringbuffer) //je zasedenost polja enaka velikosti poljareturn -1;

ringbuffer[putindex] = c; //v prosto polje se vpi e vhodna vrednost putindex++; //trenutni indeks za pisanje se pove a za 1

32 Simon Raner, Diplomsko delo

if (putindex >= sizeof ringbuffer) //je trenutni indeks ve ji od velikosti polja putindex = 0; // e je ve ji, postavimo trenutni indeks na 0 buffersize++; //pove amo trenutno velikost polja za 1

return 0;}

Funkcija getring() ustvari pomo no spremenljivko in najprej pogleda, e je v kro ni vrsti

kak na vrednost. e ni, funkcija vrne vrednost -1, e pa je kak no zasedeno polje v kro ni

vrsti, pa prebere trenutno zaporedno vrednost v polju. Pomo ne indekse za delovanje kro ne

vrste ustrezno pomanj a in prestavi.

int getring(void){

char c; //pomo na spremenljivkaif ( !buffersize ) //je kak no zasedeno polje v kro ni vrsti

return -1; buffersize--; //zmanj amo trenutno velikost polja za 1 c = ringbuffer[ getindex ]; //v spremenljivko se zapi e trenutna vrednost getindex++; //trenutni indeks za branje se pove a za 1

if (getindex >= sizeof ringbuffer) //je trenutni indeks ve ji od velikosti polja getindex = 0; // e je ve ji, postavimo trenutni indeks na 0

return c; //funkcija vrne vrednost spremenljivke}

6.5 Glavni program naprave GPS dekodirnik

Glavni programski modul (datoteka GPS.c) vklju uje in povezuje vse prej opisane

programske module in vklju uje knji nico za delo z registri mikrokrmilnika PIC ter knji nice,

ki omogo ajo uporabo standardnih funkcij za delo z nizi in podobno. V glavnem programu so

definirane tudi spremenljivke, ki shranjujejo vrednosti analogno digitalne pretvorbe, vrednosti

stikal ipd., ter pomo ne funkcije, ki skrbijo za prekinitve, izpise podatkov ipd. V glavnem

programu se izvaja neskon na zanka, ki gleda stanje kro ne vrste ( e je polna) in spremlja

asovnik, ki vsako sekundo po lje obdelane informacije na zaslon in na serijski vmesnik.

Prekinitve za asno prekinejo delovanje neskon ne zanke in poskrbijo za delovanje vhodno

izhodnih naprav. V glavnem programu so definirani e ostali moduli naprave GPS dekodirnik.

6.5.1 Inicializacija registrov

Za vhodno izhodne in krmilne naprave je potrebno definirati vse registre in posamezne

bite registrov mikrokrmilnika, ki skrbijo za delovanje vezja GPS dekodirnik. Definirati je

Zajemanje in obdelava podatkov navti ne navigacijske naprave 33

potrebno usmerjenost linije in dodatne lastnosti posamezne naprave, ki je priklju ena na GPS

dekodirnik. V naslednjih opisanih funkcijah so definirani vsi priklju ki in posamezni biti

registrov, ki jih uporabljam pri vezju GPS dekodirnik.

Funkcija InicializacijaStikal() definira vseh 8 bitov vhodno/izhodnega registra PORTB,

ki so programirani kot vhodi mikrokrmilnika in vsebujejo vrednosti stanje stikal, ki so

priklju ena na priklju ke mikrokrmilnika od priklju ka RB0 do RB7. Vsi biti imajo vrednost

1, e nobeno stikalo ni stisnjeno. e pritisnemo dolo eno stikalo, se vrednost tistega bita

postavi na 0. Vrednost registra PORTB izpisujemo tudi v stavek, ki ga po ljemo preko

serijskega vmesnika drugim napravam po standardu NMEA.

void inicializacijaStikal (void) {#define BUTTON0 RB0 //bit 0 od PORTB#define BUTTON1 RB1 //bit 1 od PORTB#define BUTTON2 RB2 //bit 2 od PORTB#define BUTTON3 RB3 //bit 3 od PORTB

#define BUTTON4 RB4 //bit 4 od PORTB#define BUTTON5 RB5 //bit 5 od PORTB#define BUTTON6 RB6 //bit 6 od PORTB#define BUTTON7 RB7 //bit 7 od PORTB#define BUTTON PORTB //PORTB (vseh 8 bitov skupaj)

TRISB = 0xFF; //vsa stikala so vhodi}

Funkcija InicializacijaLED() definira vseh 8 bitov vhodno/izhodnega registra PORTD,

ki so programirani kot izhodi mikrokrmilnika in ponazarjajo vrednost stikal, ki je del stavka

$PSIM1, ki ga naprava sprejme po serijskem vmesniku. LED diode so priklju ene na

priklju ke mikrokrmilnika od priklju ka RD0 do RD7. Vsi biti imajo vrednost 1, e stikalo ni

stisnjeno in vse LED diode svetijo. e stikalo pritisnemo, se vrednost stikal spremeni in

dolo ena LED dioda ugasne.

void inicializacijaLed (void) {#define LED0 RD0 //bit 0 od PORTD#define LED1 RD1 //bit 1 od PORTD#define LED2 RD2 //bit 2 od PORTD#define LED3 RD3 //bit 3 od PORTD#define LED4 RD4 //bit 4 od PORTD#define LED5 RD5 //bit 5 od PORTD#define LED6 RD6 //bit 6 od PORTD#define LED7 RD7 //bit 7 od PORTD#define LED PORTD //PORTD (vseh 8 bitov skupaj)

LED = 0x00; //LED nastavimo na 0 (ugasnemo) TRISD = 0x00; //vse LED diode so izhodi}

34 Simon Raner, Diplomsko delo

Funkcija inicializacijaAD() definira vse registre in posamezne bite registrov, ki so

potrebni za pretvorbo vhodnih analognih signalov v digitalne vrednosti. Vrednost analognega

vhodnega signala se pretvori v ustrezno 10-bitno vrednost, ki jo izpisujemo v stavek, ki ga

po ljemo preko serijskega vmesnika drugim napravam po standardu NMEA.

void inicializacijaAD (void) { ADCON0 = 0x00; //register ADCON0 nadzira operacije A/D modula ADCS1 = 1; //nastavimo interno uro A/D pretvornika ADCS0 = 1; //nastavimo interno uro A/D pretvornika ADON = 1; //omogo imo A/D pretvorbo ADCON1 = 0x00; //register ADCON1 oblikuje funkcije priklju kov ADFM = 1; //nastavimo desno poravnavo zapisa PCFG2 = 1; //analogni priklju ki AN0, AN1 in AN3; ostali so digitalni ADIF = 0; //omogo imo prekinitveno delovanje}

Funkcija inicializacijaPrekinitev() definira vse registre in posamezne bite registrov za

prekinitveno delovanje asovnika, analogno digitalne pretvorbe, stikal in serijskega vmesnika.

Prekinitve za asno prekinejo delovanje glavnega programa in se izvedejo najprej oz. takrat,

ko se zgodijo. Vsako prekinitev moramo omogo iti in jo tudi primerno obdelati.

void inicializacijaPrekinitev (void) { INTCON = 0; //register za upravljanje prekinitev TMR0IE = 1; //omogo anje prekinitev za asovnik ADIE = 1; //omogo anje prekinitev za analogno digitalno pretvorbo RBIE = 1; //omogo anje prekinitev za stikala INTE = 1; //omogo anje zunanjih prekinitev (stikalo) RCIE = 1; //omogo anje prekinitev za serijski vmesnik (sprejem) PEIE = 1; //register za upravljanje perifernih prekinitev GIE = 1; //omogo anje vseh prekinitev (globalno)}

Funkcija inicializacijaCasovnik() definira register za nastavitve asovnika in dodatne

nastavitve. e elimo asovnik uporabiti za zakasnitve za dolo en interval, moramo najprej

izra unati vrednost preddelilnika, ki se izra una po naslednji formuli: frekvenca =

ura/4/preddelilnik/ asovnik, pri kateri je frekvenca = 1/ as. Izra unali smo, da je najbolj

primerna vrednost preddelilnika 128, saj ima najmanj o napako pri zakasnitvi.

void inicializacijaCasovnik (void) { OPTION = 0x06; //preddelilnik postavimo na vrednost 128 in je dodeljen asovniku}

Zajemanje in obdelava podatkov navti ne navigacijske naprave 35

6.5.2 Pomo ne spremenljivke

Pomo ne spremenljivke skrbijo za za asno shrambo podatkov, ki jih obdelujemo in

ustvarjamo. V spremenljivke se shranjujejo vrednosti stikal in analogno/digitalne pretvorbe;

podatki, ki jih dobimo preko serijskega vmesnika; stavki, ki jih tvorimo po standardu NMEA

in e nekaj za asnih pomo nih spremenljivk. Za podatke, ki tvorijo stavke NMEA, smo

ustvarili strukture, za ostale spremenljivke pa smo izbrali tipe, ki zasedajo minimalno

podatkovnega prostora, saj je podatkovni prostor zelo omejen. Izbrali smo naslednje strukture

in pomo ne spremenljivke:

struct { //struktura za prvi programiran stavek NMEAconst char *ime1; //ime ukaza prvega programiranega stavka NMEAunsigned char vrednost_stikal; //vrednost stikalunsigned int ad0,ad1; //vrednost A/D pretvorbe za oba potenciometra

} psimon1; //ime prve strukture

struct { //struktura za drugi programiran stavek NMEAconst char *ime2; //ime ukaza drugega programiranega stavka NMEAconst char *stavek; //poljubni stavek, ki je poljuben

} psimon2; //ime druge strukture

struct { //struktura za prejete podatkeunsigned char cas[7]; // as, ki ga dobimo iz prejetih podatkovunsigned char datum[7]; //datum, ki ga dobimo iz prejetih podatkov

} prejeto; //ime strukture za prejete podatke

const char *xor_chars = "0123456789ABCDEF"; //znaki za prikaz kontrolne vrednostiunsigned char input, znak, xorr; //spremenljivke za delo s prejetimi znakiunsigned char stevec, poslji; //spremenljivki za spremljanje asovnikaunsigned char i, temp; //spremenljivki za izpis podatkovunsigned char ukaz_index, podatki_index, st_parametra; //obdelava prejetih znakovunsigned char ukaz[6], podatki[12]; //obdelava prejetih znakov

unsigned char ringbuffer[ 4 ]; //spremenljivke za kro no vrstounsigned char getindex = 0;unsigned char putindex = 0;unsigned char buffersize = 0;

6.5.3 Pomo ne funkcije

Pomo ne funkcije skrbijo za obdelavo prejetih podatkov in za posamezne izpise podatkov

na zaslon in na oddajno linijo serijskega vmesnika. Zaradi omejitve pomnilni kega prostora

mikrokrmilnika smo obdelali samo nekatere podatke, ki smo jih potrebovali za nadaljnjo

uporabo, vendar pa bi ob ve jem pomnilni kem prostoru dodali zelo podobne ukaze in

obdelal bi vse podatke, ki prihajajo po serijskem vmesniku. V pomo ni funkciji obravnavamo

tudi prekinitve, ki jih ustrezno obdelamo.

36 Simon Raner, Diplomsko delo

Funkcija obdelaj() obdela prejeti NMEA stavek in shrani vrednosti posameznih podatkov

v dolo ene spremenljivke. Funkcija sprejme tri vhodne vrednosti, in sicer: ukaz, podatek in

zaporedno tevilko podatka, ki jih dobi od glavnega programa. Ukaz[] pomeni ukaz stavka

NMEA; pod[] predstavlja dolo en podatek iz stavka NMEA, ki so med seboj lo eni z vejico;

n predstavlja zaporedno tevilko podatka, ki so med seboj lo eni z vejico. V tej funkciji

obdelamo samo stavek z ukazom GPRMC, ki vsebuje uro, datum, zemljepisno irino in

dol ino itd. Iz tega stavka obdelamo podatka za as in datum, ki ga kasneje izpisujemo na

zaslon. Zaradi omejitve pomnilni kega prostora drugih stavkov ne obdelamo, vendar pa bi ob

ve jem pomnilni kem prostoru enostavno obdelali e ostale podatke.

void obdelaj(char ukaz[], char pod[], int n) {if (strcmp(ukaz,"GPRMC")==0) { //ali je vrednost spremenljivke ukaz enaka GPRMC

if (n == 1) { //ali je prispeli podatek prvi v stavku ( as)if (strlen(pod)>1) { //ali obstaja podatek za as

strcpy(prejeto.cas,pod); // e je, ga priredimo spremenljivki za as }

else strcpy(prejeto.cas,"______"); // e ni podatka, izpi emo rtice }

if (n == 9) { //ali je prispeli podatek deveti v stavku (datum)if (strlen(pod)>1) { //ali obstaja podatek za datum

strcpy(prejeto.datum,pod); // e je, ga priredimo spremenljivki za datum }

else strcpy(prejeto.datum,"______"); // e ni podatka, izpi emo rtice } }}

Funkcija izpis_stavek1() ustvari stavek po standardu NMEA in ga hkrati izpisuje na

oddajno linijo serijskega vmesnika. Da bi bila struktura stavka NMEA pravilna, se sproti

ra una e kontrolna vrednost stavka (ekskluzivni ALI med znaki, ki jih po ljemo po serijskem

vmesniku). To vrednost dodamo na koncu stavka, za znakom zvezdica, v estnajsti ki obliki.

Primer stavka, ki ga po ljemo po serijskem vmesniku se glasi:

$PSIM1,255,0750,0474*2D<CR><LF>; pri katerem se ukaz glasi PSIM1, prvi podatek

predstavlja vrednost stikal (255), drugi in tretji podatek pa predstavlja vrednosti analogno

digitalne pretvorbe. Za zvezdico se nahaja kontrolna vrednost stavka v estnajsti ki obliki

(2D). Na koncu dodamo e nenatisljiva znaka (znak za prehod v novo vrstico <CR> in znak

za pomik v novo vrstico <LF>). V tej funkciji se uporabljajo programski ukazi, ki so

definirani v programskem modulu za serijsko komunikacijo.

Zajemanje in obdelava podatkov navti ne navigacijske naprave 37

void izpis_stavek1(void) { xorr = 0; //pomo no spremenljivko za kontrolno vrednost postavimo na 0 putch('$'); //na oddajno linijo zapi emo znak (vsak stavek se za ne z $)

for (i=0; i<strlen(psimon1.ime1); i++) { //izpi emo ime ukaza stavka putch (psimon1.ime1[i]); //na oddajno linijo zapi emo posamezen znak xorr ^= psimon1.ime1[i]; //sproti ra unamo kontrolno vrednost stavka } putch(','); //za ukazom dodamo vejico xorr ^= (','); //sproti ra unamo kontrolno vrednost stavka temp = ((psimon1.vrednost_stikal/100)%10)+48; //prvi znak vrednosti stikal putch(temp); xorr ^= temp; temp = ((psimon1.vrednost_stikal/10)%10)+48; //drugi znak vrednosti stikal putch(temp); xorr ^= temp; temp = (psimon1.vrednost_stikal%10)+48; //tretji znak vrednosti stikal putch(temp); xorr ^= temp; putch(','); //za prvim podatkom dodamo vejico xorr ^= (','); . . . putch('*'); //za zadnjim podatkom dodamo znak zvezdica putch(xor_chars[xorr >> 4]); //prvi znak prera unane kontrolne vrednosti putch(xor_chars[xorr & 0x0F]); //drugi znak prera unane kontrolne vrednosti putch('\r'); //na koncu dodamo e dva zaklju na znaka putch('\n');}

Funkcija izpis_stavek2() kreira stavek po standardu NMEA in ga hkrati izpisuje na

oddajno linijo serijskega vmesnika. Pomen stavka in programska koda te funkcije je zelo

podobna zgoraj opisani funkciji izpis_stavek1(), zato si lahko primer funkcije pogledate v

prilogah.

Funkcija izpis_lcd() se uporablja za izpis prejetih podatkov iz GPS naprave na LCD

zaslon. Na zaslon izpisujemo vrednosti pomo nih spremenljivk za as in datum, katere je

program obdelal v funkciji obdelaj(). V funkciji izpis_lcd() se uporabljajo programski ukazi,

ki so definirani v programskem modulu za LCD zaslon.

void izpis_lcd(void) { lcd_clear(); //zbri emo celoten zaslon lcd_putch(prejeto.cas[0]); //na zaslon zapi emo as (ure) lcd_putch(prejeto.cas[1]); lcd_putch(':'); lcd_putch(prejeto.cas[2]); //na zaslon zapi emo as (minute) lcd_putch(prejeto.cas[3]); lcd_putch(':'); lcd_putch(prejeto.cas[4]); //na zaslon zapi emo as (sekunde) lcd_putch(prejeto.cas[5]); lcd_goto(40); //kazalnik postavimo na za etek druge vrstice lcd_putch(prejeto.datum[0]);//na zaslon zapi emo datum (dan) lcd_putch(prejeto.datum[1]); lcd_putch('.');

38 Simon Raner, Diplomsko delo

lcd_putch(prejeto.datum[2]);//na zaslon zapi emo datum (mesec) lcd_putch(prejeto.datum[3]); lcd_putch('.'); lcd_putch(prejeto.datum[4]);//na zaslon zapi emo datum (leto) lcd_putch(prejeto.datum[5]);}

Funkcija interrupt isr() se uporablja obravnavanje prekinitvenih rutin, ki se izvedejo ob

dolo enem trenutku. V tej funkciji program obdeluje prekinitve za serijski vmesnik, analogno

digitalno pretvorbo, asovnik in stikala. V trenutku, ko pride do prekinitve, se za asno

prekine delovanje glavnega programa in se nadaljuje v stre bi prekinitve. Ko je prekinitev

obdelana, se nadaljuje izvajanje glavnega programa.

void interrupt isr(void) {if(RCIF){ //stre ba prekinitve serijskega vmesnika

input = RCREG; //v spremenljivko damo vrednost registra RCREG putring_int(input); //v kro no vrsto zapi emo znak, ki je prispel }

if(ADIF){ //stre ba prekinitve analogno/digitalne pretvorbeif (CHS0 == 0) { //ali je izbrana A/D pretvorba prvega potenciometra

psimon1.ad0 = (ADRESH<<8)+ADRESL; //v spremenljivko damo 10 bitno vrednost CHS0 = 1; //A/D pretvorbo preklopimo na drugi potenciometer }

else { psimon1.ad1 = (ADRESH<<8)+ADRESL; //v spremenljivko damo 10 bitno vrednost CHS0 = 0; //A/D pretvorbo preklopimo na prvi potenciometer } ADIF = 0; //ponovno omogo imo prekinitev A/D pretvorbe DelayUs(40); //po akamo 40 Us, da se ustrezno preklopi kanal ADGO = 1; //ponovno po enemo A/D pretvorbo }

if (TMR0IF){ //stre ba prekinitve asovnika stevec++; // tevec za asovnik pove amo za 1

if (stevec == 122) { //ali je tevec enak 122 (pomeni zakasnitev 1 sekundo) poslji = 1; //spremenljivko poslji postavimo na 1 (po ene izpis) stevec=0; // tevec za asovnik postavimo na 0 } TMR0IF = 0; //ponovno omogo imo prekinitev asovnika }

if(RBIF){ //stre ba prekinitve stikal (od bita RB4 do RB7) psimon1.vrednost_stikal = PORTB; //v spremenljivko damo vrednost PORTB RBIF=0; //ponovno omogo imo prekinitev stikal }

if(INTF){ //stre ba prekinitve stikala (bit RB0) psimon1.vrednost_stikal = PORTB; //v spremenljivko damo vrednost PORTB INTF=0; //ponovno omogo imo prekinitev stikala }}

6.5.4 Glavna funkcija main()

Funkcija main() najprej pokli e vse pomo ne funkcije, ki inicializirajo registre, nato pa

se pomo nim spremenljivkam dolo ijo za etne vrednosti. V funkciji main() se izvaja

Zajemanje in obdelava podatkov navti ne navigacijske naprave 39

neskon na zanka, ki nenehoma pregleduje stanje kro ne vrste in stanje asovnega intervala.

asovnik je nastavljen tako, da se vrednost pomo ne spremenljivke asovnega intervala

(poslji) vsako sekundo postavi na 1. Ko se to zgodi, se na zaslon in na serijski vmesnik

izpi ejo vsi obdelani podatki. Kro no vrsto pa glavna funkcija main() nenehoma pregleduje,

e vsebuje podatek, ki e ni bil obdelan. Ker so omogo ene prekinitve, ne rabimo posebej

kontrolirati delovanje vhodno/izhodnih naprav in asovnika, saj za to skrbi posebna funkcija.

void main(void){ inicializacijaStikal(); //funkcije za inicializacijo registrov inicializacijaLed(); inicializacijaCasovnik(); inicializacijaAD(); inicializacijaPrekinitev();

lcd_init(); //funkcija za inicializacijo LCD zaslona init_comms(0); //funkcija za inicializacijo serijskega vmesnika i=stevec=0; //za etne vrednosti pomo nih spremenljivk psimon1.ime1="PSIM1"; //ime ukaza prvega stavka NMEA psimon2.ime2="PSIM2"; //ime ukaza drugega stavka NMEA psimon2.stavek="stavek1"; //poljubni stavek drugega stavka NMEA strcpy(prejeto.cas,"______"); //za etna vrednost prejetega asa strcpy(prejeto.datum,"______"); //za etna vrednost prejetega datuma ADGO = 1; //po enemo analogno/digitalno pretvorbo

while(1){ //neskon na zanka psimon1.vrednost_stikal = BUTTON; //spremenljivki priredimo vrednost PORTB

if (buffersize) { //ali je v kro ni vrsti kaki podatek znak = getring_int(); //iz kro ne vrste vzamemo znak za obdelavo

if (znak == '$') { //ali je znak za za etek stavka NMEA ukaz_index = 0; //indeks ukaza postavimo na 0 st_parametra = 1; // tevilko parametra postavimo na 1 podatki_index = 0; //indeks podatkov postavimo na 0

continue; //sko imo na za etek neskon ne zanke }

if (ukaz_index < 6) { //vsak ukaz je dolg 5 znakovif (ukaz_index == 5) { // e je indeks ukaza enak 5

ukaz[ukaz_index] = '\0'; //na konec ukaza dodamo znak za konec niza ukaz_index++; //pove amo indeks ukaza

continue; //sko imo na za etek neskon ne zanke } ukaz[ukaz_index] = znak; //na zaporedno mesto niza ukaz damo znak ukaz_index++; //pove amo indeks ukaza }

else { //za ukazom sledijo podatkiif ((znak == ',') || (znak == '*')) { //vejica ali zvezdica

podatki[podatki_index] = '\0'; //podatku dodamo znak za konec niza podatki_index = 0; //indeks podatkov postavimo na 0 obdelaj(ukaz,podatki,st_parametra); //obdelamo ukaz in podatek st_parametra++; // tevilko parametra pove amo } else { podatki[podatki_index] = znak; //v niz podatek dodamo znak podatki_index++; //pove amo indeks podatka } } }

if (poslji == 1) { //ali je potekel asovni interval 1 sekunda

40 Simon Raner, Diplomsko delo

poslji = 0; //spremenljivko za izpis postavimo na 0 izpis_stavek1(); //na oddajno linijo po ljemo stavek 1 izpis_stavek2(); //na oddajno linijo po ljemo stavek 2 izpis_lcd(); //na LCD zaslon izpi emo podatke } }}

6.6 Glavni program pomo ne naprave

Pomo na naprava, ki je glede strojne opreme enaka napravi GPS dekodirnik, uporablja

enake programske module kot GPS dekodirnik, razlikuje se le programska koda glavnega

programa (datoteka GPS.c), in sicer v funkciji obdelaj() in pri izpisu na zaslon ter pri strukturi

za prejete podatke.

Struktura prejeto vsebuje dve spremenljivki, ki skrbita za shranjevanje dveh vrednosti

analogno/digitalne pretvorbe GPS dekodirnika. Ti dve vrednosti prispeta preko serijskega

vmesnika v stavku po standardu NMEA-0183, ki ga tvori naprava GPS dekodirnik. Ta stavek

vsebuje podatke, ki predstavljajo vrednost stikal in vrednosti dveh analogno/digitalnih

pretvorb.

struct { //struktura za prejete podatke po standardu NMEAchar ad1[5], ad2[5]; //vrednosti obeh analogno/digitalnih pretvorb

} prejeto; //ime strukture za prejete podatke

Funkcija obdelaj() obdela prejeti NMEA stavek, ki ga tvori naprava GPS dekodirnik in

shrani vrednosti posameznih podatkov v dolo ene spremenljivke. Funkcija sprejme tri vhodne

vrednosti, in sicer: ukaz, podatek in zaporedno tevilko podatka, ki jih dobi od glavnega

programa. Ukaz[] pomeni ukaz stavka NMEA; pod[] predstavlja dolo en podatek iz stavka

NMEA, ki so med seboj lo eni z vejico; n predstavlja zaporedno tevilko podatka, ki so med

seboj lo eni z vejico. V tej funkciji obdelamo samo stavek z ukazom PSIM1, ki vsebuje

vrednosti stikal in dve vrednosti analogno/digitalne pretvorbe, ki jih upravljamo na GPS

dekodirniku. Ta funkcija krmili pri iganje LED diod s pomo jo vrednosti stikal ( e vrednosti

stikal ni, se ugasnejo vse diode).

void obdelaj(char ukaz[], char pod[], int n) {if (strcmp(ukaz,"PSIM1")==0) { //ali je vrednost spremenljivke ukaz enaka PSIM1

if (n == 1) { //ali je prispeli podatek prvi v stavku (stikala)

Zajemanje in obdelava podatkov navti ne navigacijske naprave 41

if (strlen(pod)>1) { //ali obstaja podatek za stikala LED = atoi(podat); //na PORTD zapi emo vrednost (pri gemo LED diode) }

else LED = 0x00; // e podatka ni, ugasnemo vse LED diode }

if (n == 2) { //ali je podatek drugi v stavku (prvi A/D)if (strlen(pod)>1) { //ali obstaja podatek za A/D pretvorbo

strcpy(prejeto.ad1,pod); //priredimo spremenljivki za prvi A/D }

else strcpy(prejeto.ad1,"____"); // e ni podatka, izpi emo rtice }

if (n == 3) { //ali je podatek tretji v stavku (drugi A/D)if (strlen(pod)>1) { //ali obstaja podatek za A/D pretvorbo

strcpy(prejeto.ad2,pod); //priredimo spremenljivki za drugi A/D }

else strcpy(prejeto.ad2,"____"); // e ni podatka, izpi emo rtice } }}

Funkcija izpis_lcd() se uporablja za izpis prejetih podatkov iz GPS dekodirnika na LCD

zaslon. Na zaslon izpisujemo vrednosti dveh pomo nih spremenljivk za analogno/digitalni

pretvornik, kateri je program obdelal v funkciji obdelaj(). V funkciji izpis_lcd() se uporabljajo

programski ukazi, ki so definirani v programskem modulu za LCD zaslon.

void izpis_LCD(void) { lcd_clear(); //zbri emo celoten zaslon lcd_puts("AD1="); //na zaslon zapi emo niz znakov lcd_puts(prejeto.ad1); //na zaslon zapi emo niz znakov spremenljivke ad1 lcd_goto(40); //kazalnik postavimo na za etek druge vrstice lcd_puts("AD2="); //na zaslon zapi emo niz znakov lcd_puts(prejeto.ad2); //na zaslon zapi emo niz znakov spremenljivke ad2}

Glavna funkcija main() se od GPS dekodirnika razlikuje le v prirejanju za etnih vrednosti

za spremenljivki v strukturi prejeto in v prirejanju za etnih vrednosti za imena obeh ukazov

kreiranih stavkov NMEA, vrednosti v stavkih pa so enake.

psimon1.ime1="PSIM3"; //ime ukaza prvega stavka NMEApsimon2.ime2="PSIM4"; //ime ukaza drugega stavka NMEAstrcpy(prejeto.ad1,"____"); //za etna vrednost prejete prve A/D pretvorbestrcpy(prejeto.ad2,"____"); //za etna vrednost prejete druge A/D pretvorbe

42 Simon Raner, Diplomsko delo

7 NAPRAVA GPS DEKODIRNIK

Naprava GPS dekodirnik deluje na napetosti +5V, moduli na napravi so med seboj

povezani z kami na testni plo ici, naprava pa za ne delovati s pritiskom na zagonsko

stikalo. Ko pritisnemo na zagonsko stikalo, se naprava ponovno za ene (ponovno se vzpostavi

inicializacija vseh registrov in nastavitev). Enako deluje tudi pomo na naprava. Na sliki 7-1

lahko vidimo sliko GPS dekodirnika in vse module, ki sestavljajo GPS dekodirnik. Zgoraj na

sredini slike 7-1 vidimo LCD zaslon; desno zgoraj vidimo dva potenciometra in zagonsko

stikalo; na sredini slike vidimo mikrokrmilnik, serijski vmesnik, uro in LED diode; spodaj na

sliki vidimo osem stikal; vsi moduli so med seboj povezani z kami in upori.

Slika 7-1 GPS dekodirnik

Zajemanje in obdelava podatkov navti ne navigacijske naprave 43

Pomo na naprava vsebuje enake module in zgleda podobno kot GPS dekodirnik, vendar

pa je LCD zaslon postavljen malce druga e in tudi povezave z kami niso to no enake, kot

na GPS dekodirniku. Primer pomo ne naprave lahko vidimo na sliki 7-2, kjer lahko vidimo

tudi vse module naprave: zgoraj na sliki vidimo 8 stikal; na sredini slike vidimo zagonsko

stikalo, uro, mikrokrmilnik, serijski vmesnik in LED diode; spodaj levo dva potenciometra in

spodaj na sredini LCD zaslon.

Slika 7-2 Pomo no vezje

7.1 Delovanje naprave

GPS dekodirnik deluje na prekinitven na in. To pomeni, da kadar katera vhodno/izhodna

naprava ali mikrokrmilnik izvede kak no spremembo, se ta sprememba takoj obdela na GPS

dekodirniku. GPS dekodirnik torej v ozadju spremlja prekinitvene vektorje, nenehoma pa v

glavnem programu preverja, ali je v kro ni vrsti kak en podatek in e je asovni interval

44 Simon Raner, Diplomsko delo

dosegel 1 sekundo. GPS dekodirnik vsako sekundo po lje po serijskem vmesniku dva stavka

po standardu NMEA. Prvi stavek vsebuje informacije o stanju stikal in stanju

analogno/digitalne pretvorbe, ki jo upravljamo s potenciometrom. Drugi stavek pa vsebuje

poljubni stavek, ki ga dolo imo v programu. Sprejem podatkov po serijskem vmesniku deluje

prekinitveno (kadar prispejo podatki, jih mikrokrmilnik takoj obdela), oddaja podatkov po

serijskem vmesniku pa se zgodi vsako sekundo. Vsako sekundo se zgodi tudi izpis na LCD

zaslon, eprav GPS naprava Garmin GPSmap 176C po lje podatke vsaki dve sekundi.

GPS sprejemnik po ilja podatke preko serijskega vmesnika, katere zajema in obdela GPS

dekodirnik. Oddajna linija GPS sprejemnika je povezana direktno s sprejemno linijo GPS

dekodirnika. Na LCD zaslon naprave GPS dekodirnik se izpisujejo podatki, ki jih dobimo

direktno iz GPS sprejemnika. Zaradi prostorske stiske na LCD zaslonu izpisujemo samo

podatke o uri in datumu, ki jih po lje GPS sprejemnik. V prvi vrstici zaslona je izpisana ura, v

drugi vrstici zaslona pa datum. e teh podatkov ni, so na zaslonu izpisani znaki pod rtaj (_).

Podatki na zaslonu se spremenijo vsaki dve sekundi, saj GPS sprejemnik po lje podatke vsaki

dve sekundi. Primer izpisa lahko vidimo na sliki 7-3, ki prikazuje izpis podatkov na LCD

zaslonu naprave GPS dekodirnik.

Slika 7-3 Prikaz izpisa na LCD zaslonu naprave GPS dekodirnik

GPS dekodirnik pa hkrati vsako sekundo po lje preko oddajne linije podatke o stikalih in

A/D pretvorbah drugim napravam. GPS dekodirnik po lje drugim napravam dva stavka po

standardu NMEA-0183. Primer stavkov lahko vidimo na sliki 7-4, ki prikazuje primer zajetih

stavkov, direktno iz GPS dekodirnika. Ta dva stavka imata ime ukaza PSIM1 in PSIM2, kot

vidimo na sliki. Stavek PSIM1 vsebuje podatke o vrednosti stikal, dveh vrednosti A/D

Zajemanje in obdelava podatkov navti ne navigacijske naprave 45

pretvorbe in na koncu kontrolno vrednost stavka. Stavek PSIM2 pa vsebuje poljuben podatek

in na koncu kontrolno vrednost stavka.

Slika 7-4 Primer stavkov GPS dekodirnika po standardu NMEA

Pomo na naprava deluje podobno, le da sprejema stavke od GPS dekodirnika in na LCD

zaslon izpisuje druge podatke kakor GPS dekodirnik. Pomo na naprava, ki slu i predvsem

preizku anju delovanja GPS dekodirnika, tudi sprejema in obdeluje podatke, ki jih sprejme po

serijskem vmesniku. Sprejemna linija pomo ne naprave je povezana direktno z oddajno linijo

GPS sprejemnika, torej obdeluje podatke, ki jih lahko vidimo na sliki 7-4. Ti podatki krmilijo

delovanje pomo ne naprave, saj se glede na prvi podatek stavka PSIM1 pri igajo in uga ajo

LED diode. Deseti ka vrednost se spremeni v dvoji ko in se zapi e direktno na priklju ke

LED diod (255 deseti ka vrednost pomeni 11111111 dvoji ko vrednost, v tem primeru gorijo

vse LED diode). Druga dva podatka, ki sta del stavka PSIM1, vsebujeta vrednosti

analogno/digitalne pretvorbe dveh potenciometrov, ki sta priklju ena na GPS dekodirnik. Ti

dve vrednosti vsako sekundo izpi emo na LCD zaslon pomo ne naprave. Primer izpisa lahko

vidimo na sliki 7-5, ki prikazuje izpis podatkov na LCD zaslonu pomo ne naprave.

46 Simon Raner, Diplomsko delo

Slika 7-5 Prikaz izpisa na LCD zaslonu pomo ne naprave

Pomo na naprava pa hkrati vsako sekundo po lje preko oddajne linije podatke o stikalih in

A/D pretvorbah drugim napravam. Pomo na naprava po lje drugim napravam dva stavka po

standardu NMEA 0183. Primer stavkov lahko vidimo na sliki 7-6, ki prikazuje primer zajetih

stavkov, direktno iz pomo ne naprave. Ta dva stavka imata ime ukaza PSIM3 in PSIM4, kot

vidimo na sliki. Stavek PSIM3 vsebuje podatke o vrednosti stikal, dveh vrednosti A/D

pretvorbe in na koncu kontrolno vrednost stavka. Stavek PSIM4 pa vsebuje poljuben podatek

in na koncu kontrolno vrednost stavka.

Slika 7-6 Primer stavkov pomo ne naprave po standardu NMEA

Zajemanje in obdelava podatkov navti ne navigacijske naprave 47

7.2 Priklju itev naprav

Na GPS dekodirnik priklju imo GPS sprejemnik Garmin GPSmap 176C in pomo no

napravo. Oddajno linijo GPS sprejemnika priklju imo na sprejemno linijo GPS dekodirnika,

oddajno linijo GPS dekodirnika pa priklju imo na sprejemno linijo pomo ne naprave. Tako se

na GPS dekodirniku obdelujejo in izpisujejo podatki, ki jih po ilja GPS sprejemnik, na

pomo ni napravi pa se obdelujejo in izpisujejo podatki, ki jih po ilja GPS dekodirnik. Prikaz

delovanja vseh treh naprav lahko vidimo na sliki 7-4, ki prikazuje GPS sprejemnik, GPS

dekodirnik in pomo no napravo, vse skupaj povezane v celoto.

Slika 7-7 Prikaz delovanja vseh treh naprav

Na GPS dekodirnik bi lahko priklju ili katerokoli napravo, ki komunicira z drugimi

napravami po standardu NMEA-0183 in rezultati bi bili enaki.

48 Simon Raner, Diplomsko delo

8 SKLEP

Raziskovanje podro ja navti nih navigacijskih naprav mi je e od nekdaj bilo zelo

zanimivo, zato sem si diplomsko nalogo izbral iz tega podro ja. Raziskali smo standarde, po

katerih navti ne naprave med seboj komunicirajo in izdelali napravo, ki je sposobna zajemati

podatke ter jih tudi ustrezno obdelati. Ta naprava, ki smo jo poimenovali GPS dekodirnik, je

namenjena prikazovanju podatkov, ki jih po ilja navigacijska naprava in tudi krmiljenju

celotnega plovila, katerega bi upravljal zgolj GPS dekodirnik. Nekatere navti ne naprave so

e sposobne komunicirati med seboj, vendar pa na njih ne moremo priklju iti katerekoli

naprave. GPS dekodirnik omogo a, da nanj priklju imo katerokoli napravo, ki jo ho emo

avtomatizirati. GPS dekodirnik je zaenkrat namenjen le simulaciji upravljanja naprav, vendar

pa bi ob priklju itvi pravih naprav na priklju ke GPS dekodirnika lahko povsem normalno

krmilili naprave s pomo jo GPS dekodirnika.

GPS dekodirnik je sestavljen na testni plo ici, moduli pa so med seboj povezani z

kami. V kon ni izvedbi bi GPS dekodirnik sestavil tudi na tiskanem vezju, vendar je za

prototip o ena izvedba bolj prakti na, saj je dodajanje modulov la je. Programski modul je

sestavljen iz razli nih programskih modulov, katere se da preprosto spremeniti za kak ne

druge naloge, prav tako pa lahko dodajamo programske gonilnike za dodatne module.

Pri programiranju programske opreme smo naleteli na ve te av, kot so npr.: te ave s

stre enjem prekinitvenih rutin; veliko te av nam je povzro ala velikost podatkovnega

pomnilnika, saj je bil le-ta zelo omejen; veliko te av nam je povzro alo tudi delovanje LCD

zaslona, saj je pri sestavljenih sistemih lahko problem tudi v povezavi z mikrokrmilnikom in

zato ni vedno jasno, ali deluje nepravilno programska ali strojna oprema. Te te ave smo

uspe no re ili in tako je nastalo delujo e vezje, ki zajema in obdeluje podatke, ki jih dobi po

serijskem vmesniku in tudi upravlja vhodno/izhodne naprave.

Zajemanje in obdelava podatkov navti ne navigacijske naprave 49

Vezje GPS dekodirnik bi lahko tudi raz irili z dodatnimi moduli, kot so npr.: brez na

komunikacija z drugimi napravami, dodali bi lahko ve ji zaslon in na njem izpisovali vse

podatke, ki nas zanimajo. Dodali bi lahko tudi razne krmilnike za dodatne vhodno/izhodne

naprave, ki bi dodatno olaj ala opravila na plovilu. Na GPS dekodirnik lahko priklju imo tudi

druge naprave, ki podpirajo standard NMEA.

Opravili smo vse cilje, ki smo si jih zadali na za etku naloge. Osvojili smo veliko novih

spoznanj na podro ju navti ne navigacije in navigacije nasploh. Podrobneje smo spoznali tudi

delovanje mikrokrmilnika PIC in modulov, ki smo jih vklju ili v diplomsko nalogo.

50 Simon Raner, Diplomsko delo

LITERATURA

[1] Microchip, PIC16F87XA; Data Sheet, Microchip Technology Incorporated, ZDA,

2001.

[2] HI-TECH Software, PICC-Lite Compiler, Microchip Technology Incorporated,

Avstralija, 2007.

[3] Display Elektronik GmbH, LCD Module; DEM 16216 SYH-LY, izdaja 1, 2003.

[4] Garmin, GPSMAP 176/176C, revizija C, Garmin International, Taiwan, 2005.

[5] P. Bennett, http://vancouver-webpages.com/peter/nmeafaq.txt, The NMEA FAQ,

verzija 6.6, 2008.

[6] Maxim, +5V-Powered, Multichannel RS232Drivers/Receivers, revizija 11, Maxim

Integrated Products, ZDA, 2003.

[7] M. Colnari , D. Verber, Mikroprocesorji, prva izdaja, Tehni ka fakulteta, Slovenija,

2000.

[8] A. Berger, Embedded Systems Design; An Introduction to Processes, Tools and

Techniques, CMP Books, ZDA, 2002.

[9] A Burns, A. Wellings, Real-Time Systems and Programing Languages, izdaja 2,

Velika Britanija, 1997.

Zajemanje in obdelava podatkov navti ne navigacijske naprave 51

PRILOGE

V priloge smo dodali zgo enko, na kateri so zapisane naslednje stvari:

• programska koda GPS dekodirnika,

• programska koda pomo ne naprave,

• shema vezja,

• slike GPS dekodirnika in pomo ne naprave in

• diplomska naloga.