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
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.
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.