75
Gregor Tuljak NADGRANJA SENZORIKE INVALIDSKEGA VOZIČKA VOIC Z DIGITALNIM KOMPASOM Magistrsko delo Maribor, september 2013

Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Gregor Tuljak

NADGRANJA SENZORIKE INVALIDSKEGA VOZIČKA VOIC Z DIGITALNIM KOMPASOM

Magistrsko delo

Maribor, september 2013

Page 2: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

NADGRANJA SENZORIKE INVALIDSKEGA VOZIČKA

VOIC Z DIGITALNIM KOMPASOM

Magistrsko delo

Študent: Gregor Tuljak

Študijski program: študijski program 2. stopnje

Mehatronika

Mentor FERI: red. prof. dr. Riko Šafarič

Mentor FS: izr. prof. dr. Karl Gotlih

Page 3: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

I

Page 4: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

II

ZAHVALA

Zahvaljujem se red. prof. dr. Riku Šafariču

in izr. prof. dr. Karlu Gotlihu za pomoč in

koristne nasvete pri nastajanju magistrskega

dela.

Za podporo se zahvaljujem se tudi svojim

staršem, ki so mi omogočili študij.

Page 5: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

III

Nadgradnja senzorike invalidskega vozička VOIC z

digitalnim kompasom

Ključne besede: mikrokrmilnik, digitalni kompas, I2C vodilo, CAN vodilo

UDK: 004.5:004.6(043.2)

Povzetek

V magistrski nalogi je opisana nadgradnja senzorike invalidskega vozička VOIC z

digitalnim kompasom HMC6352. Na senzorski enoti kompasa je mikrokrmilnik

PIC18F358, ki preko vodila I2C komunicira z modulom kompasa, nato pa podatke pošilja

preko CAN vodila do glavne enote za CAN komunikacijo in od tam naprej preko RS-232

vodila do osebnega računalnika, na katerem teče program z uporabniškim vmesnikom.

Podatki kompasa so uporabljeni v praktični aplikaciji, s katero se voziček samodejno

obrne na želen kot. Opisana je izdelava programov za mikrokrmilnik PIC v programu

MPLAB IDE in izdelava programa za uporabniški vmesnik in praktično aplikacijo v

programu Visual Studio.

Page 6: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

IV

Upgrading VOIC wheelchair's sensory system with a

digital compass

Key words: microcontroller, digital compass, I2C bus, CAN bus

UDK: 004.5:004.6(043.2)

Abstract

The thesis describes upgrading VOIC wheelchair's sensory system with a digital compass

HMC6352. The sensor unit contains a PIC18F458 microcontroller, which communicates

with the compass module via I2C and sends its data via CAN network. The main CAN

microcontroller sends the data via RS-232 bus to PC, which runs the main user interface.

Compass data is used in an application, which turns the wheelchair to the desired angle.

The thesis contains descriptions of the application and user interface program, developed

in Visual Studio and the microcontroller program, developed in MPLAB IDE.

Page 7: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

V

Kazalo vsebine

1. Uvod .............................................................................................................................. 1

2. Protokoli ........................................................................................................................ 3

2.1 I2C komunikacijski protokol .................................................................................. 3

2.1.1 Zasnova ............................................................................................................ 3

2.1.2 Protokoli sporočil ............................................................................................ 4

2.1.3 Fizična plat ...................................................................................................... 5

2.1.4 Razširjanje urinega signala .............................................................................. 7

2.1.5 Arbitraža .......................................................................................................... 7

2.2 CAN komunikacijski protokol ................................................................................ 8

2.2.1 zasnova ............................................................................................................ 8

2.2.2 Prenos podatkov .............................................................................................. 9

2.2.3 Okvirji ............................................................................................................ 10

3. Strojna oprema ............................................................................................................. 12

3.1 Vgrajeni sistemi .................................................................................................... 12

3.2 Invalidski voziček Invacare Storm3 Euro ............................................................. 12

3.2.1 Način CAN komunikacije na VOIC vozičku ................................................ 15

3.3 Mikrokrmilnik PIC 18F458 .................................................................................. 16

3.4 MCP2551 CAN sprejemnik-oddajnik .................................................................. 18

3.5 Programator PICkit 2 ............................................................................................ 19

3.6 Ultrazvočni senzorji .............................................................................................. 21

3.7 HMC6352 digitalni kompas .................................................................................. 21

3.7.1 Magnetoupornost ........................................................................................... 21

3.7.2 Modul digitalnega kompasa .......................................................................... 23

3.7.3 Namestitev kompasa na invalidski voziček VOIC ........................................ 26

3.7.4 Ukazni protokol ............................................................................................. 26

Page 8: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

VI

3.7.5 EEPROM ....................................................................................................... 27

3.7.6 Nastavitve delovanja kompasa ...................................................................... 28

3.7.7 Umerjanje kompasa ....................................................................................... 29

3.7.8 Povprečenje ................................................................................................... 30

3.7.9 Časovne zahteve ............................................................................................ 30

4. Programska oprema ..................................................................................................... 31

4.1 MPLAB IDE ......................................................................................................... 31

4.2 Prevajalnik C18 ..................................................................................................... 33

4.3 Visual Studio ......................................................................................................... 36

5. Izdelava programa za PIC mikrokrmilnik na senzorski enoti digitalnega kompasa ... 38

6. Dopolnitev uporabniškega programa za osebni računalnik ......................................... 48

7. Rezultati ....................................................................................................................... 54

8. Sklep ............................................................................................................................ 56

9. Viri ............................................................................................................................... 58

10. Priloge ....................................................................................................................... 60

Kazalo slik

Slika 2.1: Časovni diagram .................................................................................................... 4

Slika 2.2: Shema priklopa naprav na I2C vodilo ................................................................... 6

Slika 2.3: NRZ oblika signala ............................................................................................... 8

Slika 3.1: Invalidski voziček VOIC ..................................................................................... 13

Slika 3.2: Shema uporabljenih sistemov na VOIC vozičku ................................................ 15

Slika 3.3: Nožice mikrokrmilnika PIC18F358 .................................................................... 16

Slika 3.4: Shema mikrokrmilnika PIC18F458 .................................................................... 17

Slika 3.5: Shema priklopa MCP2551 na mikrokrmilnik ..................................................... 19

Slika 3.6: Shema priklopa programatorja na mikrokrmilnik ............................................... 20

Page 9: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

VII

Slika 3.7: Anizotropna magnetoupornost ............................................................................ 22

Slika 3.8: Wheatstonov mostič ............................................................................................ 22

Slika 3.9: Senzorska enota z modulom digitalnega kompasa .............................................. 24

Slika 3.10: Shema priklopa modula HMC6352 na mikrokrmilnik ..................................... 25

Slika 3.11: Postavitev digitalnega kompasa na VOIC vozičku ........................................... 26

Slika 4.1: Shema razvojnega cikla ....................................................................................... 32

Slika 4.2: Projektni organizator ........................................................................................... 32

Slika 4.3: Okno New Project ............................................................................................... 33

Slika 4.4: Okno Select Device ............................................................................................. 34

Slika 4.5: Okno Select Language Toolsuite ........................................................................ 34

Slika 4.6: Okno Build Options ............................................................................................ 35

Slika 4.7: Drevesna struktura projekta ................................................................................ 35

Slika 4.8: Razvojno okolje Visual Studio ............................................................................ 37

Slika 5.1: Drevesna struktura projekta ................................................................................ 38

Slika 6.1: Okno uporabniškega vmesnika ........................................................................... 48

Slika 7.1: Odziv vozička VOIC, vrtenje na mestu .............................................................. 54

Kazalo tabel

Tabela 2.1: Zgradba okvirja CAN ....................................................................................... 11

Tabela 3.1:Podatki vozička VOIC ....................................................................................... 14

Tabela 3.2: Podatki mikrokrmilnika PIC 18F458 ............................................................... 16

Tabela 3.3: Nožice MCP2551 ............................................................................................. 19

Tabela 3.4: Nožice programatorja ....................................................................................... 20

Tabela 3.5: Podatki ultrazvočnega senzorja ........................................................................ 21

Tabela 3.6: Lastnosti modula HMC6352 ............................................................................ 24

Tabela 3.7: Nožice modula HMC6352 ................................................................................ 25

Tabela 3.8: Ukazi kompasu HMC6352 ............................................................................... 27

Tabela 3.9: EEPROM naslovi kompasa .............................................................................. 27

Tabela 3.10: Časovne zahteve kompasa .............................................................................. 30

Page 10: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

VIII

Seznam uporabljenih simbolov

W – vat

V – volt

Ah – amper ura

Hz – herc

Seznam uporabljenih kratic

I2C - Notranje integrirano vezje, ang. Inter-Inegrated Circuit

SCL - Serijska časovna linija, ang. Serial Clock Line

SDL - Serijska podatkovna linija, ang. Serial Data Line

ACK - potrditev, ang. Acknowledged

NACK – ni potrjeno, ang. Not Acknowledged

MSB – najpomembnejši bit (ang. Most Significant Bit)

CAN – vodilo (ang. Controller Area Network)

NRZ – oblika signala (ang. Non-return-to-zero)

RTR – zahteva po podatkih določene naprave (ang. Remote Transmit Request)

SOF – začetni bit (ang. Start-of-frame)

CPE – centralna procesna enota

MCU – mikrokrmilnik, ang. Microcontroller Unit

PC – osebni računalnik

OM – način delovanja, ang. Operational Mode

Page 11: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

1

1. UVOD

Prvi zapisi o izvedbah invalidskih vozičkov segajo v 3. stoletje pr. n. št., ko so na

Kitajskem uporabljali samokolnicam podobne transportne narave za prevoz predmetov in

ljudi. Namensko razlikovanje med tema funkcijama se je pričelo veliko pozneje, okoli leta

525 n. št., ko so se v kitajski umetnosti pričele pojavljati slike stolov s kolesi, namenjenimi

prevozu invalidov. Evropski zapisi kažejo na uporabo podobne tehnologije med nemško

renesanso. Leta 1933 sta Harry Jennings in Herbert Everest izumila lahek jeklen invalidski

voziček, ki je bil tudi zložljiv in kmalu se je pričela masovna proizvodnja.

Prvi funkcionalni motorizirani invalidski voziček je izumil George J. Klein v 50. letih 20.

stoletja, z namenom prevoza veteranov tetraplegikov druge svetovne vojne. Njegov izum

se od današnjih motoriziranih invalidskih vozičkov ni bistveno razlikoval, saj so obojim

skupni uporabniški vmesnik, krmilnik, pogonski sistem in vir napetosti, le da so danes

komponente dodelane in precej manjše.

Danes so motorizirani invalidski vozički namenjeni invalidom, ki vozička ne morejo

poganjati sami, ali pa ga uporabljajo na večjih razdaljah ali v okolju, kjer je poganjanje

vozička utrujajoče. V večini primerov so uporabniki paraplegiki, tetraplegiki in cerebralni

spastiki, vse več pa je tudi uporabnikov s kardiovaskularnimi boleznimi.

Najbolj pogosto se za upravljanje uporablja krmilno palico, vendar pa vsi uporabniki

takšnega upravljanja niso sposobni, zato že od 60. let 20. stoletja obstaja upravljanje

vozička s pomočjo pihanja v cevko (ang. Sip-and-puff Controller). Upravljanje z mislimi,

ki deluje z zaznavo možganskih signalov preko senzorjev na telesu, je v razvoju, vendar

zaenkrat deluje le v laboratorijskih pogojih.

Eden od možnih načinov upravljanja motoriziranih invalidskih vozičkov je tudi glasovno

upravljanje, oziroma upravljanje z razpoznavo govornih ukazov, katerega razvoj je bil

predmet večih projektov in diplomskih nalog. Delo se je vršilo na invalidskem vozičku,

poimenovanem VOIC (Voice Operated Intelligent Wheelchair), v osnovi pa gre za model

Storm3 Euro podjetja Invacare. Do danes so bili razviti algoritmi za prepoznavo govornih

ukazov s pomočjo umetnih nevronskih mrež, ki so bili dokaj uspešno testirani v

laboratorijskih pogojih. Upravljanje vozička z govornimi ukazi je možno, vendar ni 100%

zanesljivo, zato so bili zaradi varnosti nanj vgrajeni ultrazvočni senzorji razdalje, s

Page 12: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

2

pomočjo katerih se v primeru ovir v smeri premikanja vozička zmanjša hitrost ali pa

voziček povsem ustavi. V prihodnosti je predvidena dodelava avtomatiziranega upravljanja

do te mere, da se bo voziček sam premikal po prostoru glede na izrečen ukaz, na primer

»kuhinja«, za kar pa je potreben sistem za navigacijo. Eden od najpreprostejših in cenejših

senzorjev za navigacijo je digitalni kompas, s pomočjo katerega imamo v vseh trenutkih

informacijo o orientaciji invalidskega vozička. Cilj magistrske naloge je izdelava

programske opreme za senzorsko enoto digitalnega kompasa, dograditev programske

opreme za vodenje vozička in testiranje senzorja v praktični aplikaciji.

V drugem poglavju sta opisana komunikacijska protokola I2C in CAN, ki ju uporabljamo

za komunikacijo med sistemi na vozičku VOIC.

V tretjem poglavju je opisana vsa strojna oprema, ki smo jo potrebovali za izvedbo

magistrskega dela. Sem spadajo invalidski voziček, mikrokrmilnik z dodatnimi moduli za

komunikacijo, programator, ultrazvočni senzorji in digitalni kompas.

V četrtem poglavju je predstavljena programska oprema, ki smo jo uporabili za izvedbo

projekta, in sicer razvojni okolji MPLAB IDE in Visual Studio ter prevajalnik C18.

V petem poglavju je opisana izdelava programa za mikrokrmilnik na senzorski enoti

digitalnega kompasa, s komentirano programsko kodo in opisom posameznih funkcij.

Šesto poglavje zajema spremembe uporabniškega programa, ki se izvaja na osebnem

računalniku.

Zadnji dve poglavji zajemata rezultate magistrskega dela in sklepno besedo.

Page 13: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

3

2. PROTOKOLI

2.1 I2C KOMUNIKACIJSKI PROTOKOL

I2C (Notranje integrirano vezje, ang. Inter-Inegrated Circuit) je serijsko računalniško

vodilo z več gospodarji, izumljeno v podjetju Philips, za povezavo počasnejših perifernih

naprav z matičnimi ploščami, vgrajenimi sistemi, mobilniki ali ostalimi napravami. Od

sredine 90. let naprej je vse več konkurenčnih podjetij začelo predstavljati izdelke, ki

uporabljajo I2C protokol, od 10. oktobra, 2006, pa za implementacijo I2C protokola ni

potrebno plačilo licence.

2.1.1 ZASNOVA

I2C uporablja dve žici, eno za serijsko podatkovno linijo (Serial Data Line – SDL) in drugo

za serijsko časovno linijo (Serial Clock Line – SCL), ki sta s pull-up uporoma priklopljeni

na pozitivni priključek izvora napetosti. Tipični vrednosti napetosti sta +3.3V ali +5V,

vendar so dovoljene tudi drugačne napetosti.

I2C ima v zasnovi 7-bitni ali 10-bitni naslovni prostor. Tipične hitrosti prenosa so 100kbit/s

v standardnem načinu in 10kbit/s v počasnem načinu. Zadnje različice protokola

omogočajo več priklopljenih naprav in hitrosti prenosa do 3,4Mbit/s. Gre za hitrosti

prenosa podatkov od gospodarja do sužnja, brez omejitev priključenih naprav (sužnjev), ki

v praksi zmanjšajo dejansko hitrost prenosa podatkov. Maksimalno število priključenih

naprav je omejeno z naslovnim prostorom in s skupno kapacitivnostjo 400pF, ki v praksi

omeji komunikacijo na razdaljo nekaj metrov.

Naprave na vodilu imajo lahko vlogo sužnja ali gospodarja. Naprave z vlogo gospodarja

generirajo časovni signal in vzpostavijo komunikacijo s sužnji, slednji pa sprejmejo

časovni signal in se odzovejo, ko so naslovljeni s strani gospodarja. Vodilo omogoča več

gospodarjev, vloge pa se lahko tudi zamenjajo med sporočili. Obstajajo štiri možna stanja

naprav:

1. gospodar pošiljatelj, ki pošilja podatke sužnju,

2. gospodar sprejemnik, ki sprejema podatke od sužnja,

Page 14: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

4

3. suženj pošiljatelj, ki pošilja podatke gospodarju in

4. suženj sprejemnik, ki sprejema podatke od gospodarja.

Gospodar je prvotno v prvem načinu in pošlje START bit, za katerim sledi 7-bitni naslov

suženjske naprave, s katero želi komunicirati, zatem pa še en bit, s katerim pove, ali želi

podatke sužnju pošiljati ali jih od njega sprejemati. Če na vodilu obstaja naprava s

poslanim naslovom, se ta odzove z ACK bitom (potrditev, ang. acknowledged). Gospodar

nato pošlje ali sprejme podatke, glede na zadnji bit, ki ga je poslal v prejšnjem sporočilu,

suženj pa se odzove temu ustrezno.

Pri pošiljanju naslovov in podatkov se sporočila pošiljajo tako, da se najprej pošlje

najpomembnejši bit MSB (ang. Most Significant Bit). START bit je indiciran s prehodom

iz visokega na nizek napetostni nivo SDA linije, pri čemer je SCL linija postavljena

visoko, STOP bit pa s prehodom iz nizkega na visok napetostni nivo SDA linije pri SCL

liniji postavljeni visoko. Vsi ostali prehodi se vršijo pri SCL liniji postavljeni na nizek

napetostni nivo.

Če želi gospodar pošiljati podatke sužnju, zaporedno pošilja zloge, suženj pa pošlje ACK

bit. V tem primeru je gospodar pošiljatelj in suženj sprejemnik. Če želi gospodar

sprejemati podatke od sužnja, zaporedno sprejema zloge in za vsakim zlogom pošlje ACK

bit, razen za zadnjim. Takrat Konča prenos s STOP bitom, ali pa ponovno pošlje START

bit, s čimer zadrži kontrolo nad vodilom (združeno sporočilo).

Slika 2.1: Časovni diagram

2.1.2 PROTOKOLI SPOROČIL

I2C definira osnovne tipe sporočil, ki se vedno začnejo s START bitom in končajo s STOP

bitom:

Page 15: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

5

eno sporočilo, pri katerem gospodar pošilja podatke sužnju,

eno sporočilo, pri katerem gospodar bere podatke od sužnja in

združeno sporočilo, kjer gospodar pošlje ali sprejme vsaj dve sporočili.

Pri združenih sporočilih se vsako branje ali pisanje začne s START bitom in naslovom

sužnja, vsak naslednji START bit se imenuje ponovljeni START bit (ang. Repeated Start).

Ker vmes ni STOP bita, sužnji vedo, da je naslednji prenos del istega sporočila.

Vsak suženj se odziva na določena sporočila, ki so zapisana v njegovi dokumentaciji.

2.1.3 FIZIČNA PLAT

Na fizičnem nivoju sta SDA in SCL liniji na izvor napetosti povezani preko pull-up

uporov, ki sta potrebna, ker so nožice na čipih odprto kolektorske zasnove, kar pomeni, da

čipi lahko spremenijo napetost na liniji le na nizko vrednost, sicer napetost ostane enaka

priključni napetosti pull-up upora. Nizka napetost na liniji pomeni logično ničlo, visoka

(priključna) napetost pa logično enico. Več naprav lahko naenkrat spreminja napetostni

nivo na obeh linijah, pri čemer velja, da linija ostane nizko, če jo katerakoli naprava

postavi nizko. Naprave, ki želijo poslati logično enico (postaviti linijo visoko), lahko

zaznajo, da je linija postavljena nizko, kar pomeni, da v tistem trenutku oddaja druga

naprava. Če se to zgodi na SCL liniji, temu pravimo prilagajanje urinega signala (ang.

Clock Stretching), ki sužnjem omogoča nadzor nad hitrostjo pretoka podatkov. Na SDA

liniji temu pravimo arbitraža, ki zagotavlja, da na vodilu oddaja le ena naprava naenkrat.

Ko vodila ne uporablja nobena naprava, sta obe liniji z pull-up upori postavljeni visoko. Za

začetek oddajanja naprava pošlje START signal tako, da SDA linijo postavi nizko, SCL

linija pa ostane visoko. Če bi naprava zatem pustila SDA liniji nazaj na visok nivo, bi to

pomenilo STOP signal, kar je sicer dovoljeno, vendar je v tem trenutku nesmiselno, zato

po START signalu naprava navadno postavi SCL linijo nizko.

Page 16: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

6

Slika 2.2: Shema priklopa naprav na I2C vodilo

Razen pri START in STOP signalih, se SDA linija spreminja samo pri SCL liniji

postavljeni nizko. Pošiljanje posameznih bitov se vrši s pulzirajočim signalom na SCL

liniji, medtem ko je SDA linija postavljena na želeni nivo. Dokler je SCL linija nizko,

pošiljatelj postavi SDA linijo na želeni nivo in pusti SCL liniji nazaj na visok nivo. Nato

sledi zakasnitev, da se SCL linija dejansko postavi na visok nivo, ki je odvisna od časovne

konstante vezja in parazitne kapacitivnosti vodila, lahko pa tudi od prilagajanja urinega

signala s strani sužnja. Ko je SCL linija visoko, pošiljatelj počaka določen čas (pri

standardni hitrosti vodila 4 μs), da lahko sprejemnik bit prebere, nato pa SCL linijo

ponovno postavi nizko, s čimer se zaključi prenos enega bita.

Po osmih bitih, poslanih v eno smer, se pošlje ACK signal v drugi smeri. Pošiljatelj in

sprejemnik zamenjata vlogi za prenos enega bita, pri čemer prejšnji pošiljatelj, ki je poslal

osem bitov, prejme logično enico ali ničlo. Slednja pomeni potrditev sprejema podatkov ali

ACK signal, enica pa NACK (ni sprejeto, ang. Not acknowledged), ki za pošiljatelja lahko

pomeni slednje:

če gospodar pošilja sužnju: suženj ne more prejeti podatkov, ker ne obstaja, ne

razume ukaza ali ne more več sprejeti podatkov,

če suženj pošilja gospodarju: gospodar želi prekiniti prenos, ko se prenese trenutni

zlog.

Page 17: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

7

Po sprejemu ACK signala lahko gospodar stori eno od naslednjih dejanj:

se pripravi na prenos še enega zloga,

pošlje STOP signal ali

pošlje ponovljeni START in začne nov prenos, ne da bi sprostil vodilo.

2.1.4 RAZŠIRJANJE URINEGA SIGNALA

Razširjanje urinega signala (ang. Clock stretching) je ena pomembnejših lastnosti I2C

vodila. Naslovljeni suženj lahko po prejetem zlogu zadrži SCL linijo nizko, če še ni

pripravljen na nove podatke. Gospodar, ki komunicira z njim, ne more nadaljevati prenosa

naslednjega bita, temveč mora počakati, da se SCL linija vrne na visok napetostni nivo. Če

suženj razširja urin signal, bo SCL linija postavljena nizko, zaradi odprto kolektorske

zasnove. Gospodar opazuje SCL linijo in čaka, da se dvige na visok nivo. Ko se to zgodi,

mora počakati še določen minimalen čas (pri standardni hitrosti vodila 4 μs), preden lahko

ponovno postavi SCL linijo nizko. Razširjanje urinega signala je edini način, da suženj

vpliva na SCL linijo, sicer jo vedno uporablja kot vhod.

2.1.5 ARBITRAŽA

Vsi gospodarji spremljajo START in STOP bite in ne začnejo prenosov, ko vodilo

uporablja drug gospodar. Ko dva gospodarja želita začeti prenos v istem trenutku, nastopi

arbitraža. Vsak od njiju preveri nivo SDA linije in ga primerja z nivojem, ki ga pričakuje.

Če se ta razlikuje od pričakovanega, je ta naprava izgubila v arbitražnem postopku.

Če prva naprava postavi SDA linijo visoko, torej ji pusti, da se sama postavi na visok nivo

preko pull-up uporov, druga naprava pa jo postavi nizko, bo linija ostala na nizkem nivoju.

Prva naprava opazuje SDA linijo in opazi, da ni na pričakovanem visokem nivoju ter pride

do zaključka, da druga pošilja druga naprava. Tista naprava, ki prva opazi razliko med

pričakovanim in dejanskim nivojem SDA linije, izgubi arbitražo in prepusti to linijo drugi

napravi. Če je naprava, ki je izgubila arbitražo, gospodar, potem prepusti tudi SCL linijo in

čaka na STOP signal. Do arbitraže pride redko, vendar je potrebna za vodilo z več

gospodarji.

Page 18: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

8

2.2 CAN KOMUNIKACIJSKI PROTOKOL

Vodilo CAN (ang. Controller Area Network) je vodilo, razvito v avtomobilski industriji, za

povezavo mikrokrmilnikov in naprav v vozilu brez gostiteljskega računalnika. Protokol

temelji na sporočilih, razvitih posebej za avtomobilsko industrijo, vendar se danes

uporablja tudi na področjih vesoljske tehnologije, industrije in medicinske opreme. Razvoj

vodila se je začel v podjetju Robert Bosch GmbH leta 1983, uradno pa je bilo vodilo

predstavljeno leta 1986 na kongresu združenja avtomobilskih inženirjev v Detroitu. Prvi

CAN krmilni čipi so prišli na tržišče leta 1987, izdelovali pa sta jih podjetji Intel in Philips.

Sodobni avtomobili imajo tudi do 80 vgrajenih elektronskih krmilnih enot za različne

podsisteme. Tipično je največja krmilna enota motorja, ostale večje enote pa so

uporabljene za menjalnik, varnostne blazine, sistem poti zdrsu koles ABS (ang. Antilock

Braking System), tempomat, itd. Nekatere enote nadzorujejo celotne podsisteme, vendar so

povezave z ostalimi enotami potrebne. CAN vodilo med seboj povezuje različne

podsisteme, v podsistemih pa aktuatorje, senzorje in krmilne enote. Zaradi cenovne

ugodnosti se to vodilo uporablja tudi v avtomatiki.

2.2.1 ZASNOVA

CAN je vodilo z več gospodarji, po katerem lahko vsaka naprava pošilja in sprejema

sporočila, vendar ne obenem. Sporočilo je sestavljeno iz identifikacije (ID, ang. Identifier),

ki predstavlja prioriteto sporočila in iz do največ osmih zlogov (pri novejši različici CAN

FD do 64). Oblika signala na vodilu NRZ (ang. Non-return-to zero), kar pomeni, da

obstajata le dva možna napetostna nivoja za logično enico in ničlo, med prehodi pa se

napetost ne ustali na določeni vmesni stopnji.

Slika 2.3: NRZ oblika signala

Page 19: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

9

Naprave se na vodilo ne priključijo direktno, temveč preko gostiteljskega procesorja in

CAN krmilnika. Ko je vodilo prosto, kar je predstavljeno z recesivnim nivojem napetosti

na vodilu, lahko vsaka naprava prične oddajati. Če z oddajanjem pričneta dve ali več

naprav hkrati, bo sporočilo z dominantnejšo ID številko (tako, z več dominantnimi biti, tj.

ničlami) prepisalo ostala, zato sčasoma ostane le eno sporočilo, ki ga prejmejo vse naprave.

Temu mehanizmu pravimo prioritetno osnovana arbitraža. Sporočila z nižjimi vrednostmi

ID številke imajo višjo prioriteto in bodo poslana prednostno.

Vsaka naprava na vodilu potrebuje:

Gostiteljski procesor

Ta določa pomen prejetim sporočilom in odloča, katera sporočila želi poslati.

Nanj so priklopljeni senzorji, aktuatorji in krmilniki.

CAN krmilnik

Sprejemanje: krmilnik zaporedno shranjuje prejete bite, dokler celotno sporočilo ni

zaključeno, potem navadno sproži prekinitev, po kateri procesor prevzame

sporočilo.

Pošiljanje: procesor shrani sporočila, ki jih želi poslati, v CAN krmilniku, ki potem

pošlje sporočilo v obliki zaporednih bitov.

Sprejemnik-oddajnik (ang. Transceiver)

Sprejemanje: sprejemnik prilagodi nivo napetostnih signalov iz vodila na nivoje, ki

jih pričakuje CAN krmilnik in vsebuje zaščitno vezje.

Oddajanje: prilagodi signale, ki jih prejme od CAN krmilnika v signale, primerne

za pošiljanje.

V omrežjih, krajših od dolžine 40 m, so možne hitrosti prenosa do 1 Mbit/s, vendar velja,

da z zmanjševanjem hitrosti omogočimo večje razdalje.

2.2.2 PRENOS PODATKOV

Prioritete sporočil so dosežene z binarnim sistemom dominantnih in recesivnih bitov, pri

čemer je ničla dominantni, enica pa recesivni bit, zato je potrebna odprto-kolektorska

zasnova vodila. Vsaka od naprav, ki oddajajo, spremlja, ali se na vodilu pojavi logični

nivo, ki ga želi poslati. Prioritetno osnovana arbitraža omogoča sporočilom z višjo

prioriteto takojšnje pošiljanje, ne glede na število ostalih sporočil, zaradi česar je primerna

Page 20: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

10

za realno-časovne sisteme. Če je vodilo prosto, vse naprave, ki želijo oddajati pošljejo

svojo ID številko zaporedno od najvišjega bita naprej. Če je njihova ID številka večja od

ostalih, bodo v določenem trenutku poslale recesivni bit, naprave z nižjo vrednostjo ID pa

dominantni bit, zato slednje dobijo arbitražo in nadaljujejo s pošiljanje naslednjega bita,

poraženke arbitraže pa prenehajo z oddajanjem. Po zadnjem prenesenem bitu ID številke

ostane le ena naprava, ki je dobila arbitražo in lahko pošlje podatke. ID številke so se v

preteklosti podeljevale glede na tip podatkov in napravo, kar je prineslo slabe realno-

časovne zmogljivosti, saj je bila izkoriščenost vodila okoli 30 %. Novejši način je

podeljevanje ID številk glede na skrajni rok, pri katerem je mogoče doseči izkoriščenost

vodila od 70 do 80 %. Uporabna funkcija CAN vodila je tudi možnost zahteve podatkov od

izbrane naprave na vodilu z RTR zahtevo (ang. Remote Transmit Request). RTR bit je pri

zahtevi recesiven.

2.2.3 OKVIRJI

CAN omrežje lahko deluje z dvema različnima formatoma okvirjev. Razlika med

formatoma je v dolžini ID številke, ki je pri osnovnem okvirju 11 bitov, pri podaljšanem

okvirju pa 29 bitov. Razliko med formatoma nakazuje IDE bit, ki je dominantni bit za

osnovni okvir in recesivni za podaljšani okvir. CAN krmilniki, ki podpirajo uporabo

podaljšanega okvirja, omogočajo tudi uporabo osnovnega okvirja. Vsak okvir se začne s

SOF bitom (ang. Start-of-frame), ki nakazuje začetek prenosa, konča pa se z EOF biti (ang.

End-of-frame).

Obstajajo štiri vrste okvirjev pri CAN vodilu:

podatkovni okvir (vsebuje podatke pošiljatelja),

oddaljeni okvir (vsebuje RTR zahtevo),

okvir napake (pošlje ga naprava, ki je zaznala napako) in

preobremenitveni okvir (pošlje ga naprava, ki potrebuje več časa za obdelavo

podatkov).

Page 21: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

11

Tabela 2.1: Zgradba okvirja CAN

Polje Dolžina (biti) Opis

Začetek okvirja 1 Bit, ki označuje začetek okvirja

ID številka 11 ID številka, ki označuje prioriteto

RTR 1 RTR bit, dominanten pri podatkovnem okviru

IDE bit 1 Nakazuje osnovni ali podaljšani okvir

Rezervirani bit (r0) 1 Rezervirani bit

Dolžina podatkov 4 Število zlogov podatkov

Podatki 0-64 Podatki za prenos

CRC 15 Ang. Cyclic Redundancy Check, za preverjanje napak

CRC ločilo 1 Mora biti recesiven

ACK reža 1 ACK bit

ACK ločilo 1 Mora biti recesiven

Konec okvirja 7 Morajo biti recesivni

Page 22: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

12

3. STROJNA OPREMA

3.1 VGRAJENI SISTEMI

Vgrajeni sistemi so naprave, ki uporabljajo procesorsko moč majhnih mikrokrmilnikov,

npr. PIC serije podjetja Microchip. Ti vsebujejo mikroprocesor (CPE pri osebnih

računalnikih), dodatna vezja, ki jih imenujemo periferne enote in nekaj ostalih komponent,

ki skupaj tvorijo krmilni modul. Takšna naprava se lahko vgradi v ostale elektronske ali

mehanske naprav, da omogoči nizkocenovno digitalno krmiljenje.

Najpomembnejša razlika med vgrajenim krmilnikom in osebnim računalnikom je, da je

prvi namenjen točno določenemu naboru opravil, medtem ko je osebni računalnik

namenjen uporabi številnih programov in povezavi z različnimi zunanjimi napravami.

Vgrajeni krmilnik ima en sam program, zaradi česar ga lahko poceni sestavimo z manjšim

številom komponent in ravno pravšnjo procesorsko močjo. Srce osebnega računalnika (PC)

je draga centralno procesna enota (CPE), z ostalimi komponentami, kot so pomnilniki,

diski, grafične kartice, mrežna oprema, itd. Vgrajeni sistem pa vsebuje nizkocenovni

mikrokrmilnik (MCU, ang. Microcontroller Unit) in na istem čipu tudi periferne enote ter

relativno majhno število zunanjih naprav. Pogosto so vgrajeni sistemi neviden del ali

podsistem naprave, npr. hladilnika ali pralnega stroja, kjer mikrokrmilnik vgrajenega

sistema opravlja le manjši del funkcij celotne naprave.

Senzorska enota digitalnega kompasa je vgrajeni sistem, saj je njena naloga vrednotenje

signalov magnetometra in pošiljanje teh podatkov preko CAN omrežja.

3.2 INVALIDSKI VOZIČEK INVACARE STORM3 EURO

Motorizirani invalidski voziček Invacare Storm3 Euro za pogon uporablja dva motorja z

močjo 220 W, ki delujeta pri napetosti 24 V. Motorja poganjata dva zaporedno vezana 12

V akumulatorja s kapaciteto 70 Ah, kar vozičku zadostuje za približno 46 km vožnje.

Upravljanje vozička se vrši preko uporabniškega vmesnika, ki vsebuje krmilno palico in

gumbe za:

Page 23: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

13

vklop in izklop vozička,

luči,

smernike,

hupo in

nastavitev stopnje hitrosti.

Krmilna palica nadzoruje premikanje motorjev, pri čemer se voziček premika v smeri

odmika krmilne palice. Maksimalen odmik palice pomeni največjo hitrost premikanja v

želeni smeri, pri čemer je hitrost odvisna tudi od nastavljene stopnje hitrosti, ki lahko

zavzame vrednosti od 1 (najpočasneje) do 5 (najhitreje).

Slika 3.1: Invalidski voziček VOIC

Page 24: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

14

Tabela 3.1:Podatki vozička VOIC

Za voziček je na tržišču na voljo več dodatkov, ki so za potrebe laboratorijskega dela z

njim nepotrebne, sam voziček pa je opremljen z raznimi nadgradnjami, ki so jih v okviru

projektov in diplom izdelali drugi študenti. Te so:

konzola za nameščanje senzorjev,

vezja z ultrazvočni senzorji razdalje SRF08,

inkrementalni dajalnik, nameščen na os enega od motorjev,

vezje z mikrokrmilnikom PIC18F458 za komunikacijo preko vmesnika RS-232,

vezje z dvema digitalnima potenciometroma, ki nadomeščata krmilno palico,

vezje za preklop med upravljanjem s krmilno palico in z digitalnima

potenciometroma,

pretvornik navzdol,

glavno stikalo za izklop in

Colibri Evaluation Board s Colibri modulom.

Pri slednjem gre za mini računalnik v obliki SODIMM modula, ki je z nameščenim

operacijskim sistemom Windows CE prirejen za vgrajene sisteme. Mini računalnika pri

Podatek Vrednost

Širina vozička 69 cm

Dolžina vozička 115 cm

Višina sedišča 46 cm

Širina sedišča 48 cm

Dolžina sedišča 46 cm

Naklon naslonjala za noge 0° - 15°

Masa vozička 115 kg

Nosilnost 150 kg

Podatki o baterijah 2 x 12 V 7 Ah

Maksimalen naklon klanca 20%

Maksimalna višina ovire 6 cm

Moč motorjev 2 x 220 W

Doseg 46 km

Maksimalna hitrost 6 km/h

Page 25: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

15

našem projektu nismo uporabili, saj nadgrajujemo programsko opremo, ki ni bila

zasnovana za izvajanje na tem računalniku.

Za vse dodatke je bila v preteklosti izbrana komunikacija preko CAN vodila, povezava z

osebnim računalnikom pa se vrši preko serijskega vodila RS-232.

Slika 3.2: Shema uporabljenih sistemov na VOIC vozičku

3.2.1 NAČIN CAN KOMUNIKACIJE NA VOIC VOZIČKU

Vsaka naprava na CAN vodilu ima dva naslova, z enim jo kliče glavni mikrokrmilnik

(sprejemni), z drugim pa so opremljena vsa sporočila ki jih oddaja (odzivni naslov). Sistem

je zasnovan tako, da glavni mikrokrmilnik zaporedno pošilja naslove naprav. Ko ena od

drugih naprav prejme sporočilo s svojim naslovom, se nanj odzove tako, da vrne sporočilo

s podatki in svojim drugim naslovom. Glavni mikrokrmilnik prejme sporočilo z naslovom

naprave, ki ga pošilja in ga posreduje preko RS-232 vodila na osebni računalnik.

Page 26: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

16

3.3 MIKROKRMILNIK PIC 18F458

Za krmiljenje naprav in komunikacijo je uporabljen mikrokrmilnik družine PIC (ang.

Peripheral Interface Controller). Te pogosto uporabljajo tako razvijalci v industriji kot tudi

ljubitelji elektronike, razlog tiči v nizki ceni, dostopnosti, obsežni literaturi in nizki ceni

razvijalskih orodij.

Tabela 3.2: Podatki mikrokrmilnika PIC 18F458

Slika 3.3: Nožice mikrokrmilnika PIC18F358

Podatek Vrednost

Vrsta pomnilnika Flash

Velikost pomnilnika(KB) 32

CPE hitrost (MIPS) 10

RAM Zlogov 1,536

Podatkovni EEPROM (zlogi) 256

Digitalna komunikacijska

periferija

1-UART, 1-

A/E/USART, 1-SPI,

1-I2C1-

MSSP(SPI/I2C)

CCP periferija 1 CCP, 1 ECCP

Timerji 1 x 8-bit, 3 x 16-bit

ADC 8 ch, 10-bit

Št. komparatorjev 2

CAN 1 CAN

Temperaturni razpon (C) -40 to 125

Napetost (V) 2 to 5.5

Št. nožic 40

Page 27: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

17

Slika 3.4: Shema mikrokrmilnika PIC18F458

Page 28: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

18

PIC mikrokrmilnik ima pomnilniško mesto za vdelano programsko opremo, ki omogoča

izvajanje programa. Za naslavljanje pomnilniških mest uporablja programski števec.

Mikrokrmilnik ima tudi podatkovni pomnilnik, sestavljen iz registrov za posebne funkcije

(SFR, ang. Special Function Register) in splošno namenskih registrov (GPR ang. General

Purpose Register). Prve registre uporabljajo procesor in periferne funkcije za krmiljenje

želenega delovanja naprave, druge pa za shranjevanje spremenljivk, ki jih program

potrebuje za preračunavanje ali začasno shrambo. Poleg pomnilnika najdemo na

mikrokrmilniku tudi vhodno-izhodna vrata. To so nožice, ki jih lahko uporabimo kot

izhode in preko katerih pošiljamo signale ali npr. vklapljamo LED diode. Vrata lahko

programiramo tudi kot vhode in jih uporabimo za komunikacijo z ostalimi napravami.

Pri izgradnji vezja z mikrokrmilnikom je potrebno določiti, katere periferne enote so

potrebne. AD pretvorniki pretvarjajo različne napetosti v digitalne signale, komunikacijske

periferne naprave omogočajo komunikacijo z ostalimi mikrokrmilniki ali omrežjem,

časovniki natančno merijo signalne dogodke in generirajo ter zajemajo komunikacijske

signale, ustvarjajo natančne valovne oblike in samodejno ponovno začnejo mikrokrmilnik,

če se ta ujame v zanko.

Mikrokrmilnik PIC18F458 je bil izbran zaradi cenovne dostopnosti in CAN modula, s

katerim komunicira z ostalimi napravami v CAN omrežju.

3.4 MCP2551 CAN SPREJEMNIK-ODDAJNIK

MCP2551 je visoko hitrostna CAN naprava, ki služi kot vmesnik med mikrokrmilnikom in

CAN vodilom. Vsaka naprava v CAN sistemu potrebuje komponento (CAN sprejemnik-

oddajnik), ki pretvori digitalne signale v obliko, primerno za prenos preko CAN vodila,

prav tako pa služi kot zaščita za mikrokrmilnik pred napetostnimi sunki, ki jih lahko

povzročijo zunanji vplivi.

Naprava omogoča zmanjšanje elektromagnetnih motenj z omejitvijo časov vzpona in

padca napetosti na nožicah CANH in CANL, kar dosežemo z priklopom nožice Rs na

ozemljitev preko 10 kΩ upora.

Page 29: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

19

Tabela 3.3: Nožice MCP2551

Slika 3.5: Shema priklopa MCP2551 na mikrokrmilnik

3.5 PROGRAMATOR PICKIT 2

Programator PICkit 2 podjetja Microchip se uporablja za programiranje mikrokrmilnikov

serije PIC. Programator se z osebnim računalnikom poveže preko USB kabla, na drugi

strani pa se priključi direktno na vezje z mikrokrmilnikom, kar mu omogoča ICSP način

programiranja (ang. In Circuit Serial Programming). To pomeni, da mikrokrmilnik lahko

ves čas ostane v končnem vezju, kjer ga programiramo, programator pa vsebuje tudi

Št. nožice Ime nožice Opis

1 TXD Podatkovni vhod (pošiljanje)

2 Vss Ozemljitev

3 Vdd Napajalna napetost

4 RXD Podatkovni izhod (sprejemanje)

5 Vref Referenčna izhodna napetost

6 CANL Izhod na vodilo, nizka linija

7 CANH izhod na vodilo, visoka linija

8 Rs Nožica za izbiro načina delovanja

Page 30: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

20

razhroščevalnik, tako, da je omogočeno razhroščevanje med delovanjem vezja. Ti funkciji

sta primerni za razvoj programov, ne pa tudi za masovno programiranje.

Programator je povsem odprt za javnost, torej sta na razpolago njegova fizična zasnova in

programska oprema, ki ju lahko uporabniki prosto spreminjajo ali dograjujejo glede na

svoje potrebe. Vsebuje notranji EEPROM pomnilnik, na katerega je mogoče naložiti hex

datoteko, s katero lahko programiramo mikrokrmilnike brez osebnega računalnika.

Tabela 3.4: Nožice programatorja

Pri izdelavi vezja z mikrokrmilnikom je potrebno predvideti mesto priklopa za

programator, ki se priklopi na programator po shemi na sliki 3.6.

Slika 3.6: Shema priklopa programatorja na mikrokrmilnik

Št. nožice Ime nožice Opis

1 Vpp/MCLR Programirna napetost

2 Vdd Napajalna napetost mikrokrmilnika

3 Vss Ozemljitev

4 PGD Programirna podatkovna linija

5 PGC Programirni časovna linija

6 Auxillary Pomožna nožica

Page 31: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

21

3.6 ULTRAZVOČNI SENZORJI

Na voziček so nameščeni ultrazvočni senzorji razdalje SRF08, ki lahko merijo razdalje od

3 cm do 6 m. Senzor deluje podobno kot radar ali sonar. Oddaja visokofrekvenčne zvočne

valove, ki se odbijejo od objektov v vidnem polju senzorja, nato pa zazna odbojne valove

in izračuna razdaljo od predmeta glede na pretečeni čas med oddanim in sprejetim zvočnim

valom. Senzorji z mikrokrmilnikom komunicirajo preko I2C vodila, na enega pa je mogoče

povezati 16 takšnih naprav z naslovi E0, E2, E4, E6, E8, EA, EC, EE, F0, F2, F4, F6, F8,

FA, FC ali FE. Ker so sistemi in naprave na vozičku povezane preko CAN vodila, ima

vsak senzor SRF08 svoj mikrokrmilnik, ki mu določi naslov in skrbi za CAN

komunikacijo.

Tabela 3.5: Podatki ultrazvočnega senzorja

3.7 HMC6352 DIGITALNI KOMPAS

3.7.1 MAGNETOUPORNOST

Do anizotropne magnetoupornosti pride v feritnih materialih. Pri magnetoupornem pojavu

gre za spremembo upornosti materiala, ko ga izpostavimo magnetnemu polju, ki deluje

pravokotno na smer toka skozi tanek listič feritnega materiala, npr. zlitino niklja in železa.

Ko skozi tak material steče tok, se vektor magnetne polarizacije postavi vzporedno na smer

toka. Ob prisotnosti magnetnega polja, ki deluje pravokotno na smer toka, se vektor

Podatek Vrednost

Napetost 5 V

Tok 15 mA, 3 mA med mirovanjem

Frekvenca 40 KHz

Območje razdalje 3 cm do 6m

Enote ms, mm ali palci

Masa 12 g

Dimenzije 43 x 20 x 17 mm

Page 32: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

22

magnetne polarizacije odmakne za kot ρ, ki je odvisen od jakosti magnetnega polja H.

Upornost materiala je odvisna od omenjenega kota in je najmanjša, ko velja ρ = 90°.

Slika 3.7: Anizotropna magnetoupornost

Slika 3.8: Wheatstonov mostič

Za pretvornik je uporabljen Wheatstonov mostič. Upornost vseh štirih magnetouporov, ki

so po parih pravokotni na drugi par, kot kaže slika 3.8, je enaka R, skozi njih pa tok

poganja vhodna napetost Vb. Magnetno polje H povzroči, da se vektor magnetne

polarizacije v dveh nasproti ležečih uporih obrne v smeri toka, posledica česar je dvig

upornosti R. V preostalih dveh uporih se polarizacija obrne v obratni smeri toka, kar

povzroči padec upornosti R. V linearnem območju postane izhod ∆V sorazmeren jakosti

Page 33: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

23

magnetnega polja H. Velikost linearnega območja je obratno sorazmerna občutljivosti

senzorja.

Prednosti magnetoupornih senzorjev so:

brezkontaktno delovanje,

robustna izvedba,

visoka občutljivost,

odpornost na mehanske obremenitve,

odpornost na vibracije,

hiter odziv in

majhne dimenzije.

Slabosti magnetoupornih senzorjev:

občutljivost na moteča magnetna polja,

močna magnetna polja lahko senzor poškodujejo,

vpliv temperature in

omejeno linearno območje.

Magnetouporni senzorji se uporabljajo za meritve hitrosti koles, meritve kotov, meritve

linearnih pomikov, meritve tokov, zaznavanje zemeljskega magnetnega polja, zaznavanje

kovin in za meritve magnetnega polja.

3.7.2 MODUL DIGITALNEGA KOMPASA

Digitalni kompas HMC6352 podjetja Honeywell je popolnoma integriran modul z

dvoosnimi megnetometri, mikroprocesorjem in algoritmi, potrebnimi za izračun smeri, ki

je podana v stopinjah. Modul vsebuje algoritme za umerjanje, temperaturno kompenzacijo

in zaščito pred neželenimi magnetnimi polji. Senzorsko enoto na sliki 3.9 je izdelal študent

David Šebjanič.

Page 34: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

24

Slika 3.9: Senzorska enota z modulom digitalnega kompasa

Kompas ima naslednje lastnosti:

široko območje vhodne napetosti za uporabo z večino mikrokrmilnikov,

digitalni izhod po I2C vodilu v obliki z enim decimalnim številom,

umerjanje za natančnost do 2,5°,

samodejen izračun smeri, s čimer je programiranje poenostavljeno,

zaščita pred parazitskimi magnetnimi polji in

nizka poraba toka.

Preseganje maksimalnih vrednosti lahko trajno poškoduje vezje in senzorje ter povzroči

napake v delovanju.

Tabela 3.6: Lastnosti modula HMC6352

Lastnost Opis Min Tip Maks Enota

Napetost Priključna napetost 2,7 3 5,2 V

Tok

Spanje

Delovanje (3V)

Delovanje (5V)

1

1

2 10

µA

mA

mA

Obseg polja 0,1 - 0,75 G

Natančnost smeri 2,5 °

Ločljivost smeri 0,5 °

Ponovljivost 1 °

Polje (motnja) Občutljivost pade 20 10000 G

Delovna temperatura -20 70 °C

Izhod Smer (°), Mag x, Mag y

Velikost 11,7 x 14,7 x 13,7 mm

Page 35: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

25

Varnostni ukrepi:

Kompasa ne smemo uporabljati ali shranjevati blizu močnih magnetnih polj, ki jih

povzročajo magneti, elektromotorji in večje tuljave.

Magnetna polja, močnejša od 10000 G ali 1 T, lahko trajno poškodujejo senzorje v

kompasu.

Kompas namestimo čim dlje od motečih magnetnih polj, ki jih povzročajo magneti,

motorji, kabli, tuljave, kovinska ohišja itd.

Vhodna napetost ne sme preseči 5,2 V.

Tabela 3.7: Nožice modula HMC6352

Shema priklopa modula kompasa je na sliki 3.10. Nožici 1 in 2 (SDA1 in SDA2) sta

notranje povezani, zato je vseeno, katero uporabimo. Ko je rdeča puščica na sliki 3.10

usmerjena proti severu, kompas prikazuje kot 0°.

Slika 3.10: Shema priklopa modula HMC6352 na mikrokrmilnik

Št. Nožice Ime nožice Opis Tip

1 SDA1 Serijska podatkovna linija Vhod/izhod

2 SDA2 Serijska podatkovna linija Vhod/izhod

3 GND Ozmeljitev Napajanje

4 SCL Serijska časovna linija Vhod

5 NC Ni povezano -

6 VDD Napetost V+ Napajanje

Page 36: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

26

3.7.3 NAMESTITEV KOMPASA NA INVALIDSKI VOZIČEK VOIC

Senzorski modul z digitalnim kompasom smo namestili na konzolo na konzolo za

nameščanje senzorjev, kjer je najbolj oddaljen od motorjev in akumulatorjev, in sicer tako,

da pri usmeritvi vozička proti severu kompas kaže vrednost 0°.

Slika 3.11: Postavitev digitalnega kompasa na VOIC vozičku

3.7.4 UKAZNI PROTOKOL

Ukazni protokol določa vsebino podatkovnih zlogov, ki jih pošiljata gospodar in suženj

(HMC6352). Potem, ko gospodar pošlje 7-bitni naslov in LSB bit za branje/pisanje ter

sprejme ACK bit od sužnja, so naslednji eden do trije zlogi ukaz sužnju in njegovi

argumenti. Za zmanjšanje prenosov po vodilu so vsi odzivi sužnja vezani na zadnji ukaz

gospodarja. Vrednost LSB bita v naslovu je za vse ukaze za zapis enaka 0 (42(hex)). Za

ukazom za zapis sledi naslednji ukaz v ASCII ali šestnajstiški obliki, za njim pa lahko

sledita še dva njegova argumenta. Skupna oblika je torej:

[Naslov I2C + LSB] [Ukaz ASCII (hex)] [Argument 1. zlog] [Argument 2. zlog]

Page 37: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

27

Kompas med vsakim podatkovnim zlogom pošlje ACK bit. Branje odzivov se vrši s

pošiljanjem naslova kompasa, kjer je vrednost LSB bita 1 (43(hex)), nato preberemo

najprej MSB zlog in zatem še LSB zlog.

Tabela 3.8: Ukazi kompasu HMC6352

3.7.5 EEPROM

HMC6352 ima na voljo EEPROM pomnilnik (ang. Electrically Erasable Programmable

Read-Only Memory), v katerem so podatki hranjeni tudi, ko kompas nima napajanja. V

EEPROM-u so zapisani podatki o načinu delovanja in ostale ključne nastavitve, vključno z

I2C naslovom kompasa.

Tabela 3.9: EEPROM naslovi kompasa

Ukaz

ASCII (hex)

Argument

1. zlog

Argument

2. zlog

Odziv

1. zlog

Odziv

2. zlogOpis

w (77) EEPROM naslov Podatek Zapis v EEPROM

r (72) EEPROM naslov Podatek Branje iz EEPROM-a

G (47) RAM naslov Podatek Zapis v RAM register

g (67) RAM naslov Podatek Branje iz RAM registra

S (53) Prehod v spanje

W (57) Izhod iz spanja

O (4F) Posodobitev offset vrednosti mostiča

C (43) Vstop v umerjanje

E (45) Izhod iz umerjanja

L (4C) Shrani način delovanja v EEPROM

A (41) MSB podatek LSB podatek Izračunaj in pošlji smer

EEPROM

naslov (hex)Opis zloga Tovarniška nastavitev

00 I2C naslov 42(hex)

01 Magnetometer X Offset MSB Tovarniška testna vrednost

02 Magnetometer X Offset LSB Tovarniška testna vrednost

03 Magnetometer Y Offset MSB Tovarniška testna vrednost

04 Magnetometer Y Offset LSB Tovarniška testna vrednost

05 Časovna zakasnitev 01(hex)

06 Število meritev za povprečenje 04(hex)

07 Verzija programske opreme >01(hex)

08 Zlog za nastavitev načina delovanja 50(hex)

Page 38: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

28

3.7.6 NASTAVITVE DELOVANJA KOMPASA

HMC6352 ima dve veji nastavitev:

nastavitev načina delovanja (način pripravljenosti, poizvedbeni in kontinuirani) in

nastavitev izhodnega podatka kompasa (smer v stopinjah ali podatki

magnetometra).

3.7.6.1 NASTAVITEV NAČINA DELOVANJA

HMC6352 ima tri načine delovanja in možnost prehoda v spanje, ki zaustavi vgrajeni

mikroprocesor, s čimer je omogočeno varčevanje z energijo.

Načini delovanja so:

Način pripravljenosti: tovarniška nastavitev, pri kateri kompas čaka gospodarjeve

ukaze ali spremembo načina delovanja. Primerna je za pridobivanje podatkov v

želenih intervalih.

Poizvedbeni način: v tem načinu mikroprocesor čaka na ''A'' ukaz, pripravi

potrebne meritve in izračune in čaka na naslednje branje s strani gospodarja. Po

vsakem branju kompas ponovno preračuna smer in vrednosti shrani v registre. Ta

način delovanja je zasnovan tako, da gospodar dobi podatke kompasa takoj, brez

''A'' ukaza.

Kontinuirani način: kompas neprekinjeno izvaja meritve in preračune pri izbranih

frekvencah (1Hz, 5Hz, 10Hz ali 20Hz) in posodablja izhodne zloge brez ''A'' ukaza.

Gospodar vedno prebere najnovejši podatek o smeri. Pri tem načinu imamo na

voljo Set/Reset funkcije, ki preuredi senzorjeve magnetne domene v primeru

prevelikih magnetnih ali temperaturnih sprememb.

Način delovanja, frekvenco meritev in Set/Reset funkcijo izbiramo s pomočjo

nastavitvenega zloga, ki je shranjen v EEPROM pomnilniku in RAM registru. Po priklopu

napajanja se zlog, shranjen v EEPROM-u shrani v RAM register na naslovu 74(hex).

Vrednosti bitov v nastavitvenem zlogu:

Bit 7 = 0

Bita 6 in 5 (kontinuirani način)

Page 39: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

29

Bit 4 (Set/Reset funkcija, 0 = Izklopljeno, 1 = Vklopljeno)

Bit 3 = 0

Bit 2 = 0

Bita 1 in 0 (izbira načina delovanja)

Celoten zlog je oblike:

3.7.6.2 NASTAVITEV IZHODNEGA PODATKA KOMPASA

Kompas se po ''A'' ukazu odzove z dvema zlogoma v binarnem zapisu. Ta je lahko

vrednost smeri v stopinjah ali podatek magnetometra, pri čemer so negativne vrednosti

zapisane v dvojiškem komplementu. Po priključitvi kompasa na napetost je izhodni

podatek vedno v obliki vrednosti smeri v stopinjah, druge izhodne podatke lahko dobimo s

spreminjanjem RAM registra na naslovu 4E(hex).

3.7.7 UMERJANJE KOMPASA

Kompas ima način za umerjanje, v katerega vstopimo s ''C'' in izstopimo z ''E'' ukazom. V

tem načinu moramo vrteti kompas na ravni površini in opraviti vsaj en obrat, pri čemer

Bit 6 Bit 5 Opis

0 0 Frekvenca 1Hz

0 1 Frekvenca 5Hz

1 0 Frekvenca 10Hz

1 1 Frekvenca 20Hz

Bit 1 Bit 0 Opis

0 0 Način pripravljenosti

0 1 Poizvedbeni način

1 0 Kontinuirani način

1 1 Ni dovoljeno

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

0 Frekvenca_H Frekvenca_L Set/Reset 0 0 Način delovanja_H Način delovanja_L

Page 40: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

30

kompas opravlja več meritev na sekundo. Pomembno je, da kompas vrtimo s približno

enako kotno hitrostjo. Umerjanje je optimalno pri dveh obratih kompasa v časovnem

razponu 20 sekund. Umerjanje se opravlja v končnem delovnem okolju kompasa, kjer so

prisotne vse morebitne motnje.

3.7.8 POVPREČENJE

Povprečenje se uporablja za zmanjševanje podrhtavanja (ang. Jitter) izhodnega signala

kompasa, ki deluje tako, da izračuna povprečje izbranega števila meritev. Vrednost tega

števila zapišemo na EEPROM pomnilniško mesto z naslovom 06(hex), v šestnajstiškem

zapisu, izbiramo pa lahko vrednosti od 00(hex) do 10(hex), kar je v desetiškem zapisu od 0

do 16.

3.7.9 ČASOVNE ZAHTEVE

V tabeli so zapisane časovne potrebe kompasa od prejema ukaza do izvršitve.

Tabela 3.10: Časovne zahteve kompasa

Ukaz

ASCII (hex)Opis

Zakasnitev

(μsec)

w (77) Zapis v EEPROM 70

r (72) Branje iz EEPROM-a 70

G (47) Zapis v RAM register 70

g (67) Branje iz RAM registra 70

S (53) Prehod v spanje 10

W (57) Izhod iz spanja 100

O (4F) Posodobitev offset vrednosti mostiča 6000

C (43) Vstop v umerjanje 10

E (45) Izhod iz umerjanja 14000

L (4C) Shrani način delovanja v EEPROM 125

A (41) Izračunaj in pošlji smer 6000

Page 41: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

31

4. PROGRAMSKA OPREMA

4.1 MPLAB IDE

MPLAB IDE je integrirano razvojno okolje (ang. Integrated Development Environment)

za vgrajene sisteme, ki deluje na osebnem računalniku, s katerim pišemo, spreminjamo in

razhroščujemo programe za mikrokrmilnike. Urejevalnik programerju pomaga pri pisanju

pravilne kode, saj takoj označi sintaktične nepravilnosti. Program vsebuje tudi projektni

organizator datotek, ki so del projekta, kot so izvorne kode, datoteke z glavami in

knjižnice. Ko je koda zgrajena, lahko izbiramo stopnjo optimizacije kode in izbiramo

lokacijo, kamor bodo na mikrokrmilnik shranjene posamezne spremenljivke. Ko napisano

kodo prevedemo, nam prevajalnik takoj sporoči morebitne napake in njihovo lokacijo, za

čimer popravimo napake in kodo ponovno prevedemo. Ta proces se med izdelavo

programa lahko večkrat ponovi, sploh pri kompleksnejših aplikacijah, vendar nam MPLAB

pomaga napake odpraviti čim hitreje.

Napisano kodo je potrebno preizkusiti, čemur sta namenjena razhroščevalnik in

programski simulator, ki simulira delovanje mikrokrmilnika. Tudi če elektronska vezja še

niso dokončana, lahko pričnemo s testiranjem na simulatorju, ki lahko sprejema vhodne

signale v mikrokrmilnik in simulira njegov odziv, meri čas izvajanja kode, omogoča pa

tudi izvajanje korak za korakom, da lahko opazujemo vse spremenljivke in signale.

Ko je vezje zgrajeno, lahko kodo preizkusimo tudi na fizičnem mikrokrmilniku, vendar se

pogosto zgodi, da ne deluje pravilno. Popravljanju semantičnih napak je namenjen

razhroščevalnik, ki omogoča izvajanje kode korak za korakom na mikrokrmilniku (ICSP).

Proces pisanja kode od začetka do delujoče kode se imenuje razvojni cikel, ki poteka po

shemi na sliki 4.1.

MPLAB IDE služi kot okolje z vsemi programskimi orodji za potek razvojnega cikla. Ko

smo zadovoljni z delovanjem kode, sledi še programiranje mikrokrmilnika s

programatorjem, kot je na primer PICKit 2.

Page 42: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

32

Slika 4.1: Shema razvojnega cikla

Slika 4.2: Projektni organizator

Projektni organizator strukturira datoteke za urejanje in ostale datoteke, tako da se jih

lahko pošlje v prevajalnik ali zbirnik in na koncu v povezovalnik. Slednji ima nalogo

shranjevanja posameznih objektov in delov kode iz zbirnika ali prevajalnika ter knjižnic na

pravo pomnilniško mesto v mikrokrmilniku, obenem pa skrbi, da vsi moduli delujejo drug

z drugim in so povezani. Proces prevajanja in povezovanja se imenuje gradnja projekta.

Page 43: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

33

Izvorne datoteke so tekstovne datoteke, ki so napisane po sintaktičnih pravilih zbirnika ali

prevajalnika. Ta jih spremenita v vmesne module strojne kode in mesta za reference do

funkcij in pomnilniških mest. Povezovalnik potem razdela ta mesta in združi module v

datoteke izvršljive strojne kode, izdela pa tudi datoteko za razhroščevanje, ki programu

MPLAB določi relacije med izvorno in strojno kodo.

4.2 PREVAJALNIK C18

Prevajalnik je računalniški program, ki prevede računalniško kodo višjega programskega

jezika v strojno kodo. Prevajalnik ustvari izvršljivo datoteko za drugačen sistem od tistega,

na katerem se izvaja sam, zato ga imenujemo tudi navzkrižni prevajalnik (ang. Cross-

compiler). Uporabljamo C18 prevajalnik podjetja Microchip, ki ima naslednje lastnosti:

skladnost z ANSI C 89' standardom,

deluje s programom MPLAB IDE,

možnost programiranja v zbirniku in C programskem jeziku v istem projektu,

generator kode z več nivojsko optimizacijo in

široka podpora knjižnic, ki vključujejo PWM, SPI, I2C, UART, USART ter

matematične knjižnice.

Programiranje v programu MPLAB IDE

Najprej je potrebno ustvariti projekt, v katerega bodo vključene vse izvorne programske

datoteke, datoteke z glavami in knjižnice. To storimo z izbiro Project→New. Prikaže se

okno na sliki 4.3, v katerega vpišemo ime projekta (Project Name) in pot, kamor bomo

projekt shranili (Project Directory).

Slika 4.3: Okno New Project

Page 44: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

34

Nato moramo izbrati mikrokrmilnik, ki ga bomo uporabljali, kar storimo z izbiro

Configure→Select Device, v oknu, ki se odpre pa izberemo napravo (Device), v našem

primeru PIC18F458.

Slika 4.4: Okno Select Device

Preden začnemo s programiranjem, je potrebno v program MPLAB IDE vključiti

prevajalnik C18. Še preden lahko to storimo, je potrebno prevajalnik naložiti na

računalnik. Nato v programu MPLAB IDE izberemo Project→Select Language Toolsuite..

in v odprtem oknu pod »Active Toolsuite« izberemo Microchip C18 Toolsuite, spodaj pa

izberemo MPLAB C18 Compiler in MPLINK Object Linker ter se prepričamo, da njuni

poti (Location) vodita do mape, kamor smo naložili prevajalnik C18.

Slika 4.5: Okno Select Language Toolsuite

Page 45: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

35

Slika 4.6: Okno Build Options

Zatem izberemo Project→Build Options.. →Project ter v odprtem oknu izberemo zavihek

Directories in pod »Show directories for« izberemo Library search path, kliknemo »New«

in izberemo pot »Inštalacijska mapa\C18\lib«. Nato pod »Show directories for« izberemo

še Linker-Script Search Path in določimo pot »Inštalacijska mapa\C18\bin\LKR«.

Nato odpremo drevesno strukturo projekta z izbiro View→Project.

Slika 4.7: Drevesna struktura projekta

Page 46: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

36

Ta vsebuje mape, v katere bomo vstavili izvorne datoteke (Source Files), datoteke z

glavami (Header Files), ostale datoteke bo program izbral sam, glede na izbrani

mikrokrmilnik. Nove datoteke vstavimo z desnim klikom na mapo in izbiro Add Files...

4.3 VISUAL STUDIO

Microsoft Visual Studio je integrirano razvojno okolje (IDE), ki se uporablja za izdelavo

konzolnih aplikacij, aplikacij z grafičnimi vmesniki, spletnih aplikacij in strani, z uporabo

strojne kode, skupaj s kodo za platforme, ki jih podpirajo Microsoft Windows, Windows

Mobile, Windows CE, .NET Framework, .NET Compact Framework in Microsoft

Silverlight. Vključuje urejevalnik kode s podporo IntelliSense, ki povečuje hitrost

programiranja z zmanjševanjem najpogostejših napak tako, da ponuja samodokončevanje

ukazov, funkcij in spremenljivk, namige pri sintaktičnih napakah itd. Urejevalnik omogoča

tudi refaktoriranje kode, ki je proces spreminjanja notranje strukture programa brez vpliva

na njegovo zunanje obnašanje, z namenom, da se npr. izboljša njegova čitljivost.

Program ima vgrajen napreden razhroščevalnik, ki deluje tako na nivoju izvorne kode, kot

tudi na strojnem nivoju, z višjimi programskimi jeziki ali strojno kodo. Omogoča uporabo

pogojnih prekinitvenih točk, torej se prekinitev zgodi le, če je izpolnjen določen pogoj,

izvajanje korak za korakom, skoke v in preko funkcij ter popravljanje kode med

razhroščevanjem in nadaljevanje.

Pomembno orodje je tudi Windows Forms Designer ali izdelovalec Windows obrazcev, s

katerim ustvarimo grafični vmesnik za operacijski sistem Windows. Uporablja tehnologijo

za .NET Framework, nabor knjižnic, ki poenostavijo pogosta opravila aplikacij, kot je na

primer branje iz datotečnega sistema in pisanje vanj. Aplikacije z grafičnim vmesnikom

lahko izpisujejo podatke, zahtevajo interakcijo uporabnika, ali se povezujejo z drugimi

računalniki.

Visual Studio v osnovi omogoča uporabo programskih jezikov, kot so C, C++, Visual

Basic.NET, C#, F#, XML/XSLT, HTML/XHTML, JavaScript in CSS, vendar lahko z

nadgraditvijo uporabljamo jezike.

Page 47: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

37

Slika 4.8: Razvojno okolje Visual Studio

Page 48: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

38

5. IZDELAVA PROGRAMA ZA PIC MIKROKRMILNIK NA

SENZORSKI ENOTI DIGITALNEGA KOMPASA

Program za PIC mikrokrmilnik na senzorski enoti digitalnega kompasa vsebuje tri izvorne

datoteke:

Can.c,

MainI2C.c in

Sensor.c

ter štiri datoteke z glavami:

Can.h,

CANDef.h,

MainI2C.h in

delays.h.

Slika 5.1: Drevesna struktura projekta

Page 49: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

39

Can.c datoteka vsebuje vse funkcije, potrebne za CAN komunikacijo. V datoteki Sensor.c

se vrši glavni program senzorske enote, ki skrbi za CAN komunikacijo in za klic funkcij za

komunikacijo mikrokrmilnika z digitalnim kompasom preko I2C vodila.

Del programske kode datoteke Sensor.c:

void main() //Glavni program

struct CANMessage RX_Message, TX_Message; //Definicija dveh

struktur sporočila, ena za sprejem, ena za pošiljanje

short int MSB, LSB; //Definicija spremenljivk

za dva zloga kompasovega podatka

CANInit(); //Inicializacuija CAN modula

INTCONbits.GIE = 1; //Vklopimo prekinitve

INTCONbits.PEIE = 1;

RCONbits.IPEN = 1; //Vklopimo prioritete prekinitev

IPR1bits.RCIP = 0; // Vse periferne prekinitve, vključno z RS232

so nizke

IPR3 = 0xFF;

PIR1 = 0x00;

TRISC = 0b00011000;

SetupI2C(); //funcija za inicializacijo I2C

DataAveraging(); //funkcija za povprečenje

OperationalMode();

//ReadFromMemory(&LSB);

while(1)

if(CANRXMessageIsPending()) //se izvede, če je

prisotno sporočilo na CAN vodilu

RX_Message = CANGet(); //preberemo sporočilo

if(RX_Message.Address == MY_REC_ID) //se izvede, če je CAN

naslov sporočila enak naslovu kompasa 0x11

//ReadData(&MSB, &LSB); // funkcija za branje v

Standby mode

ReadLastData(&MSB, &LSB); // funkcija za branje v

Continuous mode

TX_Message.Address = MY_RESPONSE_ID; //naslov kompasa

za pošiljanje 0xBB

TX_Message.Ext = 0;

TX_Message.NoOfBytes = 3; //število zlogov

v sporočilu

TX_Message.Remote = 0;

TX_Message.Priority = 0;

TX_Message.Data[0] = MSB; //prvi podatkovni

zlog

TX_Message.Data[1] = LSB; //drugi

podatkovni zlog

Page 50: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

40

CANPut(TX_Message); //pošljemo

sporočilo

Na začetku main funkcije definiramo dve strukturi tipa CANMessage (definicija v Can.h),

RX_Message za sprejeta sporočila in TX_Message za sporočila, ki jih želimo poslati.

Definiramo tudi spremenljivki MSB in LSB tipa short int, v kateri shranjujemo dva zloga

podatkov iz kompasa in jih pošiljamo na CAN vodilo. Zatem sledi vklop prekinitev in

njihovih prioritet. Potem sledijo funkcije za inicializacijo I2C komunikacije, povprečenje in

izbiro načina delovanja kompasa.

Zatem vstopimo v neskončno zanko, v kateri najprej z ukazom

CANRXMessageIsPending() preverimo, ali v medpomnilniku obstaja neprebrano

sporočilo in če obstaja, ga shranimo v spremenljivko RX_Message z ukazom CANGet().

Nato preverimo, ali se naslovno polje v sporočilu ujema s sprejemnim naslovom za klic

naprave (senzorske enote kompasa) in če se, sledi klic funkcije ReadLastData() ali

ReadData(), odvisno od načina delovanja, s katero pridobimo podatke iz digitalnega

kompasa. Zatem opremimo strukturno spremenljivko TX_Message z odzivnim naslovom

in podatki ter jo pošljemo po CAN vodilu.

V datoteki MainI2C.c so definirane funkcije za:

inicializacijo I2C komunikacije: SetupI2C()

izbiro povprečenja: DataAveraging()

izbiro načina delovanja kompasa: OperationalMode()

branje iz RAM ali EEPROM pomnilnika: ReadFromMemory(short in *Data)

branje v načinu pripravljenosti (Standby): ReadData(*MSB, *LSB)

branje v kontinuirnem načinu (Continuous): ReadLastData();

Programska koda datoteke MainI2C.c s komentarji in razlago:

#include <p18f458.h> // Vključitev datotek z glavami

#include "MainI2C.h" //

#include <i2c.h> //

#include <delays.h> //

Page 51: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

41

void SetupI2C(void) //nastavitev I2C

OpenI2C(MASTER, SLEW_OFF); //PIC je gospodar, hitrost je

100kHz

SSPADD = 49; //SSPADD =

((Fosc/BitRate)/4)-1 = ((20Mhz/100kHz)/4)-1 = 49

V začetku vključimo datoteke z glavami, med katerimi so datoteke »p18f458.h«, »i2c.h« in

»delays.h« vključene v inštalacijski paket prevajalnika C18, datoteko »MainI2C.h« pa smo

ustvarili sami. Sledi definicija funkcije SetupI2C(), v kateri uporabimo ukaz OpenI2C, ki

ima parametra MASTER in SLEW_OFF. Prvi definira mikrokrmilnik kot gospodarja,

drugi pa hitrost vodila 100kHz. Definiramo še vrednost SSPADD registra, katerega

spodnjih sedem bitov v načinu gospodarja generira vrednost za hitrost prenosa podatkov.

Izračuna se po enačbi:

𝑆𝑆𝑃𝐴𝐷𝐷 =

𝐹𝑜𝑠𝑐 𝐻𝑖𝑡𝑟𝑜𝑠𝑡 𝑝𝑟𝑒𝑛𝑜𝑠𝑎⁄

4− 1 =

20𝑀𝐻𝑧 100𝑘𝐻𝑧⁄

4− 1 =

= 49

(5.1)

//***********************************************************

***********************************************************//

// Funkcija: DataAveraging()

//

// Opis: Funkcija za izbiro povprečenja (zmanjšanje

podrhtavanja), možne so vrednosti od 0 do 16 vzorcev

//

// Ukaz: 0x77 - Pisanje v EEPROM

//

// Naslovi: 0x42 - I2C naslov kompasa (pisanje)

// 0x06 - EEPROM naslov za vrednost

povprecenja

//

// Vrednosti povprečenja: 0x00 - Brez povprečenja

// 0x10 - 16 vzorcev za

povprečenje

//

//***********************************************************

***********************************************************//

void DataAveraging()

Page 52: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

42

StartI2C(); //Start signal

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C(0x42); //Naslov kompasa (pisanje)

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C(0x77); //Ukaz za zapis v EEPROM

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C(0x06); //EEPROM naslov za zapis

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C(0x10); //Vrednost povprečenja

IdleI2C(); //Čakanje na mirovanje vodila

StopI2C(); //Stop signal

Funkcija DataAveraging() vsebuje niz ukazov, s katerimi v EEPROM pomnilnik na naslov

0x06 shranimo vrednost števila vzorcev za povprečenje. Niz ukazov začnemo z ukazom

StartI2C(), ki ustvari START signal na vodilu zaključimo s StopI2C(), ki ustvari STOP

signal. Med posameznimi ukazi uporabimo ukaz IdleI2C(), ki ustvari zakasnitev, dokler

vodilo ni v mirovnem stanju. Najprej po vodilu pošljemo naslov naprave, s katero želimo

komunicirati, v našem primeru 42 (hex). Nato pošljemo ukaz WriteI2C(0x77) za zapis v

EEPROM, za katerim sledita naslov EEPROM lokacije z ukazom WriteI2C(0x06) in

vrednost za povprečenje z ukazom WriteI2C(0x10), ki pomeni 16 vzorcem meritev za

povprečenje.

//***********************************************************

***********************************************************//

// Funkcija: OperationalMode()

//

// Opis: Funkcija za izbiro načina delovanja (OM)

//

// Ukazi: 0x47 - Pisanje v RAM

// 0x77 - Pisanje v EEPROM

// 0x4C - Zapis OM iz RAM-a v EEPROM

//

// Naslovi: 0x42 - I2C naslov kompasa (pisanje)

// 0x74 - Naslov RAM registra za OM

// 0x08 - EEPROM naslov za OM

//

// Vrednosti OM: 0x50 - Standby mode

// 0x51 - Query mode

// 0x72 - Continuous mode 20Hz

//

//***********************************************************

***********************************************************//

Page 53: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

43

void OperationalMode()

StartI2C(); //Start signal

WriteI2C(0x42); //Naslov kompasa (pisanje)

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C(0x47); //Ukaz za pisanje v RAM

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C(0x74); //Naslov RAM registra, v katerega

zapisujemo

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C (0x72); //OM zlog --->continuous mode 20Hz

//WriteI2C (0x50); //OM zlog --->standby mode

//WriteI2C (0x51); //OM zlog --->query mode

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C(0x4C); //Ukaz za prenos OM zloga iz RAM-a

v EEPROM

IdleI2C(); //Čakanje na mirovanje vodila

StopI2C(); //Stop signal

Funkcija OperationalMode() je namenjena izbiri načina delovanja kompasa, kar se izvrši z

zapisom vrednosti OM zloga v RAM register na lokaciji 0x74. Niz ukazov začnemo z

ukazom StartI2C() in zaključimo s StopI2C(), med ukazi uporabimo IdleI2C(). Najprej z

ukazom WriteI2C(0x42) pošljemo naslov kompasa. Zatem mu pošljemo ukaz

WriteI2C(0x47), ki pomeni pisanje v RAM pomnilnik. Nato moramo posredovati naslov

lokacije RAM registra, v katerega želimo pisati, kar storimo z ukazom WriteI2C(0x74), za

tem ukazom pa sledi še zapis podatkov z WriteI2C(0x72), ki pomeni kontinuirni način

delovanja s frekvenco 20 Hz. V programski kodi sta še ukaza za ostala dva načina

delovanja, ki sta zakomentirana (izpuščena iz prevajanja). Na koncu je uporabljen še ukaz

WriteI2C(0x4C), ki OM zlog iz RAM registra shrani tudi v EEPROM pomnilnik.

//***********************************************************

***********************************************************//

// Funkcija: ReadFromMemory()

//

// Opis: Funkcija za branje iz RAM-a ali EEPROM-a

//

// Ukazi: 0x67 - Branje iz RAM-a

// 0x72 - Branje iz EEPROM-a

//

// Naslovi: 0x42 - I2C naslov kompasa (pisanje)

// 0x43 - I2C naslov kompasa (branje)

Page 54: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

44

// 0x74 - RAM register za OM

// 0x08 - EEPROM naslov za OM

//

// Vrednosti OM: 0x50 - Standby mode

// 0x51 - Query mode

// 0x72 - Continuous mode 20Hz

//

//***********************************************************

***********************************************************//

void ReadFromMemory(short int *Data)

StartI2C(); //Start signal

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C(0x42); //Naslov kompasa (pisanje)

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C(0x67); //Ukaz za branje iz EEPROM-a

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C(0x74); //EEPROM naslov za OM zlog

IdleI2C(); //Čakanje na mirovanje vodila

StopI2C(); //Stop signal

Delay10TCYx(40); //Zakasnitev 80us

StartI2C(); //Start signal

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C(0x43); //Naslov kompasa (branje)

IdleI2C(); //Čakanje na mirovanje vodila

(*Data) = ReadI2C(); //Shranimo prebrano vrednost

NotAckI2C(); //NACK signal

StopI2C(); //Stop signal

Funkcija ReadFromMemory(short int *Data) se uporablja za branje enega zloga iz RAM

ali EEPROM pomnilnika. Niz ukazov začnemo z ukazom StartI2C(), med ukazi

uporabimo IdleI2C(). Najprej z ukazom WriteI2C(0x42) pošljemo naslov kompasa. Nato

pošljemo ukaz za branje iz RAM-a z WriteI2C(0x67) ali EEPROM-a z WriteI2C(0x72).

Zatem sledi naslov lokacije, iz katere želimo brati z WriteI2C(0xnaslov). Potem pošljemo

STOP signal in po zakasnitvi ponovno pošljemo START signal. Tokrat pošljemo

kompasov naslov za branje z ukazom WriteI2C(0x43), za katerim preberemo podatek v

*Data z ukazom ReadI2C(). Ko je vrednost shranjena pošljemo NACK signal in na koncu

še STOP.

//***********************************************************

***********************************************************//

// Funkcija: ReadLastData()

//

Page 55: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

45

// Opis: Funkcija za branje vrednosti kompasa, SAMO V

CONTINUOUS MODE!

//

// Naslov: 0x43 - I2C naslov kompasa (branje)

//

//***********************************************************

***********************************************************//

void ReadLastData(short int *MSB_Data, short int *LSB_Data)

LATC=0xff; //postavimo bite porta C na 1

(vklopimo LED)

StartI2C(); //Start signal

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C(0x43); //naslov kompasa (branje)

IdleI2C(); //Čakanje na mirovanje vodila

(*MSB_Data) = ReadI2C(); //Shranimo MSB zlog

AckI2C(); //ACK signal

IdleI2C(); //Čakanje na mirovanje vodila

(*LSB_Data) = ReadI2C(); //Shranimo LSB zlog

NotAckI2C(); //NACK signal

IdleI2C(); //Čakanje na mirovanje vodila

StopI2C(); //Stop signal

LATC=0; //postavimo bite porta C na 0

(izklopimo LED)

V kontinuirnem načinu za branje vrednosti iz kompasa uporabimo funkcijo

ReadLastData(short int *MSB_Data, short int *LSB_Data). Ker v kontinuirnem načinu ni

potreben »A« ukaz za branje vrednosti kompasa, z branjem vrednosti vedno dobimo svež

podatek. Najprej z ukazom LATC = 0xFF vklopimo LED diodo na portu C. Niz ukazov za

komunikacijo začnemo z ukazom StartI2C() in zaključimo s StopI2C(), med ukazi

uporabimo IdleI2C(). Najprej po vodilu pošljemo naslov za branje iz kompasa z ukazom

WriteI2C(0x43). Potem najprej preberemo MSB zlog podatka kompasa z ukazom

*MSB_Data = ReadI2C(), nato sledi ACK signal, zatem pa preberemo še LSB zlog z

ukazom *LSB_Data = ReadI2C(), za katerim sledi NACK signal. Na koncu izklopimo

LED diodo na portu C z ukazom LATC = 0.

//***********************************************************

***********************************************************//

// Funkcija: ReadData()

//

// Opis: Funkcija za branje vrednosti kompasa, SAMO V

STANDBY MODE!

//

Page 56: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

46

// Ukaz: 0x41 - "A" ukaz za meritev in izračun

smeri

//

// Naslovi: 0x42 - I2C naslov kompasa (pisanje)

// 0x43 - I2C naslov kompasa (branje)

//

//***********************************************************

***********************************************************//

void ReadData(short int *MSB_Data, short int *LSB_Data)

LATC=0xff; //postavimo bite porta C na 1

(vklopimo LED)

StartI2C(); //Start signal

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C(0x42); //Naslov kompasa je 0x42

(pisanje)

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C(0x41); //"A" ukaz za meritev in

izračun smeri

IdleI2C(); //Čakanje na mirovanje vodila

StopI2C(); //Stop signal

Delay10TCYx(40); //zakasnitev 80us

StartI2C(); //Start signal

IdleI2C(); //Čakanje na mirovanje vodila

WriteI2C(0x43); //Naslov kompasa (branje)

IdleI2C(); //Čakanje na mirovanje vodila

(*MSB_Data) = ReadI2C(); //Shranimo MSB zlog

IdleI2C(); //Čakanje na mirovanje vodila

AckI2C(); //ACK signal

IdleI2C(); //Čakanje na mirovanje vodila

(*LSB_Data) = ReadI2C(); //Shranimo LSB zlog

NotAckI2C(); //NACK signal

IdleI2C(); //Čakanje na mirovanje vodila

StopI2C(); //Stop signal

LATC=0; //postavimo bite porta C na 0

(izklopimo LED)

V poizvedbenem načinu za branje vrednosti kompasa uporabimo funkcijo ReadData(short

int *MSB_Data, short int *LSB_Data), ki za vsako branje kompasu pošlje ukaz »A«.

Najprej z ukazom LATC = 0xFF vklopimo LED diodo na portu C. Niz ukazov začnemo z

ukazom StartI2C(), med ukazi uporabimo IdleI2C(). Po vodilu pošljemo naslov kompasa

za pisanje z ukazom WriteI2C(0x42). Zatem sledi »A« ukaz, ki ga pošljemo z ukazom

WriteI2C(0x41). Nato pošljemo STOP signal in po zakasnitvi ponovno START. Tokrat

pošljemo kompasov naslov za branje z ukazom WriteI2C(0x43). Potem najprej preberemo

Page 57: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

47

MSB zlog podatka kompasa z ukazom *MSB_Data = ReadI2C(), nato sledi ACK signal,

zatem pa preberemo še LSB zlog z ukazom *LSB_Data = ReadI2C(), za katerim sledi

NACK signal. Na koncu izklopimo LED diodo na portu C z ukazom LATC = 0.

Page 58: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

48

6. DOPOLNITEV UPORABNIŠKEGA PROGRAMA ZA

OSEBNI RAČUNALNIK

Izdelan je bil program za mikrokrmilnik PIC18F458, ki skrbi za komunikacijo sistemov na

vozičku z osebnim računalnikom, nato pa je bilo v okviru številnih projektov v okolju

Visual Studio izdelanih več programov za vodenje, ki med drugim služijo tudi kot

uporabniški vmesnik. Ta uporabnikom v večini primerov omogoča izpis stanja senzorjev,

nameščenih na voziček, obenem pa tudi nekaj preprostih ukazov za upravljanje z

vozičkom, kot so na primer ukazi naprej, nazaj, levo in desno. Za naše potrebe smo enega

od predhodno izdelanih programov dodelali. Celoten program je zelo obsežen in vsebuje

funkcije ostalih projektov, zato bomo opisali le najpomembnejše dele in naše spremembe.

Slika 6.1: Okno uporabniškega vmesnika

Podatki senzorjev VOIC vozička se preko RS-232 vodila prenašajo na osebni računalnik,

prav tako pa se po istem vodilu prenašajo ukazi vozičku. Vodilo RS-232 je serijsko, po

Page 59: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

49

njemu pa lahko naenkrat prenesemo le vrednost, manjšo od 256, zato pošiljamo sporočila z

več zaporednimi zlogi. Že obstoječi senzorji so vedno oddajali sporočila s podatkom

velikosti enega zloga skupaj s svojim naslovom. Podatki in naslovi so se shranjevali v

tabelo RS232Data z zaporednim povečevanjem indeksa. Možne vrednosti podatkov niso

bile nikoli enake vrednostim naslovov, zato je bilo razlikovanje med naslovi in podatki v

tabeli enostavno. Kompas HMC6352 v sporočilu oddaja podatek velikosti dveh zlogov in

svoj naslov, ki sta lahko v naključnem primeru enaka, zato moramo točno vedeti, katere

vrednosti v tabeli so podatek in katere naslov.

void PassingData() //Funkcija za branje sprejetih podatkov Free = false; int MSB, LSB, heading, celi_del, decimalni_del; //Definicije spremenljivk while (ReadPointer != WritePointer) //Dokler ReadPointer ni enak WritePointer int Naslov = (int)RS232Data[ReadPointer]; //V spr. Naslov shrani podatek iz tabele RS232Data z indeksom ReadPointer if (Naslov > 81) //Če je naslov večji od najmanjše možne vrednosti naslova switch (Naslov) //Če je naslov.. case 0xAA: //Primer: senzorska enota z naslovom 0xAA textBox7.Text = Convert.ToInt16(RS232Data[((ReadPointer + 1) % RS232Data.Length)]).ToString(); //izpis vrednosti iz tabele z indeksom, povečanim za ena ReadPointer = ((ReadPointer + 2) % RS232Data.Length); //povečanje indeksa za branje break; case 0xBB: //naslov kompasa MSB = RS232Data[((ReadPointer + 1) % RS232Data.Length)]; //v spremenljivko MSB shranimo naslednjo vrednost od naslova LSB = RS232Data[((ReadPointer + 2) % RS232Data.Length)]; //v spremenljivko LSB shranimo naslednjo vrednost heading = (MSB << 8) + LSB; //pretvorba dveh zlogov v podatek decimalni_del = heading % 10; //pretvorba za izpis celi_del = heading / 10; //pretvorba za izpis textBox17.Text = Convert.ToString(celi_del) + "." + Convert.ToString(decimalni_del); //izpis vrednosti kompasa (kot) dejanski_kot = Convert.ToDecimal(textBox17.Text); // shranimo vrednost kota v spremenljivko dejanski_kot //kot1 = Convert.ToDouble(textBox17.Text); //timer3.Start(); ReadPointer = ((ReadPointer + 3) % RS232Data.Length);

Page 60: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

50

break; default: ReadPointer = ((ReadPointer + 1) % RS232Data.Length); break; else ReadPointer = ((ReadPointer + 1) % RS232Data.Length); Free = true;

V funkciji najprej definiramo vse potrebne spremenljivke. Spremenljivki ReadPointer in

WritePointer sta definirani kot globalni spremenljivki z vrednostjo 0. Slednja se uporablja

za vrednosti indeksov v RS232Data tabeli, prva pa branje specifičnih indeksov v isti tabeli.

Ob vstopu v funkcijo PassingData() ima spremenljivka WritePointer vrednost števila

elementov, shranjenih v tabeli RS232Data (prvi indeks ima vrednost 0), spremenljivka

ReadPointer pa vrednost nič. V zanki while preverjamo, ali imata ti spremenljivki enako

vrednost, kar bi pomenilo, da smo pregledali celotno tabelo. Dokler se to ne zgodi,

shranjujemo vrednosti naslovov v spremenljivko Naslov. Dejstvo je, da ima tabela na

mestu z indeksom 0 shranjeno vrednost naslova naprave, naslednji dve lokaciji pa sta

odvisni od naprave same (število zlogov podatkov), zato prvi naslov v tabeli shranimo z

ukazom Naslov = (int)RS232[ReadPointer]. V nadaljevanju preverimo, katera naprava ima

naslov, shranjen v spremenljivki Naslov. Če gre za senzor, ki ima v programski kodi

naslov 0xAA in je dodan kot primer, potem vemo, da je vrednost v tabeli z indeksom

ReadPointer + 1 njegov podatek, ki ga v tem primeru izpišemo v polju textBox7. Nato

moramo povečati vrednost ReadPointer za 2, da pridemo do naslednjega naslova v tabeli in

ga shranimo v spremenljivko Naslov. V kolikor je vrednost spremenljivke Naslov enaka

0xBB, vemo da gre za naslov kompasa, torej sta vrednosti v tabeli z indeksoma

ReadPointer + 1 in ReadPointer + 2 dva zloga podatka iz kompasa, najprej MSB in potem

še LSB. Kompas pošilja vrednosti od 0 do 3599 v dveh zlogih, ki ju združimo tako, da

MSB zlog bitno zamaknemo za osem mest v levo in prištejemo LSB. Nato ločimo še celi

in decimalni del in vrednost kota izpišemo v polju textBox17, obenem pa to vrednost

shranimo v spremenljivko dejanski_kot, ki jo bomo uporabili kasneje. Zatem moramo še

Page 61: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

51

povečati vrednost ReadPointer za 3, da pridemo do naslednjega naslova v tabeli

RS232Data.

V istem programu smo potem izdelali aplikacijo, v kateri določimo, kam naj se voziček

VOIC obrne s pomočjo digitalnega kompasa. Upravljanje motorjev vozička se vrši s

pomočjo dveh digitalnih potenciometrov, ki simulirata enake vrednosti kot jih dajeta

potenciometra v krmilni palici. Ukazi za premikanje so omejeni na premikanje naprej,

nazaj, levo, desno, naprej levo, naprej desno, nazaj levo in nazaj desno, možne so tri

hitrosti, ki jih izberemo v uporabniškem vmesniku, vendar sta v praksi uporabni le višji

dve hitrosti (2 in 3), najnižjo hitrost pa uporabljamo, ko je voziček dvignjen in sta

pogonski kolesi v zraku. Aplikacijo smo zasnovali tako, da v uporabniški vmesnik vpišemo

želeno orientacijo (kot) in pritisnemo pojdi, voziček pa se na mestu obrne na želen kot.

Ukazi, potrebni za obračanje vozička so:

SendDataToPIC(0x08, Speed); // obračanje v levo

SendDataToPIC(0x04, Speed); // obračanje v desno

SendDataToPIC(0x00, 0x00); // stop

Vrednost spremenljivke Speed izberemo v spustnem meniju Hitrost. V programski kodi je

dodano tudi preverjanje bližine želenega kota, tj. kako daleč od želenega kota smo, vendar

ta del kode ni ključen za delovanje in ga tukaj ne bomo opisovali. Ker se pri 359,9° zgodi

prehod na 0°, je potrebno v programsko kodo dodati algoritem, ki določi, v katero stran se

mora voziček zavrteti, da bo najhitreje na cilju.

Programska koda:

private void obrni() //funkcija za obračanje byte Speed = GetSpeedFromBox(); if (blizu == true) //zastavica, ki se postavi, ko smo blizu želene pozicije Speed = 0x02; //če smo blizu, zmanjšamo hitrost //dec = Convert.ToDecimal(textBox17.Text); referenci_kot = Convert.ToDecimal(textBox19.Text); //referenčni kot je željena pozicija if (dejanski_kot > referenci_kot) // če je dejanski kot večji od želenega if ((dejanski_kot - referenci_kot) <= 180) //desno

Page 62: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

52

SendDataToPIC(0x08, Speed); //pojdi levo textBox20.Text = "levo"; //izpis smeri else SendDataToPIC(0x04, Speed); //pojdi desno textBox20.Text = "desno"; //izpis smeri if (dejanski_kot < referenci_kot) // če je dejanski kot manjši od želenega if ((referenci_kot - dejanski_kot) <= 180) SendDataToPIC(0x04, Speed);//pojdi desno textBox20.Text = "desno"; //izpis smeri else SendDataToPIC(0x08, Speed); //pojdi levo textBox20.Text = "levo"; //izpis smeri

Funkcija obrni() se izvede, ko kliknemo na gumb Pojdi (zastavica gumb_pojdi = true). V

njej najprej shranimo vrednost želenega kota v spremenljivko referencni_kot, vrednost

spremenljivke dejanski_kot pa je definirana v funkciji PassingData(), ki je bila opisana

prej. Nato moramo preveriti, ali je dejanski kot večji od želenega in če je, preverimo, ali je

razlika med dejanskim in želenim kotom manjša ali enaka 180. V tem primeru moramo

voziček obrniti v levo z ukazom SendDataToPIC(0x08, Speed), sicer pa v desno z ukazom

SendDataToPIC(0x04, Speed).

V kolikor je dejanski kot manjši od želenega, preverimo, ali je razlika med želenim in

dejanskim kotom manjša ali enaka 180 in v tem primeru obrnemo voziček v desno z

ukazom SendDataToPIC(0x04, Speed), sicer pa v levo z ukazom SendDataToPIC(0x08,

Speed).

V tej fazi se bo voziček v primeru razlike med želenim in dejanskim kotom obračal,

potrebno pa je dodati še algoritem, ki določi, kdaj se mora obračanje ustaviti:

private void textBox17_TextChanged(object sender, EventArgs e) if (gumb_pojdi == true)

Page 63: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

53

if ((dejanski_kot >= (referenci_kot - 10)) && (dejanski_kot <= (referenci_kot + 10))) //območje +- 10° od želenga kota SendDataToPIC(0x00, 0x00); //ustavi voziček textBox20.Text = "stop";

Funkcija textbox17_TextChanged se izvede vedno, ko se osvežijo podatki kompasa. V njej

preverimo, ali je postavljena zastavica za gumb Pojdi, nato pa preverimo, ali je dejanski

kot v območju ±10° od želenega kota. V tem primeru ustavimo voziček. Omenjeno

območje je pogojeno z izbrano hitrostjo vozička, saj je lahko osveževanje podatkov

kompasa prepočasno in vrednost želenega kota preskočimo.

Page 64: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

54

7. REZULTATI

Prvi od rezultatov je bil uspešno izdelan program za I2C komunikacijo med

mikrokrmilnikom PIC18F458 in digitalnim kompasom HMC6352. Ta vsebuje funkcije za

izbiro enega od treh možnih načinov delovanja kompasa, funkcije za branje iz RAM in

EEPROM pomnilniških mest, izbiro načina povprečenja in branje podatkov kompasa v

načinu pripravljenosti in kontinuirnem načinu. Potem je bil prirejen program glavnega

mikrokrmilnika v omrežju CAN, ki posreduje podatke preko vodila RS-232 osebnemu

računalniku. Uporabniški vmesnik, ki deluje na osebnem računalniku, je bil prirejen tako,

da lahko izpisuje vrednost kota orientacije digitalnega kompasa. Vanj so bila dodana tudi

aplikacija za praktično testiranje delovanja kompasa, ki nam omogoča izbiro želenega kota

orientacije vozička, voziček pa se sam obrne na želen položaj. V okviru te aplikacije smo

dobljene podatke prenesli v programsko okolje Matlab. Rezultat delovanja kompasa v

sistemu je prikazan na sliki 7.1, na kateri je prikazana razlika med dejanskim in

referenčnim kotom pri obračanju vozička v odvisnosti od časa.

Slika 7.1: Odziv vozička VOIC, vrtenje na mestu

Page 65: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

55

Razvidno je, da se je voziček v primeru razlike med dejanskim in referenčnim kotom pričel

obračati v pravilni smeri in da se je ustavil, ko je dosegel referenčno vrednost. Pri času t =

30 s lahko opazimo razliko v kotni hitrosti, ki se zgodi pri spremembi smeri obračanja

vozička in je posledica obračanja prvih koles. Pri času t = 60 s, je opazen statični pogrešek

okoli 5°, kar je za to aplikacijo še sprejemljivo, saj je območje ustavitve zaradi hitrosti

osveževanja senzorja omejeno na ±10° od želenega kota. Ker motorji vozička niso

regulirani, se voziček po prejetju signala za ustavitev zaradi njegove gibalne količine ne

ustavi nemudoma, zato lahko rečemo, da gre pri odzivu za dober rezultat. V primeru

drugačnega načina pošiljanja informacij motorjema bi se pojavil problem hitrosti

osveževanja podatkov na osebnem računalniku, na katerem teče program za vodenje.

Page 66: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

56

8. SKLEP

Cilj magistrske naloge je z uspešno izdelavo programske opreme za delovanje kompasa in

njegovo komunikacijo z ostalimi sistemi ter uspešnimi testiranji izpolnjen. Med delom smo

naleteli na številne probleme, ki niso bili neposredno povezani z magistrskim delom,

vendar so kljub temu onemogočali delo. Tako smo morali popraviti številne sisteme na

invalidskem vozičku, ki naj bi že delovali, npr. DC-DC pretvornik, senzorji razdalje,

vodila ipd.

Rezultati magistrske naloge kažejo, da je digitalni kompas deloval, vendar pa je njegova

uporaba vprašljiva zaradi njegovih karakteristik, kot je statični pogrešek 2,5°, vpliv motenj

in pomanjkanje kompenzacije naklona, vsaka stopinja naklona senzorja lahko v najslabšem

primeru doda 2 stopinji pogreška v izračunu smeri. Kompas je teoretično sposoben

izračunati smer in poslati podatek vsakih 6 ms, vendar je temu potrebno dodati še čase

komunikacije preko vodil I2C, CAN in RS-232, tako da se podatek v uporabniškem

vmesniku spremeni vsakih 250 ms, kar je prepočasi za morebiten izračun kotne hitrosti in

reguliranje motorjev. Voziček se za 360° lahko obrne v približno štirih sekundah, kar v

uporabniškem vmesniku pomeni 16 osvežitev podatka o orientaciji na obrat, torej so

razlike med osvežitvami lahko tudi večje od 20°, kar predstavlja težave pri vodenju

vozička. Vpliv motenj je velik, zato je zelo pomembna postavitev senzorske enote

kompasa na vozičku. Namestitev kompasa blizu delujočega motorja popači meritev tudi za

60°, zato smo kompas namestili na konzolo za senzorje razdalje, ki je najbolj oddaljena od

motorjev. Ker je namen uporabe kompasa pomoč pri navigaciji med prostori v domu, je

večino motenj moč predvideti in odstraniti ali jih obiti.

Aplikacija, ki smo jo razvili za testiranje kompasa, je delovala po pričakovanjih, vendar bi

jo bilo moč še izboljšati, pred tem pa bi bilo potrebno izboljšati način pošiljanja ukazov do

motorjev. Ta je zaenkrat osnovan na pošiljanju signalov, ki jih simulirata dva digitalna

potenciometra, program mikrokrmilnika, ki ju vodi, pa nam ni na voljo v nobeni od

dokumentacij avtorjev krmilnega vezja. Tako sta nam pri vrtenju na voljo le ukaza za levo

in desno, brez možnosti regulacije, kar je v praksi neuporabno. Ena od možnih aplikacij bi

bila tudi vožnja naravnost z regulacijo smeri, ki je trenutno neizvedljiva prav zaradi načina

pošiljanja ukazov motorjema.

Page 67: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

57

V prihodnosti bi bilo smiselno razmisliti o drugačnih pristopih za navigacijo vozička.

Možnosti je več, npr. induktivne zanke ali magneti v tleh, črte za sledenje na tleh,

označevanje prostorov, največ pozornosti pa bi bilo vredno nameniti robotskemu

mapiranju in vizualni navigaciji s pomočjo kamer.

Page 68: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

58

9. VIRI

[1] Pogorelc, J. Uvod v programiranje mikrokrmilnikov. Univerza v Mariboru,

Fakulteta za elektrotehniko in informatiko, 2005

[2] Medvešek, P. Senzorski modul za merjenje kotnega zasuka kolesa na

invalidskem vozičku. Maribor, 2011

[3] Añorga, E. Development of the feature extractor for speech recognition.

Maribor, 2009

[4] Šumej, K. Izdelava sistema senzorjev pri govornem upravljanju invalidskega

vozička. Maribor, 2009

[5] Javšnik, G. Razvoj programske in aparaturne opreme invalidskega vozička.

Maribor, 2009

[6] Žvar, T. Vgradnja ultrazvočnih senzorjev na invalidskem vozičku. Maribor,

2011

[7] MPLAB® IDE User’s Guide with MPLAB Editor and MPLAB SIM Simulator.

Microchip Technology, 2009, Dostopno na:

http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_User_Guide_51

519c.pdf [26.3.2013]

[8] 2-Axis Compass with Algorithms HMC6352. Dostopno na:

http://www51.honeywell.com/aero/common/documents/myaerospacecatalog-

documents/Missiles-Munitions/HMC6352.pdf [26.3.2013]

[9] I2C. Dostopno na: http://en.wikipedia.org/wiki/I%C2%B2C [10.6.2013]

[10] INVACARE SERVICE INSTRUCTIONS. Dostopno na:

http://doclibrary.invacare.nl/office/europe/marketing/mktdocnl.nsf/0/67a5523d

d973e110c1256dc6005b5c94/$FILE/1424712-Storm3-ServiceManual-

REV.008-English-LowRes.pdf [10.7.2013]

[11] INVACARE USER MANUAL. Dostopno na:

http://www.invacare.com/doc_files/1143151.pdf [10.7.2013]

[12] Motorized wheelchair. Dostopno na:

https://en.wikipedia.org/wiki/Motorized_wheelchair [10.7.2013]

Page 69: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

59

[13] Ultrazvočni senzorji. Dostopno na:

http://www.cs.york.ac.uk/micromouse/Docs/SRF08UltraSonicRanger.pdf

[ULTRAZVOČNI SENZORJI, 10.7.2013]

[14] PIC microcontroller. Dostopno na:

http://en.wikipedia.org/wiki/PIC_microcontroller [10.7.2013]

[15] CAN bus. Dostopno na: http://en.wikipedia.org/wiki/CAN_bus [10.7.2013]

[16] Non return to zero. Dostopno na: http://en.wikipedia.org/wiki/Non-return-

to-zero [11.7.2013]

[17] Magnetoresistive sensor. Dostopno na: http://sensors-actuators-

info.blogspot.com/2009/08/magnetoresistive-sensor.html [29.7.2013]

[18] Magnetic sensor overview. Dostopno na: http://sensors-actuators-

info.blogspot.com/2009/08/magnetoresistive-sensor.html [29.7.2013]

Page 70: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

60

10. PRILOGE

Priloga A: Naslov in življenjepis avtorja

Priloga B: CD s programi

Page 71: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

Nadgradnja senzorike invalidskega vozička VOIC z digitalnim kompasom

61

Priloga A

Naslov avtorja

Ime in priimek: Gregor Tuljak

Naslov: Pesje 25 A

Pošta: 8253 Artiče

Tel. št: 031 715 919

e-mail: [email protected]

Kratek življenjepis

Rojen: 22.3.1988, v Brežicah

Šolanje: OŠ Artiče

Tehniška gimnazija, Šolski center Krško-Sevnica

UM FERI, diplomirani inženir mehatronike

Page 72: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

63

Page 73: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

64

Page 74: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

65

Page 75: Magistrsko delo - COnnecting REpositories · 2017. 11. 28. · Slika 3.8: Wheatstonov mostič ..... 22 Slika 3.9: Senzorska enota z modulom digitalnega kompasa ... Most Significant

66