• No results found

Automaticky ˇr´ızen´y model vozu s pˇr´ısavn´ym syst´emem

N/A
N/A
Protected

Academic year: 2022

Share "Automaticky ˇr´ızen´y model vozu s pˇr´ısavn´ym syst´emem"

Copied!
46
0
0

Loading.... (view fulltext now)

Full text

(1)

Automaticky ˇ r´ızen´ y model vozu s pˇ r´ısavn´ ym syst´ emem

Bakal´ aˇ rsk´ a pr´ ace

M10000175

Studijn´ı program: B2646 – Informaˇcn´ı technologie Studijn´ı obor: 1802R007 – Informaˇcn´ı technologie Autor pr´ace: Petr Najman

Vedouc´ı pr´ace: Ing. Jan Koprnick´y, Ph.D.

(2)

Automatically controlled car model with suction system

Bachelor thesis

M10000175

Study programme: B2646 – Information Technology Study branch: 1802R007 – Information Technology

Author: Petr Najman

Supervisor: Ing. Jan Koprnick´y, Ph.D.

(3)

TECHNICKÁ UNIVERZITAV LIBERCI

Fakulta

mechatroniky,

informatiky

a mezioborových

studií

Akademický rok: 2OL4/2OL5

zAD

^tvÍ snKAlÁŘsxp pnÁcp

(eRoJEKTU,

UtvtĚlEcxÉHo oíLA, uuĚr,pcxÉHo vÝxoNu)

Jméno a

příjmení: Petr Najman

Osobní

číslo:

M10000175

Studijní

program:

B.2646 Informační technologie Studijní

obor:

Informační technologie

Název

tématu: Automaticky řízený

model vozu s

přísavným

systémem Zadávající katedra:

Ústav mechatroniky

a technické

informatiky

Zásady pro vypracování:

1. Seznamte se s elektromechanickými částmi podvozku a řídicí jednotkou.

2. Zana|yzujte energetické požadavky přísavného systému pro model vozlJ.

3. Upravte hw systému, navrhněte algoritmus řízení a vytvořte odpovídající software pro řídicí jednotku modelu vozu,.

4. Funkční model vyzkoušejte na laboratorní testovací dráze.

(4)

Forma zpracování bakalářské práce:

tištěná/elektronická

Seznam odborné literatury:

[r]

Ďaab,

S.;

Kreidel, M.:

Senzory a

měřicí

obvody.

Praha

:

ČVUT,

druhé

vydání,

1999,

ISBN

80-01-02067-6.

[2]

Vít, Jakub.

Samořízené elektrické auto.

Liberec,

2OI2. Bakalářská práce.

Technická

univerzita v Liberci.

Vedoucí práce

Jan Koprnický.

R,ozsah grafických prací:

Rozsah pracovní zprávy:

Vedoucí bakalářské práce:

Datum zadání bakalářské práce:

Termín odevzdání bakalářské práce:

dle

potřeby

dokumentace

,

30-40 stran

Ing.

Jan Koprnický, Ph.D.

úIstav mechatronikv a technické informatikv 10.

října

2Ol4

15. května 2015

o*,,,Ti,*,W

děkan

/h/"r

doc. Ing. Milan Kolář, CSc.

vedoucí ústavu

É

o

(5)
(6)

Abstrakt

Tato pr´ace popisuje anal´yzu a postup pro vytvoˇren´ı automaticky ˇr´ızen´eho modelu auta s pˇr´ısavn´ym syst´emem, kter´y umoˇzˇnuje mo- delu jezdit po vertik´aln´ıch ploch´ach. Pro pr´aci byl zakoupen mo- del vozu ovl´adan´y pˇres infraˇcerven´e (IR) d´alkov´e ovl´ad´an´ı, jenˇz takov´yto pohyb umoˇzˇnoval. Tento model byl otestov´an a bylo analyzov´ano jeho technick´e vybaven´ı. K vytvoˇren´ı automaticky ˇr´ızen´eho vozu byla instalov´ana ˇr´ıdic´ı jednotka od firmy Arduino, kter´a splˇnuje vˇsechna krit´eria dan´a rozmˇerem vozidla, jeho hmot- nost´ı, v´ykonem pˇr´ısavn´eho syst´emu a schopnost´ı ovl´adat tˇri stej- nosmˇern´e motory. Tyto parametry nejl´epe splˇnovala ˇr´ıdic´ı jednotka Arduino Fio s procesorem Atmel ATmega328P. ˇR´ıdic´ı jednotka byla doplnˇena o dvojit´y H-m˚ustek pro obousmˇern´e ˇr´ızen´ı motor˚u. Na zprovoznˇen´em modelu bylo testov´ano nˇekolik senzor˚u umoˇzˇnuj´ıc´ıch autonomn´ı ˇr´ızen´ı. Po tomto testov´an´ı byl vybr´an optick´y senzor CNY-70. Pro takto osazen´y model byl napsan´y algoritmus, psan´y v prostˇred´ı Arduino IDE, jazykem vych´azej´ıc´ım z jazyka C/C++.

Algoritmy vyuˇz´ıvaj´ı instalovan´eho optick´eho senzoru, a d´ıky tomu se vozidlo dok´aˇze chovat autonomnˇe.

Kl´ıˇcov´a slova: jazyk C/C++, pˇr´ısavn´y syst´em, H-m˚ustek, Arduino, Atmel ATmega328P, CNY70

(7)

Abstract

This bachelor thesis describes the analysis and procedure of creation of an automatically driven model car with a suction system. This system enables the model to ride on vertical surfaces. An infrared operated car model that comply with the parameters was bought for this project. This model was tested and its technical equipment was analysed. To build automatically controlled car model a CPU from Arduino had to be used, as it fulfils every criteria given by the size of the car, its weight, the performance of the suction system and the ability to control three DC motors. The Arduino Fio unit with the Atmel ATmega328P processor matched these requirements. CPU was complemented by double H-bridge that enables bidirectional operating of motors. Couple of sensors, that enabls autonomous operation, were tested on the model in service. The optical sensor CNY-70 was chosen after this test. For a model of this construction an algorithm in Arduino IDE had to be compiled and written in C/C++. The algorithms use the installed optical sensor thanks to whitch it is capable of autonomous operation.

Key words: language C/C++, sunction system, H-bridge, Arduino, Atmel ATmega328P, CNY70

(8)

Podˇ ekov´ an´ı

T´ımto dˇekuji vˇsem, kteˇr´ı mi byli n´apomocni pˇri vypracov´av´an´ı t´eto bakal´aˇrsk´e pr´ace. Velk´e podˇekov´an´ı patˇr´ı vedouc´ımu bakal´aˇrsk´e pr´ace Ing. Janu Koprnick´emu, Ph.D, kter´y mi dal uˇziteˇcn´e rady a obohatil mou pr´aci o jeho cenn´e zkuˇsenosti. A tak´e bych chtˇel podˇekovat m´e rodinˇe a kamar´ad˚um, kteˇr´ı mi pˇri psan´ı t´eto ba- kal´aˇrsk´e pr´ace a tak´e po celou dobu studia vytv´aˇreli pˇr´ıjemn´e prostˇred´ı a podporovali mˇe.

(9)

Obsah

Seznam zkratek . . . 12

1 Uvod´ 13 2 Teorie 14 2.1 Model vozidla . . . 14

2.1.1 Sezn´amen´ı s modelem . . . 14

2.1.2 Konstrukce modelu vozidla . . . 15

2.2 Z´akladn´ı fyzika a vyuˇzit´ı podtlaku . . . 15

2.3 PWM . . . 17

2.4 H-m˚ustek . . . 18

2.5 Poˇzadavky na ˇr´ıdic´ı jednotku . . . 18

3 Pouˇzit´y hardware 20 3.1 R´ıdic´ı jednotka . . . 20ˇ 3.2 Dvojit´y H-m˚ustek DRV8835 . . . 21

4 Sestaven´ı a zapojen´ı modelu 22 4.1 Ultrazvukov´y senzor . . . 22

4.2 Optick´y senzor . . . 23

5 Software 25 5.1 Z´akladn´ı funkce . . . 25

5.2 Popis testovac´ıch algoritm˚u pro senzory HC-SR04 a CNY70 . . . 27

5.2.1 HC-SR04 . . . 27

5.2.2 CNY70 . . . 27

5.3 Popis ˇr´ıdic´ıch algoritm˚u s vyuˇzit´ım senzoru CNY70 . . . 28

5.3.1 Algoritmus pro udrˇzen´ı vozidla v ohraniˇcen´em poli . . . 28

5.3.2 Algoritmus pro ops´an´ı a udrˇzen´ı se ve vyznaˇcen´e dr´aze . . . . 28

6 Testov´an´ı 30 6.1 Testov´an´ı zapojen´ı ventil´atoru a frekvence PWM . . . 30

6.2 Testov´an´ı senzoru HC-SR04 . . . 30

6.3 Testov´an´ı senzoru CNY70 . . . 31

(10)

7 Moˇznosti dalˇs´ıho rozˇs´ıˇren´ı 33

7.1 Senzorick´e . . . 33

7.1.1 Akcelerometr . . . 33

7.2 Komunikaˇcn´ı . . . 33

7.2.1 Rozhran´ı XBee . . . 33

7.2.2 Rozhran´ı Bluetooth . . . 33

Z´avˇer 35 Literatura 36 A Obsah pˇriloˇzen´eho CD 38 B Sch´ema zapojen´ı desky Arduino Fio 39 C Sch´ema zapojen´ı upraven´eho modelu 40 C.1 Prvotn´ı verze zapojen´ı . . . 40

C.2 Koneˇcn´a verze zapojen´ı . . . 41

D Uk´azky testovac´ıch algoritm˚u 42 D.1 Rozsvˇecen´ı LED . . . 42

D.2 Testovac´ı algoritmus senzoru HC-SR04 . . . 42

D.3 Algoritmus pro ops´an´ı a udrˇzen´ı se ve vyznaˇcen´e dr´aze . . . 43

(11)

Seznam obr´ azk˚ u

2.1 Zakoupen´y model vozidla s pˇr´ısavn´ym syst´emem . . . 14

2.2 Rozloˇzen´ı podvozku – 1. stejnosmˇern´e motory, 2. pˇrevodov´e ´ustroj´ı, 3. ventil´ator . . . 15

2.3 S´ıly p˚usob´ıc´ı na vozidlo na vertik´aln´ı ploˇse . . . 17

2.4 Pulznˇe ˇs´ıˇrkov´a modulace (PWM) . . . 18

2.5 Zapojen´ı s vyuˇzit´ım H-m˚ustku . . . 19

2.6 Blokov´e sch´ema p˚uvodn´ıho modelu . . . 19

3.1 Arduino Fio [4] . . . 21

3.2 FTDI Basic Breakout adaptor [6] . . . 21

4.1 Blokov´e sch´ema pˇrepracovan´eho modelu . . . 23

4.2 Fin´aln´ı blokov´e sch´ema modelu vozidla s pˇr´ıtlaˇcn´ym syst´emem . . . . 24

4.3 Fin´aln´ı vzhled vytvoˇren´eho modelu vozidla s pˇr´ıtlaˇcn´ym syst´emem . . 24

5.1 Styl pohybu vozidla mezi ohraniˇcen´ım dr´ahy . . . 29

6.1 PWM zobrazen´e na osciloskopu . . . 31

6.2 PWM a sign´al na ventil´atoru . . . 31

B.1 Sch´ema zapojen´ı ˇridic´ı jednotky Arduino Fio [4] . . . 39

C.1 Prvotn´ı n´avrh zapojen´ı modelu . . . 40

C.2 Fin´aln´ı n´avrh zapojen´ı modelu s koneˇcn´ymi hodnotami . . . 41

(12)

Seznam zkratek

PWM Puzlnˇe ˇs´ıˇrkov´a modulace

HW Hardware

SW Software

USB Universal Serial Bus (univerz´aln´ı s´eriov´a sbˇernice)

IDE Integrated Development Environment (v´yvojov´e prostˇred´ı) IR Infraˇcerven´e z´aˇren´ı

(13)

1 Uvod ´

Hlavn´ım c´ılem t´eto bakal´aˇrsk´e pr´ace je sestrojen´ı a naprogramov´an´ı modelu vozidla s vyuˇzit´ım pˇr´ısavn´eho syst´emu. Tento model bude schopn´y jezdit po rovn´ych hori- zont´aln´ıch i vertik´aln´ıch ploch´ach. Pˇr´ısavn´y syst´em je realizov´an vysokoot´aˇckov´ym ventil´atorem, kter´y vytv´aˇr´ı podtlak na ploˇse podvozku modelu.

Jako z´aklad slouˇz´ı podvozek osazen´y dvˇema stejnosmˇern´ymi motory, realizuj´ıc´ı pohyb modelu, a jedn´ım v´ykonnˇejˇs´ım stejnosmˇern´ym motorem, kter´y zprostˇredko- v´av´a jiˇz zm´ınˇen´y pˇr´ısavn´y syst´em [1]. Tento podvozek bude doplnˇen o ˇr´ıdic´ı jed- notku, schopnou ˇr´ıdit vˇsechny tˇri stejnosmˇern´e motory podle potˇreby, baterii, do- stateˇcnˇe silnou pro nap´ajen´ı vˇsech ˇc´ast´ı, a dalˇs´ı souˇc´astky d˚uleˇzit´e pro spr´avn´e fun- gov´an´ı a ˇr´ızen´ı vˇsech ˇc´ast´ı modelu. Pˇri vyb´ır´an´ı tˇechto souˇc´ast´ı je d˚uleˇzit´e br´at na vˇedom´ı jejich velikost a hlavnˇe jejich hmotnost, protoˇze model by se mˇel pohybovat po vertik´aln´ı ploˇse, a to z´aleˇz´ı hlavnˇe na jeho celkov´e hmotnosti. V´ykon pˇr´ıtlaˇcn´eho syst´emu v tomto modelu je znaˇcnˇe omezen´y, takˇze je nutn´e udrˇzovat co nejmenˇs´ı celkovou hmotnost vozidla.

K pˇr´ısluˇsn´emu technick´emu vybaven´ı vozidla bude n´aslednˇe vytvoˇren algoritmus, d´ıky kter´emu se model bude pohybovat. Vozidlo bude moci opisovat naprogramo- van´e tvary (jezdit v kruz´ıch apod.), pˇr´ıdadnˇe se ˇr´ıdit pomoc´ı informac´ı dodan´ych z pˇridan´ych ˇcidel nebo bude navrhnut syst´em d´alkov´eho ovl´ad´an´ı (WiFi, blueto- oth apod.). Takto sestaven´y a funkˇcn´ı model bude testov´an v r˚uzn´ych podm´ınk´ach (napˇr. r˚uzn´e druhy povrch˚u, rozd´ıln´e povˇetrnostn´ı podm´ınky atd.), n´aslednˇe se m˚uˇze zv´aˇzit jeho rozˇs´ıˇren´ı a vylepˇsen´ı.

Struktura pr´ace zaˇc´ın´a rozborem koupen´eho podvozku, jeho n´aroky na nap´ajen´ı a moˇznosti jeho ovl´ad´an´ı. Jako dalˇs´ı krok pr´ace n´asleduje teoretick´y rozbor probl´emu a zamyˇslen´ı se nad stylem ˇr´ızen´ı. Z tohoto vych´az´ı v´ybˇer hardwarov´ych souˇc´ast´ı pro sestrojen´ı autonomn´ıho vozidla. Pro sestaven´e a pohybu schopn´e vozidlo jsou naps´any testovac´ı a ˇr´ıd´ıc´ı algoritmy. Takto softwarovˇe a hardwarovˇe vybaven´e vozi- dlo je testov´ano. Z´avˇerem se ˇreˇs´ı moˇzn´e druhy rozˇs´ıˇren´ı.

(14)

2 Teorie

2.1 Model vozidla

2.1.1 Sezn´ amen´ı s modelem

Jako z´aklad mi poslouˇzil model vozidla na d´alkov´e ovl´ad´an´ı schopn´eho jezdit po horizont´aln´ıch i vertik´aln´ıch ploch´ach (viz obr´azek 2.1). Takov´yto model se d´a bez probl´emu objednat z internetu [1]. Balen´ı obsahuje samotn´y model a infraˇcerven´e (IR) d´alkov´e ovl´ad´an´ı, jenˇz slouˇz´ı jako ´uloˇzistˇe energie (to je realizov´ano 6 AA bateriemi). Ovladaˇc z´aroveˇn slouˇz´ı i jako dokovac´ı stanice pro dob´ıjen´ı integro- van´e Lithium-polymerov´e baterie vozidla. Samotn´e dob´ıjen´ı prob´ıh´a pˇres konektor um´ıstˇen´y v zadn´ı ˇc´asti modelu. Uvnitˇr vozu se nach´az´ı mal´a ˇr´ıdic´ı jednotka (zelen´y ploˇsn´y spoj v prav´e ˇc´asti vozu, viz obr´azek 2.1), kter´a pˇrij´ım´a IR sign´aly z d´alkov´eho ovl´ad´an´ı, tˇri stejnosmˇern´e motory (dva po stran´ach a jeden uprostˇred), mal´a Li- polymerov´a baterie s parametry 3,7 V a 200 mAh (lev´a ˇc´ast podvozku, viz obr´azek 2.1), jeˇz je schopn´a poh´anˇet model vozidla 7–8 minut na vertik´aln´ı ploˇse (testovan´y

´

udaj). Takto vybaven´y model m´a hmotnost 53 g. Testov´an´ım bylo zjiˇstˇeno, ˇze model je schopn´y se udrˇzet (nepohybovat se) na vertik´aln´ı ploˇse do vlastn´ı hmotnosti 130 g.

Baterie Řídicí deska

Ventilátor

Pojezdové motory s převodovým ústrojím

Obr´azek 2.1: Zakoupen´y model vozidla s pˇr´ısavn´ym syst´emem

(15)

2.1.2 Konstrukce modelu vozidla

Hlavn´ı ˇc´ast´ı modelu je podvozek. Z ˇc´asti, kter´e se dot´yk´a plochy, po kter´e m´a jezdit, je naprosto rovn´y a hladk´y, aˇz na jeho stˇredovou ˇc´ast, kde se nach´az´ı otvor pro ventil´ator. Tento ventil´ator je poh´anˇen stejnosmˇern´ym motorem, jenˇz pracuje na napˇet´ı v rozmez´ı 1,2–6 V a vys´av´a z pod podvozku vzduch, kde d´ıky tomu doch´az´ı k podtlaku, a podvozek se tak udrˇz´ı na vertik´aln´ı ploˇse. Na kaˇzd´e stranˇe podvozku se d´ale nach´az´ı dalˇs´ı stejnosmˇern´y motor se sv´ym pˇrevodov´ym ´ustroj´ım. Tyto motory, navzdory sv´e mal´e velikosti, dosahuj´ı aˇz 20 000 ot´aˇcek za minutu bez z´atˇeˇze (kata- logov´y ´udaj [2]), pˇrevodov´e ´ustroj´ı zde proto slouˇz´ı ke sn´ıˇzen´ı ot´aˇcek na pˇrijatelnou hodnotu. Tyto motory se staraj´ı o vlastn´ı pohyb modelu, jejich um´ıstˇen´ı na pod- vozku je asymetrick´e (viz obr´azek 2.2). Samotn´y podvozek s motory v´aˇz´ı 28 g a m´a rozmˇery 112×44 mm.

112 mm

44 mm

41 mm15 mm 19 mm

1.

1.

2.

3.

2.

Obr´azek 2.2: Rozloˇzen´ı podvozku – 1. stejnosmˇern´e motory, 2. pˇrevodov´e ´ustroj´ı, 3.

ventil´ator

2.2 Z´ akladn´ı fyzika a vyuˇ zit´ı podtlaku

Podtlak je z´aporn´y rozd´ıl mezi dan´ym tlakem (nejˇcastˇeji v oddˇelen´em prostoru) a referenˇcn´ım tlakem (atmosferick´y tlak). Podtlaku lze dos´ahnout pˇresunem ˇc´asti hmoty (vzduchu) z m´ısta, kde chceme podtlak vytvoˇrit. Pro pˇresun je v naˇsem

(16)

pˇr´ıpadˇe pouˇzit vysokoot´aˇckov´y ventil´ator. Podtlaku se vyuˇz´ıv´a v praxi u mnoha pˇr´ıpad˚u, napˇr. u sac´ıch pump, u vys´av´an´ı, v pr˚umyslu – pˇr´ısavn´e syst´emy pro ma- nipulaci s tabulov´ym sklem nebo plechem atd. Vyuˇzit´ı tohoto jevu m˚uˇzeme vidˇet i v pˇr´ırodˇe u nˇekter´ych ˇzivoˇcich˚u, napˇr. chobotnic nebo gekon˚u.

Pˇri z´akladn´ım uvaˇzov´an´ı pro v´ypoˇcty fyzik´aln´ıch sil, kter´e mus´ı p˚usobit na pˇredmˇet (v naˇsem pˇr´ıpadˇe model vozu), aby se dok´azal udrˇzet na vertik´aln´ı rovinˇe, jsem si vzal pˇr´ıklad z pohybu tˇelesa po naklonˇen´e rovinˇe [3]. S aplikac´ı naklonˇen´e roviny se setk´av´ame v mnoha praktick´ych situac´ıch, a proto je nutn´e spr´avnˇe po- psat s´ıly, kter´e na takov´e tˇeleso p˚usob´ı. V naˇsem pˇr´ıpadˇe p˚ujde troˇsku o extr´emn´ı

´

ulohu, protoˇze budeme uvaˇzovat naklonˇenou rovinu, jenˇz sv´ır´a s vodorovnou rovi- nou ´uhel α = 90ov homogenn´ım t´ıhov´em poli. Na t´eto naklonˇen´e rovinˇe tedy p˚usob´ı t´ıhov´a s´ıla ~FG(v naˇsem pˇr´ıpadˇe FG = 0,5886 N, toto je vypoˇc´ıt´ano z hmotnosti vozu o 60 g). Na tot´eˇz tˇeleso p˚usob´ı i reakˇcn´ı s´ıla ~FR naklonˇen´e roviny, tato s´ıla je kolm´a na naklonˇenou rovinu. T´ıhovou silou p˚usob´ı na tˇeleso Zemˇe a reakˇcn´ı silou p˚usob´ı naklonˇen´a rovina. Pohybovou s´ılu ~Fp, kter´a uv´ad´ı tˇeleso na naklonˇen´e rovinˇe do po- hybu, m˚uˇzeme z´ıskat tak´e tak, ˇze t´ıhovou s´ılu ~FG rozloˇz´ıme na dvˇe navz´ajem kolm´e sloˇzky: norm´alovou s´ılu ~Fn, kter´a je kolm´a k podloˇzce, a pohybovou s´ılu ~Fp, kter´a je rovnobˇeˇzn´a s naklonˇenou rovinou. Velikost sil ~Fn a ~Fp m˚uˇzeme vyj´adˇrit pomoc´ı go- niometrick´ych funkc´ı k ´uhlu α. Tady se opˇet dost´av´ame k extr´emu m´eho probl´emu, uvedu na dosazen´ı :

Fp = FG· sin α (2.1)

Fp = 0, 5886 · 1 = 0, 5886 N (2.2)

Fn= FG· cos α (2.3)

Fn= 0, 5886 · 0 = 0 N. (2.4)

Tady vid´ıme, ˇze norm´alov´a s´ıla ~Fn se rovn´a nule a pohybov´a s´ıla ~Fp = ~FG. Z toho vypl´yv´a, ˇze aby se naˇse vozidlo udrˇzelo ve vertik´aln´ı poloze, mus´ı b´yt norm´alov´a s´ıla F~n minim´alnˇe rovna t´ıhov´e s´ıle ~FG. Kdyˇz v´ıme, jak´a je minim´aln´ı s´ıla pro udrˇzen´ı vozidla, budeme jeˇstˇe potˇrebovat zjistit minim´aln´ı s´ılu, kter´a mus´ı b´yt vynaloˇzena, aby se mohlo vozidlo zaˇc´ıt pohybovat. V tomto pˇr´ıpadˇe mus´ıme uvaˇzovat jeˇstˇe tak´e se s´ılou smykov´eho tˇren´ı ~Ft, kter´a p˚usob´ı mezi tˇelesem a naklonˇenou rovinou. Tˇrec´ı s´ıla p˚usob´ı vˇzdy proti smˇeru pohybu vozidla a leˇz´ı ve styˇcn´ych ploch´ach obou tˇeles.

Velikost tˇrec´ı s´ıly lze ps´at ve tvaru

F~t= f · ~Fn, (2.5)

Ft= 0, 87 · 0, 5886 = 0, 512082 N, (2.6) kde f, v naˇsem pˇr´ıpadˇe budeme uvaˇzovat, ˇze f = 0, 87 (souˇcinitel smykov´eho tˇren´ı mezi sklem a gumou), je souˇcinitel smykov´eho tˇren´ı mezi tˇelesem a naklonˇenou rovinou. Vztah

F~p− ~Fn= m · ~a (2.7)

je analogick´y ke vztahu

F~p = m · ~a, (2.8)

(17)

kter´y platil pro pˇr´ıpad zanedbateln´eho tˇren´ı (~a = 9, 81 m/s2). Po dosazen´ı n´am vypl´yv´a m = 0,0078 kg. Pˇr´ıtlaˇcn´y syst´em mus´ı vyvinout takovou s´ılu, aby zvl´adnul vytvoˇrit dostateˇcnou s´ılu ~Fn a pˇrekonal jeˇstˇe s´ılu smykov´eho tˇren´ı ~Ft. N´azorn´a uk´azka vˇsech sil je na obr´azku 2.3. Z tˇechto v´ysledk˚u m˚uˇzeme vyvodit, ˇze n´aˇs mo- del vozu by se mˇel udrˇzet ve vertik´aln´ı poloze, protoˇze se vypoˇcten´e hodnoty ani nepˇribl´ıˇzily otestovan´e hmotnosti 130 g (Fn = 1,275 N), jeˇz je hraniˇcn´ı hmotnost pro udrˇzen´ı se ve vertik´aln´ı pozici tohoto modelu. To je v naˇsem pˇr´ıpadˇe splnˇeno, protoˇze vozidlo v´aˇz´ıc´ı 60 g mus´ı, pˇri vertik´aln´ım pohybu na skle, pˇrekonat p˚usob´ıc´ı s´ıly kter´e se rovnaj´ı 0,665 N.

F

F F

F

F

R

G n t

P

Alfa

Obr´azek 2.3: S´ıly p˚usob´ıc´ı na vozidlo na vertik´aln´ı ploˇse

2.3 PWM

V kapitole 2.5 se dozv´ıme, ˇze budeme potˇrebovat ˇr´ıdic´ı jednotku s v´ystupy umoˇzˇnuj´ıc´ı PWM [10]. Ot´aˇcky stejnosmˇern´ych motor˚u se ˇr´ıd´ı velikost´ı napˇet´ı, pr´avˇe proto se vyuˇz´ıv´a t´eto modulace. PWM je zkratka z anglick´eho pojmu Pulse With Modu- lation, ˇcesky pulznˇe ˇs´ıˇrkov´a modulace. Je to metoda k dosaˇzen´ı analogov´eho v´ystupu s digit´aln´ımi prostˇredky. Digit´aln´ı ovl´ad´an´ı je vyuˇzito k vytvoˇren´ı obd´eln´ıkov´eho sign´alu. To je dosaˇzeno tak, ˇze se v´ystup pˇrep´ın´a mezi zapnut´ym stavem a stavem vypnut´ym. Tento postup m˚uˇze simulovat napˇet´ı mezi pln´ym zapnut´ım (v naˇsem pˇr´ıpadˇe 3,3 V) a vypnut´ım (0 V). Zmˇenou ˇcasu na v´ystupu urˇcujeme, kolik ˇcasu str´av´ı v zapnut´em reˇzimu oproti reˇzimu vypnut´emu. Pomˇer tˇechto ˇcas˚u se naz´yv´a stˇr´ıda. Perioda v PWM je ˇcas, kdy dojde k pˇrenesen´ı jedn´e stˇr´ıdy. Podle velikosti stˇr´ıdy se pak ˇr´ıd´ı rychlost ot´aˇcen´ı motoru. Kdyˇz je stˇr´ıda mal´a, pr˚umˇern´e napˇet´ı je n´ızk´e a motor se ot´aˇc´ı pomalu, kdyˇz je naopak stˇr´ıda vetˇs´ı, zvˇetˇs´ı se i pr˚umˇern´e napˇet´ı a motor se ot´aˇc´ı rychleji (viz obr´azek 2.4).

(18)

Obr´azek 2.4: Pulznˇe ˇs´ıˇrkov´a modulace (PWM)

2.4 H-m˚ ustek

V pˇredeˇsl´e kapitole jsme se dozvˇedˇeli, co potˇrebuje k ˇr´ızen´ı stejnosmˇern´ych motor˚u.

V t´eto kapitole se dozv´ıme, co vyuˇzijeme k tomu, aby se motory mohli toˇcit v obou smˇerech. H-m˚ustek [8] je elektronick´y obvod, kter´y umoˇzˇnuje vyuˇz´ıt napˇet´ı v obou smˇerech. V m´em pˇr´ıpadˇe je tento obvod urˇcen pro ot´aˇcen´ı stejnosmˇern´ych motor˚u obˇema smˇery. Term´ın H-m˚ustek se pouˇz´ıv´a d´ıky typick´emu grafick´emu zn´azornˇen´ı tˇechto obvod˚u. Toto zapojen´ı se skl´ad´a ze ˇctyˇr sp´ınaˇc˚u (vˇetˇsinou tranzistor˚u). Pokud jsou sp´ınaˇce S1 a S4 (viz obr´azek 2.5) sepnuty a sp´ınaˇce S2 a S3 rozepnuty, bude se motor ot´aˇcet jedn´ım smˇerem. Kdyˇz tuto situaci otoˇc´ıme, tok proudu se obr´at´ı a motor se bude ot´aˇcet opaˇcn´ym smˇerem.

2.5 Poˇ zadavky na ˇ r´ıdic´ı jednotku

R´ıdic´ı jednotka modelu musela splˇˇ novat n´asleduj´ıc´ı poˇzadavky. Vnitˇrn´ı uspoˇr´ad´an´ı modelu by se podle funkˇcnosti mˇelo liˇsit co moˇzn´a nejm´enˇe od p˚uvodn´ıho (viz obr´azek 2.6). Nejd˚uleˇzitˇejˇs´ı je jej´ı velikost, hmotnost, nap´ajen´ı pomoc´ı baterie s napˇe- t´ım 3,7 V a schopnost ˇr´ıdit nˇekolik stejnosmˇern´ych motor˚u pomoc´ı PWM v´ystup˚u.

Jednotka by mˇela tak´e obsahovat i dalˇs´ı digit´aln´ı a analogov´e vstupn´ı/v´ystupn´ı (I/O) piny pro dalˇs´ı rozˇsiˇrov´an´ı modelu. Velikost a hmotnost jsou velmi d˚uleˇzit´e, jednotka

(19)

S1

S4 S3

S2 V M

I

in

Obr´azek 2.5: Zapojen´ı s vyuˇzit´ım H-m˚ustku

se mus´ı vej´ıt do podvozku vozu, jehoˇz rozmˇery jsou znaˇcnˇe omezeny, a nesm´ı m´ıt moc velkou celkovou hmotnost (viz kapitola 2.1.1), aby byl model schopn´y udrˇzet se na vertik´aln´ı ploˇse a tak´e se po n´ı pohybovat. Nap´ajen´ı z baterie poslouˇz´ı k tomu, aby model nebyl omezen´y ve sv´em pohybu. Napˇet´ı baterie bude stejn´e, jako bylo ve standardn´ım modelu (3,7 V), aby se dala pˇrevz´ıt pohonn´a soustava.

Standardní řídicí jednotka

Přijímač IR signálu Baterie

Motor 1 Motor 2

Ventilátor

Obr´azek 2.6: Blokov´e sch´ema p˚uvodn´ıho modelu

(20)

3 Pouˇ zit´ y hardware

3.1 R´ıdic´ı jednotka ˇ

Pro ´uˇcely pr´ace se jako nejlepˇs´ı jevila ˇr´ıdic´ı jednotka Arduino Fio (viz obr´azek 3.1), jej´ım z´aladem je 8bitov´y mikrokontrol´er zaloˇzen´y na architektuˇre RISC ATmega328P od firmy Atmel [5]. Spoleˇcnˇe s mikrokontrol´erem je na t´eto jednotce tak´e obvod MAX1555 a obvod XBEE-1B3, o kter´ych se jeˇstˇe zm´ın´ıme n´ıˇze. Tato ˇr´ıdic´ı jed- notka, s rozmˇery 27,9×66 mm a hmotnost´ı 9 g, m´a parametry:

• 14 digit´aln´ıch v´ystup˚u (z toho 6 umoˇzˇnuje PWM),

• 8 analagov´ych pin˚u,

• frekvence 8 MHz,

• pamˇet’ typu flash o velikosti 32 KB,

• operaˇcn´ı napˇet´ı je 3,3 V,

• vstupn´ı napˇet´ı 3,35–12 V,

• vstupn´ı napˇet´ı pro nab´ıjen´ı 3,7–7 V.

Arduino Fio m˚uˇze b´yt nap´ajeno dvˇema zp˚usoby, prvn´ı z nich je pomoc´ı rozhran´ı USB, druh´a varianta je nap´ajen´ı z baterie o napˇet´ı 3,7 V. Je-li k Arduinu pˇripojena baterie, tak zm´ınˇen´e USB funguje jako port pro jej´ı nab´ıjen´ı. Vybran´a baterie v´aˇz´ı 21 g. K nahr´an´ı programu do Arduina slouˇz´ı rozˇsiˇruj´ıc´ı ploˇsn´y spoj, FTDI Basic Breakout adaptor [6], obsahuj´ıc´ı port USB (viz obr´azek 3.2). Vˇzdy, kdyˇz se nahraje nov´y algoritmus, tento ploˇsn´y spoj vyvol´a pˇreruˇsen´ı a automaticky resetuje ˇr´ıdic´ı jednotku, nov´y program pak bˇeˇz´ı okamˇzitˇe bez z´asahu uˇzivatele.

MAX1555

Toto je mal´y integrovan´y obvod, kter´y na desce Arduina slouˇz´ı k bezeˇcn´emu a spr´avn´emu nab´ıjen´ı Li-polymerov´e baterie pˇres USB port. Maxim´aln´ı proud pro toto zaˇr´ızen´ı je 300 mA a nab´ıjec´ı napˇet´ı je mezi 3,7–7 V. Nevyˇzaduje t´emˇeˇr ˇ

z´adn´e extern´ı komponenty a automaticky vybere mezi nap´ajen´ım pomoc´ı USB nebo stejnosmˇern´ym zdrojem (baterie). Po dokonˇcen´ı nab´ıjen´ı se sn´ıˇz´ı pˇr´ıvod proudu.

(21)

XBEE-1B3

Tento modul na desce Arduina se d´a rozˇs´ıˇrit o Wi-Fi modul se standardem IEEE 802.15.4. Pro ˇr´ızen´ı nebo pˇripojen´ı do mal´ych bezdr´atov´ych s´ıt´ı nebo pro vyuˇzit´ı bezdr´atov´eho ovl´adn´ı.

Obr´azek 3.1: Arduino Fio [4]

Obr´azek 3.2: FTDI Basic Breakout adaptor [6]

3.2 Dvojit´ y H-m˚ ustek DRV8835

Pro ˇr´ızen´ı pojezdov´ych kol, kter´e jsou na stran´ach podvozku, potˇrebujeme H-m˚ustek.

Naˇs´ım ´uˇcel˚um nejl´epe vyhovoval integrovan´y du´aln´ı H-m˚ustek s oznaˇcen´ım DRV- 8853 [11]. Tato souˇc´astka od v´yrobce Texas Instruments je urˇcena pro ˇr´ızen´ı dvou stejnosmˇern´ych motor˚u v obou smˇerech pˇri pouˇzit´em nap´ajen´ı 0–11 V a proudu maxim´alnˇe do 1,2 A (chvilkovˇe dok´aˇze sn´est i 1,5 A). Tento integrovan´y obvod m´a 14 pin˚u, z nichˇz jsou dva urˇceny pro pˇripojen´ı na zem (GND), dalˇs´ı dva pro nap´ajen´ı motor˚u a samotn´eho obvodu, dva pro ovl´ad´an´ı ot´aˇcek motor˚u pomoc´ı PWM, dva pro urˇcov´an´ı smˇeru ot´aˇcen´ı (logick´a 0 nebo 1), jeden pro m´od obvodu (standardnˇe log. 1) a ˇctyˇri pro samotn´e pˇripojen´ı dvou stejnosmˇern´ych motor˚u nebo jednoho krokov´eho motoru. Tento obvod se prod´av´a na rozˇsiˇruj´ıc´ı desce [12], kter´a s n´ım usnadˇnuje pr´aci a je vybavena ochrann´ymi prvky proti pˇrepˇet´ı, nedostateˇcn´emu napˇet´ı a velk´emu proudu.

(22)

4 Sestaven´ı a zapojen´ı modelu

P˚uvodn´ı myˇslenka na pˇrepracov´an´ı modelu poˇc´ıtala s t´ım, ˇze cel´y model bude ˇr´ızen pˇres ˇr´ıdic´ı jednotku a nap´ajen jednou bateri´ı, jenˇz nap´aj´ı i jednotku. Zn´azornˇeno na blokov´em sch´ema (viz obr´azek 4.1). Tato baterie s vˇetˇs´ı kapacitou neˇz ta p˚uvodn´ı (3,7 V, 220 mAh) by mˇela z´asobovat napˇet´ım jak ˇr´ıdic´ı jednotu, tak vˇsechny 3 stej- nosmˇern´e motory. Toto ˇreˇsen´ı mˇelo m´ıt za n´asledek ´usporu hmotnosti. N´asledoval n´avrh zapojen´ı cel´eho syst´emu a jeho realizace. Prvotn´ı schm´ema zapojen´ı (v pˇr´ıloze C.1) obsahuje tˇri hlavn´ı ˇc´asti, digit´aln´ı v´ystupy ˇr´ıdic´ı jednotky Arduino Fio, zapojen´ı sp´ınac´ıho tranzistoru pro ˇr´ızen´ı stejnosmˇern´eho motoru s ventil´atorem a zapojen´ı dvojit´eho H-m˚ustku pro ˇr´ızen´ı pojezdov´ych motor˚u.

Toto zapojen´ı, at’ vcelku jednoduch´e, se uk´azalo dosti problematick´e. Baterie, kter´a by mˇela nap´ajet vˇsechny ˇc´asti modelu najednou, je moc mˇekk´y zdroj. Mˇekk´e zdroje jsou zdroje s vnitˇrn´ım odporem vˇetˇs´ım neˇz 1 Ω. V praxi to znamen´a, ˇze pˇri z´asobov´an´ıˇr´ıdic´ı jednotky a dalˇs´ıch indukˇcnost´ı (motor˚u) dojde k prudk´emu kol´ıs´an´ı napˇet´ı a ˇr´ıdic´ı jednotka se resetuje. Bylo vyzkouˇseno nˇekolik moˇzn´ych postup˚u, jak tento probl´em vyˇreˇsit napˇr.: pˇred stejnosmˇern´e motory byly d´any dva paralelnˇe za- pojen´e rezistory (toto ˇreˇsen´ı mˇelo za n´asledek velk´y ´ubytek napˇet´ı a neefektivn´ı ˇr´ızen´ı), pˇredˇradn´a indukce, kter´a nemˇela ˇz´adn´y zlepˇsuj´ıc´ı v´ysledek atd. Nakonec se pˇristoupilo k nejsch˚udnˇejˇs´ımu a bezprobl´emov´emu ˇreˇsen´ı. ˇR´ıdic´ı jednotka a vˇsechny motory maj´ı oddˇelen´e zdroje nap´ajen´ı. Zde naˇsla vyuˇzit´ı baterie (3,7 V, 220 mAh), jeˇz se nach´azela v zakoupen´em modelu, a vyuˇzila se pro nap´ajen´ı motor˚u. Velk´a baterie (3,7 V, 1000 mAh), kter´a mˇela nap´ajet vˇsechna zaˇr´ızen´ı modelu, byla nahra- zena menˇs´ı bateri´ı o kapacitˇe 350 mAh. Sch´ema zapojen´ı k tomuto ˇreˇsen´ı nen´ı o tolik rozd´ıln´e od p˚uvodn´ıho (viz pˇr´ıloha C.2).

4.1 Ultrazvukov´ y senzor

Nad takto sestaven´ym modelem vozidla se d´ale uvaˇzovalo, jak ho rozˇs´ıˇrit tak, aby bylo zajiˇstˇeno jeho autonomn´ıˇr´ızen´ı. Jako elegantn´ıˇreˇsen´ı se nab´ıdlo pˇripojen´ı ultra- zvukov´eho senzoru HC-SR04 [13]. Tento senzor vys´ıl´a ultrazvukov´y sign´al o frekvenci 40 kHz, kter´y je vybuzen vstupn´ım sign´alem z ˇr´ıdic´ı jednotky o minim´aln´ı d´elce 10 mikrosekund. Pokud se tento sign´al setk´a s pˇrek´aˇzkou v rozmez´ı od 2–40 cm, tak se vr´at´ı zpˇet k senzoru, a ten d´a hodnotu o vzd´alenosti v mikrosekund´ach. Takto vybaven´y model by byl schopn´y se vyh´ybat pˇrek´aˇzk´am do urˇcen´e vzd´alenosti. Popis algoritmu je v kapitole 5.2.1. Probl´emem se stalo nap´ajen´ı cel´eho senzoru. Senzor HC-SR04 by mˇel b´yt nap´ajen napˇet´ım 5 V, nˇekter´e zdroje ovˇsem ud´avaly, ˇze funguje

(23)

Řídicí jednotka

Modul pro další rozšíření

Duální H-můstek

Motor 1

Motor 2 Ventilátor

Baterie

USB

Obr´azek 4.1: Blokov´e sch´ema pˇrepracovan´eho modelu

i na napˇet´ı 3,3 V, na kter´em pracuje cel´e naˇse zaˇr´ızen´ı. Tato informace se uk´azala jako chybn´a a senzor nap´ajen napˇet´ım 3,3 V nevykazuje nic jin´eho neˇz velmi zane- dbateln´y ˇsum.

4.2 Optick´ y senzor

K dispozici jsme mˇeli tak´e jiˇz vyzkouˇsen´e optick´e senzory CNY70 [14]. Tento re- flektivn´ı senzor obsahuje IR emitor a fototranzistor v pouzdˇre z nepr˚usvitn´eho ma- teri´alu. Senzor CNY70 je schopn´y rozeznat b´ılou nebo ˇcernou barvu podkladu. Mo- del vozidla s t´ımto senzorem by byl schopn´y sledovat ˇcernou (nebo b´ılou, z´aleˇz´ı na barvˇe povrchu, na kter´em se pohybuje) ˇc´aru nebo se volnˇe pohybovat v ohraniˇcen´em poli. Aby se daly dobˇre ˇc´ıst informace z tohoto senzoru, byl jeho v´ystup pˇripojen na analogov´y pin. U analogov´ych pin˚u m´ame rozsah hodnot od 0 do 1023 a d´a se s nimi l´epe a pˇresnˇeji pracovat. Senzor byl zapojen tak, jak je vidˇet na sch´ematu zapojen´ı C.2. Takto vypad´a fin´aln´ı ˇreˇsen´ı naˇseho modelu, pro kter´y bylo n´aslednˇe napsan´ano nˇekolik ˇr´ıdic´ıch algoritm˚u pro jeho autonomn´ı pohyb. Tyto algoritmy jsou pops´any v n´asleduj´ıc´ı kapitole. Vzhled a blokov´e sch´ema fin´alnˇe vylepˇsen´eho modelu s pˇr´ısavn´ym syst´emem vozu najdede na obr´azku 4.2 a 4.3 .

(24)

Řídicí jednotka

Duální H-můstek

Motor 1

Motor 2 Ventilátor

Baterie 1

USB

Baterie 2

CNY70

Obr´azek 4.2: Fin´aln´ı blokov´e sch´ema modelu vozidla s pˇr´ıtlaˇcn´ym syst´emem

Obr´azek 4.3: Fin´aln´ı vzhled vytvoˇren´eho modelu vozidla s pˇr´ıtlaˇcn´ym syst´emem

(25)

5 Software

Mikrokontrol´er ATmega328P na desce Arduino Fio m´a v sobˇe pˇred-nahran´y bootlo- ader, kter´y umoˇzˇnuje nahr´at nov´y k´od bez extern´ıho zaˇr´ızen´ı komunikuj´ıc´ı mezi mikrokontrol´erem a PC. Tento bootloader komunikuje pomoc´ı origin´aln´ıho pro- tokolu STK500 [15]. Existuj´ı dva postupy, jak nahr´at do Arduina nov´e ˇr´ıdic´ı al- goritmy. Prvn´ı je pouˇzit´ım FTDI USB se seriov´ym kabelem nebo, jako v naˇsem pˇr´ıpadˇe, vyuˇzit´ım seriov´eho adaptoru s rozhran´ım USB. Druh´a moˇznost je vyuˇzit´ım XBee rozˇs´ıˇren´ı pro pˇrenos programu bezdr´atovˇe. Samotn´e programov´an´ı pak prob´ıh´a v open-source Arduino Software (IDE) [16]. Pro programov´an´ı ˇr´ıdic´ıch algoritm˚u se vyuˇz´ıv´a jazyk podobn´y C/C++. Programy v Arduinu mohou b´yt rozdˇeleny do tˇr´ı hlavn´ıch ˇc´ast´ı struktury, hodnoty (promˇenn´e a konstanty) a funkce.

5.1 Z´ akladn´ı funkce

Program pro ˇr´ıdic´ı jednotku Arduino Fio je sestaven ze dvou hlavn´ıch ˇc´ast´ı. Jsou to dvˇe struktury, struktura setup() a loop(). Prvn´ı z uveden´ych, funkce setup(), je zavol´ana vˇzdy na zaˇc´atku programu. Vyuˇz´ıv´a se pro inicializov´an´ı promˇenn´ych, m´od˚u pro piny, zaˇc´ın´a vyuˇz´ıvat knihovny apod. Funkce setup() je zavol´ana pouze jednou, pokaˇzd´e kdy je zapnuto nap´ajen´ı nebo po resetov´an´ı obvodu. Pot´e, co probˇehne funkce setup(), kter´a vˇse inicializuje a nastav´ı hodnoty, funkce loop() dˇel´a pˇresnˇe to, co jej´ı n´azev napov´ıd´a a je proch´azena ve smyˇck´ach, tak n´am umoˇzˇnuje reagovat a mˇenit n´aˇs program. Uvedu jednoduch´y pˇr´ıklad.

// O v l a d a n i DC motoru s v e n t i l a t o r e m i n t motorPin = 3 ;

void s e t u p ( ) {

pinMode ( motorPin , OUTPUT) ; }

void l o o p ( ) {

a n a l o g W r i t e ( motorPin , 2 5 5 ) ; }

Jako prvn´ı ˇr´adek programu m´ame stanoven´ı glob´aln´ı promˇenn´e, v tomto pˇr´ıpadˇe nastavuje pin kter´y budeme vyuˇz´ıvat. N´asleduje jiˇz popisovan´a funkce setup(), ve

(26)

kter´e nastavuji pin 3 jako v´ystupn´ı, a to funkc´ı pinMode(). Prvn´ı parametr v t´eto funkci se zad´av´a ˇc´ıslo pinu a jako druh´y parametr se urˇcuje, jestli bude vstupn´ı INPUT nebo v´ystupn´ı OUTPUT. Pot´e, co m´ame vˇse nastaveno, se spust´ı funkce loop(). Tady v t´eto ˇc´asti urˇc´ıme, co a jak chceme s dan´ym pinem dˇelat. V tomto jednoduch´em pˇr´ıpadˇe funkc´ı analogWrite() nastavujeme hodnotu PWM a ˇc´ıslem od 0 do 255 nastavujeme ˇs´ıˇrku pulzu. Funkce analogWrite() n´am bude generovat stabiln´ı obd´eln´ıkov´y v´ystup na urˇcen´em pinu a v urˇcen´em pracovn´ım cyklu aˇz do dalˇs´ıho zavol´an´ı analogWrite(). Frekvence sign´alu PWM je pro ˇcasovaˇc 0 (timer0) 488,28 Hz, tento ˇcasovaˇc ovl´ad´a piny 5 a 6, u ˇcasovaˇc˚u 1 a 2 (timer1 a timer2) ovl´adaj´ıc´ıch piny 9, 10, 11 a 3 je frekvence 245,1 Hz. Kaˇzd´y z ˇcasovaˇc˚u m´a pˇred- nastaven´y dˇeliˇc syst´emov´ych hodin pro generov´an´ı PWM, zde m´ame pˇrednastaven´e faktory 1, 8, 64, 256 a 1024. Standardnˇe je nastaven dˇelic´ı faktor 64. Toto se d´a softwarovˇe zmˇenit pomoc´ı ovl´ad´an´ı registr˚u ˇc´ıtaˇc˚u. Zde je uk´azka k´odu funkce, jenˇz mˇen´ı nastaven´ı frekvence PWM.

void setPwmFrequency ( i n t pin , i n t d i v ) { b y t e mode ;

// v y b e r f a k t o r u d e l e n i pro c a s o v a c e 0 a 1

i f ( p i n == 5 | | p i n == 6 | | p i n == 9 | | p i n == 1 0 ) { switch ( d i v ) {

case 1 : mode = 0 x01 ; break ; case 8 : mode = 0 x02 ; break ; case 6 4 : mode = 0 x03 ; break ; case 2 5 6 : mode = 0 x04 ; break ; case 1 0 2 4 : mode = 0 x05 ; break ; d ef au lt : return ;

}

i f ( p i n == 5 | | p i n == 6 ) { // n a s t a v e n i c a s o v a c e 0

TCCR0B = TCCR0B & 0 b11111000 | mode ; } e l s e {

// n a s t a v e n i c a s o v a c e 1

TCCR1B = TCCR1B & 0 b11111000 | mode ; }

// v y b e r f a k t o r u d e l e n i pro c a s o v a c e 2 } e l s e i f ( p i n == 3 | | p i n == 1 1 ) {

switch ( d i v ) {

case 1 : mode = 0 x01 ; break ; case 8 : mode = 0 x02 ; break ; case 3 2 : mode = 0 x03 ; break ; case 6 4 : mode = 0 x04 ; break ; case 1 2 8 : mode = 0 x05 ; break ; case 2 5 6 : mode = 0 x06 ; break ; case 1 0 2 4 : mode = 0 x7 ; break ; d ef au lt : return ;

}

(27)

// n a s t a v e n i c a s o v a c e 2

TCCR2B = TCCR2B & 0 b11111000 | mode ; }

}

Zmˇenou frekvence PWM sign´alu se u nˇekter´ych motor˚u d´a dos´ahnout vˇetˇs´ıho v´ykonu.

V m´em pˇr´ıpadˇe jsem t´ımto chtˇel dos´ahnout vˇetˇs´ıho v´ykonu na ventil´atoru, a t´ım i vˇetˇs´ı stability na vertik´aln´ı ploˇse. Uk´azalo se vˇsak, ˇze u takto mal´ych stejnosmˇern´ych motor˚u je zmˇena minim´aln´ı a nejd˚uleˇzitˇejˇs´ı je ˇs´ıˇrka pulzu PWM.

5.2 Popis testovac´ıch algoritm˚ u pro senzory HC-SR04 a CNY70

5.2.1 HC-SR04

V kapitole 4.1 jsme se zm´ınili o ultrazvukov´em senzoru HC-SR04. Senzor obsahuje 4 piny, a to nap´ajec´ı, uzemˇnovac´ı a pro n´as nejd˚uleˇzitˇejˇs´ı pin trig a echo. Ve funkci setup() si nastav´ıme oba tyto piny tak, ˇze pin trig bude OUTPUT a pin echo bude INPUT. Pˇres pin echo ze senzoru pˇrich´az´ı informace, jestli vyslan´y sign´al pˇres pin trig, kter´y je realizov´an 10 mikrosekundov´ym pulzem, narazil na nˇejakou pˇrek´aˇzku ve sv´em rozsahu, pokud ano, vr´at´ı n´am ˇc´ıslo. Na toto dobˇre vyuˇzijeme funkci pul- seIn(pin, hodnota), jenˇz pˇreˇcte pˇr´ıchoz´ı pulz na pin. Napˇr. pokud je nastavena hodnota HIGH (log. 1), funkce pulseIn() ˇcek´a, kdy se na pinu objev´ı log. 1 a zaˇcne poˇc´ıtat uplynul´y ˇcas do t´e doby neˇz se na pinu objev´ı log. 0 a vr´at´ı ˇcas v mik- rosekund´ach. S t´ımto ˇcasem je d´al potˇreba pracovat, abychom dostali v´yslednou vzd´alenost pˇrek´aˇzky, nach´azej´ıc´ı se pˇred senzorem. Rychlost zvuku v pokojov´ych podm´ınk´ach je zhruba 340 m/s nebo 29,1 cm/µs. Vezeme tedy ˇcas, jenˇz n´am vr´atil senzor HC-SR04 v mikrosekund´ach a vydˇel´ıme ho rychlost´ı ˇs´ıˇren´ı zvuku. V´ysledn´e ˇc´ıslo opˇet vydˇel´ıme, a to ˇc´ıslem 2. D˚uvod je ten, ˇze ˇcas, kter´y n´am vr´at´ı senzor, je poˇc´ıtan´y za cestu tam a zpˇet. N´am tedy bude staˇcit poloviˇcn´ı ´udaj. Testovac´ı algoritmus byl tak´e doplnˇen o v´ypisy na seriov´y monitor, aby se dalo otestovat, zda mˇeˇr´ı vzd´alenost v poˇr´adku. Cel´y testovac´ı k´od je v pˇr´ıloze D.2.

5.2.2 CNY70

Testovac´ı algoritmus pro optick´y senzor CNY70 je celkovˇe jednoduˇs´ı neˇz v pˇredeˇsl´em pˇr´ıpadˇe. Tento optick´y senzor, kter´y m´a v sobˇe IR emitor a fototranzistor, sn´ım´a povrch, kter´y je pˇred n´ım a dok´aˇze dobˇre rozeznat, jestli je povrch svˇetl´y (b´ıl´y), nebo ˇcern´y. Pro ˇcten´ı tˇechto hodnot vyuˇzijeme funkci analogRead(pin), pˇred t´ım ovˇsem mus´ıme nastavit tento pin na INPUT. Funkce analogRead() ˇcte hodnoty z dan´eho analogov´eho pinu. Arduino obsahuje 8 kan´al˚u s 10-bitov´ym A/D pˇrevodn´ıkem. To znamen´a, ˇze vstupn´ı napˇet´ı mezi 0 a 3,3 V rozloˇz´ı na hodnotu v integeru od 0 aˇz do 1023. Z toho vych´az´ı, ˇze m´ame rozliˇsen´ı vstupu 3,2 mV na jednotku. Pˇreˇcten´ı t´eto jednotky trv´a 100µs. Takto nastaven´y testovac´ı algoritmus byl doplnˇen o v´ypisy na seriov´y monitor pro moˇznost testov´an´ı.

(28)

5.3 Popis ˇ r´ıdic´ıch algoritm˚ u s vyuˇ zit´ım senzoru CNY70

Pro fin´aln´ı verzi modelu s pˇr´ısavn´ym syst´emem bylo naps´ano nˇekolik ˇr´ıdic´ıch al- goritm˚u, jenˇz pro autonomn´ı ˇr´ızen´ı vyuˇz´ıvaj´ı optick´y senzor CNY70. Oba z tˇechto algoritm˚u maj´ı stejn´e z´akladn´ı nastaven´ı v´ystup˚u pro ˇr´ızen´ı vˇsech motor˚u a ven- til´atoru v tˇele funkce setup() a jednu z´akladn´ı podm´ınku pro spuˇstˇen´ı algoritmu aˇz po 5 sekund´ach od spuˇstˇen´ı nap´ajen´ı.

5.3.1 Algoritmus pro udrˇ zen´ı vozidla v ohraniˇ cen´ em poli

Prvn´ı z algoritm˚u je naps´an tak, aby se vozidlo na vertik´aln´ı ploˇse pohybovalo v poli ohraniˇcen´em ˇcern´ym okrajem (realizov´ano ˇcernou p´askou). Jak jsme zjistili pomoc´ı testov´an´ı (viz n´asleduj´ıc´ı kapitola 6.3), senzor pˇri detekci ˇcern´e barvy vrac´ı na analo- gov´y pin A0, pomoc´ı funkce analogRead(pin), hodnoty do ˇc´ısla 200. Tohoto velmi jednoduˇse vyuˇzijeme, a to tak, ˇze do tˇela funkce loop() d´ame podm´ınku. Pokud hodnota na pinu A0 klesne pod 200, znamen´a to, ˇze pˇredek vozu, kde je pˇripevnˇen senzor, narazil na hraniˇcn´ı ˇc´aru pole, ve kter´em se pohybuje, spust´ı se k´od podm´ınky a vozidlo o kousek zacouv´a a otoˇc´ı se. Pokud tato podm´ınka nen´ı splnˇena, vozidlo se st´ale pomalu pohybuje smˇerem vpˇred. Program obsahuje nˇekolik vlastn´ıch funkc´ı, kter´e realizuj´ı k´od pro j´ızdu vpˇred, vzad, ot´aˇcen´ı a zastaven´ı motor˚u. Tyto funkce maj´ı vstupn´ı hodnotu integer, kde ud´av´ame velikost PWM. Program se d´a tak jed- noduˇse mˇenit dle potˇreby. K´od je tak´e doplnˇen o v´ypisy na seriov´y monitor pro jeho odladˇen´ı.

5.3.2 Algoritmus pro ops´ an´ı a udrˇ zen´ı se ve vyznaˇ cen´ e dr´ aze

Druh´y algoritmus pro realizaci ˇr´ızen´ı vyuˇz´ıv´a dr´ahy, kter´a je ohraniˇcena dvˇema ˇcern´ymi p´askami, a vozidlo je schopn´e opsat tvar dr´ahy t´ım, ˇze bude jezdit od jednoho kraje ke druh´emu, jak je zn´azornˇeno na obr´azku 5.1. Poˇc´ıt´a se s t´ım, ˇze startovn´ı pozice vozu je naklonˇen´a k prav´emu okraji (ˇc´aˇre) oznaˇcuj´ıc´ı trat’. Opˇet vyuˇz´ıv´ame hodnot na pinu A0, ˇcten´e funkc´ı analogRead(). V tˇele funkce loop() m´ame stejnou podm´ınku jako v pˇredeˇsl´em pˇr´ıpadˇe, pokud hodnota na pinu A0, ukl´adan´a do promˇenn´e integer s n´azvem value, klesne pod hodnotu 200 vyvol´a se dalˇs´ı podm´ınka. V t´eto podm´ınce vyuˇz´ıv´ame dvˇe pomocn´e promˇenn´e typu integer a to temp a temp2. Promˇenn´a temp2 se zvˇetˇs´ı o hodnotu 1 pokaˇzd´e, kdy vozidlo naraz´ı na hraniˇcn´ı ˇc´aru. Abychom zjistili u jak´e ˇc´ary se vozidlo nach´az´ı, vyuˇzijeme promˇennou temp, do kter´e ukl´ad´ame v´ysledek v´ypoˇctu, kde promˇennou temp2 dˇel´ıme modulem dvˇema. Prav´a ˇc´ara z pohledu vozidla a tak´e startovn´ı strana m´a sud´e hodnoty a lev´a strana m´a hodnoty lich´e. Z toho n´am plyne, ˇze pokud je hodnota temp nulov´a, vozidlo je u prav´e ˇc´ary a otoˇc´ı se smˇerem k lev´e ˇc´aˇre, a pokud je hodnota temp vˇetˇs´ı neˇz nula (v´ysledek modula je zbytek po dˇelen´ı dvou ˇc´ısel), nach´az´ı se u lev´e ˇc´ary a zatoˇc´ı vpravo. Pokud hlavn´ı podm´ınka nen9 splnˇena, vozidlo se nach´az´ı mezi ˇc´arami a pohybuje se pomalu smˇerem kupˇredu. T´ımto stylem j´ızdy je vozidlo schopno opsat libovolnou dr´ahu. K´od je opˇet doplnˇen o v´ypisy na s´eriov´y monitor pro lepˇs´ı odladˇen´ı a testov´an´ı. Cel´y algoritmus najdete v pˇr´ıloze D.3.

(29)

lichá

Vozidlo sudá

Obr´azek 5.1: Styl pohybu vozidla mezi ohraniˇcen´ım dr´ahy

(30)

6 Testov´ an´ı

6.1 Testov´ an´ı zapojen´ı ventil´ atoru a frekvence PWM

P˚uvodn´ı zapojen´ı cel´eho syst´emu vozidla poˇc´ıtalo s t´ım, ˇze ho nap´ajen´ım bude z´asobit pouze jedna baterie. Pˇri ˇreˇsen´ı zrovoznˇen´ı pojezdov´ych stejnosmˇern´ych mo- tor˚u jsme museli od t´eto ideje odstoupit a samotn´e motory nap´ajet zvl´aˇst’ jinou bateri´ı, neˇz kterou je nap´ajena ˇr´ıdic´ı jednotka. Pojezdov´e motory pak fungovaly bez probl´em˚u. Stejn´y probl´em se nakonec uk´azal v zapojen´ı a ˇr´ızen´ı ventil´atoru.

Nap´ajen´ı samotn´eho motoru z ˇr´ıdic´ı jednotky zp˚usobovalo jej´ı restartov´an´ı kv˚uli kol´ıs´an´ı napˇet´ı. Takto zapojen´y ventil´ator se toˇcil, ale neˇz se roztoˇcil na pln´y v´ykon, kter´y je u nˇej vyˇzadov´an pro vˇetˇs´ı pˇr´ıtlak, ˇr´ıdic´ı jednotka se nˇekolikr´at restarto- vala. Testovali jsme, jestli nen´ı probl´em v PWM, jenˇz pˇrich´az´ı na sp´ınac´ı tranzistor.

Pˇripojili jsme tedy na v´ystupn´ı pin D3* osciloskop, abychom zjistili, jak vypad´a nastaven´e PWM (softwarovˇe bylo nastaven´e PWM na 75 % v´ykonu). V´ystup na osciloskopu (viz obr´azek 6.1) n´am uk´azal, ˇze v ˇr´ıdic´ı jednotce ani ve v´ystupn´ım pinu probl´em nen´ı. Na tˇechto v´ysledc´ıch jsme si tak´e ovˇeˇrili, ˇze frekvence PWM je skuteˇcnˇe 245,1 Hz. Proto jsme pˇristoupili ke stejn´emu ˇreˇsen´ı jako u pojezdov´ych motor˚u. M´ısto nap´ajen´ı ventil´atoru pˇres ˇr´ıdic´ı jednotku jsme zvolili nap´ajen´ı dalˇs´ı ba- teri´ı (tou samou jako u pojezdov´ych motor˚u). Toto ˇreˇsen´ı vyˇreˇsilo veˇsker´e probl´emy s restartov´an´ım jednoty a ventil´ator se toˇc´ı na pln´y v´ykon bez vˇetˇs´ıch ztr´at napˇet´ı.

Abychom si ovˇeˇrili, jak motor pˇrij´ım´a ˇr´ıdic´ı sign´al PWM, opˇet jsme vyuˇzili oscilo- skop. V´ysledn´y graf vypad´a n´asledovnˇe, viz obr´azek 6.2.

6.2 Testov´ an´ı senzoru HC-SR04

Zde se jen okrajovˇe vr´at´ıme k tomu, co bylo zm´ınˇeno v minul´e kapitole 5.2.1. Pomoc´ı testovac´ıho algoritmu napsan´eho pro tento senzor byla testov´ana jeho funkˇcnost.

Toto testov´an´ı uk´azalo, ˇze senzor nen´ı schopen fungovat spr´avnˇe s nap´ajec´ım na- pˇet´ım, jenˇz m´ame k dispozici (3,3 V). Pomoc´ı v´ystupu na s´eriov´y monitor si m˚uˇzeme uk´azat zpracov´avan´e hodnoty ze senzoru (viz tabulka 6.1). Jak je na t´eto tabulce vidˇet, tak hodnoty duration, kter´e by mˇely obsahovat vzd´alenost pˇrek´aˇzky, jsou sp´ıˇse jen ˇsum zaˇr´ızen´ı, neˇz re´aln´e hodnoty. Po tomto zjiˇstˇen´ı bylo od pouˇzit´ı tohoto senzoru ustoupeno.

(31)

Obr´azek 6.1: PWM zobrazen´e na osciloskopu

Obr´azek 6.2: PWM a sign´al na ventil´atoru

6.3 Testov´ an´ı senzoru CNY70

V pˇredeˇsl´ych kapitol´ach bylo pops´ano zapojen´ı tohoto senzoru a o jeho testovac´ım algoritmus. V prvn´ı verzi zapojen´ı byl vyuˇzit rozd´ıln´y odpor R3 (ze sch´ematu C.2) s hodnotou 1,1 kΩ. Pomoc´ı testovac´ıho algoritmu a modelu propojen´eho s PC jsme dostali na seriov´y monitor tyto hodnoty (tabulka 6.2). Hodnoty pohybuj´ıc´ı se od 0 do 20 reprezentuj´ı, ˇze se pˇred senzorem nach´az´ı objekt z ˇcern´e barvy. Hodnoty kter´e se naopak pohybuj´ı kolem hodnoty 100 reprezentuj´ı barvu b´ılou. Abychom zvˇetˇsili rozsah hodnot pro pˇresnˇejˇs´ı vyuˇzit´ı senzoru, byl odpor R3 C.2 zvˇetˇsen na 47 kΩ.

S t´ımto odporem se rozsah hodnot pohybuje od 0 do 1023, jak je vidˇet v tabulce 6.2. Na tˇechto hodnot´ach je vidˇet, ˇze hodnoty pro ˇcernou barvu se pohybuj´ı od 0 do

(32)

Tabulka 6.1: Data z testovac´ıho algoritmu pro senzor HC-SR04 distance [cm] duration [µs]

0 0

0 2

0 2

0 5

0 2

0 0

0 2

200 (aˇz 250) a pro b´ılou do maxim´aln´ı hodnoty 1023. Tˇechto poznatk˚u jsme vyuˇzili pˇri programov´an´ı autonomn´ıho ˇr´ızen´ı zaloˇzen´eho na tomto optick´em senzoru.

Tabulka 6.2: Uk´azky dat ze zapojen´ı senzoru CNY70 hodnota A/D

Hodnota 109

Hodnota 102

Hodnota 103

Hodnota 102

Hodnota 7

Hodnota 12

Hodnota 0

Hodnota 3

Hodnota 4

Hodnota 4

Hodnota 4

hodnota A/D

Hodnota 989

Hodnota 988

Hodnota 293

Hodnota 294

Hodnota 281

Hodnota 96

Hodnota 43

Hodnota 58

Hodnota 73

Hodnota 78

Hodnota 87

(33)

7 Moˇ znosti dalˇ s´ıho rozˇ s´ıˇ ren´ı

St´avaj´ıc´ı prototyp modelu vozidla s pˇr´ısavn´ym syst´emem by se dal rozˇs´ıˇrit o dalˇs´ı prvky, jenˇz by zlepˇsily schopnosti jeho autonomn´ıho ˇr´ızen´ı. V t´eto kapitole uvedu nˇekolik ˇreˇsen´ı, kter´e by mohly projekt d´ale rozˇs´ıˇrit. U vˇsech tˇechto rozˇs´ıˇren´ı se mus´ı d´at velk´y pozor na koneˇcnou hmotnost modelu. ˇR´ıdic´ı jednota ve st´avaj´ıc´ım zapojen´ı m´a voln´ych 7 analogov´ych pin˚u a 6 digit´aln´ıch pin˚u, z toho 3 s moˇznost´ı PWM.

7.1 Senzorick´ e

7.1.1 Akcelerometr

Akcelerometr je elektromechanick´e zaˇr´ızen´ı, kter´e mˇeˇr´ı zrychlen´ı. Pomoc´ı tohoto zaˇr´ızen´ı m˚uˇzeme urˇcit v jak´em ´uhlu je vozidlo k zemsk´emu povrchu, a t´ım napˇr.

zap´ınat, vyp´ınat ventil´ator nebo korigovat v´ykon pro motory atd. Nab´ız´ı se n´am mnoho r˚uzn´ych ˇreˇsen´ı a tak´e obvod˚u, kter´e se daj´ı vyuˇz´ıt. Uvedu zde napˇr´ıklad ak- celerometr MMA7361 [18] nebo obvod IMU 5DOF IDG500/ADXL335 [19], jenˇz m´a v sobˇe zabudovan´y akcelerometr i gyroskop (gyroskop mˇeˇr´ı ´uhlov´e zrychlen´ı). Oba tyto uveden´e obvody pracuj´ı s napˇet´ım 3,3 V a maj´ı v naˇsem projektu vˇsestrann´e vyuˇzit´ı. Pro oba obvody se daj´ı vyhledat knihovny pro ˇr´ıdic´ı jednotku Arduino Fio.

7.2 Komunikaˇ cn´ı

7.2.1 Rozhran´ı XBee

R´ıdic´ı jednotka Arduino Fio obsahuje pˇripraven´ˇ e rozhran´ı pro modul XBee, jenˇz slouˇz´ı pro pˇr´ıjem informac´ı pˇres rozhran´ı Wi-Fi. Tˇechto modul˚u je nˇekolik typ˚u a verz´ı. Kvalitn´ı pˇrehled nejpouˇz´ıvanˇejˇs´ıch je na str´ank´ach od firmy Sparkfun [17].

Rozˇs´ıˇren´ı syst´emu o tento modul by mohlo zajistit bezdr´atov´e nahr´av´an´ı programu nebo bezdr´atov´y pˇr´ıjem dat za provozu modelu a jeho ladˇen´ı. V neposledn´ı ˇradˇe by se tento modul dal vyuˇz´ıt i pro d´alkov´e ˇr´ızen´ı modelu vozidla.

7.2.2 Rozhran´ı Bluetooth

Bluetooth je dalˇs´ı vyuˇz´ıvan´y standard pro bezdr´atovou komunikaci propojuj´ıc´ı dvˇe a v´ıce zaˇr´ızen´ı. Model by se dal obohatit i o toto rozhran´ı, napˇr. o modul HC-05

(34)

[20], kter´y je celkovˇe dostupn´y. Model vozidla vybaven´y t´ımto rozhran´ım by se mohl bezdr´atovˇe ovl´adat pˇres PC nebo mobiln´ı zaˇr´ızen´ı.

(35)

Z´ avˇ er

V r´amci t´eto bakal´aˇrsk´e pr´ace byl vytvoˇren automaticky se ˇr´ıdic´ı model vozu s pˇr´ısa- vn´ym syst´emem, kter´y je schopn´y jezdit po horizont´aln´ıch a vertik´aln´ıch ploch´ach.

Postup pr´ace spoˇc´ıval v teoretick´em rozboru koupen´eho modelu vozu, jeho n´arok˚u na nap´ajen´ı a vlastnost´ı pˇr´ısavn´eho syst´emu. Po tomto rozboru byl navrhnut nov´y syst´em ˇr´ızen´ı s vyuˇzit´ım nov´eho ˇr´ıdic´ıho hardwaru realizovan´eho ˇr´ıdic´ı jednotkou Arduino Fio, kter´a nejl´epe vyhovovala vˇsem potˇrebn´ym parametr˚um.

Po nˇekolika verz´ıch zapojen´ı a testov´an´ı vˇsech ˇc´ast´ı vozu bylo vozidlo uvedeno do provozu. Vozidlo se bez sebemenˇs´ıch probl´em˚u pohybuje po hladk´ych vertik´aln´ıch ploch´ach (testov´ano pˇrev´aˇznˇe na skle).

Na funkˇcn´ım modelu bylo testov´ano nˇekolik druh˚u senzor˚u pro zajiˇstˇen´ı au- tonomn´ıho ˇr´ızen´ı. Byly testov´any ultrazvukov´e senzory pro moˇznost vyh´yb´an´ı se pˇrek´aˇzk´am a optick´e senzory pro umoˇznˇen´ı pohybu ve vyznaˇcen´em poli. V´ysledkem tohoto testov´an´ı byl v´ybˇer optick´eho senzoru, kter´y splˇnoval omezen´ı nap´ajen´ım, spotˇrebou a velikost´ı.

Pro autonomn´ı model pak bylo vytvoˇreno nˇekolik testovac´ıch a ˇr´ıdic´ıch algo- ritm˚u. Testovac´ımi algoritmy byla ovˇeˇrena funkˇcnost vˇsech hardwarov´ych souˇc´ast´ı vozidla. Tyto algoritmy pomohly vyˇreˇsit mnoho probl´em˚u pˇri v´yvoji cel´eho vozidla.

D´ale byl vytvoˇren ˇr´ıdic´ı algoritmus pro pohyb v ohraniˇcen´em poli a algoritmus pro udrˇzen´ı vozidla v ohraniˇcen´e dr´aze a ops´an´ı jej´ıho tvaru. ˇR´ıdic´ı algoritmy zajiˇst’uj´ı autonomn´ı pohyb na horizont´aln´ıch i vertik´aln´ıch ploch´ach.

V pr´aci se podaˇrilo splnit vˇsechny body zad´an´ı a vytvoˇrit funkˇcn´ı automaticky se ˇr´ıd´ıc´ı model s pˇr´ısavn´ym syst´emem.

(36)

Literatura

[1] RC AUTO WALL CLIMBER 866 © 2014 RC Profi [online]. [cit. 2015-04- 02]. Dostupn´e z: http://www.rcprofi.cz/rcprofi/eshop/4-1-AUTA/8- 2-MINI-auticka/5/58-RC-AUTO-WALL-CLIMBER-866-JEZDI-PO-STENACH [2] Mini DC Motor © 2010 Gizmoszone [online]. [cit. 2015-17-01]. Dostupn´e

z: http://www.gizmoszone.com/shopping/html/pages/gdc48.pdf [3] Tˇeleso na naklonˇen´e rovinˇe Encyklopedie fyziky© 2006–2015 [online]. [cit.

2015-15-05]. Dostupn´e z: http://fyzika.jreichl.com/main.article/

view/1540-teleso-na-naklonene-rovine

[4] Arduino Fio© 2015 Arduino [online]. [cit. 2015-03-10]. Dostupn´e z: http:

//arduino.cc/en/Main/ArduinoBoardFio

[5] ATmega328P © 2015 Atmel Corporation [online]. [cit. 2015-15-03]. Do- stupn´e z: http://www.atmel.com/devices/atmega328p.aspx

[6] FTDI Basic Breakout © 2009 SparkFun Electronics [online]. [cit. 2015-03- 01]. Dostupn´e z: https://www.sparkfun.com/products/retired/8772 [7] Arduino FIO Tutorial © 2013 DXARTS [online]. [cit. 2014-06-12]. Do-

stupn´e z: http://wiki.dxarts.washington.edu/groups/general/wiki/

ec15a/Arduino_FIO_Tutorial.html

[8] H-m˚ustky – ˇr´ızen´ı stejnosmˇern´ych motor˚u © 2011 Gymˇspit [online]. [cit.

2014-02-12]. Dostupn´e z: http://robot.gymspit.cz/new/cz/eurobot- 2010/motor-controll-2010/hbridge/

[9] H-Bridges: Theory and Practice © 2006 Chuck McManis [online]. [cit.

2014-02-12]. Dostupn´e z: http://www.mcmanis.com/chuck/robotics/

tutorial/h-bridge/

[10] PWM © 2015 Arduino [online]. [cit. 2014-05-12]. Dostupn´e z: http://

arduino.cc/en/Tutorial/PWM

[11] DRV8835 © 1995–2015 Texas Instruments [online]. [cit. 2015-15-03]. Do- stupn´e z: http://www.ti.com/product/drv8835

(37)

[12] DRV8835 Dual Motor Driver Carrier© 2001–2015 Pololu Corporation [on- line]. [cit. 2015-15-03]. Dostupn´e z: https://www.pololu.com/product/

2135

[13] HC-SR04 © ELECFreaks [online]. [cit. 2015-29-04]. Dostupn´e z: http:

//www.micropik.com/PDF/HCSR04.pdf

[14] CNY70 © 2009 VISHAY [online]. [cit. 2015-27-04]. Dostupn´e z: http://

www.vishay.com/docs/83751/cny70.pdf

[15] Protokol STK500 © Atmel Corporation 2003 [online]. [cit. 2015-14-04].

Dostupn´e z: http://www.atmel.com/Images/doc2525.pdf

[16] Arduino Software © 2015 Arduino [online]. [cit. 2015-14-04]. Dostupn´e z:

http://arduino.cc/en/Main/Software

[17] XBee Buying Guide © 2015 SparkFun Electronics [online]. [cit. 2015-02- 05]. Dostupn´e z: https://www.sparkfun.com/pages/xbee_guide

[18] MMA7361L© Freescale Semiconductor 2008 [online]. [cit. 2015-05-11]. Do- stupn´e z: http://www.freescale.com/files/sensors/doc/data_sheet/

MMA7361L.pdf

[19] IMU 5DOF © SparkFun Electronics [online]. [cit. 2015-05-11]. Dostupn´e z: https://www.sparkfun.com/products/retired/9268

[20] HC-05 – Bluetooth to Serial Port Module © ITead Studio 2010 [online].

[cit. 2015-05-11]. Dostupn´e z: ftp://imall.iteadstudio.com/Modules/

IM120723009/DS_IM120723009.pdf

(38)

A Obsah pˇ riloˇ zen´ eho CD

• text bakal´aˇrsk´e pr´ace

– bakalarska prace 2015 Petr Najman.pdf

– kopie zadani bakalarska prace 2015 Petr Najman.pdf

• zdrojov´y k´od programu – Testovac´ı algoritmy – ˇR´ıdic´ı algoritmy

• v´ykresov´a dokumentace

– Arduino-Fio-schematic.pdf – prvotni zapojeni.pdf – konecne zapojeni.pdf

• katalogov´e listy pouˇzit´ych souˇc´astek – drv8835.pdf

– cny70.pdf

(39)

B Sch´ ema zapojen´ı desky Arduino Fio

Obr´azek B.1: Sch´ema zapojen´ı ˇridic´ı jednotky Arduino Fio [4]

(40)

C Sch´ ema zapojen´ı upraven´ eho modelu

C.1 Prvotn´ı verze zapojen´ı

Obr´azek C.1: Prvotn´ı n´avrh zapojen´ı modelu

(41)

C.2 Koneˇ cn´ a verze zapojen´ı

Obr´azek C.2: Fin´aln´ı n´avrh zapojen´ı modelu s koneˇcn´ymi hodnotami

(42)

D Uk´ azky testovac´ıch algoritm˚ u

D.1 Rozsvˇ ecen´ı LED

i n t l e d = 1 2 ; void s e t u p ( ) {

pinMode ( l e d , OUTPUT) ; }

void l o o p ( ) {

d i g i t a l W r i t e ( l e d , HIGH ) ; d e l a y ( 1 0 0 0 ) ;

d i g i t a l W r i t e ( l e d , LOW) ; d e l a y ( 1 0 0 0 ) ;

}

D.2 Testovac´ı algoritmus senzoru HC-SR04

// p i n y pro i n f o r m a c e z e s e n z o r u const i n t t r i g P i n = 8 ;

const i n t e c h o P i n = 1 2 ; void s e t u p ( ) {

pinMode ( t r i g P i n , OUTPUT) ; pinMode ( echoPin , INPUT ) ;

// kumunikace p r e s s e r i o v y p o r t S e r i a l . b e g i n ( 9 6 0 0 ) ;

}

void l o o p ( ) {

long d u r a t i o n , d i s t a n c e ; d i g i t a l W r i t e ( t r i g P i n , LOW) ;

(43)

d e l a y M i c r o s e c o n d s ( 2 ) ;

d i g i t a l W r i t e ( t r i g P i n , HIGH ) ; d e l a y M i c r o s e c o n d s ( 1 0 ) ;

d i g i t a l W r i t e ( t r i g P i n , LOW) ;

d u r a t i o n = p u l s e I n ( echoPin , HIGH ) ; d e l a y ( 5 0 0 0 ) ;

S e r i a l . p r i n t ( d u r a t i o n ) ; S e r i a l . p r i n t ( ” d u r a t i o n ” ) ; S e r i a l . p r i n t l n ( ) ;

d i s t a n c e = m i c r o s e c o n d s T o C e n t i m e t e r s ( d u r a t i o n ) ; i f ( d i s t a n c e < 5 ) {

S e r i a l . p r i n t l n ( ” Prekazka do 5 cm ! ” ) ; }

S e r i a l . p r i n t ( d i s t a n c e ) ; S e r i a l . p r i n t ( ” cm ” ) ; S e r i a l . p r i n t l n ( ) ; d e l a y ( 1 0 0 ) ;

}

long m i c r o s e c o n d s T o C e n t i m e t e r s ( long m i c r o s e c o n d s ) { return m i c r o s e c o n d s / 2 9 , 1 / 2 ;

} }

D.3 Algoritmus pro ops´ an´ı a udrˇ zen´ı se ve vyznaˇ cen´ e dr´ aze

// l o g v s t u p pro p i n MODE

\# d e f i n e modePin 2

// p i n pro r i z e n i v e n t i l a t o r u

\# d e f i n e ven tPin 3

// l o g v s t u p pro motor 1

\# d e f i n e motorPin1 4 // l o g v s t u p pro motor 2

\# d e f i n e motorPin2 7 // p i n y pro r i z e n i motoru

\# d e f i n e powerPin1 5

\# d e f i n e powerPin2 6

(44)

// p i n pro s l e d o v a n i h o d n o t z e s e n z o r u

\# d e f i n e s e n s o r A0 i n t v a l u e = 0 ; i n t temp = 0 ; i n t temp2 = 0 ; void s e t u p ( ) {

// n a s t a v e n i p i n u na v s t u p n i nebo v y s t u p n i pinMode ( s e n s o r , INPUT ) ;

pinMode ( modePin , OUTPUT) ; pinMode ( ventPin , OUTPUT) ; pinMode ( motorPin1 , OUTPUT) ; pinMode ( motorPin2 , OUTPUT) ; pinMode ( powerPin1 , OUTPUT) ; pinMode ( powerPin2 , OUTPUT) ; // n a s t a v e n i p i n u mode na l o g . 1 d i g i t a l W r i t e ( modePin , HIGH ) ; S e r i a l . b e g i n ( 9 6 0 0 ) ;

}

void l o o p ( ) {

// p u t your main c o d e h e r e , t o run r e p e a t e d l y : i f ( temp2 == 0 ) {

d e l a y ( 5 0 0 0 ) ; temp2++;

}

a n a l o g W r i t e ( ventPin , 2 5 5 ) ; v a l u e = analogRead ( s e n s o r ) ; S e r i a l . p r i n t ( v a l u e ) ;

S e r i a l . p r i n t ( ” ” ) ;

//PWM 255−100\%, 191−75\%, 127−50\%, 64−25\%

i f ( v a l u e < 4 0 0 ) { temp = temp2 \% 2 ;

i f ( temp != 0 ) { m o t o r s s t o p ( ) ; d e l a y ( 1 0 ) ; // ////

r i g h t ( 1 9 1 ) ; d e l a y ( 1 6 0 ) ; // ////

m o t o r s s t o p ( ) ;

(45)

d e l a y ( 1 0 ) ; // ////

temp2++;

S e r i a l . p r i n t ( temp ) ; temp = 0 ;

S e r i a l . p r i n t l n ( ” O t o c e n i na l i c h o u vpravo . ” ) ; // d e l a y ( 1 0 0 0 ) ;

} e l s e i f ( temp == 0 ) { m o t o r s s t o p ( ) ;

d e l a y ( 1 0 ) ; // ////

l e f t ( 1 9 1 ) ; d e l a y ( 1 8 0 ) ; // ////

m o t o r s s t o p ( ) ; d e l a y ( 1 0 ) ; temp2++;

S e r i a l . p r i n t ( temp ) ; temp = 0 ;

S e r i a l . p r i n t l n ( ” O t o c e n i na sudou v l e v o . ” ) ; // d e l a y ( 1 0 0 0 ) ;

} }

f o r w a r d ( 6 0 ) ;

S e r i a l . p r i n t l n ( ” J i z d a r o v n e . ” ) ; // d e l a y ( 1 0 0 0 ) ;

}

void m o t o r s s t o p ( ) {

a n a l o g W r i t e ( powerPin1 , 0 ) ; a n a l o g W r i t e ( powerPin2 , 0 ) ; }

void f o r w a r d ( i n t power ) {

d i g i t a l W r i t e ( motorPin1 , HIGH ) ; d i g i t a l W r i t e ( motorPin2 , LOW) ; a n a l o g W r i t e ( powerPin1 , power ) ; a n a l o g W r i t e ( powerPin2 , power −5);

}

void r i g h t ( i n t power ) {

d i g i t a l W r i t e ( motorPin1 , LOW) ; d i g i t a l W r i t e ( motorPin2 , LOW) ; a n a l o g W r i t e ( powerPin1 , power ) ; a n a l o g W r i t e ( powerPin2 , power −5);

(46)

}

void l e f t ( i n t power ) {

d i g i t a l W r i t e ( motorPin1 , HIGH ) ; d i g i t a l W r i t e ( motorPin2 , HIGH ) ; a n a l o g W r i t e ( powerPin1 , power ) ; a n a l o g W r i t e ( powerPin2 , power −5);

}

References

Related documents

Nicm´ enˇ e v t´ eto pr´ aci byla vyuˇ zita pouze jej´ı element´ arn´ı funkˇ cnost, tedy zazn´ amen´ av´ an´ı pohybu prstu po vymezen´ em prostoru bez moˇ znosti

Kromˇ e fin´ aln´ı verze, kter´ a komplexnˇ e zpracov´ av´ a veˇsker´ e dan´ e poˇ zadavky, vzni- kala souˇ casnˇ e i verze, kter´ a fungovala bez pouˇ zit´ı detektoru

Radonova transformace; Zpˇ etn´ a projekce; Filtrovan´ a zpˇ etn´ a pro- jekce; Algebraick´ a rekonstrukˇ cn´ı metoda; Projekˇ cn´ı teor´ em; Kla- sick´ a tomografie;

Na z´ akladˇ e anal´ yzy relaˇ cn´ı a nerelaˇ cn´ı datab´ aze a poˇ zadavk˚ u k t´ eto bakal´ aˇrsk´ e pr´ aci lze ˇr´ıct, ˇ ze nerelaˇ cn´ı syst´ emy ˇr´ızen´ı b´

Za pˇ redpokladu ´ uspˇ eˇ sn´ eho otestov´ an´ı by n´ asledovalo vyuˇ zit´ı odhadnut´ eho a verifikovan´ eho modelu pro predikci, nebo bliˇ zˇ s´ı anal´ yzu zkouman´

Po vytvoˇ ren´ı jednoduch´ eho regresn´ıho modelu metodou nejmenˇ s´ıch ˇ ctverc˚ u zaˇ c´ın´ a f´ aze statistick´ e verifikace a dalˇ s´ıho testov´ an´ı hypot´ ez

Metoda maxim´ aln´ı vˇ erohodnosti spoˇ c´ıv´ a v tom, ˇ ze za odhad nezn´ am´ eho parametru (nezn´ am´ ych parametr˚ u) zvol´ı hodnota b θ, kter´ a pˇ ri dan´ ych

V t´ eto kapitole se budeme vˇ enovat rozˇ s´ıˇ ren´ı line´ arn´ıho regresn´ıho modelu pro n vysvˇ etluj´ıc promˇ enn´ ych, tedy X 1..