UNIVERZA V MARIBORU
FAKULTETA ZA ELEKTROTEHNIKO,
RAČUNALNIŠTVO IN INFORMATIKO
David Bricman
VGRAJENI SISTEM ROBOTA ROBOSAPIEN
Diplomska naloga
Maribor, maj 2008
I
UNIVERZA V MARIBORU
FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO 2000 Maribor, Smetanova ul. 17
Diplomska naloga univerzitetnega študijskega programa
VGRAJENI SISTEM ROBOTA ROBOSAPIEN
Študent: David BRICMAN
Študijski program: univerzitetni, Elektrotehnika
Smer: Elektronika
Mentor: doc. dr. Mitja SOLAR
Somentor: doc. dr. Iztok KRAMBERGER
Maribor, maj 2008
II
III
ZAHVALA Zahvaljujem se mentorju doc. dr. Mitju Solarju in somentorju doc. dr. Iztoku Krambergerju za pomoč in vodenje pri opravljanju diplomske naloge. Posebna zahvala velja staršem, ki so mi omogočili študij.
IV
VGRAJENI SISTEM ROBOTA ROBOSAPIEN Klju čne besede: elektronika, vgrajeni sistem, mikrokrmilnik, ra čunalniške komunikacije, senzorji UDK: 621.3:681.51(043.2) Povzetek
Diplomska naloga obravnava in podaja pregled nad številnimi področji, ki so potrebna
za gradnjo vgrajenih sistemov. Opisuje tudi praktično predelavo vgrajenega sistema
komercialnega robota Robosapien. Predelava zajema analizo obstoječega sistema in
razvoj novega sistema, ki je zgrajen iz Atmelovih mikrokrmilnikov z AVR jedrom. Za
brezžično komunikacijo z drugimi napravami in računalnikom pa uporablja Bluetooth
različico 1.1. Sistem ima možnost nadgradnje z dodatnimi priključki in dovolj prostora v
programskem pomnilniku za obsežnejši program. Možno ga je programirati preko
brezžične povezave. Predstavljeni so tudi problemi krmiljenja in gibanja takšnega sistema.
V
EMBEDDED SYSTEM OF THE ROBOT ROBOSAPIEN
Key words: electronics, embedded system, microcontroller, computer communications, sensors UDK: 621.3:681.51(043.2) Abstract
This diploma work discusses many fields, which are necessary for the construction of
the embedded systems. It also describes the practical modification of the commercial robot
Robosapien. The modification includes the analysis of the existent system and the
development of the new system, which is built from the Atmel’s microcontrollers with the
AVR core. It uses the Bluetooth version 1.1 for the wireless communication with the other
devices and the computer. The system has a possibility of the upgrade with the additional
pins and enough storage capacity for the more extensive programme. It is possible to
programme it over the wireless connection. The problems of controlling and movement of
such system are also introduced.
VI
KAZALO VSEBINE 1 UVOD 1
2 SPLOŠNO O VGRAJENIH SISTEMIH 4
2.1 Mikrorocesorji, mikrokrmilniki 4
2.2 Pomnilniki 9
2.3 Periferne naprave 11
2.4 Komunikacije in protokoli 15
2.5 Senzorji 23
2.6 Motorji in kontrola motorjev 27
3 ANALIZA SISTEMA 32
3.1 Senzorji 32
3.2 Motorji in kontrola motorjev 35
3.3 Napajanje 36
3.4 Komunikacija 36
3.5 Krmiljenje 37
4 ZGRADBA STROJNE OPREME 39
4.1 Napajanje 40
4.2 Mikrokrmilnik 41
4.3 Komunikacijski vmesnik 41
4.4 Tipanje baterije 43
4.5 Indikacija z LED 44
4.6 Oscilatorsko vezje 45
4.7 Reset vezje 46
4.8 Tiskano vezje 46
5 PROGRAMSKA OPREMA IN PROTOKOL 49
5.1 Zaganjalnik 49
5.2 Glavni program prvega mikrokrmilnika 51
5.3 Glavni program drugega mikrokrmilnika 52
5.4 Protokol 56
6 REZULTATI IN MERITVE 60
6.1 Tiskana vezja 60
VII
6.2 Senzorji 61
6.3 Gibanje robota 66
7 SKLEP 70
8 LITERATURA 72
9 PRILOGE 74
VIII
SEZNAM SLIK
Slika 1.1: Primeri naprav z vgrajenim sistemom - CNC stroj, video snemalnik, GPS
navigacijska oprema, MP3 predvajalnik 1
Slika 1.2: Robosapien V2 2
Slika 1.3: Blokovna shema sistema 3
Slika 2.1: Arhitektura računalnika (mikrokrmilnika) – Harvard / Von Neuman 6
Slika 2.2: PWM signal 13
Slika 2.3: Razporeditev slojev protokola po referenčnem modelu OSI in TCP/IP 15
Slika 2.4: Primer povezave računalnikov na dostopno točko ali ad-hoc 18
Slika 2.5: Prikaz povezave dveh piconet omrežji 19
Slika 2.6: Bluetooth - struktura slojev protokola 20
Slika 2.7: Binarni senzor izveden z stikalom 23
Slika 2.8: Rotacijski kodirnik – opitčna izvedba in postavitev polj v Grey-evi kodi za
absolutno zaznavanje položaja 24
Slika 2.9: Primer nelinearne karakteristike IR senzorja Sharp GP2D120. 26
Slika 2.10: Delovanje koračnega motorja - krmilni signali za navitja 28
Slika 2.11: Krmiljenje servo motorja z PW signalom 29
Slika 2.12: Delovanje krmilnega H-mostiščnega vezja 30
Slika 2.13: Uporaba ojačevalnikov pri krmiljenju motorja 31
Slika 3.1: Prikaz lokacij zunanjih senzorjev 33
Slika 3.2: Prikaz lokacij notranjih senzorjev 34
Slika 3.3: Vezje za kontrolo motorjev 36
Slika 3.4: Razporeditev priključkov glavnega vezja 38
Slika 4.1: Blokovna shema novega glavnega vezja 40
Slika 4.2: Vezje za stabilizacijo napetosti 40
Slika 4.3: Bluetooth komunikacijski vmesnik Promi ESD02 42
Slika 4.4: Priključitev Bluetooth vmesnika 43
Slika 4.5: Uporovni delilnik za tipanje baterije 44
Slika 4.6: Priključitev LED indikatorjev na mikrokrmilnik 45
Slika 4.7: Oscilatorsko vezje 46
Slika 4.8: Reset vezje 46
IX
Slika 4.9: Model glavnega tiskanega vezja - zgoraj 48
Slika 4.10: Model glavnega tiskanega vezja - spodaj 48
Slika 5.1: Diagram poteka zaganjalnega programa 50
Slika 5.2: Diagram poteka glavnega programa prvega mikrokrmilnika 52
Slika 5.3: Diagram poteka glavnega programa drugega mikrokrmilnika 54
Slika 5.4: Avtomat za hojo robota 55
Slika 5.5: Poljuben okvir protokola 56
Slika 6.1: Glavno tiskano vezje - zgoraj 60
Slika 6.2: Končna priključitev vezja za kontrolo motorjev na glavno vezje 61
Slika 6.3: Ojačevalnik tonskega signala iz dlančnika 61
Slika 6.4: Prenosna karakteristika leve rame 62
Slika 6.5: Prenosna karakteristika desne rame 63
Slika 6.6: Prenosna karakteristika pasu ( naprej / nazaj ) 63
Slika 6.7: Prenosna karakteristika pasu ( levo / desno ) 64
Slika 6.8: Prenosna karakteristika pri merjenju baterije 65
Slika 6.9: Osciloskopski posnetek vklopa motorja leve rame 68
Slika 6.10: Osciloskopski posnetek vklopa motorja leve noge (naprej) 68
Slika 6.11: Osciloskopski posnetek večkratnega vklopa motorja (oscilacije) 69
X
SEZNAM TABEL Tabela 2.1: Prikaz različnih tehnologij Etherneta 17
Tabela 2.2: Različice WLAN tehnologije 18
Tabela 2.3: Močnostni razredi Bluetooth naprav 19
Tabela 2.4: Bluetooth profili aplikacij 21
Tabela 3.1: Možna bitna stanja kodirnih senzorjev 34
Tabela 3.2: Motorji v robotu in sistem detekcije položaja 35
Tabela 4.1: Načini delovanja Bluetooth vmesnika Promi ESD02 42
Tabela 4.2: Možne nastavitve zaporedne komunikacije Bluetooth vmesnika Promi ESD02
43
Tabela 5.1: Sestava glave podatkovnega okvirja 57
Tabela 5.2: Ukazne skupine protokola 57
Tabela 5.3: Vsi ukazi v sistemu 58
Tabela 6.1: Preslikava stanj kodirnikov 66
Tabela 6.2: Časi premikanja sklepov 66
Tabela 6.3: Končne vrednosti stanj in časovnikov 67
Tabela 6.4: Tolerance pri regulaciji motorjev z zveznim zajemanjem položaja 69
XI
UPORABLJENE KRATICE IN SIMBOLI AD - Analogno-Digitalno
ARM - Arhitektura mikroprocesorjev (ang. Acorn RISC Machine)
ASIC - Namensko integrirano vezje (ang. Apilication Specific Integrated Circuit)
AVR - Arhitektura mikrokrmilnikov
CMOS - Tehnologija izdelave integriranih vezij (ang. Complementary Metal-Oxide
Semiconductor)
DA - Digitalno-Analogno
DRAM - Dinamični RAM (ang. Dynamic Random Access Memory)
EEPROM - Električno programirljiv in izbrisljiv bralni pomnilnik (ang. Electrically
Erasable Programmable Read-Only Memory)
EPROM - Električno programirljiv bralni pomnilnik (ang. Erasable Programmable
Read-Only Memory)
FAX - Tehnologija za pošiljanje kopij dokumentov
FPGA - Programirljivo logično vezje (ang. Field-Programmable Gate Array)
FPSLIC - Mikrokrmilnik in FPGA v enem integriranem vezju (ang. Field-
Programmable System Level Integrated Circuit)
I2C - Zaporedno vodilo z možnostjo več gospodarjev (ang. Inter-Integrated Circuit)
IEEE - Inštitut inženirjev elektrotehnike in elektronike (ang. Institute of Electrical
and Electronics Engineers)
IP - Internetni protokol (ang. Internet Protocol)
IR - Infrardeče (ang. Infrared)
ISDN - Tehnologija digitalne žične telefonije (ang Integrated Services Digital
Network)
ISP - Vgrajeno programiranje (ang. In-System Programming)
LAN - Lokalno omrežje (ang. Local Area Network)
LCD - Zaslon na tekoče kristale (ang. Liquid Crystal Display)
LED - Svetleča dioda (ang. Light-Emitting Diode)
LLC - Protokol za nadzor povezave (ang. Logical Link Control)
LSB - Najmanj utežen bit (ang. Least Significant Bit)
MAC - Komunikacijski protokol (ang . Media Access Control)
XII
MP3 - Digitalni kodirni način za zvok
MSB - Najbolj utežen bit (ang. Most Significant Bit)
NAND - Boolova operacija NE-IN (ang. Not-AND)
NMOS - Tehnologija izdelave integriranih vezij (ang. N-type Metal-Oxide
Semiconductor)
NOR - Boolova operacija NE-ALI (ang. Not-OR)
OSI - Standard za mrežne komunikacije (ang. Open Systems Interconnection)
OTP - Vrsta programirljivega pomnilnika za enkratno programiranje (ang. One Time
Programmeble)
PAN - Osebno omrežje (ang. Personal Area Network)
PIC - Arhitektura mikrokrmilnikov (ang. Programmable Intelligent Computer)
PW - Pulzno-širinski krmilni signal za določanje pozicije servomotorjev
PWM - Pulzno-širinska modulacija (ang. Pulse-width Modulation)
RAM - Pomnilnik z naključnim dostopom (ang. Random Access Memory)
RISC - Vrsta arhitekture procesorskega jedra (ang. Reduced Instruction Set
Computing)
ROM - Bralni pomnilnik (ang. Read Only Memory)
SIG - Interesna skupina (ang. Special Interest Group)
SIM - Modul za identifikacijo ponudnika (ang. Subscriber Identity Module)
SRAM - Statični RAM (ang. Static Random Access Memory)
TCP - Transportni protokol (ang. Transmission Control Protocol)
USB - Univerzalni zaporedni vmesnik (ang. Universal Serial Bus)
UTP - Električni vodnik za omrežja - sukana parica (ang. Unshielded Twisted Pair)
UV - Ultravijolično (ang. Ultra-Violet)
UWB - Tehnologija radijske komunikacije (ang. Ultra-Wide Band)
WAP - Protokol za brezžične naprave (ang. Wireless Application Protocol)
WLAN - Brezžično lokalno omrežje (ang. Wireless Local Area Network)
Vgrajeni sistem robota Robosapien 1
1 UVOD
Prvi znani vgrajeni sistem je bil Apollov navigacijski računalnik, ki je bil razvit, da bi
zmanjšali težo in velikost navigacijske opreme pri vesoljskih poletih. Prva masovna
proizvodnja naprave z vgrajenim sistemom je bila vojaška raketa Minuteman, ki je
vsebovala navigacijski računalnik zgrajen iz tranzistorske logike in trdega diska za glavni
spomin. Z razvojem prvih mikroračunalnikov v sedemdesetih letih, je vgrajeni sistem
postal dostopen tudi industriji. Ob vse močnejših računalnikih in ob vedno večji
minimizaciji integriranih komponent so vgrajeni sistemi postajali vedno cenejši in vedno
bolj prodorni na komercialnem tržišču. Danes jih srečujemo pravzaprav na vsakem koraku.
Za boljše razumevanje pa moramo razložiti, kaj vgrajeni sistem v bistvu je [2].
To je specializiran računalniški sistem, ki je del večjega sistema ali stroja. Vgrajeni
sistem je ponavadi mikroprocesorska tiskanina s programom shranjenim v ROM
pomnilniku. Praktično vse naprave (Slika 1.1), ki imajo vgrajeni digitalni vmesnik
vsebujejo vgrajeni sistem. Nekateri vgrajeni sistemi vsebujejo celo operacijski sistem,
ampak večinoma je tako specialnih, da je vsa logika izdelana v enem samem programu [3].
Slika 1.1: Primeri naprav z vgrajenim sistemom - CNC stroj, video snemalnik, GPS navigacijska
oprema, MP3 predvajalnik
Vgrajeni sistem robota Robosapien 2
Robosapien (Slika 1.2) je igrača v obliki humanoidnega robota. V diplomski nalogi ga
bomo uporabili kot strojno opremo za naš vgrajeni sistem, saj bi za izdelavo le-te porabili
preveč časa. Tako se bomo najprej lotili analize obstoječega sistema. V analizi bomo
opisali, kaj je ta robot znal, kako je sestavljen in kakšni so krmilni signali, ki jih uporablja
pri delovanju. Predvsem bo pomembna analiza signalov, saj bomo le tako lahko na že
obstoječo platformo dodali nov vgrajen sistem.
Slika 1.2: Robosapien V2
V naslednjem poglavju diplomske naloge bomo zgradili strojno opremo vgrajenega
sistema. Upoštevati bomo morali podatke pridobljene iz analize sistema. Najprej bomo
odstranili del sistema, ki je originalno vgrajen v robota. Odstranili bomo samo tiskano
vezje, ki je namenjeno procesiranju in ga zamenjali z novim. Strojna oprema bo morala
delovati na obstoječe baterijsko napajanje robota. Potrebno bo prilagoditi napetostne nivoje
na nazivne napajalne napetosti uporabljenih integriranih vezij in drugih komponent. Paziti
bomo morali tudi na pravilno priključitev in uporabo senzorskih signalov ter signalov za
krmiljenje motorjev. Novo tiskano vezje bo moralo biti specialnih dimenzij, da se bo
prilegalo na enako mesto, kot se je staro. V novi sistem (Slika 1.3) se bodo vgradile
osnovne in dodatne funkcionalnosti. Pod osnovne spadajo odčitavanje senzorjev,
krmiljenje motorjev in komunikacija preko brezžičnega komunikacijskega vmesnika. Pod
dodatne pa merjenje kapacitete energije v baterijah, svetlobni indikatorji in dodatne
razširitvene možnosti.
Vgrajeni sistem robota Robosapien 3
Signali senzorjev
Kontrola motorjev
Sistem
Komunikacija z zunanjim svetom
KomunikacijaMerjenje baterije
Priključki za nadgrajevanje sistema
Brezžični komunikacijski
vmesnik
Svetlobna indikacija
Slika 1.3: Blokovna shema sistema
V petem poglavju bomo razložili delovanje protokola, ki je potreben pri komunikaciji
robota z zunanjimi napravami s pomočjo brezžičnega komunikacijskega vmesnika.
Zunanje naprave so v tem primeru računalnik, dlančnik, mobilni telefon in podobno.
Tukaj bomo tudi opisali izdelavo programske opreme vgrajenega sistema. Programska
oprema naj bi omogočala programiranje kar preko komunikacijskega vmesnika, zato bomo
morali program prilagoditi tako, da bo to omogočal. Program mora biti sposoben hkrati
krmiliti robota in komunicirati z zunanjim svetom. Tako moramo poiskati rešitev, ki bo
sposobna takega delovanja.
V zadnjih dveh poglavjih bomo prikazali in opisali pridobljene rezultate med izdelavo
diplomske naloge in jih komentirali. Dodali bomo tudi nekaj napotkov za dodajanje
razširitev k sistemu.
Vgrajeni sistem robota Robosapien 4
2 SPLOŠNO O VGRAJENIH SISTEMIH
Že v uvodu smo zapisali definicijo vgrajenega sistema, ker pa je to zelo širok pojem
bomo v tem poglavju povedali nekaj o najbolj značilnih gradnikih vgrajenih sistemov.
Nekateri gradniki so nujno potrebni, da lahko sistem sploh poimenujemo vgrajeni sistem.
To so predvsem gradniki, ki sestavljajo mikroračunalnik. Pod te gradnike uvrščamo
procesorje, pomnilnike ter periferne naprave. Opisali pa bomo tudi nekaj gradnikov, ki
niso nujno gradniki vgrajenega sistema, ampak jih uporabljamo v našem sistemu. Tukaj bo
beseda tekla o senzorjih in motorjih ter krmilnih vezjih za le-te.
2.1 Mikroprocesorji, mikrokrmilniki
Mikroprocesor je digitalna elektronska komponenta, ki združuje funkcije centralno
procesne enote v enem samem integriranem polprevodniškem vezju. Centralno procesna
enota je sposobna izračunavati logične in aritmetične operacije. Zaporedje operacij, ki jih
mikroprocesor izvaja, imenujemo računalniški program. Dolžina besede (ang. word) v
bitih pogojuje, s koliko bitnim mikroprocesorjem delamo. Z dolžino besede je tudi
pogojeno, koliko operacij lahko ima mikroprocesor v naboru in kako velik pomnilnik je
zmožen naslavljati. Točne vrednosti nabora operacij in dolžine naslavljanja so odvisne od
arhitekture posameznega mikroprocesorja [10,11].
ARM je družina mikroprocesorjev, ki se zelo pogosto uporablja v vgrajenih sistemih.
Razvilo jo je podjetje ARM Limited, s kupljeno licenco pa mikroprocesorje na tej
arhitekturi izdeluje še veliko drugih podjetij. Ti mikroprocesorji se najpogosteje
uporabljajo v mobilnih napravah, kot so mobilni telefoni, dlančniki, ročne igralne konzole
in podobno. Takšno široko uporabo so dosegli zaradi energijske učinkovitosti arhitekture,
kar je ključno pri gradnji vgrajenih sistemov, ki se napajajo iz baterije. Družina ARM ima
32-bitno RISC arhitekturo, po kateri je tudi dobila ime (ARM – ang. Advanced RISC
Machine). Družina je razdeljena na veliko poddružin, kjer se arhitekture malenkostno
razlikujejo, predvsem pa so nastale zaradi nenehnega posodabljanja arhitekture in različnih
proizvajalcev procesorjev. Tako si verzije različnih arhitektur sledijo od ARMv1 do
Vgrajeni sistem robota Robosapien 5
ARMv7. Delovne ure teh procesorjev dosežejo vse do 1GHz, kar zagotavlja dovolj
procesne moči, da lahko na njem poganjamo operacijski sistem in zahtevnejše aplikacije,
kot so procesiranje večpredstavnostnih vsebin [16].
Mikrokrmilnik je računalnik v enem samem integriranem vezju. Je rahlo nasprotje
mikroprocesorja, kjer želimo doseči čim večjo računsko moč centralno procesne enote. Pri
mikrokrmilniku pa želimo doseči čim večjo integracijo samega računalnika. S tem
zmanjšamo ceno, kompleksnost tiskanih vezij ter povečamo energijsko učinkovitost. V
mikrokrmilnik so integrirane vse enote, ki spadajo v računalnik. To so centralno procesna
enota, delovni pomnilnik, pomnilnik za dolgoročnejšo hrambo podatkov in vhodno-
izhodne naprave. Poleg tega je v mikrokrmilnik integrirano še veliko drugih perifernih
naprav, kot so AD pretvorniki, časovniki, PWM modulatorji, zaporedni vmesniki in
podobno. Tako je mikrokrmilnik idealna komponenta za grajenje vgrajenega sistema.
Mikrokrmilniki imajo še dodatne značilnosti, kot so programirljivi priključki, kar pomeni
da lahko programsko izbiramo ali je posamezen priključek vhod ali izhod. Nekateri
vsebujejo oscilator za delovno uro, ali pa samo del oscilatorja, tako da lahko zunaj
priključimo samo kremenčev kristal in kondenzatorje [12].
Poznamo več vrst arhitektur mikrokrmilnikov. Prva je arhitektura Von Neuman,
poimenovana po matematiku, ki jo je prvi uporabil. Ta arhitektura ima samo eno
podatkovno vodilo, po katerem se pretakajo podatki. Dobra lastnost takšne arhitekture je,
da ima enostavno zgradbo, slaba pa, da je okrnjena hitrost prenosa programa in podatkov v
mikroprocesor, saj jih prenašamo po istem vodilu. To lastnost odpravi arhitektura Harvard,
kjer imamo ločeno vodilo programskega in podatkovnega pomnilnika (vhodno-izhodnih
naprav). Pri tej arhitekturi mikroprocesor program nemoteno bere in hkrati bere ali piše po
podatkovnem vodilu in s tem izboljša delovanje mikrokrmilnika. Tudi dolžini besed
podatkovnega in programskega pomnilnika sta lahko različni. Poznamo tudi modificirano
Harvard arhitekturo. Ta arhitektura odpravlja težavo dostopa do programskega
pomnilnika. Če imamo v programskem pomnilniku zapisane kakšne podatke, ki jih
potrebujemo pri procesiranju, lahko do njih dostopamo direktno, ne da bi jih bilo potrebno
prelagati v podatkovnega. Večina mikrokrmilnikov, ki ima navedeno Harvard arhitekturo,
ima v resnici modificirano Harvard arhitekturo [14,18].
Vgrajeni sistem robota Robosapien 6
Slika 2.1: Arhitektura ra čunalnika (mikrokrmilnika) – Harvard / Von Neuman
Če na tržišču mikroprocesorjev za namizne računalnike bolj ali manj kraljuje nekaj
podjetij, je na tržišču mikrokrmilnikov popolnoma drugačna slika. Najdemo najrazličnejše
mikrokrmilnike v najrazličnejših ohišjih. Nekatera podjetja izdelujejo namenske
mikrokrmilnike za uporabo v lastnih aplikacijah in so tako še bolj prilagojeni napravam,
kjer so uporabljeni. Na primer: mikrokrmilnik za MP3 predvajalnik ima integrirano
posebno enoto za dekodiranje glasbe v MP3 obliki. Zaradi splošne uporabnosti
mikrokrmilnikov v vgrajenih sistemih si bomo pogledali nekaj najpopularnejših družin
mikrokrmilnikov.
Mikroprocesor 8051 je razvilo podjetje Intel v začetku osemdesetih let. Njegov
predhodnik je bil mikroprocesor 8048. Ta je prvi mikroprocesor, ki je bil izdelan in
prodajan v večjih količinah. 8051 je mikroprocesor z obliko arhitekture Harvard, tako kot
vsi drugi mikroprocesorji in mikrokrmilniki podjetja Intel. Najpopularnejši je bil v
osemdesetih in v začetku devetdesetih let. Prvi so bili izdelani v NMOS tehnologiji, danes
pa mikrokrmilnike, ki temeljijo na jedru 8051, izdeluje v CMOS tehnologiji preko dvajset
podjetij. Mikrokrmilnik odlikuje predvsem možnost učinkovitega računanja na bitnem
nivoju, kar ga je pripeljalo do številčnega uporabljanja v industrijskih nadzornih
aplikacijah. Druga značilnost za mikrokrmilnik je, da ima štiri ločena polja registrov, kar
zelo pospeši delovanje ob sprožitvi prekinitve. Saj namesto, da bi v primeru prekinitve
vsebino registrov zložil na sklad, se samo prestavi na drugo polje registrov [13].
PIC je družina mikrokrmilnikov, ki jih proizvaja podjetje Microchip Technology Inc.
So trenutno eni najpopularnejših mikrokrmilnikov na tržišču, uporabljeni v komercialnih in
Vgrajeni sistem robota Robosapien 7
industrijskih aplikacijah. Letno se jih proda okoli 120 milijonov. Arhitektura
mikrokrmilnikov PIC bazira na prilagojeni Harvard RISC arhitekturi, ki je prilagodljiva za
najrazličnejše tipe mikrokrmilnikov z 6 do 80 priključki in z 384 B do 128 kB
programskega spomina. Tako obsega družina mikrokrmilnikov PIC čez sto najrazličnejših
modelov, ki se razlikujejo po številu priključnih nogic, tipih in velikostih različnih
pomnilnikov, ki obsegajo delovni pomnilnik in pomnilnik za shranjevanje programa ter
najrazličnejših vhodno izhodnih naprav in komunikacijskih vmesnikov. V osnovi lahko
družino razdelimo na tri skupine mikrokrmilnikov glede na dolžino ukazne (instrukcijske)
besede. Obstajajo 12-,14- in 16-bitne dolžine ukaznih besed. Skupina mikrokrmilnikov z
12-bitno dolžino ukazne besede je moč zelo enostavno uporabiti za najenostavnejše
aplikacije, saj mikrokrmilnik podpira samo 33 ukazov, ki se jih je lahko naučiti. Daljša kot
je ukazna beseda, večje je število ukazov. Tako lahko gradimo kompleksnejše programe za
zahtevnejše aplikacije [14].
Družino mikrokrmilnikov AVR izdeluje podjetje Atmel. Arhitektura mikrokrmilnika je
zasnovana na 8-bitni Harvard arhitekturi. Mikrokrmilniki iz te družine imajo popolnoma
ločen pomnilnik za program in podatke. Pomnilnik za program je Flash pomnilnik,
medtem ko se za shranjevanje podatkov uporablja EEPROM pomnilnik. Prve
mikrokrmilnike je podjetje razvilo leta 1996. Kot prvi so za shranjevanje programa
uporabljali Flash pomnilnik, medtem ko so drugi uporabljali ROM, EPROM in EEPROM.
V osnovi se mikrokrmilniki AVR delijo na tri osnovne družine. In sicer na tinyAVR,
megaAVR in na namenske AVR mikrokrmilnike. TinyAVR se uporabljajo za
najenostavnejše aplikacije imajo od 1 do 8 kB spomina. Ti mikrokrmilniki se nahajajo v
ohišjih z od 8 do 32 nožicami in imajo zelo skrčeno število perifernih naprav. MegaAVR se
uporablja za zahtevnejše aplikacije. Velikost pomnilnika obsega od 4 kB do 256 kB in se
nahajajo v ohišjih z od 28 do 100 nožicami. Ti mikrokrmilniki imajo razširjen nabor
ukazov, ki so namenjeni hitrejšemu izvajanju, na primer ukaz za množenje, ali pa za
izvajanje dodatnih funkcionalnosti, ki jih mikrokrmilnik premore, kot so upravljanje s
pomnilnikom. Mikrokrmilniki iz te družine imajo tudi velik nabor perifernih naprav. Tako
je lahko v enem samem mikrokrmilniku več perifernih naprav s popolnoma enakim
delovanjem, recimo več AD pretvornikov. V družino namenskih AVR mikrokrmilnikov
uvrstimo mikrokrmilnike s specifičnim naborom perifernih naprav, ki so vnaprej
Vgrajeni sistem robota Robosapien 8
predvidene za točno določeno aplikacijo. Uporabljeni so kot krmilniki za LCD zaslone,
USB komunikacijo in podobno. V tej skupini so tudi mikrokrmilniki, ki so pravzaprav
kombinacija mikrokrmilnika in FPGA vezja. Podjetje Atmel jih imenuje FPSLIC vezja
(ang. Field Programmable System Level Integrated Circuit). Vezja so namenjena časovno
kritičnim aplikacijam, kjer imamo poleg FPGA vezja vgrajeno še AVR jedro in spremenjen
pomnilnik. Program je zapisan v SRAM-u. Tako lahko FPSLIC deluje pri urah do 50MHz
[15].
FPGA (ang. Field Programmeble Gate Array) je programirljivo logično vezje, pri
katerem programiramo logiko digitalnega vezja v smislu povezav digitalnih vrat. FPGA
vsebuje programirljive logične bloke, ki so lahko enostavni pomnilni elementi, kot flip-
flopi, različni tipi digitalnih vrat, ali pa kot kompleksnejše strukture, kot so števci, registri
in podobno. FPGA vezja so še vedno počasnejša od namensko izdelanih integriranih vezjih
(ASIC), ampak v specifičnih aplikacijah delujejo hitreje, kot procesor s programsko
opremo. V primerjavi z namenskimi integriranimi vezji je FPGA počasnejši in porabi več
energije. V dobrobit mu lahko štejemo enostavnejše načrtovanje, možnost hitrega razvoja
in možnost reprogramiranja ter odpravljanja napak. Nekatera FPGA vezja imajo možnost
programiranja samo dela vezja, med tem ko drugo vezje v napravi normalno deluje. FPGA
vezja se uporabljajo v najrazličnejše namene, predvsem tam, kjer obdelujemo podatke s
specifičnimi časovno zahtevnimi operacijami. Uporabljajo se za digitalno procesiranje
signalov, za digitalne modulacije pri distribuciji digitalne televizije, pri razpoznavanju
govora, zvoka in slike. Uporabljajo se tudi za samo načrtovanje integriranih vezij.
Nekatera FPGA vezja imajo dodatno vgrajeno mikroprocesorsko jedro, ali pa kar samo
FPGA vezje programiramo tako, da deluje kot mikroprocesor. To da neomejene možnosti
za uporabo, saj lahko sami zgradimo logiko in različne periferne naprave okoli
mikroprocesorskega jedra [17].
Vgrajeni sistem robota Robosapien 9
2.2 Pomnilniki
Vsak računalnik za svoje delovanje potrebuje pomnilnik, saj bi brez njega vse podatke
praktično pozabil. Poznamo veliko različnih tipov pomnilnikov, ki jih lahko ločimo po
načinu delovanja in njihove naloge v sistemu. Opisali bomo nekaj najpogostejših tipov
pomnilnikov, ki se uporabljajo v enostavnejših sistemih in so večinoma kar integrirani v
mikrokrmilnik.
RAM (ang. Random Access Memory) je pomnilnik z naključnim dostopom, kar
pomeni, da porabimo enak čas za dostopanje naključnega naslova v pomnilniku. Uporablja
se za shranjevanje trenutnih podatkov, ki jih mikroprocesor procesira. Ob izklopu
napajanja pomnilnik pozabi vse podatke. Ima zelo hiter dostop do podatkov v primerjavi z
drugimi pomnilniki, ki po izklopu napajanja obdržijo podatke. Ločimo ga na statični RAM
(SRAM) in dinamični RAM (DRAM). Statični RAM je s kompleksnejšimi pomnilnimi
elementi (flip-flopi) hitrejši in ne potrebuje osveževanja. Je pa zato dražji in ga ne dobimo
v velikih kapacitetah. Dinamični RAM ima enostavnejše pomnilne elemente, ki so
sestavljeni iz tranzistorja in kondenzatorja, ima lahko veliko kapaciteto, potrebuje pa
posebno vezje za nadzor pomnilnika, ki ga nenehno osvežuje. Uporablja se predvsem pri
močnejših računalnikih, kjer je potrebna velika kapaciteta pomnilnika. Vsak mikrokrmilnik
ima integriran RAM pomnilnik, saj bi brez njega težko deloval. Za pomnilniško zahtevne
aplikacije imajo boljši mikrokrmilniki priključne nožice, na katerega lahko priključimo
dodatni RAM pomnilnik [14].
ROM (ang. Read Only Memory) je pomnilnik, s katerega lahko samo beremo podatke.
Podatki so vneseni že pri sami izdelavi pomnilnika, in jih je naknadno nemogoče
spreminjati. Uporabljen je za izdelavo velike serije dokončno razvitega programa, ker s
tem močno zmanjšamo strošek izdelave, ki bi ga imeli pri uporabi drugega tipa pomnilnika
[14].
EPROM (ang. Erasable Programmeble Read Only Memory) pomnilnik ima možnost
večkratnega programiranja in brisanja podatkov. Podatke pobrišemo s pomočjo UV
svetlobe. Pobrišemo jih tako, da odstranimo zaščito na zgornji strani ohišja integriranega
Vgrajeni sistem robota Robosapien 10
vezja, kjer se nahaja majhno okence. Skozi to okence osvetlimo integrirano vezje za
določen čas, le-to je tako pripravljeno za ponovno programiranje. EPROM je uporaben pri
razvoju programa, ki ga želimo naložiti v pomnilnik, saj lahko program večkrat
popravljamo in preizkušamo. Obstajajo tudi verzije pomnilnika EPROM, znane kot OTP
(ang. One Time Programmeble). Te pomnilnike lahko programiramo samo enkrat (z enako
napravo kot pomnilnike EPROM), samo da podatkov ni mogoče več zbrisati. Uporabni so
za programiranje končne verzije programa v majhnih serijah in imajo nižjo ceno, kot
normalni EPROM pomnilniki [14].
EEPROM (ang. Electrically Erasable Programmeble Read Only Memory) pomnilnik
odpravlja slabost EPROM pomnilnika, saj ga lahko izbrišemo s pomočjo napetostnega
impulza. Ni ga potrebno jemati iz naprave in osvetljevati z UV svetlobo. Večina
modernejših mikrokrmilnikov ima EEPROM kar integriran zraven drugih enot. Omogoča
možnost programiranja krmilnika v samem sistemu. EEPROM pomnilniki so načeloma
počasna vrsta pomnilnika. Omogočajo končno število prepisov podatkov. Število možnih
prepisov je pri novejših pomnilnikih sicer od 105 do 106, čeprav bi ga pri zelo pogosti
uporabi hitreje uničili [14].
Flash pomnilnik je druga vrsta EEPROM pomnilnika, ki deluje na drugačnih
fizikalnih osnovah kot običajen EEPROM pomnilnik. Flash je načeloma zelo hiter
pomnilnik, tako da v določenih aplikacijah nadomešča sam RAM. Pri prvih primerkih je
bilo pri ponovnem programiranju potrebno pobrisati celoten pomnilnik. Danes pa poznamo
dve različni tehnologiji izdelave Flash pomnilnika. NOR Flash in NAND Flash.
Pomnilnik tipa NOR ima daljše čase za zapis in izbris podatkov, omogoča pa naključen
dostop, medtem ko je pomnilnik tipa NAND hitrejši, do podatkov pa ne moremo dostopati
po besedah ampak po celotnih blokih in ga ne moremo preprosto zamenjali z navadnim
EEPROM pomnilnikom. Pri branju in izvajanju programa večina mikrokrmilnikov zahteva
besedni dostop, zato se v njih najpogosteje uporablja Flash pomnilnik tipa NOR.
Pomnilnik tipa NAND porabi manj površine v integriranem vezju in je cenejši, zato se
veliko uporablja kot sekundarni pomnilnik, kot so USB ključi, in razne pomnilniške kartice
za mobilne naprave. Danes so na trgu že RAM diski s kapaciteto nekaj GB in so vgradljivi
Vgrajeni sistem robota Robosapien 11
v osebni računalnik, najpogosteje pa v prenosnike, saj so takšni diski manj občutljivi na
tresljaje, praktično neslišni in porabijo manj energije [19].
2.3 Periferne naprave
Periferne naprave so nameščene okoli mikroprocesorskega jedra in vsaka od njih
opravlja specifično nalogo. Pri mikrokrmilnikih so periferne naprave, ki se najpogosteje
uporabljajo, kar integrirane zraven samega mikroprocesorskega jedra. Tako nam ob
nezahtevnih aplikacijah praktično ni potrebno dodajati od zunaj nobene dodatne naprave.
Na kakšen način komunicirajo z mikroprocesorskim jedrom, je odvisno od arhitekture
mikrokrmilnika. V nadaljevanju bomo opisali nekaj izmed perifernih naprav, ki se
uporabljajo najpogosteje.
AD pretvornik je naprava, ki pretvarja analogno vrednost napetosti v digitalno
vrednost. AD pretvornik najprej odtipa vrednost iz zveznega analognega signala s pomočjo
vzorčevalno-zadrževalnega vezja (ang. Sample-Hold) v enakomernih časovnih intervalih.
To odtipano analogno vrednost kvantizira in jo pretvori v digitalno obliko. Poznamo več
vrst AD pretvornikov, ki jih lahko delimo glede na princip delovanja, ki posledično
doprinesejo različne hitrosti pretvorbe [1].
Števni AD pretvornik primerja vhodni signal z referenčnim s pomočjo stopničaste
referenčne napetosti. Na začetku začne pretvornik dvigovati referenčno napetost od nič po
en kvantizacijski korak in jo primerjati z vhodno napetostjo. Ko referenčna napetost
preseže vhodno napetost se dvigovanje referenčne napetosti ustavi. Rezultat je število
kvantizacijskih korakov, ki jih AD pretvornik poda na izhodu v binarni obliki [1].
Števni AD pretvornik z dvojno strmino je zelo počasen - a natančen in se pretežno
uporablja v digitalnih instrumentih. Ta pretvornik digitalizira vhodno analogno vrednost
napetosti s pomočjo integracije. Najprej integrira vhodno napetost v določenem časovnem
intervalu. Nato preklopi na referenčno napetost in s pomočjo negativne vrednosti integrira
v negativni smeri do izpraznitve kondenzatorja v integratorju (do napetosti nič). Medtem
števec šteje čas izpraznitve z referenčno napetostjo, ki ima vrednost vhodne napetosti [1].
Vgrajeni sistem robota Robosapien 12
Sledilno-števni AD pretvornik deluje podobno kot števni pretvornik, le da se
referenčna vrednost iz DA pretvornika ne postavi na nič, ampak se od prejšnje vrednosti
bliža novi. To pripomore k hitrejšemu času pretvorbe [1].
AD pretvornik s postopnim približevanjem vhodno zadržano napetost primerja z
referenčnim signalom najbolj utežnega bita – MSB. Pri tem si zapiše ali je referenčna
vrednost MSB presegla vhodno napetost ali ne. Če jo je presegla, potem zapiše MSB kot
logično 0, če je ni, pa kot logično 1. Nato primerjamo z referenčno napetostjo naslednjega
bita, ki je odvisna od prejšnjega rezultata. Tako primerjamo vhodno vrednost vse do
zadnjega, najmanj utežnega bita – LSB. Ti pretvorniki se uporabljajo pri srednjih
frekvencah vzorčenja od 50kHz do 1MHz [1].
AD pretvornik z neposredno pretvorbo je najhitrejši med AD pretvorniki. Ta pretvori
vhodno analogno napetost s pomočjo vzporedne postavitve primerjalnikov in uporovne
lestvice, ki je izvor referenčne napetosti za primerjalnike. Izhodi primerjalnikov so
povezani v kodirno logično vezje, ki iz posamezne primerjalne vrednosti združi
informacijo v n-bitno besedo. Celotna zakasnitev pretvornika je odvisna od primerjalnikov
in kodirno logičnega vezja. Slabost teh pretvornikov je veliko število uporabljenih
primerjalnikov, saj jih za 8-bitni pretvornik potrebujemo 255. Pretvorniki se izdelujejo do
10-bitne besedne dolžine. Večjo dolžino besede lahko pridobimo z vezavo dveh
pretvornikov in hitrega ojačevalnika [1].
DA pretvornik je naprava, ki vhodno digitalno vrednost pretvori v izhodni analogni
signal. Pretvorniki se razlikujejo po dolžini vhodne besede in hitrosti pretvorbe, ki je
podana v vzorcih na sekundo. Razlikujejo se tudi po načinu vpisa besede, ki je pri hitrih
pretvornikih vzporedna, pri počasnejših pa lahko izbiramo med vzporednim in zaporednim
vpisom besede. Vezje DA pretvornika je sestavljeno iz uporovnih lestvičnih vezij, ki ga
sestavljajo sami enaki upori ali pa R-2R členi. Redko srečamo DA pretvornik, ki je
sestavljen iz utežno naraščajočih uporov in seštevalnika [1].
Vgrajeni sistem robota Robosapien 13
PWM, pulzno širinska modulacija (ang. Pulse Width Modulation) je modulacija, ki se
uporablja pri močnostnem krmiljenju elektromotorjev. Ta metoda se izogne uporabi
močnostnega analognega vezja za krmiljenje motorjev. Temelji na dejstvu, da je odzivni
čas elektromehanskih strojev velik. Namesto da bi za krmiljenje uporabljali analogno
izhodno napetost, lahko uporabimo množico pulzov med napetostjo nič in napajalno
napetostjo. Pulzi so generirani s konstantno frekvenco, navadno nad slišnim območjem
(20kHz). Spreminjanje širine pulzov v programski kodi je ekvivalentno spreminjanju
efektivne napetosti na motorju, kar uporabimo pri krmiljenju hitrosti motorja. Lahko bi
dejali, da se elektromotorji obnašajo kot integrator pulznih signalov v večjem časovnem
okvirju. Zavedati se moramo tudi, da hitrost motorja ni linearna glede na širino pulzov,
zato moramo za točnejše nastavljanje hitrosti motorja najprej izmeriti karakteristiko in ga
umeriti. Seveda se hitrost spreminja tudi glede na obremenitev motorja, kar lahko
odpravimo z ustrezno regulacijo vrtljajev s pomočjo senzorja hitrosti vrtenja [20].
U
t
U
t
Ueff
Ueff
Nizka hitrost vrtenja motorja
Visoka hitrost vrtenja motorja
Slika 2.2: PWM signal
Števniki in časovniki so pomembni del mikrokrmilnikov, saj lahko z njimi merimo
čas med dogodki, ali pa dogodke štejemo. Ponavadi so 8- ali 16-bitni, večje besedne širine
pa lahko dosežemo, če ima mikrokrmilnik več števnikov-časovnikov in jih kaskadno
povežemo. Števnik je poseben register v mikrokrmilniku, ki je sposoben beležiti dogodke,
na primer spremembe stanj na vhodni nožici, ki je programsko določena. Števnik lahko
programsko nastavimo, in s tem določimo število dogodkov, ki jih želimo beležiti. Ko
Vgrajeni sistem robota Robosapien 14
števnik doseže nastavljeno število dogodkov, se ponavadi sproži prekinitev, ki prekine
glavni program in izvede prekinitveni podprogram, ki je napisan posebej za ta dogodek. Če
štetje dogodkov števnika povežemo z notranjo uro, dobimo časovnik. Časovnik je možno
programsko pognati in ustaviti, lahko tudi nastavimo, po kolikih urinih taktih se sproži
prekinitev. Uporaben je pri aplikacijah, kjer želimo imeti časovno krmiljenje operacije
znotraj mikrokrmilnika. Nekateri mikrokrmilniki omogočajo tudi povezovanje časovnikov
z zunanjimi dogodki in ob sprožitvi prekinitve odčitajo vrednost časovnika. [14].
Veliko mikrokrmilnikov ima tudi namenske časovnike, ki so pripravljeni za
opravljanje specifične naloge. Eden izmed takšnih časovnikov je časovnik ure realnega
časa, ki neprestano daje podatek o uri in datumu in je uporaben v aplikacijah, kjer
potrebujemo točen čas. Ura realnega časa je lahko vgrajena v mikrokrmilnik ali je dodana
kot zunanja enota; lahko pa napišemo kar program, ki uro simulira. Za večjo točnost je
priporočljiva uporaba oscilatorjev s kremenčevim kristalom. V nekaterih mikrokrmilnikih
je oscilator ure realnega časa ločen od oscilatorja delovne ure. Drugi tak časovnik je
časovnik za ugotavljanje napak, angleško imenovan »watchdog timer«. Časovnik
spremlja izvajanje programa in to tako, da mu vrednost v zanki glavnega programa
neprestano osvežujemo. Če pride do izpada ali neskončnega zankanja katere izmed zank v
programu, se »watchdog« časovnik izteče in resetira mikrokrmilnik, tako da se program na
novo zažene. S tem dosežemo, da tudi ob napaki aplikacija ne zataji popolnoma [14].
Analogni primerjalnik je uporaben pri primerjanju dveh analognih napetosti, podatek
pa je programsko dostopen znotraj mikrokrmilnika. To periferno vezje je ponavadi
vgrajeno samo v zmogljivejše mikrokrmilnike [14].
»Brown-out« detektor je detektor padca napajalne napetosti. Spodnji nivo napetosti je
lahko fiksno določen ali pa programsko nastavljiv, odvisno od vrste mikrokrmilnika. Ko
pade napajalna napetost pod mejno vrednost, se mikrokrmilnik preprosto ugasne; to stori
zaradi zaščite, da se pri nizki napajalni napetosti ne bi izvajale kakšne naključne
programske operacije [14].
Vgrajeni sistem robota Robosapien 15
2.4 Komunikacije in protokoli
Komunikacije so ključni element računalniškega sistema. S pomočjo njih računalnik
pridobiva podatke v obdelavo. To so lahko podatki, ki jih mora procesirati, ali pa podatki,
ki ga krmilijo. Seveda govorimo o digitalnih komunikacijah, kjer je informacija že
predstavljena v digitalni obliki, in jo lahko računalnik obdeluje brez uporabe pretvornikov.
Velikokrat govorimo tudi o digitalnih telekomunikacijah, ki prenašajo informacije v
digitalni obliki na daljavo po različnih prenosnih medijih. Dolžino prenosa lahko merimo
od nekaj metrov do nekaj tisoč kilometrov. Prenosni mediji so lahko žični ali brezžični,
vedno pa imajo za osnovo elektromagnetno valovanje. Pri žičnih medijih je povezava
izvedena s pomočjo kovinskega ali svetlobnega voda, vzdolž katerega potuje informacija
od oddajnika do sprejemnika. Brezžični medij pa je prazen prostor, kjer nimamo vodov za
prenos informacije, ampak se elektromagnetno valovanje širi po prostoru [21].
Protokol je skupek pravil, ki opisuje delovanje točno določenega komunikacijskega
sistema. Zaradi lažje obravnave komunikacij se protokol razdeli v več slojev, kjer protokol
sloja »n« opisuje delovanje komunikacije v »n«-tem sloju. Po OSI (ang. Open System
Interconnection) referenčnem modelu ima tipičen komunikacijski protokol sedem slojev,
kjer vsak sloj opravlja svojo nalogo. Seveda ima lahko določen protokol svojevrstno
razporejene sloje, tako na primer TCP/IP protokol uporablja samo štiri sloje [22].
Aplikacijski sloj
Prezentacijski sloj
Sejni sloj
Transportni sloj
Omrežni sloj
Sloj podatkovne povezave
Fizični sloj
7
1
2
3
4
5
6
Gost do omrežja
Internet
Transportni sloj
Aplikacijski sloj
OSI TCP/IP
Slika 2.3: Razporeditev slojev protokola po referenčnem modelu OSI in TCP/IP
Vgrajeni sistem robota Robosapien 16
V nadaljevanju bomo opisali nekaj najpogostejših komunikacijskih standardov, ki se
uporabljajo danes. Osredotočili se bomo predvsem na tehnologije, ki se nanašajo na žično
ali brezžično povezovanje računalnikov in na za vgrajene sisteme zanimivejše
mikrokrmilnike. Nekatere izmed teh tehnologij smo uporabili tudi pri našem vgrajenem
sistemu: za povezovanje mikrokrmilnikov med seboj in za povezovanje celotnega sistema
z zunanjo okolico (dlančnikom ali računalnikom).
Ethernet imenovan tudi IEEE 802.3 je komunikacijski standard za povezovanje
računalnikov v računalniška omrežja LAN (ang. Local Area Network), ki bazirajo na
različnih vrstah vodnikov in tehnologij prenosa. Ethernet omrežje se sporazumeva s
pomočjo prenašanja okvirjev, ki so lahko zaradi raznovrstnih tehnologij različni po dolžini
in zgradbi. Na fizičnem nivoju lahko Ethernet komunicira preko koaksialnega vodnika,
optičnega vodnika ali UTP vodnika (vodnik sestavljen iz sukanih paric). Slednji se
dandanes uporablja najpogosteje, saj je najcenejši in za uporabo najenostavnejši. V
starejših tehnologijah so računalniki med seboj tekmovali za vodilo, tako da je posamezen
računalnik poslušal vodnik in čakal, če ga je uporabljal že kateri drugi. Če ni, je sam oddal
okvir. Tukaj so bili možni trki, ki jih je morala tehnologija reševati s ponovno oddajo
okvirjev. Obstajale so tudi tehnologije, kjer ni bilo trkov. To so bila tako imenovana
omrežja z žetonom, kjer je vsak računalnik, ki je hotel oddajati okvir moral počakati, da je
prejel okvir z imenom žeton, ki mu je dovoljeval oddajanje v omrežje. Po končanem
oddajanju, ga je posredoval naslednjemu računalniku. Takšne tehnologije so se večinoma
uporabljale pri prvi različici Etherneta, danes imenovanega klasični Ethernet, ki je imel
hitrost prenosa 10Mbit/s. Zaradi vse večjih obremenitev omrežja, ki ga je prinesel razvoj
večpredstavnosti, so za povezovanje več UTP vodnikov namesto zvezdišč (ang. hub), ki
enostavno povežejo vodnike skupaj, uporabljamo preklopnike (ang. switcher) in
usmerjevalnike (ang. router), ki so sposobni na podlagi tabel razvrščati pakete. Novejša
različica Etherneta (802.3u) ima ime hitri Ethernet, in se danes najpogosteje uporablja,
doseže hitrosti do 100Mbit/s. Pri tej različici ni več dovoljena uporaba koaksialnih kablov,
temveč samo sukane parice in optični vodnik. Ta različica je združljiva s starejšo različico,
saj so pri razvoju ohranili enako strukturo okvirjev. Danes pa že prihaja na tržišče gigabitni
Ethernet (802.3z) z možno hitrostjo prenosa do 1Gbit/s. Tukaj so zaradi velikih hitrosti
prenosa še strožja pravila glede povezovanja naprav med seboj, tako da lahko z enim
Vgrajeni sistem robota Robosapien 17
vodnikom povežemo samo dva računalnika (zvezdišča, preklopnika). Vse možne
tehnologije so prikazane v tabeli 2.1 [22].
Tabela 2.1: Prikaz različnih tehnologij Etherneta
Ime Vodnik Max. dolžina segmenta
Max. Priklju čkov na segment
Opis
10Base5 Debeli koaksialni 500 m 100 Ni več v uporabi
10Base2 Tanek koaksialni 185 m 30 Ne potrebujemo vozlišča
10Base-T Sukana parica 100 m 1024 Najcenejši sistem
10Base-F Optični 2000 m 1024 Za povezavo med stavbami
100Base-T4 Sukana parica 100 m - Uporablja 3 kategorijo UTP
100Base-TX Sukana parica 100 m - Full duplex 100Mb/s - UTP kat 5
100Base-FX Optični 2000 m - Full duplex 100Mb/s;
1000Base-SX Optični 550 m - Optika - 50, 62,5 mikronov
1000Base-LX Optični 5000 m - 10 mikronov ali 50, 62,5 mikronov
1000Base-CX 2 para od UTP 25 m - Zaščitena sukana parica
1000Base-T 4 pari od UTP 100 m - Standardni UTP kategorije 5
Wireless LAN (WLAN) je podoben standard kot Ethernet, samo da se uporablja za
povezovanje računalnikov v brezžičnem omrežju. Označen je kot IEEE 802.11 in ima
popularno ime WiFi. Standard se je začel razvijat z razvojem prvih prenosnikov, saj so
želeli le-te na kratkih razdaljah med seboj brezžično povezat. Omrežje lahko deluje v
različnih načinih. Tako lahko povežemo računalnike s pomočjo dostopne točke, s pomočjo
več dostopnih točk, ali kar med sabo brez dostopne točke (ad-hoc). Pri povezovanju
računalnika brez dostopne točke ni nujno, da računalnik s svojo radijsko povezavo pokriva
vse računalnike. Vzpostaviti mora povezavo samo z enim, ki se lahko obnaša kot most do
želenega računalnika. Obstaja več različic tega standarda, ki so nastale tekom razvoja.
Razlikujejo se predvsem v delovanju povezave v fizičnem sloju in maksimalni hitrosti
prenosa. Različice so prikazane v tabeli 2.2. Standard je v višjih slojih združljiv z
Ethernetom, tako da z napravo, ki se imenuje most, lahko med seboj združimo žični LAN
in brezžični WLAN [22].
Vgrajeni sistem robota Robosapien 18
Tabela 2.2: Različice WLAN tehnologije
Označba Frekvenca Max. prenos Max. domet Modulacijska tehnika
802.11a 2,4 GHz 54 Mb/s 120 m OFDM
802.11b 5 GHz 11 Mb/s 140 m DSSS
802.11g 2,4 GHz 54 Mb/s 140 m OFDM
802.11n 2,4 GHz; 5 GHz 248 Mb/s 250 m -
Slika 2.4: Primer povezave računalnikov na dostopno točko ali ad-hoc
Bluetooth je komunikacijski standard za povezovanje naprav v PAN (ang. Personal
Area Network) omrežja. Namenjen je predvsem za brezžično povezovanje mobilnih
naprav in računalniške periferije z računalnikom. Osnovna enota Bluetooth sistema je
piconet, ki ima eno napravo določeno kot gospodarja, nanj pa je priklopljenih do sedem
naprav v načinu suženj, ki so oddaljene do 10m od gospodarja. Več piconetov povezanih v
istem prostoru pa se povezuje v scatternet, kjer ima ena od suženjskih naprav vlogo mosta
med obema piconetoma.. V enoti piconet ima glavno vlogo gospodar, ki narekuje vsem
drugim napravam (sužnjem), kdaj naj oddajajo; medtem lahko sužnji čakajo v posebnem
načinu brez oddajanja in varčujejo z energijo ter čakajo na gospodarjev ukaz za ponovno
oddajo. Vse naprave se povezujejo samo z gospodarjem, povezava med dvema sužnjema ni
mogoča [22].
Vgrajeni sistem robota Robosapien 19
Slika 2.5: Prikaz povezave dveh piconet omrežji
Bluetooth je bil razvit predvsem za povezovanje naprav z izredno malo porabljene
energije. Naprave Bluetooth so razdeljene na tri močnostne razrede, s katerimi je določen
tudi domet komunikacije, le-ta obsega razdaljo od 1m do 100m. Ti načini so prikazani v
tabeli 2.3. Obstajajo tudi različne različice Bluetootha, ki so se uveljavile tekom razvoja.
Prva različica je bila zaradi množice napak praktično neuporabna. V naslednjih so napake
odpravili in dodali različne funkcionalnosti. V standardizaciji protokola nastaja manjša
zmeda, saj za način delovanja odgovarjata dve instituciji, katerih standardi se ne ujemajo
popolnoma. Prva je IEEE, ki je Bluetooth standard prvič potrdila leta 2002 z imenom IEEE
802.15.1-2002 (Različica 1.1). Druga institucija pa je Bluetooth SIG (ang. Special Interest
Group) s podporo številnih podjetij, ki se zanimajo za to tehnologijo. SIG je tudi prvi, ki je
začel razvijati protokol leta 1998. Danes se ponekod že uporablja različica Bluetootha 2.0,
ki ima za razliko od različice 1.2 višje hitrosti prenosa (do 3Mbit/s), ni pa podprta iz strani
IEEE. Zato jo večinoma uporabljajo podjetja članice SIG. Trenutni razvoj strmi k višjim
hitrostim povezave. Tako lahko v prihodnosti pričakujemo hiter Bluetooth, ki bo
komuniciral v UWB frekvenčnem pasu in omogočal hitrosti do 480Mbit/s [24].
Tabela 2.3: Močnostni razredi Bluetooth naprav
Razred Maksimalna dovoljena moč Domet (približek)
Razred 1 100mW (20dBm) 100 m
Razred 2 2,5mW (4dBm) 10 m
Razred 3 1mW (0dBm) 1 m
Vgrajeni sistem robota Robosapien 20
Bluetooth standard ima množico različnih protokolov razvrščenih po slojih. Standard
ne upošteva OSI, TCP/IP ali katerega drugega znanega referenčnega modela, ampak ima
čisto svojo strukturo slojev. Institucija IEEE je standard zelo prilagodila modelu 802.
Slika 2.6 prikazuje prilagojeno arhitekturo Bluetooth protokola [22].
Slika 2.6: Bluetooth - struktura slojev protokola
Najnižji sloj je fizični, ki predstavlja radijsko komunikacijo med napravami. Ukvarja
se z radijsko oddajo in modulacijskimi tehnikami. Mnogo podjetij je poskušalo narediti
čim cenejši radijski sistem, da so ga lahko masovno proizvajali. Sloj osnovnega pasa (ang.
baseband) je sloj, ki nekako posnema delovanje podsloja MAC pri Ethernetu, samo da še
vedno opravlja določene funkcije na fizičnem nivoju. Ta sloj upravlja s časovnimi režami
in jih združuje v podatkovne okvirje. Naslednji sloj združuje več protokolov, ki so med
seboj povezani ali pa ne. Upravljalec povezave (ang. link manager) vzpostavlja logične
kanale med napravami, skrbi za energijsko učinkovitost, avtorizacijo in kvaliteto. Protokol
logične povezave (ang. Logical Link Adaptation Protocol), imenovan s kratico L2CAP,
prilagaja podatke za uporabo z višjimi sloji in s tem ščiti podrobnosti o prenosu. Protokola
za zvok in krmiljenje (ang. audio; control) sta neposredno povezana s protokolom
osnovnega pasa. Sledi sloj vmesnih aplikacij (ang. middleware), kjer najdemo množico
raznih protokolov. Protokol 802 LLC je bil vstavljen zaradi kompatibilnosti z drugimi
protokoli v 802 standardu. RFcomm (ang. Radio Frequency Communication) je protokol,
ki emulira zaporedno povezavo. Ta se uporablja pri perifernih napravah za osebni
računalnik, kot sta tipkovnica, miška in podobno. Protokol za telefonijo je namenjen za
komunikacije v realnem času, ki prenašajo glas. Z njim lahko upravljamo tudi z
nastavitvijo in prekinitvijo klicev. Protokol za raziskovanje storitev (ang. service
discovery) se uporablja za iskanje servisov znotraj omrežja. V najvišjem sloju pa se
Vgrajeni sistem robota Robosapien 21
nahajajo aplikacijski protokoli, ki jih pogosteje imenujemo profili. Ti komunicirajo s
protokoli v nižjih slojih po njihovi potrebi. Ponavadi naprava vsebuje samo tiste protokole,
ki jih potrebuje za uspešno komunikacijo. S pomočjo profila se naprava nekako tudi
identificira in pove katero izmed možnih storitev ponuja. V tabeli 2.4 imamo seznam
storitev s krajšimi opisi [22,26].
Tabela 2.4: Bluetooth profili aplikacij
Kratica Ime profila (v angleščini) Kratek opis
A2DP Advanced Audio Distribution Profile Prenašanje visoko kvalitetnega avdio/video toka.
AVRCP Audio/Video Remote Control Profile Vmesnik za kontrolo TV in Hi-Fi naprav.
BIP Basic Imaging Profile Pošiljanje slik med napravami.
BPP Basic Printing Profile Tiskanje neposredno iz mobilnih naprav
CIP Common ISDN Access Profile Dostop do podatkov in signalizacije ISDN.
CTP Cordless Telephony Profile Za uporabo naprave kot brezžični telefon.
DID Device ID Profile Identifikacija naprave.
DUN Dial-up Networking Profile Klicni dostop do interneta.
FAX Fax Profile Za upravljanje FAX povezave.
FTP File Transfer Profile Dostop do datotečnega sistema druge naprave.
GAVDP General Audio/Video Distribution Profile Osnovni profil za A2DP in VDP profila.
GAP Generic Access Profile Osnova za druge profile.
GOEP Generic Object Exchange Profile Osnova za podatkovne profile – OBEX.
HCRP Hard Copy Cable Replacement Profile Enostavna povezava med tiskalnikom in napravo.
HFP Hands-Free Profile Prostoročno telefoniranje.
HID Human Interface Device Profile Profil za priključevanje mišk, tipkovnic, ipd.
HSP Headset Profile Povezovanje naprave z slušalkami.
ICP Intercom Profile Zvočno povezovanje naprav med sabo.
LAP LAN Access Profile Za dostop do LAN-a preko druge naprave.
OPP Object Push Profile Pošiljanje objektov med napravami.
PAN Personal Area Networking Profile Vzpostavljanje PAN omrežja.
PBAP Phone Book Access Profile Izmenjevanje telefonskih imenikov.
SPP Serial Port Profile Enostavna emulacija serijske povezave.
SDP Service Discovery Profile Ugotavljanje servisov druge naprave.
SAP, SIM SIM Access Profile Povezovanje SIM kartic iz druge naprave.
SYNCH Synchronisation Profile Sinhronizacija podatkov.
VDP Video Distribution Profile Za transportiranje video toka.
WAPB Wireless Application Protocol Bearer Prenašanje WAP protokola čez Bluetooth.
Vgrajeni sistem robota Robosapien 22
CAN (ang. Controller Area Network) je omrežni komunikacijski protokol za
povezovanje mikrokrmilnikov med seboj brez uporabe računalnika. Protokol se pogosto
uporablja v avtomobilski industriji, kjer se med sabo povezujejo senzorji in mikrokrmilnik
za kontrolo delovanja motorja na notranje izgorevanje. Protokol je zasnovan na OSI
referenčnem modelu opisuje pa samo najnižja sloja, to sta fizični in podatkovni sloj.
Vodilo CAN deluje na principu diferencialnega zaporednega vodila, kjer lahko vsaka
priključena naprava oddaja ali sprejema vsa sporočila, ki so na vodilu. Vodilo omogoča
hitrosti prenosa do 1Mbit/s, če je povezava krajša od 40m. Pri daljših povezavah pa se
hitrost prenosa zmanjša, tako lahko, na primer, pri povezavi dolgi 500m še vedno
prenašamo podatke z hitrostjo 128kbit/s. Danes poznamo dve izpeljanki CAN vodila: z
11-bitnim in 29-bitnim naslavljanjem. Sporočilo je sestavljeno iz identifikacijske besede,
ki opredeli tip in prejemnika sporočila. Sledi še do največ osem besed. Ker je vodilo
večinoma namenjeno povezovanju senzorjev, kontrolnih naprav in podobno, mora vsaka
priključena naprava vsebovati gostiteljski procesor (mikrokrmilnik). Nobena naprava ni
neposredno priključena na vodilo. Vsaka naprava lahko oddaja, če je vodilo prosto, v
primeru trkov dveh sporočil prevlada tisto z dominantnejšo identifikacijsko besedo (ima
dominantnejše bite). Po tej arbitraži vse priključene naprave dobijo sporočilo z
dominantnejšo identifikacijsko besedo. Na takšen način vodilo omogoča, da nanj
priključimo več gospodarjev [1,23].
I2C (ang. Inter-Integrated Circuit) je vodilo, ki so ga razvili pri podjetju Philips leta
1980. Namenjeno je povezovanju integriranih vezij med seboj. Deluje lahko v treh
hitrostnih razredih. Prvi je standardni način S (ang. Standard mode), ki omogoča hitrosti do
100 kbit/s. Drugi je hiter način F (ang. Fast mode) s hitrostmi do 400 kbit/s, in tretji,
najnovejši, zelo hiter način s hitrostmi do 3,4 Mbit/s Hs (ang. High Speed mode). Tipična
napetostna nivoja sta 5V za S in F način, ter 3,3V za Hs način. Vezja, ki delujejo v Hs
načinu, podpirajo tudi S in F načina. Vodilo deluje s pomočjo dveh aktivnih linij in mase.
Prva je podatkovna SDA (ang. Serial Data) in druga urina SCL (ang. Serial Clock).
Povezavi sta na naprave povezani preko dvižnih uporov. Vsaka naprava, povezana na I2C
vodilo, ima svoj naslov. Nadzor nad vodilom ima gospodar (ang. master). To je naprava, ki
generira urni signal na SCL liniji. Ponavadi je ta naprava mikroprocesor ali mikrokrmilnik.
Vodilo lahko deluje tudi z več gospodarji vodila [1].
Vgrajeni sistem robota Robosapien 23
2.5 Senzorji
Senzorji so naprave, ki pretvarjajo eno fizikalno veličino v drugo. V elektrotehniki pa
se uporabljajo senzorji, ki pretvorijo katerokoli fizikalno veličino v električno. V kakšni
električni veličini bo senzor predstavil svojo vrednost je odvisno od njegovega vmesnika.
Izhodno vrednost lahko poda v analogni obliki z nivojem toka, napetosti ali s pomočjo
PWM signala. Pri vgrajenih sistemih pa raje uporabljamo senzorje, ki že imajo vgrajen
digitalni vmesnik, saj tako ni potrebno pretvarjati dobljene vrednosti v digitalno obliko in
ga je lažje priključiti na mikrokrmilnik. Takšen senzor lahko poda informacijo v obliki
enega bita ali celotne besede, ki se lahko prenese zaporedno ali vzporedno, odvisno od
vmesnika, ki ga ima senzor. V nadaljevanju bomo opisali senzorje za zaznavanje okolice,
ki se uporabljajo pri mobilnih napravah.
Binarni senzor je najenostavnejši tip senzorja. Vrne samo en bit digitalne informacije:
logično 0 ali 1. Tipični primer je stikalo končnega položaja robotske roke. Zelo enostavno
ga je priključiti na mikrokrmilnik. Priključimo ga neposredno na digitalni vhod ali preko
zadrževalnika. Stikalo priklopimo preko dvižnega upora, da ob sklenitvi ne povzročimo
kratkega stika. Večina mikrokrmilnikov že ima vgrajen dvižni upor, tako da lahko
priključimo stikalo neposredno med digitalnim vhodom mikrokrmilnika in maso [20].
Slika 2.7: Binarni senzor izveden z stikalom
Rotacijski kodirnik se uporablja kot senzor za pridobivanje povratne informacije o
vrtenju motorja. S tem omogoča regulacijo vrtljajev. Najpogosteje se uporabljajo kodirniki,
ki temeljijo na magnetnem ali optičnem odčitavanju položaja. Magnetni kodirnik uporablja
Hallovo sondo za zaznavanje magnetnega polja in vrteči se disk z več magneti pritrjenimi
Vgrajeni sistem robota Robosapien 24
na robu diska. Če je na primer magnetov 16, se na izhodu Hallove sonde pri enem obratu
motorja pojavi 16 impulzov. Pri optičnem kodirniku uporabimo disk, ki je razdeljen na
črna in bela polja, ter LED diodo v kombinaciji s fototranzistorjem. Tako se v primeru 16
poljnega kodirnika na izhodu fototranzistorja pojavi 16 impulzov za en obrat motorja.
Kodirnik je po navadi montiran neposredno na gred motorja pred reduktorjem, da lahko
podaja popolno resolucijo obratov motorja. Kodirnik s samo enim senzorjem lahko samo
šteje segmente, ne more pa podati absolutne pozicije gredi. To lahko rešimo z diskom, ki
ima postavljene črno-bele segmente v obliki Greyeve kode, in z več svetlobnimi senzorji.
Ti kodirniki se uporabljajo tudi pri mobilnih robotih za ugotavljanje pozicije in orientacije
[20].
Slika 2.8: Rotacijski kodirnik – optična izvedba in postavitev polj v Greyevi kodi za absolutno zaznavanje položaja
Senzor oddaljenosti je eden najpomembnejših senzorjev pri gradnji mobilnih robotov.
S tem senzorjem lahko zaznavamo, če je v bližini senzorja kakšen predmet in koliko je
oddaljen ter nato na podlagi teh podatkov vodimo mobilnega robota mimo ovire. Poznamo
več tehnik merjenja oddaljenosti, najbolj izstopajoči so senzorji na podlagi ultrazvoka,
infrardeče svetlobe in laserske svetlobe. Ultrazvočni senzorji delujejo tako da oddajo
zvočni signal in pri sprejemu odbitega signala na podlagi časa potovanja izračunajo
dolžino oddaljenosti od predmeta. Delujejo pri frekvencah od 50kHz do 250 kHz in
ponavadi podajajo meritev 20 krat v sekundi. Največja slabost ultrazvočnih senzorjev so
odboji in interferenca signala. Ko je akustični signal odbit pod določenim kotom, se zdi, da
Vgrajeni sistem robota Robosapien 25
je ovira bolj oddaljena. Do interference pride pri uporabi več senzorjev hkrati. Takrat lahko
en senzor zazna akustični odboj drugega signala in tako dobi napačen podatek o
oddaljenosti od ovire. Interferenco preprečujemo tako, da oddani signal zakodiramo s
pseudo-naključnimi števili. Danes namesto ultrazvočnih senzorjev raje uporabljamo
laserske, ki so zelo natančni. Tako lahko mobilna naprava z več senzorji meri okolico in
dobi pravo dvodimenzionalno mapo iz svoje točke pogleda, ali celo popolno
tridimenzionalno. Na žalost so ti senzorji preveliki in pretežki za uporabo na majhnih
mobilnih napravah in še vedno precej dragi. Naslednja možnost za uporabo so infrardeči
senzorji, ki delujejo na malo drugačnem principu kot ultrazvočni. Zaradi hitrosti svetlobe
oddaljenosti ne moremo meriti neposredno. Ti senzorji ponavadi uporabljajo infrardečo
LED diodo, ki utripa z frekvenco 40kHz. Na drugi strani pa imamo infrardečo zaznavno
polje, ki na podlagi kota odboja pridobi oddaljenost od ovire. Valovna dolžina svetlobe je
ponavadi 880nm in ni vidna s prostim očesom. Senzorje lahko dobimo z analognim ali
digitalnim vmesnikom. Analogni vmesnik podaja oddaljenost v napetosti, digitalni pa
podaja 8-bitno besedo po zaporedni povezavi. Senzor se nelinearno odziva na oddaljenost.
Tako so vrednosti, ki jo da ob določeni oddaljenosti, podane v diagramu. Pri digitalnih
vrednostih problem najlažje rešimo s pomočjo tabele vrednosti, ki je zapisana v
pomnilniku mikrokrmilnika in s programom izračunavamo oddaljenost. Vsaka izmed 256
vrednosti (8 bitov) je vpisana v tabelo. Drugi problem teh senzorjev je, da senzor ne more
meriti daljin bližjih od 6cm, saj pade izven merilnega območja in tako zaradi narave
delovanja kaže večjo oddaljenost. Ta problem rešujemo s pomočjo več ukrepov. V
programu lahko sledimo vrednostim senzorja in tako ugotovimo, ali se je naprava
približevala oviri ali oddaljevala, preden je padla čez merilno območje. Lahko enostavno
senzor mehansko pritrdimo tako, da daljina manjša od 6cm ni mogoča, ali pa dodamo
dodatne infrardeče stikalne senzorje, ki so sposobni zaznavat večjo bližino. Ti so
enostavnejši od infrardečih senzorjev oddaljenosti. Infrardeči stikalni senzorji podajajo
binarno vrednost. Zaznavajo ali je ovira v bližini 1cm do 2cm ali ne. Ti senzorji lahko
nadomestijo običajne stikalne senzorje, saj so boljši, ker ne vsebujejo premičnih delov
[20].
Vgrajeni sistem robota Robosapien 26
Slika 2.9: Primer nelinearne karakteristike IR senzorja Sharp GP2D120.
Kompas je senzor, ki poda absoluten kot glede na zemeljsko magnetno polje.
Uporablja se predvsem za orientacijo avtonomnih mobilnih naprav. Ponavadi se uporabi
pri ponovni začetni nastavitvi orientacije, ki smo jo izgubili s kakšnim drugim senzorjem.
Najenostavnejši primerki senzorjev podajajo rezultat v osmih smereh, ki jo predstavijo z
različnimi izhodnimi napetostmi. Boljši kompasi pa imajo digitalen serijski vmesnik. Ti
kompasi so kompleksnejši in lahko merijo kote do 2° natančno ter delujejo tudi v zaprtih
prostorih [20].
Senzorji pospeška so enostavni senzorji, ki pa imajo težave z zaznavanjem tresljajev,
zato se po navadi dobljene vrednosti filtrirajo. Senzorji so lahko v različnih izvedbah,
razlikujemo jih pa predvsem po merilnem območju merjenja, koliko smeri meri in kakšen
vmesnik ima za posredovanje izmerjenih vrednosti. Obstajajo senzorji, ki lahko merijo
pospešek v eni, dveh ali vseh treh smereh. Podatke pa posredujejo analogno, ali v obliki
Vgrajeni sistem robota Robosapien 27
PWM signala. Ti senzorji so občutljivi na »pozicijski šum« (na primer: zaznavajo šum ob
delovanju motorjev). Te šume ponavadi filtriramo z nizkoprepustnim filtrom, če gre za
analogni izhodni signal, ali pa z digitalnim filtriranjem - v primeru uporabe senzorja z
digitalnim vmesnikom [20].
Giroskop je senzor za merjenje spremembe orientacije mobilne naprave. Večji in
boljši senzorji delujejo na principu vrtečega se diska, ki ima lastnosti, da ohranja absolutno
orientacijo ne glede na spremembo orientacije naprave. Takšni senzorji so veliki in se
uporabljajo predvsem za orientacijo plovil v aeronavtiki. V majhnih mobilnih napravah pa
se uporabljajo giroskopi, ki delujejo na principu piezoelektričnih pojavov. Ti ne morejo
meriti absolutne orientacije, lahko pa merijo spremembo orientacije. Orientacijo merijo v
eni osi in rezultat po navadi podajajo z PWM signalom. Slabost tega senzorja je, da z
zaznavanjem sprememb orientacije neprestano delamo napako. To lahko odpravimo z
ponovno začetno nastavitvijo senzorja [20].
Inklinacijski kompas je senzor nagiba. Deluje na podlagi gravitacije in se pretežno
uporablja v aeronavtiki. Ceneni senzorji, ki jih dobimo za grajenje majhnih mobilnih
naprav imajo analogni ali PWM izhod. Merijo absoluten kot nagiba, zato imajo iz tega
stališča boljše lastnosti kot giroskop, saj se pri njih napaka ne povečuje. Podobno kot
senzorji pospeška so občutljivi na »pozicijski šum«, tresljaje, ki jih povzroča elektromotor.
Potrebujejo tudi veliko časa za odčitavanje meritve, tako niso uporabni pri hitrih
regulacijah naprave. Če potrebujemo točne in hitre meritve, je idealna kombinacija več
senzorjev za orientacijo, na primer inklinacijskega kompasa in giroskopa [20].
2.6 Motorji in kontrola motorjev
Enosmerni motorji se zelo pogosto uporabljajo za gonilne elemente pri mobilnih
robotih, pa tudi v robotskih sistemih, kjer ni potrebe po veliki točnosti. Ti motorji delujejo
s pomočjo komutacije magnetnega polja. Polje komutira zaradi spreminjanja smeri toka
skozi navitja. Smer električnega toka spreminjamo s pomočjo drsnih obročev, ki se
nahajajo na osi rotorja motorja. Ti motorji so poceni in večinoma nadomestijo potrebe po
gonilnih elementih v robotih. Nadomestijo tudi potrebe po pnevmatičnih elementih, ki so
Vgrajeni sistem robota Robosapien 28
pri mobilnih robotih prej izjema kot pravilo. Pnevmatični sistemi se uporabljajo takrat, ko
imamo potrebo po velikih navorih, še vedno pa črpalko poganja elektromotor. Dobre
lastnosti teh motorjev so njihova cena v primerjavi z ostalimi vrstami motorjev ter
enostavno krmiljenje, ki je napetostno in je lahko zaradi mehanske vztrajnosti samega
motorja izvedeno kar z PWM signalom brez dodatnih filtrov. Slabe lastnosti pa so, da
zaradi krtačk in drsnih kontaktnih obročev nimajo najvišjega izkoristka, povzročajo šum,
za točnejše krmiljenje obratov in navora pa moramo uporabiti povratno informacijo, ki jo
pridobimo s pomočjo rotacijskih kodirnikov. Na tržišču obstajajo tudi motorji, ki imajo
rotacijske kodirnike že vgrajene. Tako za standardne aplikacije ne rabimo sami izdelovati
rotacijskih kodirnikov, ki so v komercialnih izvedbah izvedeni na svetlobni ali magnetni
tehnologiji in primerno zaščiteni pred zunanjimi vplivi: pri svetlobnih rotacijskih
kodirnikih se, na primer, omejuje neposreden dostop zunanje svetlobe na senzor kodirnika
[20].
Koračni motorji se precej razlikujejo od navadnih enosmernih motorjev v tem, da
imajo dve neodvisni tuljavi, ki sta lahko neodvisno krmiljeni. To daje tem motorjem
možnost, da se lahko zavrtijo točno za en korak naprej ali nazaj, namesto da bi se vrteli
prosto kot enosmerni motorji. Tipično število korakov na en obrat je 200, kar pomeni, da
se pri enem koraku motor zavrti za 1,8°. Nekateri koračni motorji so izvedeni tako, da
omogočajo polovični korak, kar še poveča natančnost vrtenja. Hitrost vrtenja je odvisna od
obremenjenosti motorja, določena pa je s številom korakov v sekundi. Slika 2.10 prikazuje
delovanje koračnega motorja z dvema tuljavama, ki sta kontrolirani z dvema krmilnima
H-mostiščnima vezjema. Vsaka izmed kombinacij v tabeli zavrti motor za en korak naprej;
če kombinacije izvajamo v obratni smeri se motor vrti nazaj. Stikalno zaporedje je
razvrščeno po Greyevi kodi, kar moramo upoštevati pri krmiljenju [20].
Slika 2.10: Delovanje koračnega motorja - krmilni signali za navitja
Vgrajeni sistem robota Robosapien 29
Koračni motorji v robotiki niso tako pogosto uporabljeni. Njihovo uporabo omejujejo
predvsem: njihova odvisnost hitrosti od obremenitve, počasnost in kompleksnost
krmiljenja. Ti motorji so, v primerjavi z navadnimi enosmernimi motorji, tudi neprimerno
večji in težji pri enaki obremenitvi. V sistemih jih uporabljamo predvsem takrat, ko
zahtevamo veliko točnost pomikov [20].
Servo motorji so zelo kvalitetni enosmerni motorji, ki so krmiljeni v zaprti zanki. Ti
motorji morajo biti sposobni hitre menjave položaja, visokih hitrosti in pospeškov.
Narejeni morajo biti tako, da zdržijo visoke spremembe navorov. Servo motor je v osnovi
enosmerni motor z dodano kontrolno logiko in je na široko uporabljen v modelarstvu, za
krmiljenje modelov letal, avtomobilov in čolnov. Ta motor ima tri priključne vodnike,
napajanje, maso in krmilni vodnik PW, ki je podoben signal kot PWM, ki se uporablja pri
krmiljenju enosmernih motorjev. Signal PW ni pretvorjen v hitrost, tako kot PWM pri
enosmernih motorjih, ampak je uporabljen za analogno krmiljenje položaja vrtečega diska,
ki je priključen posredno na reduktor na rotor motorja. Servo motor se ne more večkrat
zavrteti, lahko se zavrti samo za ±120° iz sredinskega položaja. Zgrajen je iz enosmernega
motorja in enostavnega krmilnega vezja, ki običajno ugotavlja položaj glave s pomočjo
potenciometra. PW signal za servo motorje ima običajno frekvenco 50Hz in s pomočjo
širine podaja želeni položaj glave. V kakšen odklon kota se postavi motor pri določeni
širini pulzov, je odvisno od modela motorja [20].
Slika 2.11: Krmiljenje servo motorja z PW signalom
Vgrajeni sistem robota Robosapien 30
Brez-krtačni enosmerni motorji so motorji, ki so napajani z enosmerno napetostjo,
za komutacijo pa skrbi krmilna elektronika, za razliko od navadnih enosmernih motorjev,
kjer uporabljamo drsne obroče in krtačke. V skupino brez-krtačnih enosmernih motorjev
lahko razvrstimo dva tipa motorjev. Prvi tip je že prej omenjeni koračni motor, drugi tip pa
je reluktančni motor. Pod drobnogled bomo tukaj vzeli slednjega. Reluktančni motor je tip
sinhronega električnega motorja, ki ima elektromagnetne pole in feromagnetno jedro. Ti
motorji lahko imajo zelo dobro razmerje med proizvedeno močjo na težo motorja in so
zaradi tega idealna izbira za mnogo aplikacij. Slaba lastnost teh motorjev je nihanje navora
pri nizkih hitrostih, kar povzroča šum. Njihova uporaba je omejena s kompleksnostjo
izdelovanja motorjev in krmilnih vezij za le-te. To danes rešujejo z računalniškim
načrtovanjem motorjev, pri krmilnih vezjih pa z uporabo cenenih vgrajenih sistemov, ki so
sposobni krmiliti motor. Ti krmilni sistemi običajno uporabljajo mikrokrmilnike s
krmilnimi algoritmi za realno-časovno procesiranje, da ustvarjajo signale glede na pozicijo
rotorja, ki jo pridobivajo s povratnim odvzemanjem toka ali napetosti [25,26].
Krmilno H-mostiš čno vezje je stikalno vezje, ki nam omogoča krmiljenje enosmernih
motorjev. Vezje lahko krmili smer vrtenja in hitrost vrtenja s pomočjo PWM signala.
Sestavljeno je iz štirih stikal. To so običajno tranzistorji, ki so povezani v obliki črke H, iz
tega izhaja tudi ime - H-mostiščno (ang. H-bridge) vezje. V spodnji sliki 2.12 je prikazano
delovanje krmilnega H-mostiščnega vezja. Če vklopimo prvo in četrto stikalo se bo motor
zavrtel naprej. Ob vklopu drugega in tretjega stikala pa se bo motor vrtel nazaj. Hkrati
lahko vklopimo tudi prvo in tretje ali drugo in četrto stikalo. V tem primeru kratko
sklenemo navitja, kar povzroči hitrejše zaviranje motorja [20].
Slika 2.12: Delovanje krmilnega H-mostiščnega vezja
Vgrajeni sistem robota Robosapien 31
To vezje lahko implementiramo na različne načine. Prva možnost je, da vezje sami
sestavimo iz stikalnih elementov. V manjših sistemih so v uporabi predvsem tranzistorji.
Pri izdelavi vezja moramo paziti, da preprečimo vklop tranzistorjev v isti veji mostička, saj
bi povzročilo kratek stik vezja. Druga možnost je uporaba dveh močnostnih ojačevalnikov,
katerih vhode krmilimo s pomočjo mikrokrmilnika. Vezje je prikazano na sliki 2.13. Vhodi
ojačevalnikov so neposredno priključeni na izhode mikrokrmilnika. Tako z logičnimi stanji
na izhodih mikrokrmilnika krmilimo hitrost in smer vrtenja motorja. Za krmiljenje manjših
motorjev lahko uporabimo integrirana krmilna H-mostiščna vezja. V tem primeru na
mikrokrmilnik priključimo samo povezavo za hitrost in smer ter izhodna priključka na
motor. Celotno krmilno H-mostiščno vezje, ostala logika in zaščitni elementi so v
integriranem vezju [20].
Slika 2.13: Uporaba ojačevalnikov pri krmiljenju motorja
Vgrajeni sistem robota Robosapien 32
3 ANALIZA SISTEMA
Robot je zelo kompleksen sistem, saj vsebuje najrazličnejše električne in mehanske
elemente, zato je za obvladovanje problema potreben širok spekter različnih znanj. Mi se
bomo pri analizi osredotočili samo na električne in elektronske sisteme, ker le-te
potrebujemo za izdelavo novega vgrajenega sistema. Ostale bomo pustili v ozadju.
Robot Robosapien ima več različic, saj podjetje vsake toliko časa izboljša model in
izda novo različico robota. Robot, ki bo obravnavan v analizi, se dejansko imenuje
Robosapien V2, kar pomeni, da je to druga različica omenjenega robota. Podjetje izdeluje
tudi več drugih tipov robotskih igrač, s katerimi lahko ta robot komunicira [5].
3.1 Senzorji
Senzorje lahko ločimo na zunanje in notranje. Zunanji senzorji so potrebni za
orientacijo robota v okolici. Zaradi enostavnosti robota so to predvsem senzorji na dotik, ki
so izdelani s pomočjo mehanskih stikal. S temi senzorji robot zazna, če se je zaletel v
oviro. Robot ima šest senzorjev na dotik, dva mikrofona za zaznavo zvoka ter tri IR
sprejemnike za komunikacijo z daljinskim upravljalnikom. Senzorji na dotik so locirani po
dva na vsaki nogi (spredaj in zadaj) ter po enega na vsaki roki. Mikrofona sta namenjena
zaznavanju ostrih zvokov iz okolice, na katere se robot odzove. Postavljena sta po eden na
vsaki strani glave. IR sprejemniki so nameščeni spredaj in na straneh [4].
Vgrajeni sistem robota Robosapien 33
Slika 3.1: Prikaz lokacij zunanjih senzorjev
Notranji senzorji so namenjeni ugotavljanju položaja robota in robotovih okončin.
Ločimo jih lahko na stikalne, kodirne in zvezne. Stikalna senzorja zaznata, ali robot v roki
drži predmet. Nameščena sta znotraj zapestja. Uporabljeni so še trije stikalni senzorji, ki se
sklenejo glede na gravitacijsko polje. Ti so uporabljeni za ugotavljanje, ali robot leži na
trebuhu ali na hrbtu ter za pobiranje iz ležečega položaja. Nameščeni so po eden v vsaki
nogi in eden v trupu robota. Kodirni senzorji so uporabljeni na petih mestih. To so enako
stikalni senzorji, s tem da je uporabljenih več stikal izvedenih z drsniki. Z njimi lahko
določimo več diskretnih položajev. Namenjeni so ugotavljanju položaja zasuka v zapestjih,
obrnjenosti glave, ugotavljanju predklona glave in nagiba robota v pasu na levo ali desno
stran. Zvezni senzorji so realizirani s pomočjo drsnih uporov - potenciometrov.
Uporabljeni so za zvezno določanje položaja ramen in za določanje obrnjenosti v pasu ter
stopnjo predklona. Skupaj ima štiri zvezne senzorje. Slika 3.2 prikazuje lego notranjih
senzorjev robota, prikaže vrsto senzorjev in opiše, kaj senzorji zaznavajo. Tabela 3.1 pa
prikazuje možna bitna stanja kodirnih senzorjev [4].
Vgrajeni sistem robota Robosapien 34
Slika 3.2: Prikaz lokacij notranjih senzorjev
Tabela 3.1: Možna bitna stanja kodirnih senzorjev
Senzor Možna bitna stanja
Zasuk levega zapestja (levo -desno) 11 01 00 10
Zasuk desnega zapestja (levo -desno) 11 01 00 10
Glava (gor – dol) 010 000 001 011
Zasuk glave (levo -desno) 111 110 100 101 001 000 010 011
Kamera, ki je locirana na glavi robota pripomore k posebnim telemetričnim
sposobnostim. Z njeno pomočjo lahko robot loči med rdečo in zeleno barvo ter podre
kegelj z žogico. Seveda se najprej signali preračunajo v posebnem procesorskem sistemu
znotraj glave. Ugotovili smo, da je vidno polje kamere razdeljeno na mrežo devetih polj, s
pomočjo katerih pridobi povprečno barvo v posameznem polju in s tem ugotovi položaj
kegljev.
Vgrajeni sistem robota Robosapien 35
3.2 Motorji in kontrola motorjev
V robota je vgrajenih 11 motorjev, ki pripomorejo h gibanju samega robota. Motorji so
9 V, krtačni, prilagojeni za enosmerno napetost. Vgrajeni so v vse sklepe, ki jih robot
premore. Uporabljeni so lahko za dve opravili: in sicer tako, da sklep obrača v dveh
smereh, ali pa ga samo premakne v eno smer do končne lege; ob sprostitvi navora v
motorju se sklep vrne v prvotno stanje s pomočjo mehanske vzmeti. V spodnji tabeli 3.2 je
seznam vseh motorjev z opisom, ki jih vsebuje robot [4].
Tabela 3.2: Motorji v robotu in sistem detekcije položaja
Namen motorja Način detekcije položaja
Premik leve roke navzgor in navzdol Zvezno
Premik desne roke navzgor in navzdol Zvezno
Premik leve noge naprej in nazaj Končni položaj
Premik desne noge naprej in nazaj Končni položaj
Zasuk levega zapestja Kodirnik (2-bitni)
Zasuk desnega zapestja Kodirnik (2-bitni)
Nagib glave naprej in nazaj Kodirnik (3-bitni)
Zasuk glave levo in desno Kodirnik (3-bitni)
Zasuk trupa levo in desno Zvezno
Premik trupa naprej in nazaj Zvezno
Nagib trupa levo in desno Končni položaj
Motorji so krmiljeni s pomočjo posebnega tiskanega vezja, ki ga bomo v nadaljevanju
poimenovali vezje za kontrolo motorjev (Slika 3.3). To vezje vsebuje krmilna H-mostiščna
vezja, na katera je priključeno napajanje ter vsi motorji, ki so uporabljeni v robotu. Krmilni
signali pa so preko posebnega priključka pripeljani iz glavnega vezja.
Vgrajeni sistem robota Robosapien 36
Slika 3.3: Vezje za kontrolo motorjev
3.3 Napajanje
Napajanje je izvedeno s standardnimi baterijskimi vložki. Vložki so nameščeni v
stopalih robota, saj zaradi njihove precejšne teže pripomorejo k večji stabilnosti. V stopalih
je šest baterijskih vložkov tipa D in štirje baterijski vložki tipa AAA. Iz teh baterij dobimo
6 V in 9 V napajanje. 9 V napajanje je uporabljeno za motorje, zato je tudi kapaciteta tega
napajanja neprimerno višja od 6 V, ki jih uporabimo za napajanje procesorjev in ostale
logike.
3.4 Komunikacija
Robota krmilimo z daljinskim upravljalnikom, ki pošilja informacije s pomočjo IR
valovanja. Informacijo robot sprejema s pomočjo treh IR senzorjev, ki so vgrajeni v glavo
robota. Informacije pridobljene iz senzorja procesira glavni procesor, ki se nahaja na
glavnem tiskanem vezju. Prav tako je robot sposoben oddajati informacijo z IR signali, s
tem lahko komunicira z drugim robotom istega tipa ali kakšno drugo igračo istega podjetja.
Nosilec IR signala se nahaja na 39,2 kHz. Podatki so kodirani z 12 biti pri podatkovni uri
1,2 kHz [5].
Vgrajeni sistem robota Robosapien 37
3.5 Krmiljenje
Celoten robot se krmili s pomočjo glavnega vezja, ki se nahaja na hrbtu. Na to vezje je
priključeno vezje za krmiljenje motorjev, vsi senzorji, zvočnik in dva vezja, ki se nahajata
v glavi robota. Prvo izmed teh vezij vsebuje specifični video procesor, ki je namenjen
procesiranju video signala pridobljenega iz kamere. Na glavno vezje pa pošlje samo
informacije, ki so potrebne za določeno reakcijo robota. Drugo vezje v glavi je namenjeno
samo temu, da poveže IR senzorje, IR oddajne diode in mikrofona, v manjši skupek žic, ki
so dalje povezane na glavno vezje [4].
Glavno vezje vsebuje dva mikrokrmilnika, ki sta namenjena celotnemu krmiljenju
robota. Na prvi mikrokrmilnik je povezana večina senzorjev in vse povezave do vezja za
krmiljenje motorjev. Ta mikrokrmilnik je namenjen obdelavi podatkov senzorjev in za
krmiljenje motorjev. Krmilnika sta povezana preko štirih povezav. Drugi mikrokrmilnik je
namenjen obdelavi podatkov iz IR senzorjev, mikrofonov in nekaterih stikalnih senzorjev:
recimo dotika roke (s tem robot zazna, če drži kaj v roki) in senzorjev za položaj robota
glede na gravitacijsko polje. Ta mikrokrmilnik tudi analizira signale iz mikrofonov in
sintetizira signal za zvočnik [4].
Vezje pridobi napajanje posredno preko vezja za krmiljenje motorjev. Priključki za
signale iz senzorjev so razporejeni po celotnem obrobju tiskanega vezja, saj so tudi
senzorji nameščeni v različnih smereh glede na tiskano vezje. Na sliki 3.4 je prikazana
razporeditev priključkov glavnega vezja.
Vgrajeni sistem robota Robosapien 38
Slika 3.4: Razporeditev priključkov glavnega vezja
Vgrajeni sistem robota Robosapien 39
4 ZGRADBA STROJNE OPREME
Za naš projekt smo glavno vezje originalnega robota nadomestili z novo strojno
opremo. Odstranili smo tudi glavo in jo nadomestili z dlančnikom1. Vsa ostala vezja,
senzorji in motorji so ostali enaki kot v originalni izvedbi robota. Pri izdelavi vezja smo
upoštevali podatke pridobljene iz analize. Pomembno je bilo točno poznavanje
priključevanja senzorjev in povezav na vezje, ki krmili motorje.
Novo vezje je na sliki 4.1 predstavljeno z blokovno shemo. Vsak blok služi opravljanju
različne naloge in skupaj kot celota tvorijo nov vgrajeni sistem. Blok, ki predstavlja
napajalno vezje, je pomemben za prilagajanje napetostnega nivoja baterij na napetostni
nivo komponent. Napajalno vezje napaja oba mikrokrmilnika, oba reset vezja in
komunikacijski modul. Na oba mikrokrmilnika je priključeno napajanje, vezje za reset,
priključki za programiranje in oscilatorsko vezje. Mikrokrmilnika sta med seboj povezana
z zaporedno povezavo. Na prvi mikrokrmilnik so povezani: vezje za tipanje baterije, LED
diode za indikacijo in komunikacijski modul, ki omogoča brezžično komuniciranje z
okolico. Na drugi mikrokrmilnik pa so priključeni vsi senzorji in vse povezave za
krmiljenje motorjev.
1 Opisano v diplomskem delu: Brezžično komunikacijsko razvojno okolje za Robosapien UDK:004.7:004.896 (043.2)
Vgrajeni sistem robota Robosapien 40
Slika 4.1: Blokovna shema novega glavnega vezja
4.1 Napajanje
Odločili smo se, da iz robota odstranimo 6 V napajanje, ki je bilo prej namenjeno
napajanju mikrokrmilnikov in ostalih elektronskih naprav. Tako novo vezje pridobi 9 V
napajanje posredno preko vezja za krmiljenje motorjev. Tukaj pa moramo to napajanje
stabilizirati na 3,3 V, da je primerno za napajanje elektronskih komponent. To smo storili s
pomočjo linearnega napetostnega regulatorja LM117 in mu na vhodu in izhodu dodali
elektrolitska kondenzatorja za glajenje napetosti. Dodana sta tudi keramična kondenzatorja
veliko manjših kapacitet, ki izničita slabe lastnosti elektrolitskih kondenzatorjev. Dioda na
vhodu vezja je potrebna ob morebitnem kratkočasovnem padcu napetosti zaradi sunka
motorjev, da ob tem ne bi izpraznili gladilnih kondenzatorjev. Vezje na sliki 4.2 prikazuje
del vezja, ki je namenjeno regulaciji in stabilizaciji napetosti celotnega sistema [8].
Slika 4.2: Vezje za stabilizacijo napetosti
Vgrajeni sistem robota Robosapien 41
4.2 Mikrokrmilnik
V vezju smo uporabili dva mikrokrmilnika podjetja Atmel z oznako ATMega128L. Dva
sta uporabljena predvsem zaradi prevelikega števila senzorjev in motorjev in njim
pripadajočih signalov za krmiljenje in tipanje. Pri drugem mikrokrmilniku večino
programirljivih priključkov uporabimo za priključitev senzorjev in povezav na vezje za
kontrolo motorjev. Trije priključki so uporabljeni za programiranje mikrokrmilnika, dva pa
za zaporedno komunikacijo s prvim mikrokrmilnikom.
Prvi mikrokrmilnik tako prevzame komunikacijo z okolico s pomočjo vezja za
brezžično komunikacijo, za katerega porabi šest priključkov. Dva priključka porabi za
zaporedno povezavo s komunikacijskim vezjem, ostale štiri pa za kontrolo. Na prvi
mikrokrmilnik so priključeni tudi štirje LED indikatorji (za prikaz stanja sistema) in vezje
za tipanje baterije. Prvi mikrokrmilnik ima, tako kot drugi, tri priključke namenjene
programiranju mikrokrmilnika. Večino ostalih programirljivih priključkov pa je speljanih
na zunanje priključke z možnostjo nadgradnje strojne opreme. Med njimi so štirje z
možnostjo generiranja PWM signala, šest z možnostjo AD pretvorbe in šestnajst z
možnostjo naslavljanja zunanjega pomnilnika. Vsi priključki so lahko uporabljeni kot
navadni digitalni vhodi ali izhodi.
Mikrokrmilnika imata na vse napajalne in referenčne napetosti vezan kondenzator s
kapacitivnostjo 100 nF. Pomembno je, da so ti kondenzatorji čim bližje priključku na
mikrokrmilniku, saj bodo le tako filtrirali šum, ki je povzročen zaradi preklopnih
značilnosti digitalnega vezja. S tem smo izboljšali šumne lastnosti AD pretvorbe in
zaporedne komunikacije.
4.3 Komunikacijski vmesnik
Za brezžično komunikacijo z zunanjim svetom smo uporabili Bluetooth vmesnik
proizvajalca Sena z oznako Promi ESD02 (Slika 4.3). Vmesnik deluje v drugem razredu,
torej ima domet 10m. Preden smo vmesnik postavili v vezje smo ga morali programirati s
pomočjo računalnika. To smo storili s priloženim programom, ki ga je dodal proizvajalec.
Vgrajeni sistem robota Robosapien 42
Vmesnik smo morali programsko nastaviti, da je bil povezljiv z ostalimi Bluetooth
napravami in da je hkrati uspešno komuniciral z mikrokrmilnikom po zaporedni povezavi
[9].
Slika 4.3: Bluetooth komunikacijski vmesnik Promi ESD02
Bluetooth vmesnik je možno postaviti v štiri različne načine delovanja. Prikazuje jih
tabela 4.1. Mi smo ga postavili v način delovanja 3, tako da dela v načinu sužnja (slave) in
se lahko nanj povezujejo vse Bluetooth naprave ne glede na naslov [9].
Tabela 4.1: Načini delovanja Bluetooth vmesnika Promi ESD02
Način (MODE) Opis
0 Neposredno krmiljenje z AT ukazi. V tem načinu lahko spreminjamo konfiguracijo.
1 Deluje v načinu »gospodar« in se poskuša povezati na zadnjo napravo, s katero je bil povezan. Za ostale naprave ni viden. Po strojnem resetu se naslov zadnje naprave zbriše, zato ga moramo ponovno konfigurirati v načinu 0.
2 Deluje v načinu »suženj« in čaka na povezavo od zadnje naprave na katero je bil povezan. Za ostale naprave ni viden. Predhodno ga je treba konfigurirati v načinu 0.
3 Čaka na povezavo od ostalih naprav. Nanj se lahko poveže vsaka naprava.
Simbolno hitrost zaporedne povezave smo nastavili na 115200 Baudov. Tako lahko
Bluetooth vmesnik komunicira z mikrokrmilnikom, saj morata biti simbolni hitrosti
usklajeni. Možne nastavitve zaporedne povezave prikazuje tabela 4.2 [9].
Vgrajeni sistem robota Robosapien 43
Tabela 4.2: Možne nastavitve zaporedne komunikacije Bluetooth vmesnika Promi ESD02
Nastavitev Možne vrednosti
Simbolna hitrost (Baud) 1200; 2400; 4800; 9600; 19200; 38400; 57600; 115200; 230400
Število podatkovnih bitov 8
Pariteta Brez paritete; Liha pariteta; Soda pariteta
Število stop bitov 1; 2
Strojni nadzor poteka Uporabljen; Neuporabljen
Bluetooth vmesnik je v vezje postavljen s pomočjo podnožja. Tako smo ga lahko med
razvojem večkrat vstavili in odstranili. Povezan je preko zaporedne povezave na prvi
mikrokrmilnik. Vmesnik je tako edini komunikacijski tunel z ostalim svetom, iz katerega
dobiva podatke za upravljanje robota in vrača podatke o stanju robota, preko njega pa je
izvedeno tudi programiranje glavnih programov na daljavo.
Slika 4.4: Priklju čitev Bluetooth vmesnika
4.4 Tipanje baterije
V sistem smo želeli vključiti tudi funkcijo, ki bi omogočala preverjanje, koliko
energije je v baterijah. Odločili smo se za enostavno rešitev merjenja napetosti, pri kateri
moramo upoštevat lastnosti baterije, da bi lahko ugotovili koliko energije še vsebuje. Ker
ne moremo priključiti napetosti baterije, ki je višja od napajalne napetosti mikrokrmilnika,
Vgrajeni sistem robota Robosapien 44
neposredno na vhod za AD pretvorbo (s tem bi namreč uničili priklju ček mikrokrmilnika),
smo to storili posredno s pomočjo uporovnega delilnika (Slika 4.5). Pri uporabi
uporovnega delilnika smo morali paziti, da celoten delilnik ne bi imel premajhne upornosti
in bi tako hitreje praznil baterijo. Če pa bi imel uporovni delilnik preveliko upornost, bi,
zaradi prevelike notranje upornosti priključka, pri merjenju napetosti prišlo do napake.
Tako bi se v delilniku pojavila še tretja upornost, ki bi nam popačila linearno karakteristiko
delilnika.
Slika 4.5: Uporovni delilnik za tipanje baterije
4.5 Indikacija z LED
S pomočjo LED diod smo v vezje dodali svetlobno indikacijo, ki brez uporabe raznih
električnih merilnikov omogoča določen vpogled v stanje sistema. Indikacija se je
uporabljala že med samim razvojem sistema. Zanjo smo uporabili štiri LED diode, ki smo
jih preko uporov priključili neposredno na izhode mikrokrmilnika. Upore smo uporabili za
omejevanje toka, da ne bi uničili priklju čka mikrokrmilnika ali same diode.
Vgrajeni sistem robota Robosapien 45
Slika 4.6: Priklju čitev LED indikatorjev na mikrokrmilnik
4.6 Oscilatorsko vezje
Oscilatorsko vezje zagotavlja konstantno uro, ki jo potrebuje mikrokrmilnik za svoje
delovanje. V sistemu sta uporabljeni dve - za vsak mikrokrmilnik po eno vezje.
Oscilatorsko vezje je sestavljeno iz dveh kondenzatorjev in iz kremenčevega kristala, ki
ima pri frekvenci osciliranja induktiven značaj. Te komponente so del povratne vezave
vezja Colpittsovega oscilatorja. Drugi del oscilatorja se nahaja v mikrokrmilniku.
Kremenčev kristal se v oscilatorju uporablja zaradi velike točnosti osciliranja in stabilnosti
frekvence. To je pomembno za dobro delovanje zaporedne komunikacije med
mikrokrmilnikoma. V primeru, da zaporedna komunikacija ni uporabljena, velikokrat
zadostuje oscilator, ki je vgrajen v mikrokrmilnik in ne potrebuje dodatnih zunanjih
komponent. Uporabili smo kremenčev kristal, ki niha s frekvenco 7,3728 MHz. Frekvenca
je primerna za prenos s simbolno hitrostjo 115200 Baudov, tako ne pride do napak zaradi
odstopanja [1].
Vgrajeni sistem robota Robosapien 46
Slika 4.7: Oscilatorsko vezje
4.7 Reset vezje
Reset vezje moramo uporabiti zato, da izključimo možnosti nepredvidenega resetiranja
mikrokrmilnika pri manjših anomalijah v napajanju. Sestavljeno je iz kondenzatorja in
upora, pri čemer je slednji uporabljen kot dvižni upor, ki drži reset priključek na logični 1.
Kondenzator pa je uporabljen za zakasnitev vklopa mikrokrmilnika. Vsak mikrokrmilnik
ima svoje reset vezje; ker ta signal potrebujemo tudi ob programiranju z ISP, smo na vezje
dodatno namestili mostiček, s katerim izberemo, kateri mikrokrmilnik bo ISP lahko
resetiral in ga s tem programiral.
Slika 4.8: Reset vezje
4.8 Tiskano vezje
Pri načrtovanju tiskanega vezja smo morali iz starega glavnega vezja ohraniti veliko
stvari. Novo tiskano vezje je moralo biti prilagojeno tako, da je lahko nadomestilo staro.
Vgrajeni sistem robota Robosapien 47
Paziti smo morali predvsem na obliko (ki je šest kotna) in postavljanje luknjic za
pritrjevanje vezja. Priključki za povezavo na vezje za kontrolo motorjev so morali biti
postavljeni točno; manjša natančnost je bila potrebna pri postavitvi priključkov za
senzorje; morali so biti nameščeni le na pravi strani. Te priključke smo pridobili kar iz
starega vezja in tako na koncih vodnikov ni bilo potrebno zamenjevati drugih, že
obstoječih.
Paziti smo morali tudi na višino komponent, da katera ne bi nasedla na ogrodje robota
ali pa na vezje za krmiljenje motorjev, ki leži nad tiskanim vezjem. Modul za brezžično
komunikacijo in priključke za nadgrajevanje smo morali postaviti na desno stran vezja
(gledano iz zgornje strani), da ne bi prišlo do stika z vezjem za krmiljenje motorjev. Na
desni strani vezja imamo še priključke za programiranje mikrokrmilnikov in mostiček, s
katerim izberemo tisti mikrokrmilnik, ki ga želimo programirati. Levo zgoraj smo postavili
LED indikatorje.
Drug problem je predstavljala velika temperaturna disipacija linearnega regulatorja.
Tiskano vezje smo morali oblikovati tako, da nam je velika površina bakra na tiskanem
vezju služila kot hladilno telo. Integrirano vezje regulatorja smo nato prispajkali na to
bakreno površino. Pri nameščanju modula za brezžično komunikacijo smo uporabili
podnožje, da smo ga tekom razvijanja lahko večkrat odstranili iz vezja.
Zaradi velikega števila povezav smo se odločili za dvostransko tiskano vezje. Na
spodnjo stran smo namestili mikrokrmilnik, nekaj kondenzatorjev in uporov, saj le-ti
zaradi svojih majhnih višin ne motijo montaže na ogrodje robota. Ostale elemente smo
namestili na zgornjo stran. Kondenzatorje na napajalnih priključkih mikrokrmilnika smo
postavili najbližje, kar se je dalo, saj le tako dosegajo svojo namembnost odstranjevanja
šumnih signalov. Blizu smo postavili tudi oscilatorsko vezje, da zaradi dolgih povezav ne
bi prišlo do vpliva parazitnih kapacitivnosti. Za napajalne povezave smo na tiskanem vezju
uporabili širši sloj bakra, za ostale, signalne, pa ožjega. Po končanem samodejnem
povezovanju s pomočjo programskega orodja smo preverili dolžine povezav zaporedne
komunikacije, ta za dobro delovanje ne sme biti predolga.
Vgrajeni sistem robota Robosapien 48
Slika 4.9: Model glavnega tiskanega vezja - zgoraj
Slika 4.10: Model glavnega tiskanega vezja - spodaj
Vgrajeni sistem robota Robosapien 49
5 PROGRAMSKA OPREMA IN PROTOKOL
Poleg strojne smo morali razviti tudi programsko opremo, ki je tekla na obeh
mikrokrmilnikih. Programska oprema je razdeljena na tri module. Prvi modul je
zaganjalnik (ang. boot loader), ki kar med delovanjem preko zaporedne povezave omogoča
posodabljanje ostale programske opreme na mikrokrmilniku. Druga dva modula sta glavna
programa za vsak mikrokrmilnik posebej. V vse module je implementirana komunikacija
po protokolu, ki je bil specifično razvit za ta sistem. Posamezen modul ne vsebuje
celotnega nabora ukazov protokola, ampak samo tiste, ki so potrebni za njegovo delovanje;
druge informacije zavrže.
5.1 Zaganjalnik
Zaganjalnik (ang. boot loader) je program, ki izvaja kodo, še preden mikrokrmilnik
zažene glavni program. Tako omogoča izvajanje operacij na programskem pomnilniku in s
tem posodablja glavni program med samim delovanjem mikrokrmilnika. Pri AVR
mikrokrmilnikih leži zaganjalnik na koncu programskega pomnilnika, omogočimo ga s
postavitvijo zastavic v posebnih registrih. S temi zastavicami izberemo tudi eno izmed
štirih možnih rezerviranih velikostih za zaganjalnik: od 512 besed do 4k besed. Z
zastavicami se nastavi tudi primerna zaščita tega dela pomnilnika. V naši aplikaciji smo
rezervirali 2k besed za zaganjalnik in nastavili zaščito, ki onemogoča programiranje
zgornjega dela programskega pomnilnika (kjer leži zaganjalnik), kadar mikrokrmilnik sam
piše po njem.
Zaganjalni program obeh mikrokrmilnikov je podoben. Razlikuje se samo po naslovu
in po zastavici, ki določa, ali je naprava končna ali ne. Na sliki 5.1 je prikazan diagram
poteka zaganjalnega programa. V inicializaciji postavimo mikrokrmilnik v želeno začetno
stanje, da bo lahko program na njem tekel. V našem primeru ustvarimo nekaj spremenljivk
in vzpostavimo delovanje zaporedne povezave. Zelo pomembno je tudi, da zaustavimo vse
prekinitve. V primeru, da dostopimo v zaganjalni program iz glavnega programa, lahko
prekinitve še vedno delujejo in onemogočijo pravilno programiranje programskega
Vgrajeni sistem robota Robosapien 50
pomnilnika. Zastavica, ki omogoča vstop v zanko za sprejemanje ukazov, je potrebna, saj
ob normalnem delovanju ne želimo vstopiti v del programa, ki čaka na ukaze in jih
izvršuje, ampak želimo, da se neposredno zažene glavni program. Ta zastavica je vezana
na vhodni priključek mikrokrmilnika, ker imamo s tem možnost programskega in fizičnega
dostopa do spremembe stanja zastavice. Programski dostop potrebujemo, kadar želimo v
zaganjalni program vstopiti iz glavnega programa, ga na novo programirati in se vrniti v
glavni program. V primeru, da je v glavnem programu večja napaka, ali da sploh ne
obstaja, nam je programski vstop v zaganjalni program onemogočen. To lahko rešimo
tako, da sklenemo vhodni priključek proti masi. V osnovi zaganjalni program samo čaka
na pakete, katerih oblika je določena v protokolu, izlušči vrsto ukaza in izvede primerno
operacijo. Program je namenjen predvsem programiranju in branju Flash ter EEPROM
pomnilnika, pri čemer pa lahko Flash pomnilnik programiramo samo po blokih (ang.
page), EEPROM pa po bajtih.
START
Inicializacija
Sprejel veljaven paket, ki je moj?
Zastavica je 1?
DA
Izvedi ukaz
Skok v glavni program
KONEC
DA
NE
NE
Ugotovi ukazno skupino in ukaz
Pošlji odgovor pošiljatelju
Slika 5.1: Diagram poteka zaganjalnega programa
Vgrajeni sistem robota Robosapien 51
5.2 Glavni program prvega mikrokrmilnika
Glavni program se izvaja na mikrokrmilniku takrat, kadar je robot v normalnem
delovanju. Ker imamo dva mikrokrmilnika, smo napisali tudi dva glavna programa.
Program prvega nima velike vloge pri regulaciji robota, njegovo najpomembnejše opravilo
je upravljanje z Bluetooth modulom, ki bi ga lahko načeloma tudi nastavljali. Tega nismo
vgradili v glavni program, saj ob enkratni nastavitvi modula le-te kasneje ni potrebno več
spreminjati. Naloga programa je, v prvi vrsti, sprejemati pakete po eni in jih oddajati
naprej po drugi zaporedni povezavi. Nekatere ukaze lahko izvede tudi sam. Program tudi
preverja status baterije in upravlja s svetlobnimi indikatorji. Diagram poteka prvega
glavnega programa je prikazan na sliki 5.2. Poleg ustvarjanja spremenljivk pri
inicializaciji, vzpostavimo tudi delovanje obeh zaporednih povezav, nastavimo parametre
AD pretvornika in omogočimo delovanje prekinitev. Tako AD pretvornik prosto teče ob
glavnem programu in ga ob pridobitvi novega rezultata prekine. Pri tem posebna
prekinitvena rutina shrani rezultat v pomnilnik in se nato vrne v glavni program. Glavni
program v zanki čaka na pakete, ki so namenjeni tej napravi in izvaja njihove ukaze.
Sprejme pa lahko tudi poseben ukaz, ki je namenjen skoku v zaganjalni program. Ta ukaz
onemogoči vse izhode, postavi zastavico za vstop v zaganjalni program in s skokom
zaključi glavni program.
Vgrajeni sistem robota Robosapien 52
START
Inicializacija
Sprejel veljaven paket, ki je moj?
DA
Izvedi ukazSkok v zaganjalni program »boot«.
KONEC
DA
NE
NE
Ugotovi ukazno skupino in ukaz
Pošlji odgovor pošiljatelju
Sprejel ukaz za skok v »boot« ?
Izvedi AD pretvorbo in shrani
rezultat v pomnilnik.
Prekinitev AD pretvornika
Slika 5.2: Diagram poteka glavnega programa prvega mikrokrmilnika
5.3 Glavni program drugega mikrokrmilnika
Glavni program drugega mikrokrmilnika vsebuje vso regulacijo robota za premikanje
okončin. Ta program neprestano pridobiva podatke iz senzorjev in ukazov ter s pomočjo
njih regulira premike motorjev. Upoštevati mora vse končne pozicije notranjih senzorjev in
stanja zunanjih, da pravočasno reagira na ustavitev motorjev in prepreči poškodbe
mehanskih delov robota. Na sliki 5.3 je prikazan diagram poteka glavnega programa
drugega mikrokrmilnika. Ta program poleg glavnega izvaja še dve prekinitvi: prva je AD
pretvorba. Ta se vrši na več vhodih in le ena pretvorba se izvede na eno prekinitev. Tako
prekinitvena rutina z vsakim novim izvajanjem spremeni vhod, nad katerim bo vršila
pretvorbo v naslednjem ciklu in shrani rezultate prejšnje pretvorbe v pomnilnik. Rezultati
so v pomnilniku predstavljeni v obliki vektorja in prikazujejo položaj zveznih senzorjev
Vgrajeni sistem robota Robosapien 53
izvedenih s potenciometrom. Druga prekinitev je sprožena s pomočjo časovnika.
Prekinitvena rutina se izvede vedno, ko poteče časovnik. S tem dosežemo gladek potek
regulacije, med tem ko lahko mikrokrmilnik v glavnem programu že čaka na nove ukaze,
ali upravlja kakšno drugo opravilo. Z vsakim novim izvajanjem prekinitvene rutine se
primerja želena stanja v pomnilniku z dejanskimi stanji, ki jih mikrokrmilnik odčita iz
senzorjev. Če se stanja ujemajo, prekinitvena rutina ugasne motor, ali ne stori nič, če motor
ni v teku. Če se ne ujemajo, pa zavrti motor proti želenemu stanju. Seveda se stanja nikoli
ne morejo ujemati do zadnjega bita, zato mora rutina upoštevati ujemanje stanj znotraj
toleranc. Ta prekinitev upravlja tudi z avtomatom za hojo, kar bomo opisali v nadaljevanju.
Diagram poteka glavnega programa drugega mikrokrmilnika je podoben diagramu
poteka prvega mikrokrmilnika, ker imata enako nalogo sprejemanja ukazov in izvajanja le
teh. Dejansko se programa zelo razlikujeta, saj lahko drugi sprejme neprimerno več ukazov
kot prvi. Že ob inicializaciji glavni program nastavi začetna stanja vseh položajev, ki so
takšna, da se robot zravna. Glavni program drugega mikrokrmilnika sprejema ukaze, ki
posodabljajo želene vrednosti, ali zahtevajo stanje senzorjev. Seveda lahko sprejme tudi
poseben ukaz za skok v zaganjalni program in s tem zaključitev glavnega programa.
Vgrajeni sistem robota Robosapien 54
START
Inicializacija
Sprejel veljaven paket, ki je moj?
DA
Izvedi ukaz
Skok v zaganjalni program »boot«.
KONEC
DA
NE
NE
Ugotovi ukazno skupino in ukaz
Pošlji odgovor pošiljatelju
Sprejel ukaz za skok v »boot« ?
Izvedi AD pretvorbo in shrani
rezultat v pomnilnik.
Prekinitev AD pretvornika
Prekinitev časovnika
Izberi naslednji vhod za AD pretvorbo
Se želene vrednosti položajev ujemajo z
dejanskimi?
Izvedi regulacijo
DA
NE
Slika 5.3: Diagram poteka glavnega programa drugega mikrokrmilnika
Avtomat za hojo je bil potreben predvsem zaradi kompleksnosti reguliranja mehanike,
ki robotu omogoča hojo. Ta mehanika je izvedena s pomočjo motorjev in vzmeti. Motorji
ob zasuku zavrtijo nogo robota v skrajen položaj in jo v tem položaju držijo. Seveda je v
tem primeru motor v kratkem stiku. Po izključitvi motorja mehanska vzmet povleče
okončino nazaj v prvoten položaj. S takšnim načinom upravljanja nog je podjetje verjetno
Vgrajeni sistem robota Robosapien 55
privarčevalo z minimizacijo sklopov, hkrati pa tudi zakompliciralo regulacijo. Da motorji
ne bi bili predolgo časa v kratkem stiku in da bi hoja poteka bolj tekoče samo spreminjanje
položajev okončin ni dovolj, vnesti moramo tudi časovno odvisnost. Na sliki 5.4 imamo
prikazan diagram poteka avtomata za hojo. Robot lahko hodi naprej, nazaj, lahko se zavrti
v levo ali desno. V katero smer se bo premikal, pa je odvisno samo od drugačne nastavitve
časovnikov in premikov nog.
START
KONEC
DA
NE
Nastavi časovnike
Nagni robota desno (levo)
Je časovnik potekel?
Premakni desno (levo) nogo nazaj in levo (desno)
nogo naprej
DA
NEJe časovnik potekel?
Nagni robota levo (desno)
DA
NEJe časovnik potekel?
Premakni levo (desno) nogo nazaj in desno
(levo) nogo naprej
DA
NEJe časovnik potekel?
Odštej korak
NE
Je število korakov 0?
DA
Slika 5.4: Avtomat za hojo robota
Vgrajeni sistem robota Robosapien 56
5.4 Protokol
Za komunikacijo med mikrokrmilnikoma in drugimi napravami, ki so povezane s
pomočjo komunikacijskega vmesnika, smo potrebovali protokol, ki vsebuje pravila o
prenašanju različnih ukazov in podatkov med posameznimi napravami. Protokol je zgrajen
na zlogovni osnovi in ga je možno uporabljati v sinhronih in asinhronih zaporednih
povezavah, brezžičnih povezavah, mogoče ga je tunelirati2 tudi skozi IP omrežja. Protokol
komunicira s pomočjo okvirjev, ki jih pošiljamo od naprave do naprave. Začetek okvirja je
označen z znakom »<«, konec pa z »>«. Med tema dvema znakoma se nahajajo uporabni
podatki. Poljuben okvir je prikazan na sliki 5.5, kjer uporabne podatke predstavlja »x«.
Slika 5.5: Poljuben okvir protokola
Na začetku okvirja (Tabela 5.1) vedno pošiljamo glavo, ki je dolga šest zlogov. Glava
vsebuje informacije, ki so potrebne za uspešno prenašanje okvirjev. Prva dva zloga povesta
dolžino celotnega okvirja: in sicer vse uporabne zloge brez začetnega in končnega znaka.
Tako je po protokolu maksimalna velikost okvirja 64k zlogov, čeprav realna velikost
paketa nikoli ne preseže 300 zlogov - predvsem zaradi omejitve pomnilnika v
mikrokrmilnikih, pa tudi potrebe po večjih dolžinah ni. Naslednji zlog se uporabi za
naslavljanje. Ta pove, kateri napravi je okvir namenjen. Število naprav je omejeno na 255.
Takoj za naslovnim zlogom je zlog, ki pove, katera naprava je okvir poslala, da lahko
dobitnik potrdi uspešno prejetje okvirja. Zadnja dva zloga sta uporabljena za definicijo
ukaza. Prvi definira ukazno skupino, pod katero spada ukaz, drugi pa sam ukaz. Za takšno
interpretacijo ukazov smo se odločili predvsem zaradi večje preglednosti, kajti vsaka
naprava ne vsebuje podpore za celoten protokol, ampak samo za določene ukazne skupine.
Tako vsaka ukazna skupina vsebuje ukaze, ki opravljajo podobne naloge. Za glavo
pošljemo druge podatke, katerih dolžina je odvisna predvsem od izbranega ukaza.
2 Tuneliranje protokola pomeni, da en komunikacijski protokol v svojih podatkih prenaša drugo vrsto protokola.
Vgrajeni sistem robota Robosapien 57
Tabela 5.1: Sestava glave podatkovnega okvirja
Ime: Dolžina Naslov Izvor Ukazna skupina Ukaz Podatki
Velikost v zlogih: 2 1 1 1 1 N
V protokolu obstaja šest ukaznih skupin, ki vsebujejo različno število ukazov. Vsak
izmed njih je prepoznan z lihim številom, sledi odgovor s sodim številom. Tabela 5.2
prikazuje ukazne skupine - in sicer njihovo številko v sistemu, ime skupine, število
vsebovanih ukazov in opis skupine. Zadnja skupina »EXTEND« ni uporabljena v sistemu
in je namenjena nadaljnjemu razvoju protokola.
Tabela 5.2: Ukazne skupine protokola
Št. ukazne skupine Ime Št. ukazov Opis
1 IDENTIFY 0 Testiranje in identifikacija
2 FLASH 12 Programiranje mikrokrmilnikov
3 MOTOR 22 Kontrola elektromotorjev
4 SENSOR 4 Preverjanje senzorjev
5 CONTROL 2 Preverjanje stanja baterije
6 MEDIA 8 Upravljanje z večpredstavnostjo na dlančniku
7 EXTEND 0 Rezervirano za nadgrajevanje sistema
V tabeli 5.3 so razvrščeni vsi ukazi, ki so trenutno implementirani v sistem. Pri vsakem
ukazu je prikazano, v katero skupino ga uvrščamo, njegova številka, ki se uporablja v
protokolu, ime, dolžina podatkov predstavljena v zlogih (bajtih - B) ter kratek opis ukaza.
Dolžina podatkov je pri večini ukazov statična. Pri nekaterih pa se spreminja glede na
sestavo. Tako pri pisanju in branju EEPROM pomnilnika z ukazom določimo, koliko
naslovov bomo zapisali ali prebrali naenkrat. Seveda si morajo pomnilniška mesta slediti,
saj je podan samo začetni naslov in število mest. Pri pošiljanju ukazov iz Skupine
»MEDIA«3, pa je dolžina ukaza odvisna od števila znakov, ki so potrebni za opis sistemske
poti datoteke.
3Podrobneje opisano v diplomskem delu: Brezžično komunikacijsko razvojno okolje za Robosapien UDK:004.7:004.896 (043.2)
Vgrajeni sistem robota Robosapien 58
Tabela 5.3: Vsi ukazi v sistemu
Ime skupine Št. ukaza Ime ukaza Podatki(B) Opis
FLASH 1 FLASH_W 260 Zapis v programski pomnilnik
FLASH 2 FLASH_W_ACK 1 Odgovor s statusom
FLASH 3 FLASH_R 4 Branje programskega pomnilnika
FLASH 4 FLASH_R_ACK 256 Odgovor s podatki
FLASH 5 EEPROM_W 4+n Pisanje v EEPROM
FLASH 6 EEPROM_W_ACK 1 Odgovor s statusom
FLASH 7 EEPROM_R 4 Branje EEPROM
FLASH 8 EEPROM_R_ACK n Odgovor s podatki
FLASH 9 JUMP_APP 0 Skok v glavni program iz »boot«
FLASH 10 JUMP_APP_ACK 0 Odgovor za potrditev sprejema
FLASH 11 JUMP_BOOT 0 Skok iz glavnega prog. v »boot«
FLASH 12 JUMP_BOOT_ACK 0 Odgovor za potrditev sprejema
MOTOR 1 STATE 14 Postavitev vseh stanj motorjev
MOTOR 2 STATE_ACK 0 Odgovor za potrditev sprejema
MOTOR 3 WALK 7 Podatki za upravljanje z hojo
MOTOR 4 WALK_ACK 0 Odgovor za potrditev sprejema
MOTOR 5 SHOULDER 2 Postavitev položaja ramen
MOTOR 6 SHOULDER_ACK 0 Odgovor za potrditev sprejema
MOTOR 7 WRIST_ROTATE 2 Postavitev položaja zapestij
MOTOR 8 WRIST_ROTATE_ACK 0 Odgovor za potrditev sprejema
MOTOR 9 WAIST 2 Postavitev položaja zasuka v pasu
MOTOR 10 WAIST_ACK 0 Odgovor za potrditev sprejema
MOTOR 11 WAIST_TILT 2 Nagib v pasu za določen čas
MOTOR 12 WAIST_TILT_ACK 0 Odgovor za potrditev sprejema
MOTOR 13 HEAD_ROTATE 1 Položaj zasuka glave
MOTOR 14 HEAD_ROTATE_ACK 0 Odgovor za potrditev sprejema
MOTOR 15 HEAD_TILT 2 Nagib glave za določen čas
MOTOR 16 HEAD_TILT_ACK 0 Odgovor za potrditev sprejema
MOTOR 17 FOOT_TILT 4 Premik nog za določen čas
MOTOR 18 FOOT_TILT_ACK 0 Odgovor za potrditev sprejema
MOTOR 19 MOTOR_STOP 0 Ustavitev vseh motorjev
MOTOR 20 MOTOR_STOP_ACK 0 Odgovor za potrditev sprejema
MOTOR 21 MOTOR_START 0 Ponovni zagon motorjev
MOTOR 22 MOTOR_START_ACK 0 Odgovor za potrditev sprejema
SENSOR 1 STATE 0 Stanje notranjih senzorjev
Vgrajeni sistem robota Robosapien 59
Ime skupine Št. ukaza Ime ukaza Podatki(B) Opis
SENSOR 2 STATE_ACK 11 Odgovor s podatki
SENSOR 3 TOUCH 0 Stanje zunanjih senzorjev
SENSOR 4 TOUCH_ACK 3 Odgovor s podatki
CONTROL 1 BATERY_STATUS 0 Stanje baterije
CONTROL 2 BATERY_STATUS_ACK 1 Odgovor s podatki
MEDIA 1 PICTURE n Postavitev slike
MEDIA 2 PICTURE_ACK 0 Odgovor za potrditev sprejema
MEDIA 3 SOUND n Vklop zvoka
MEDIA 4 SOUND_ACK 0 Odgovor za potrditev sprejema
MEDIA 5 SCRIPT n Zagon skriptne datoteke
MEDIA 6 SCRIPT_ACK 0 Odgovor za potrditev sprejema
MEDIA 7 OFF n Ustavitev večpredstavnosti
MEDIA 8 OFF_ACK 0 Odgovor za potrditev sprejema
Vgrajeni sistem robota Robosapien 60
6 REZULTATI IN MERITVE
6.1 Tiskana vezja
Glavno tiskano vezje smo načrtovali v programskem orodju Design Explorer 99 SE, s
pomočjo katerega lahko izdelamo načrt vezja in načrt samega tiskanega vezja. Orodje
omogoča tudi izvoz datotek, ki so potrebne za izdelavo tiskanega vezja. Po dokončanem
načrtovanju nam je tiskanino naredilo podjetje, ki se ukvarja z izdelavo tiskanih vezij. Na
novo izdelano vezje smo sami prispajkali potrebne elemente in začeli z razvojem
programske opreme. Na sliki 6.1 je prikazano dokončano tiskano vezje, na katerega so
priključeni senzorji.
Slika 6.1: Glavno tiskano vezje - zgoraj
Slika 6.2 prikazuje končno namestitev glavnega vezja s priključenimi senzorji ter nad
njim vezje za kontrolo motorjev, na katerega so priključeni motorji in napajanje.
Vgrajeni sistem robota Robosapien 61
Slika 6.2: Končna priklju čitev vezja za kontrolo motorjev na glavno vezje
Robot je imel že vgrajen zvočnik, ki smo ga hoteli uporabiti za predvajanje zvokov in
glasbe iz dlančnika. V ta namen smo izdelali ojačevalnik, ki ojači tonski signal iz
dlančnika. Ojačevalnik smo namestili v bližino zvočnika na hrbtnem delu ohišja robota,
priključni kabel pa speljali skozi stik med glavo in trupom. Tiskano vezje prikazuje slika
6.3.
Slika 6.3: Ojačevalnik tonskega signala iz dlančnika
6.2 Senzorji
Detekcijo analognih senzorjev, kateri so izvedeni s pomočjo 10 kΩ potenciometrov,
smo izvedli z AD pretvorniki. Te pretvornike vsebujejo že kar mikrokrmilniki sami. En
mikrokrmilnik ATMega128 lahko upravlja z do osem AD vhodi, ki imajo 10-bitno
ločljivost. Mi smo uporabili samo 8-bitno ločljivost, kar je dovolj za naše razmere. Na
drugem mikrokrmilniku smo uporabili štiri AD vhode za merjenje položaja rok in trupa,
Vgrajeni sistem robota Robosapien 62
kjer so uporabljeni potenciometri kot senzorji. AD pretvornik dejansko tipa napetost
delilnika potenciometra. Naslednji grafi prikazujejo prenosne karakteristike med
upornostjo delilnika in bitno vrednostjo, ki jo poda AD pretvornik. Vse upornosti delilnika
smo izračunali posredno iz meritev napetosti, saj upornosti ne moremo meriti neposredno v
vezju pod napetostjo.
Prenosna karakteristika leve rame
0
50
100
150
200
250
0 2000 4000 6000 8000 10000
Upornost delilnika (ohm)
Bin
arna
vre
dnos
t
Slika 6.4: Prenosna karakteristika leve rame
Vgrajeni sistem robota Robosapien 63
Prenosna karakteristika desne rame
0
50
100
150
200
250
0 2000 4000 6000 8000 10000
Upornost delilnika (ohm)
Bin
arn
a vr
edn
ost
Slika 6.5: Prenosna karakteristika desne rame
Prenosna karakteristika - Pas (Naprej/Nazaj)
0
50
100
150
200
250
0 2000 4000 6000 8000 10000
Upornost delilnika v (ohm)
Bin
arna
vre
dnos
t
Slika 6.6: Prenosna karakteristika pasu ( naprej / nazaj )
Vgrajeni sistem robota Robosapien 64
Prenosna karakteristika - Pas (Levo/Desno)
0
50
100
150
200
250
0 2000 4000 6000 8000 10000
Upornost delilnika v (ohm)
Bin
arna
vre
dnos
t
Slika 6.7: Prenosna karakteristika pasu ( levo / desno )
Kot vidimo sta dve karakteristiki obrnjeni. To smo storili programsko, da je krmiljenje
premikov s pomočjo teh senzorjev bolj logično. Obrnjeni sta karakteristiki potenciometra
desne roke in premika pasu (naprej/nazaj). Karakteristiko roke smo obrnili zato, da enaka
binarna vrednost zavzema enak položaj leve in desne roke, karakteristiko pasu pa zato, da
se s premikanjem naprej (predklon) povečuje bitna vrednost. Opazimo lahko, da so tako
karakteristike linearne in da bi ne-obrnjeni karakteristiki ob podaljšanju potekali skozi
koordinatno izhodišče.
Pri prvem mikrokrmilniku smo AD pretvornik uporabili za merjenje baterije. Prenosno
karakteristiko prikazuje slika 6.8.
Vgrajeni sistem robota Robosapien 65
Prenosna karakteristika delilnika za merjenje bater ije
0
50
100
150
200
250
300
0 2 4 6 8 10 12 14Napetost [V]
Bin
arna
vre
dno
st
Slika 6.8: Prenosna karakteristika pri merjenju baterije
Karakteristika ne poteka skozi koordinatno izhodišče, kar pomeni, da imamo pri tej
AD pretvorbi prisoten ničelni pogrešek. Ta je verjetno nastal zaradi različnega napajanja
uporovnega delilnika in AD pretvornika. Uporovni delilnik se namreč napaja neposredno
iz baterije, medtem ko se mikrokrmilnik, in s tem AD pretvornik, napajata posredno preko
linearnega napetostnega regulatorja. Ta pogrešek ne predstavlja težav, saj ga je mogoče
programsko (odstraniti) kompenzirati. S takšnim načinom merjenja energije v baterijah
lahko zaradi nelinearnosti padanja napetosti ob praznjenju ugotovimo, ali so baterije čisto
polne, čisto prazne ali pa nekje vmes.
Kodirni senzorji imajo položaje kodirane s pomočjo Greyeve kode. Mi smo jih (za
lažjo uporabo v programu in protokolu) preslikali v binarno kodo. Način preslikanja
prikazuje tabela 6.1.
Vgrajeni sistem robota Robosapien 66
Tabela 6.1: Preslikava stanj kodirnikov
Senzor Originalna stanja Preslikana stanja
Zasuk levega zapestja 11 01 00 10 00 01 10 11
Zasuk desnega zapestja 11 01 00 10 00 01 10 11
Glava (gor – dol) 010 000 001 011 001 010 011 100
Zasuk glave (levo - desno) 111 110 100 101 001 000 010 011 000 001 010 011 100 101 110 111
6.3 Gibanje robota
Robot se giblje s pomočjo motorjev, ki so nameščeni po celem telesu. Vsi motorji se
lahko gibljejo v obe smeri ter s tem premikajo okončine in telo Levo/Desno ali
Naprej/Nazaj. Robot v določenem sklepu različno hitro menjuje položaj zaradi različnih
mehanskih lastnosti sklepa. Pri določenih sklepih pa so dodane celo mehanske vzmeti, ki
pomagajo elektromotorju premikati okončino ali telo. Mehanika z vzmetjo je narejena na
dva različna načina. Pri premikih nog in nagibanju v pasu levo ali desno, vzmet (ob
prenehanju delovanja motorja) vrne robota v osnovni položaj. Pri vrtenju v pasu levo ali
desno in pri gibanju telesa naprej ali nazaj, pa vzmet pri vrnitvi v osnovni položaj pomaga
motorjem. Tabela 6.2 prikazuje hitrost premika sklepov od enega končnega položaja do
drugega. Pri sklepih, kjer okončino vrača vzmet, časi predstavljajo premik od osnovnega
položaja do končnega.
Tabela 6.2: Časi premikanja sklepov
Motor Čas premika (s) Od - Do
Desna rama 2,26 končni - končni
Leva rama 2,28 končni - končni
Desno zapestje 0,63 končni - končni
Levo zapestje 0,62 končni - končni
Glava (naprej nazaj) 1,00 končni - končni
Glava (levo desno) 2,64 končni - končni
Pas (levo desno) 1,08 končni - končni
Pas (naprej nazaj) 4,48 končni - končni
Vgrajeni sistem robota Robosapien 67
Motor Čas premika (s) Od - Do
Pas nagib levo 0,56 osnovni - končni
Pas nagib desno 0,50 osnovni - končni
Leva noga naprej 1,28 osnovni - končni
Desna noga naprej 0,88 osnovni - končni
Leva noga nazaj 1,10 osnovni - končni
Desna noga nazaj 1,16 osnovni - končni
Iz tabele je razvidno, da se časi pomikov okončin, katere vrača vzmet, razlikujejo. To
se opazi pri hoji robota: kadar hodi dlje časa naravnost, rahlo zavija v eno smer. Opazi se
tudi pri zavijanju robota v levo ali desno. V eno stran se zavrti hitreje in z manj koraki.
Za vse motorje smo v programu določili končne vrednosti, pri katerih program sam
izklopi motor, zato da ne bi mehansko poškodovali sklopov, ali pa da motor ne bi bil
predolgo v kratkem stiku. Končne vrednosti so določene z bitno vrednostjo AD
pretvornika pri potenciometrih, s stanjem pri kodirnikih in z maksimalno nastavitvijo
časovnika pri motorjih, ki jih vrača vzmet. Končne vrednosti vseh sklepov prikazuje tabela
6.3.
Tabela 6.3: Končne vrednosti stanj in časovnikov
Motor Nastavljena območja vrednosti v programu
Leva roka 30 – 225
Desna roka 30 – 225
Leva noga (naprej/nazaj) -10000 – 10000
Desna noga (naprej/nazaj) -10000 – 10000
Levo zapestje 0 – 3
Desno zapestje 0 – 3
Glava (naprej/nazaj) 1 – 4
Glava (levo/desno) 0 – 7
Pas (levo/desno) 50 – 205
Pas (naprej/nazaj) 25 – 215
Nagib v pasu (levo/desno) -10000 – 10000
Vgrajeni sistem robota Robosapien 68
Problem okončin, ki jih vrača vzmet, je tudi, da ob doseženem končnem položaju
motor preide v kratek stik in s tem obremeni napajanje. Naslednji posnetki osciloskopa
prikazujejo obnašanje napetosti na normalnem vklopu motorja in pri vklopu motorja z
vzmetjo.
Slika 6.9: Osciloskopski posnetek vklopa motorja leve rame
Slika 6.10: Osciloskopski posnetek vklopa motorja leve noge (naprej)
Na sliki 6.10 imamo prikazan vklop motorja, ki ima dodano vzmet za vračanje v
osnovni položaj. Ob vklopu začne napetost rahlo padati, saj zaradi vzmeti motor vse bolj
obremenjuje napajanje. Napetost pada do kratkega stika, kjer skozi navitja motorja teče tok
okoli 1,8A. Kratki stik tako obremeni napajanje, da napetost baterij pade za približno 2V.
Vidi se tudi, da takrat krtačke motorja ne povzročajo šuma, kot pri normalnem delovanju.
Ko poteče časovnik v programu, vezje za kontrolo motorjev izklopi motor. Pri tem dobimo
negativno inducirano napetost, ki jo ustvari vzmet, s tem ko motor vleče v obratni smeri
nazaj v osnovni položaj.
Vgrajeni sistem robota Robosapien 69
Pri regulaciji sklepov, kjer so uporabljeni potenciometri, je prišlo do težav zaradi
prevelike ločljivosti zajemanja položaja. Pojavilo se je nihanje okoli želenega položaja
zaradi neprestane regulacije. Sklep se zaradi mehanske vztrajnosti ne ustavi v želenem
položaju, ampak se premakne malo naprej, kar povzroči, da mikrokrmilnik ponovno
korigira položaj. Primer večkratnega popravljanja položaja prikazuje slika 6.11.
Slika 6.11: Osciloskopski posnetek večkratnega vklopa motorja (oscilacije)
Oscilacijo smo delno rešili programsko, z empirično določitvijo toleranc pri doseganju
želene vrednosti. Še vedno se predvsem pri bolj skrajnih položajih ob ustavitvi motorjev
pojavi kakšen sunek, ki ponovno korigira položaj. V tabeli 6.4 so prikazane programsko
nastavljene tolerance pri določenih motorjih.
Tabela 6.4: Tolerance pri regulaciji motorjev z zveznim zajemanjem položaja
Elektromotor Nastavljena toleranca v programu
Leva roka 6
Desna roka 6
Pas (levo/desno) 8
Pas (naprej/nazaj) 4
Vgrajeni sistem robota Robosapien 70
7 SKLEP
V diplomski nalogi smo najprej obdelali različna področja, ki obsegajo načrtovanje in
gradnjo vgrajenih sistemov. V ta področja spadajo vsi gradniki računalnikov, kot so
procesorji, pomnilniki in vhodno-izhodne naprave. Opisali smo najpogosteje uporabljen
procesor v vgrajenih sistemih ter pogosteje uporabljene mikrokrmilnike, ki so že sami zase
računalnik v enem samem integriranem vezju. Predstavili smo nekaj računalniških žičnih
in brezžičnih komunikacij. Nekatere izmed njih smo kasneje uporabili v sistemu. Obdelali
smo nekatere vrste senzorjev in motorjev, ki jih ima vgrajene naš robotski sistem.
Cilj analize obstoječega sistema je bil predvsem pregled začetnega stanja, ugotavljanje
osnovnih električnih in mehanskih lastnosti ter podrobnejša obdelava uporabljenih
senzorjev in vhodno izhodnih signalov glavnega vezja. Pri senzorjih smo si podrobno
ogledali, na kakšen način zajemajo informacijo o različnih položajih in kje se stanja
menjujejo. Ugotovili smo tudi način napajanja robota ter približno delovanje obstoječe
komunikacije s pomočjo IR tehnologije.
Po analizi obstoječega sistema smo začeli z izgradnjo lastnega novega glavnega vezja.
Odstranili smo tudi glavo in jo nadomestili z držalom za dlančnik. Vsa druga vezja,
senzorje in motorje smo pustili nedotaknjene. Pri izdelavi novega glavnega vezja smo
upoštevali izsledke iz analize, pri katerih se je bilo potrebno držati tako mehanskih kot
električnih pogojev. Pri mehanskih smo pazili na obliko, višino ter lokacijo raznih
priključkov na vezju. Pri električnih pa smo pazili na različno napajalno napetost robota in
našega sistema ter na lastnosti senzorjev. Pri izgradnji smo uporabili dva mikrokrmilnika
in Bluetooth vmesnik, ki jih povezuje zaporedna povezava. Mikrokrmilnika lahko
komunicirata ali med seboj ali z drugo zunanjo Bluetooth napravo s pomočjo Bluetooth
vmesnika. Vse to se dogaja s pomočjo protokola, ki je posebej zgrajen za komunikacijo po
zaporednih povezavah in omogoča kontrolo in prenose podatkov med posameznimi
napravami. Možno ga je tudi tunelirati skozi različna omrežja: kot so Bluetooth, WLAN in
LAN. Programska oprema mikrokrmilnikov omogoča sprejemanje podatkov in kontrolnih
ukazov po zaporedni povezavi in zajemanje stanja senzorjev, ki so potrebni, da lahko
izvede nadaljnjo kontrolo in regulacijo v robotu. Odpravlja pa tudi določene
Vgrajeni sistem robota Robosapien 71
pomanjkljivosti strojne opreme, določene oscilacije okončin in ščiti mehaniko z mejnimi
vrednostmi. Tudi če v kontrolnem paketu dobi podatek o stanju izven območja, ga le-ta
nastavi na stanje znotraj območja.
Nekaj težav je bilo prisotnih zaradi same mehanske zgradbe robota. Ugotovili smo, da
so pri nekaterih sklepih dodatno uporabljene mehanske vzmeti, kar oteži krmiljenje robota.
Vzmeti v določenem primeru povzročajo oscilacijo okoli želenega stanja zaradi tega, ker s
silo delujejo na sklep. Pri nekaterih sklepih je mehanika poenostavljena tako, da motor v
končni poziciji sklepa preide v kratek stik. Pri regulaciji teh sklepov smo s pomočjo
časovno reguliranega vklopa in izklopa, ob pravilno nastavljenih časovnikih, izključili to
možnost. Mehanske lastnosti zaradi cenene konstrukcije niso popolnoma simetrične, tako
na primer ena noga potrebuje več časa do končnega stanja kot druga. To je povzročalo
težave predvsem pri hoji robota, zaradi česar je ob hoji naravnost rahlo zavijal. Problem bi
bil domnevno rešljiv s programskim popravljanjem s pomočjo različno nastavljenih
časovnikov, kjer bi morali čas empirično (računsko) določiti.
Nadaljnji razvoj strojne opreme omogočajo dodatni neuporabljeni priključki na
glavnem vezju. Ti priključki so izpeljani iz prvega mikrokrmilnika, ki ima še veliko
prostora za bolj razširjeno programsko opremo. Enostavnejši nadaljnji razvoj omogoča
tudi programiranje mikrokrmilnika preko Bluetooth povezave. Protokol ima dodatno
programsko skupino, ki trenutno ne vsebuje nobenega ukaza in je namenjena dodatnemu
razvoju. Prva stvar, ki bi jo pri robotu lahko posodobili so senzorji za zaznavanje okolice.
Trenutno so uporabljeni samo senzorji na dotik, kar omogoča ustavitev motorjev ob trku z
oviro. Z boljšimi senzorji za merjenje daljine, pa bi se lahko oviri izognili, preden bi se
robot zaletel vanjo.
Vgrajeni sistem robota Robosapien 72
8 LITERATURA
[1] M. Solar, Meritve v elektroniki, 1. izdaja, Založništvo FERI, Maribor, 2001
[2] Embedded system, History,
http://en.wikipedia.org/wiki/Embedded_system#History, 2007
[3] Embedded system, Definition,
http://www.webopedia.com/TERM/e/embedded_system.html, 2007
[4] Robosapien V2, Hacks ,
http://evosapien.com/robosapien-hack/nocturnal/RoboSapienV2/, 2007
[5] Robosapien V2, IR codes, http://www.aibohack.com/robosap/ir_codes_v2.htm,
2007
[6] H-Bridge, Theory of operation, http://www.dprg.org/tutorials/1998-04a/, 2007
[7] Atmel Corporation, Atmel AVR 8-bit Microcontroller - ATmega128, San Jose,
2006
[8] National Semiconductor, Low-Dropout Linear Regulator – LM117, 2006
[9] Sena Technologies, Promi-ESD User Manual, 2006
[10] Microprocessor, http://en.wikipedia.org/wiki/Microprocessor, 2007
[11] Central proces unit – CPU, http://en.wikipedia.org/wiki/Central_processing_unit,
2007
[12] Microcontroller, http://en.wikipedia.org/wiki/Microcontroller, 2007
[13] Intel 8051, http://en.wikipedia.org/wiki/8051, 2007
[14] Dogan Ibrahim, Picbasic Projects, 2006
[15] AVR, http://en.wikipedia.org/wiki/Atmel_AVR, 2007
[16] ARM Arhitecture, http://en.wikipedia.org/wiki/ARM_architecture, 2007
[17] FPGA, http://en.wikipedia.org/wiki/FPGA, 2007
[18] Modified Harvard Arhitecture,
http://en.wikipedia.org/wiki/Modified_Harvard_architecture, 2007
[19] Flash Memory, http://en.wikipedia.org/wiki/Flash_memory, 2007
[20] Thomas Bräun, Embedded Robotics, 2. edition, Springer-Verlag Berlin
Heidelberg 2003, 2006
[21] Marko Jagodič, Digitalne Telekomunikacije – kompendij, 1. izdaja, Založništvo
FERI Maribor, 2002
Vgrajeni sistem robota Robosapien 73
[22] Andrev S. Tanenbaum, Computer Networks, 4th edition, Prentice Hall, 2003
[23] CAN, http://en.wikipedia.org/wiki/Controller_Area_Network, 2008
[24] Bluetooth, http://en.wikipedia.org/wiki/Bluetooth, 2008
[25] Reluctance motor, http://en.wikipedia.org/wiki/Reluctance_motor, 2008
[26] Brushless motor, http://en.wikipedia.org/wiki/Brushless_motor, 2008
[27] Bluetooth profiles, http://en.wikipedia.org/wiki/Bluetooth_profile, 2008
Vgrajeni sistem robota Robosapien 74
9 PRILOGE
Seznam prilog:
A. Vsebina priložene zgoščenke
B. Sheme vezja
C. Predloge ploščic tiskanega vezja
D. Specifikacije komunikacijskega protokola
E. Osciloskopski posnetki
F. Naslov
G. Kratek življenjepis
Vgrajeni sistem robota Robosapien 75
A. Vsebina priložene zgoš čenke
• Diplomska naloga v Microsoft Word 2003 obliki (»Diploma.doc«)
• Diplomska naloga v PDF obliki (»Diploma.pdf«)
• Vir [7] v PDF obliki (»Vir [7] ATMega128.pdf«)
• Vir [8] v PDF obliki (»Vir [8] LM1117.pdf «)
• Vir [9] v PDF obliki (»Vir [9] Promi ESD User Manual V2.0.pdf«)
• Načrt tiskanega vezja v Design Explorer 99 SE obliki(»RoboSapienv2.ddb«)
• Rezultati meritev prenosne karakteristike pri merjenju baterije v Microsoft
Excel 2003 obliki (»Merjenje baterije.xls«)
• Rezultati meritev v Microsoft Excel 2003 obliki (»Meritve.xls«)
• Posnetek Demonstracijskega plesa predelanega robota v DivX obliki
(»Ples robota.avi«)
• Zaganjalni program za mikrokrmilnik v HP Info Tech CodevisionAVR 1.24.8d
obliki (mapa »BootLoader«)
• Program za prvi mikrokrmilnik v HP Info Tech CodevisionAVR 1.24.8d obliki
(mapa »MainApp1«)
• Program za drugi mikrokrmilnik v HP Info Tech CodevisionAVR 1.24.8d obliki
(mapa »MainApp2«)
• Slike uporabljene v diplomski nalogi (mapa »Slike«)
• Slike, diagrami in sheme uporabljene v diplomski nalogi v Microsoft Visio 2003
obliki (mapa »Slike Visio«)
• Posnetki meritev osciloskopa (mapa »Slike osciloskopa«)
Vgrajeni sistem robota Robosapien 76
B. Sheme vezja
Slika B1: Glavno vezje - Shema Stran 1
12
34
ABCD
43
21
D C B A
1234567891011121314
J1 Mo
tor
He
ade
r 1
123456789101112
J2 Mo
tor
He
ade
r2
1 2 3 4 5
J8 Rig
ht H
an
d
1 2 3
J6 Rig
ht S
houl
der
1 2
J7 Rig
ht H
an
d Sw
itch
1 2
J10
Gro
in T
ilt
1234567
J12
Rig
ht F
oot
123456
J13
Left
Foo
t
1 2 3
J14
Wa
ist F
orw
ard/
Bac
kwa
rd
1 2 3
J15
Wa
ist T
ilt L
eft/
Rig
ht
1 2 3 4 5
J16
Left
Han
d
1 2
J17
Left
Han
d S
witc
h
1 2 3
J18
Left
Sho
uld
er
1234
J20
He
ad
Tur
n
123
J21
He
ad T
ilt
1 2 3
J9 Wa
ist R
ota
te L
eft/
Rig
ht
+3.
3VLS
VR
- O
rang
eG
ND
LPU
P -
Whi
teG
ND
GNDBB0 - YellowRFF - PurpleRFB - BlueGNDBAT- - Orange
BAT- - Red6VIN - BrownLFB - YellowLFF - GreenGNDFB0 - PurpleGND
GN
DLB
0 -
Gre
enLB
1 -
Ye
llow
LRT
- O
rang
eG
ND
GN
DB
R -
Ye
llow
BL
- O
rang
e
GN
DC
HE
ST
- Y
ello
w+
3.3V
B2 - YellowB1 - GreenB0 - BlueGND
B1 - BrownB0 - RedGND
+3.
3VR
SV
R -
Ora
nge
GN
D
RP
UP
- W
hite
GN
D
GN
DR
B0
- G
reen
RB
1 -
Ye
llow
RL
T -
Ora
nge
GN
D
+3.
3VW
VR
- B
lue
GN
D
CB
0 -
Gre
yG
ND
Head - Rotate UpHead - Rotate Down
Waist - BackwardWaist - Forward
Head - Rotate RightHead - Rotate LEft
Lef t Wrist - Rotate R ightLef t Wrist - Rotate Le ft
Lef t Shoulder - Rotate UpLef t Shoulder - Rotate Down
9VGND
Unknown1Unknown2
Lef t Foot - Move BackwardLef t Foot - Move Forward
Right Foot - Move ForwardRight Foot - Move Backward
Waist - Tilt Lef tWaist - Tilt Right
Waist - Rotate LeftWaist - Rotate Right
Right Wrist - Rotate RightRight Wrist - Rotate Left
Right Shoulder - Rotate DownRight Shoulder - Rotate Up
(AD
0) P
A0
51(A
D1)
PA
150
(AD
2) P
A2
49(A
D3)
PA
348
(AD
4) P
A4
47(A
D5)
PA
546
(AD
6) P
A6
45(A
D7)
PA
744
(A8
) P
C0
35(A
9)
PC
136
(A1
0) P
C2
37(A
11)
PC
338
(A1
2) P
C4
39(A
13)
PC
540
(A1
4) P
C6
41(A
15)
PC
742
PF0
(A
DC
0)61
PF1
(A
DC
1)60
PF2
(A
DC
2)59
PF3
(A
DC
3)58
PF4
(A
DC
4/TC
K)
57P
F5 (
AD
C5/
TMS)
56P
F6 (
AD
C6/
TDO
)55
PF7
(A
DC
7/TD
I)54
(AL
E)
PG
243
AVCC64 GND
63
AR
EF
62
GND53
VCC52
(RD
) P
G1
34
(WR
) P
G0
33
PE
N1
RE
SET
20T
OSC
2/P
G3
18
TO
SC1/
PG
419
VCC21
GND22
XT
AL2
23X
TA
L124
PD
0 (S
CL
/INT
0)25
PD
1 (S
DA
/INT
1)26
PD
2 (R
XD
1/IN
T2)
27P
D3
(TX
D1/
INT
3)28
PD
4 (I
C1
)29
PD
5 (X
CK
1)30
PD
6 (T
1)31
PD
7 (T
2)32
(SS
) P
B010
(SC
K)
PB
111
(MO
SI)
PB
212
(MIS
O)
PB
313
(OC
0) P
B4
14(O
C1A
) P
B5
15(O
C1B
) P
B6
16(O
C2/
OC
1) P
B7
17
PE
0 (R
XD
0/P
DI)
2P
E1
(TX
D0/
PD
O)
3P
E2
(XC
K0/
AIN
0)4
PE
3 (O
C3A
/AIN
1)5
PE
4 (O
C3B
/INT4
)6
PE
5 (O
C3C
/INT5
)7
PE
6 (T
3/IN
T6)
8P
E7
(IC
3/IN
T7)
9
U2
AT
ME
GA
128
GN
DG
ND
GN
D
C11
100
nC
1210
0n
C13
100
n
GN
DG
ND
GN
D
+3.
3V+
3.3V
+3.
3V
C14
100
n
GN
D
Left
Sho
uld
er -
Rot
ate
Dow
nLe
ft S
hou
lder
- R
otat
e U
p
Left
Wris
t - R
ota
te L
eft
Left
Wris
t - R
ota
te R
ight
He
ad -
Rot
ate
LE
ftH
ead
- R
otat
e R
ight
Wa
ist -
For
war
dW
ais
t - B
ack
wa
rd
Wa
ist -
Tilt
Rig
ht
Wa
ist -
Tilt
Left
Rig
ht F
oot -
Mo
ve B
ack
war
d
Rig
ht F
oot -
Mo
ve F
orw
ard
Left
Foo
t -
Mov
e Fo
rwar
d
Left
Foo
t -
Mov
e B
ackw
ard
He
ad -
Rot
ate
Up
He
ad -
Rot
ate
Dow
nW
ais
t - R
ota
te L
eft
CH
EST
- Y
ello
w
Wa
ist -
Rot
ate
Rig
ht
WV
R -
Blu
e
Rig
ht W
rist
- R
ota
te R
ight
LSV
R -
Ora
nge
Rig
ht W
rist
- R
ota
te L
eft
Rig
ht S
houl
der
- R
ota
te D
own
RSV
R -
Ora
nge
Rig
ht S
houl
der
- R
ota
te U
p
BL
- O
rang
e
RX
D0
CB
0 -
Gre
y
TX
D0
B1
- Br
own
B0
- R
ed
BR
- Y
ello
wFB
0 -
Pur
ple
BB
0 -
Ye
llow
RFB
- B
lue
RFF
- P
urpl
eLF
B -
Ye
llow
LFF
- G
reen
LB0
- G
ree
n
LRT
- O
rang
e
LPU
P -
Whi
teR
PU
P -
Whi
teB
2 -
Yel
low
B1
- G
ree
nB
0 -
Blu
e
RL
T -
Ora
nge
RB
1 -
Ye
llow
RB
0 -
Gre
en
LB1
- Y
ello
wM
ISO
128
MO
SI1
28SC
K12
8
Res
etM
OT
GN
D
GN
D
C8
22p
F
C7
22p
FY
1C
RY
STA
L
Rob
osap
ien
V2 -
She
ma
Re
v. 1
.0St
ran:
1 /
2
Vgrajeni sistem robota Robosapien 77
Slika B2: Glavno vezje - Shema Stran 2
12
34
ABCD
43
21
D C B A
VDD2 GND 1
RX
D8
TX
D7
RT
S6
CT
S5
Sta
tus
3
Res
et
4
U1
BL
UE
TOO
TH
GN
D
+3.
3V
C19
100
n
GN
D
GN
D
C6
68u
F
GN
D
C3
100
n
GN
D
+3.
3V
GN
DC5
68u
FC
410
0n
GN
D
D1
UD
S19V
1
23
IC1
LM11
17
(AD
0) P
A0
51(A
D1)
PA
150
(AD
2) P
A2
49(A
D3)
PA
348
(AD
4) P
A4
47(A
D5)
PA
546
(AD
6) P
A6
45(A
D7)
PA
744
(A8
) P
C0
35(A
9)
PC
136
(A1
0) P
C2
37(A
11)
PC
338
(A1
2) P
C4
39(A
13)
PC
540
(A1
4) P
C6
41(A
15)
PC
742
PF0
(A
DC
0)61
PF1
(A
DC
1)60
PF2
(A
DC
2)59
PF3
(A
DC
3)58
PF4
(A
DC
4/T
CK
)57
PF5
(A
DC
5/T
MS
)56
PF6
(A
DC
6/T
DO
)55
PF7
(A
DC
7/T
DI)
54
(AL
E)
PG
243
AVCC64 GND
63
AR
EF
62
GND53
VCC52
(RD
) P
G1
34
(WR
) P
G0
33
PE
N1
RE
SET
20T
OSC
2/P
G3
18
TO
SC1/
PG
419
VCC21
GND 22
XT
AL2
23X
TA
L124
PD
0 (S
CL
/INT
0)25
PD
1 (S
DA
/INT
1)26
PD
2 (R
XD
1/IN
T2)
27P
D3
(TX
D1/
INT
3)28
PD
4 (I
C1
)29
PD
5 (X
CK
1)30
PD
6 (T
1)31
PD
7 (T
2)32
(SS
) P
B010
(SC
K)
PB
111
(MO
SI)
PB
212
(MIS
O)
PB
313
(OC
0) P
B4
14(O
C1A
) P
B5
15(O
C1B
) P
B6
16(O
C2/
OC
1) P
B7
17
PE
0 (R
XD
0/P
DI)
2P
E1
(TX
D0/
PD
O)
3P
E2
(XC
K0/
AIN
0)4
PE
3 (O
C3A
/AIN
1)5
PE
4 (O
C3B
/INT4
)6
PE
5 (O
C3C
/INT5
)7
PE
6 (T
3/IN
T6)
8P
E7
(IC
3/IN
T7)
9
U3
AT
ME
GA
128
GN
DG
ND
GN
D
C15
100
nC
1610
0n
C17
100
n
GN
DG
ND
GN
D
+3.
3V
C18
100
n
GN
D
Blu
eRX
DB
lueT
XD
RX
D0
TX
D0
Bat
Stat
us
MIS
O12
8M
OS
I128
Res
etC
OM
SCK
128
Blu
eRes
et
Blu
eSta
tus
Blu
eCTS
Blu
eRTS
Blu
eR
XD
Blu
eTX
D
Blu
eR
TS
Blu
eC
TS
Blu
eSta
tus
Blu
eRes
et
EX
TB7
EX
TB6
EX
TB5
EX
TB4
EX
TB3
EX
TB2
EX
TB1
EX
TB0
EX
TA7
EX
TA6
EX
TA5
EX
TA4
EX
TA3
EX
TA2
EX
TA1
EX
TA0
AD
C5
AD
C4
AD
C3
AD
C2
LED
3LE
D2
LED
1LE
D0
AD
C1
AD
C0
PW
M0
PW
M1
PW
M2
PW
M3
GN
DC1
0.1
uF
R1
10k
+3.
3V
Re
setM
OT
GN
DC2
0.1
uF
R2
10k
+3.
3V
Re
setC
OM
MIS
O1
Vc
c2
SCK
3M
OSI
4
RE
SET
5G
ND
6
ISP
ISP
MIS
O12
8SC
K12
8R
ese
tM
OSI
128
GN
D
+3.
3V
123
JR
ResetCOMResetResetMOT
1 2 3 4 5 6 7 8 9 10
JPA
CO
N10
1 2 3 4 5 6 7 8 9 10
JPB
CO
N10
GN
D
GN
D
GN
D
+3.
3V
+3.
3V
+3.
3V
EX
TA0
EX
TA1
EX
TA2
EX
TA3
EX
TA4
EX
TA5
EX
TA6
EX
TA7
EX
TB0
EX
TB1
EX
TB2
EX
TB3
EX
TB4
EX
TB5
EX
TB6
EX
TB7
AD
C0
AD
C1
AD
C2
AD
C3
AD
C4
AD
C5
1 2 3 4 5 6 7 8
JPA
DC
CO
N8
1 2 3 4 5 6
JPP
WM
CO
N6
GN
D
+3.
3V
PW
M0
PW
M1
PW
M2
PW
M3
GN
D
GN
D
C10
22p
F
C9
22p
F
R7
15k
9V
R8
5.6
k
GN
D
BatS
tatu
s
D2
LED
D3
LED
D4
LED
D5
LED
R3
560
ER
4
560
ER
5
560
ER
6
560
E
GN
D
LED
0
LED
1
LED
2
LED
3
+3.
3V
Y2
CR
YST
AL
Rob
osap
ien
V2 -
She
ma
Re
v. 1
.0St
ran:
2 /
2
Vgrajeni sistem robota Robosapien 78
C. Predloge ploš čic tiskanega vezja
Slika C.1: Zgornja plast tiskanega vezja
Slika C.2: Spodnja plast tiskanega vezja
Vgrajeni sistem robota Robosapien 79
D. Specifikacije komunikacijskega protokola Protocol for BOOTLOADER & ROBOSAPIEN Name: LEN DEST_ADDR SRC_ADDR CMD_GRP CMD DATA Size (byte): 2 1 1 1 1 n
CMD_GRP:
0 IDENTIFY 1 FLASH 2 MOTOR 3 SENSOR 4 CONTROL 5 MEDIA 6 EXTEND
0 IDENTIFY LEN DEST_ADDR SRC_ADDR CMD_GRP CMD DATA 6+n Addr Addr 0 x n Echo 1 FLASH CMD:
1 FLASH_W 2 FLASH_W_ACK 3 FLASH_R 4 FLASH_R_ACK 5 EEPROM_W 6 EEPROM_W_ACK 7 EEPROM_R 8 EEPROM_R_ACK 9 JUMP_APP 10 JUMP_APP_ACK
1 FLASH_W DATA: FLASH_ADDRESS PAGE 4 256 2 FLASH_W_ACK DATA: STATUS 1 3 FLASH_R DATA: FLASH_ADDRESS 4 4 FLASH_R_ACK DATA:
Vgrajeni sistem robota Robosapien 80
PAGE 256 5 EEPROM_W DATA: EEPROM_ADDRESS LEN EEPROM_DATA 2 2 n 6 EEPROM_W_ACK DATA: STATUS 1 7 EEPROM_R DATA: EEPROM_ADDRESS LEN 2 2 8 EEPROM_R_ACK DATA: EEPROM_DATA N 9 JUMP_APP DATA: NONE 0 10 JUMP_APP_ACK DATA: NONE 0 Only for non-bootloader 11 JUMP_BOOT DATA: NONE 0 12 JUMP_BOOT_ACK DATA: NONE 0 Defines in C code for microcontrollers Serial.h MORE_DEVICES 1 – forward to secondary serial port (both directions) 0 – no forward Boot.h DEVICE_ADDR 1 – ATMega128 Communication 2 – ATMega128 Motors 3 – PC
Vgrajeni sistem robota Robosapien 81
4 – iPaq 2 MOTOR CMD:
1 STATE 2 STATE_ACK 3 WALK 4 WALK_ACK 5 SHOULDER 6 SHOULDER_ACK 7 WRIST_ROTATE 8 WRIST_ROTATE_ACK 9 WAIST 10 WAIST_ACK 11 WAIST_TILT 12 WAIST_TILT_ACK 13 HEAD_ROTATE 14 HEAD_ROTATE_ACK 15 HEAD_TILT 16 HEAD_TILT_ACK 17 FOOT_TILT 18 FOOT_TILT_ACK 19 MOTOR_STOP 20 MOTOR_STOP_ACK 21 MOTOR_START 22 MOTOR_START_ACK
*_ACK DATA: NONE 0 Acknowladges return no data. 1 STATE DATA: WAIST_FORW_BACKW WAIST_ROTATE LEFT_SHOULDER 1 (8bit) 1 (8bit) 1 (8bit) RIGHT_SHOULDER LEFT_WRIST_ROTATE RIGTH_WRIST_ROTATE 1 (8bit) 1 (2bit) 1 (2bit) HEAD_ROTATE HEAD_TILT WAIST_TILT_LEFT_RIGHT(timer) 1 (3bit) 1 (2bit) 2 LEFT_FOOT(timer) RIGHT_FOOT(timer) 2 2 timer: 0 – stop >0 – foot: move forward, head: move up, waist_tilt: move right <0 – foot: move backward, head: move down, waist_tilt: move left 3 WALK DATA:
Vgrajeni sistem robota Robosapien 82
COUNTER WAIST_DELAY LEFT_FOOT_DELAY RIGHT_FOOT_DELAY 1 2 2 2 COUNTER 0 – STOP FF – CONTINOUSLY 1-FE – COUNT 5 SHOULDER DATA: SELECTION POT (AD) 1 1 (8bit) SELECTION Left = 1 Right = 2 Both else 7 WRIST_ROTATE DATA: SELECTION ENCODER 1 1 (2bit) SELECTION Left = 1 Right = 2 Both else 9 WAIST DATA: SELECTION POT (AD) 1 1 (8bit) SELECTION RotateLeftRight = 0 ForwardBackward = 1 11 WAIST_TILT DATA: Timer 2 13 HEAD_ROTATE DATA: ENCODER 1 (3bit) Left/Right 15 HEAD_TILT DATA: timer 2 17 FOOT_TILT DATA: LEFT(timer) RIGHT(timer) 2 2 19 MOTOR_STOP DATA:
Vgrajeni sistem robota Robosapien 83
NONE 0 21 MOTOR_START DATA: NONE 0 3 SENSOR CMD:
1 STATE 2 STATE_ACK 3 TOUCH 4 TOUCH_ACK
1 STATE DATA: NONE 0 State request 2 STATE_ACK DATA: WAIST_FORW_BACKW WAIST_ROTATE LEFT_SHOULDER 1 (8bit) 1 (8bit) 1 (8bit) RIGHT_SHOULDER LEFT_WRIST_ROTATE RIGTH_WRIST_ROTATE 1 (8bit) 1 (2bit) 1 (2bit) HEAD_ROTATE TOUCH POSITION 1 (3bit) 1 (8bit) 1 (3bit) HEAD_TILT_UP_DOWN WAIST_TILT_LEFT_RIGHT 1 (2bit) 1 (2bit) 3 TOUCH DATA: NONE 0 State request 4 TOUCH_ACK DATA: STOP TOUCH POSITION 1 (1bit) 1 (8bit) 1 (3bit) STOP: 1 One of the sensors has been activated TOUCH: 0 LEFT_HAND 1 RIGHT_HAND 2 LEFT_HAND_GRIP 3 RIGHT_HAND_GRIP 4 LEFT_FOOT_BACK 5 LEFT_FOOT_FRONT 6 RIGHT_FOOT_BACK
Vgrajeni sistem robota Robosapien 84
7 RIGHT_FOOT_FRONT POSITION: 0 GROIN_TILT 1 LEFT_FOOT_TILT 2 RIGHT_FOOT_TILT 4 CONTROL CMD:
1 BATERY_STATUS 2 BATERY_STATUS_ACK
1 BATERY_STATUS DATA: NONE 0 Status request 2 BATERY_STATUS_ACK DATA: STATUS 1 5 MEDIA CMD:
1 PICTURE 2 PICTURE_ACK 3 SOUND 4 SOUND_ACK 5 SCRIPT 6 SCRIPT_ACK 7 OFF 8 OFF_ACK
DATA: PATH n Filename ACK: NONE 0 6 EXTEND For future use.
Vgrajeni sistem robota Robosapien 85
E. Osciloskopski posnetki
Slika E.1: Desna noga tilt nazaj Slika E.2: Desna noga tilt naprej
Slika E.3: Desno zapestje Slika E.4: Desna rama
Slika E.5: Glava Naprej/Nazaj Slika E.6: Drhtenje v pasu
Vgrajeni sistem robota Robosapien 86
Slika E.7: Leva noga tilt nazaj Slika E.8: Glava Levo/Desno
Slika E.9: Leva Rama Slika E.10: Leva noga tilt naprej
Slika E.11: Levo zapestje Slika E.12: Pas Naprej/Nazaj
Vgrajeni sistem robota Robosapien 87
Slika E.13: Pas tilt desno Slika E.14: Pas Levo/Desno
Slika E.15: Pas tilt levo
Vgrajeni sistem robota Robosapien 88
F. Naslov
David Bricman
Sv. Vid 20
2367 Vuzenica
Tel.: +386 87 64 480
Elektronska pošta: [email protected]
Vgrajeni sistem robota Robosapien 89
G. Kratek življenjepis
Rojen: 16.3.1982 Brežice
Šolanje: 1989 – 1997 Osnovna šola Vuzenica
1997 – 2001 Srednja elektro-računalniška šola Maribor