VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky Obor Počítačové systémy
Dálkově řízený robot bakalářská práce
Autor: Libor Škrhák Vedoucí práce: Ing. Bc. David Matoušek Jihlava 2013
Anotace Tato práce se zabývá konstrukcí dálkově řízeného robota. Robot obsahuje dva režimy řízení. Režim sledovače čáry a režim dálkového ovládání za pomocí bluetooth. Režimy se přepínají přepínačem. V režimu bluetooth je zakomponován enkodér, pro synchronizaci otáček motorků. Hardwarová část je rozdělena na moduly podle jejich funkcí. Elektronika robota vykonává příkazy z PC, stará se o řízení motorků a přijímá signály z čidel a enkodéru. Software se skládá ze dvou aplikací, první je ovládací software pro PC a druhá pro mikrokontrolér.
Klíčová slova Robot, bluetooth, sledovač čáry, WinApi aplikace, mikrokontrolér, enkodér
Abstract This work deals with the construction of a remote-controlled robot. The robot has two control modes the line follower mode and the bluetooth remote control mode. The modes are switched over by a switch. In the Bluetooth mode there is an integrated encoder for synchronizing the speed of motors. The hardware part is divided into modules according to their function. Electronics of the robot executes commands from a PC, takes control of motors and receives signals from sensors and the encoder. The software consists of two applications, the first is the control software for PC and the second is for the microcontroller.
Key words Robot, bluetooth, line follower, WinApi application, microcontroller, encoder
Prohlašuji, že předložená bakalářská práce je původní a zpracoval/a jsem ji samostatně. Prohlašuji, že citace použitých pramenů je úplná, že jsem v práci neporušil/a autorská práva (ve smyslu zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů, v platném znění, dále též „AZ“). Souhlasím s umístěním bakalářské práce v knihovně VŠPJ a s jejím užitím k výuce nebo k vlastní vnitřní potřebě VŠPJ. Byl/a jsem seznámen s tím, že na mou bakalářskou práci se plně vztahuje AZ, zejména § 60 (školní dílo). Beru na vědomí, že VŠPJ má právo na uzavření licenční smlouvy o užití mé bakalářské práce a prohlašuji, že s o u h l a s í m s případným užitím mé bakalářské práce (prodej, zapůjčení apod.). Jsem si vědom/a toho, že užít své bakalářské práce či poskytnout licenci k jejímu využití mohu jen se souhlasem VŠPJ, která má právo ode mne požadovat přiměřený příspěvek na úhradu nákladů, vynaložených vysokou školou na vytvoření díla (až do jejich skutečné výše), z výdělku dosaženého v souvislosti s užitím díla či poskytnutí licence. V Jihlavě dne 21. května 2013
............................................... Podpis
Poděkování Na
tomto
místě
bych
rád
poděkoval
svému
vedoucímu
práce
panu
Ing. Bc. Davidu Matouškovi, za poskytnutí tématu a možnost vytvářet ho pod jeho vedením.
Dále
bych
chtěl
poděkovat
rodičům
za
podporu
při
studiu.
Obsah 1
Úvod.......................................................................................................................... 8
2
Robot ......................................................................................................................... 9 2.1
Podvozek ............................................................................................................ 9
2.1.1
TANK-01 .................................................................................................. 10
2.1.2
TANK-02 .................................................................................................. 10
2.1.3
UMU-01 .................................................................................................... 11
2.1.4
MOB-03 .................................................................................................... 12
2.2
Princip řízení robota ......................................................................................... 12
3
Programování mikrokontroléru pomocí ISP ........................................................... 13
4
Režim sledovač čáry ............................................................................................... 14 4.1
Modul čidel ...................................................................................................... 14
4.2
Řídicí modul ..................................................................................................... 14
4.2.1
A/D převodník .......................................................................................... 16
4.2.2
PWM ......................................................................................................... 16
4.3 5
6
7
Modul motorků................................................................................................. 17
Režim dálkového ovládání...................................................................................... 19 5.1
Sériová komunikace RS-232 ............................................................................ 19
5.2
Bezdrátová komunikace bluetooth ................................................................... 20
5.3
Bluetooth modul ............................................................................................... 20
5.4
Řídicí modul ..................................................................................................... 21
5.4.1
Externí přerušení ....................................................................................... 21
5.4.2
Čítač časovač 0 v režimu CTC ................................................................. 22
5.5
Modul enkodéru ............................................................................................... 22
5.6
Ovládací program ............................................................................................. 23
Schéma zapojení a popis principu funkce modulů ................................................. 25 6.1
Řídicí modul ..................................................................................................... 25
6.2
Modul čidel ...................................................................................................... 26
6.3
Modul motorků................................................................................................. 27
6.4
Bluetooth modul ............................................................................................... 27
6.5
Modul enkodéru ............................................................................................... 28
6.6
Propojení mezi moduly .................................................................................... 28
Konstrukce, plošné spoje a seznamy součástek ...................................................... 30 7.1
Využitý princip výroby plošných spojů ........................................................... 30
7.2
Řídicí modul ..................................................................................................... 31
7.3
Modul čidel ...................................................................................................... 32
8
7.4
Modul motorků................................................................................................. 33
7.5
Bluetooth modul ............................................................................................... 34
7.6
Modul enkodéru ............................................................................................... 35
Programovací část ................................................................................................... 36 8.1
8.1.1
Navázání spojení ....................................................................................... 36
8.1.2
Zneplatnění focusu a odesílání dat............................................................ 37
8.2
9
Aplikace pro PC ............................................................................................... 36
Program pro mikrokontrolér ............................................................................ 38
8.2.1
Nastavení vstupních a výstupních pinů .................................................... 39
8.2.2
Jednotka USART ...................................................................................... 39
8.2.3
Inicializace enkodéru ................................................................................ 40
8.2.4
Nastavení PWM ........................................................................................ 40
8.2.5
A/D převodník .......................................................................................... 41
8.2.6
Čtení stavu přepínače ................................................................................ 42
Testování ................................................................................................................. 43 9.1
Modul motorků................................................................................................. 43
9.2
Signál protokolu RS-232 .................................................................................. 44
9.3
Signál modulu enkodéru .................................................................................. 44
10 Závěr ....................................................................................................................... 45 Seznam použité literatury ............................................................................................... 46 Seznam obrázků .............................................................................................................. 48 Seznam tabulek ............................................................................................................... 50 Seznam použitých zkratek .............................................................................................. 51 Přílohy............................................................................................................................. 52 1
Obsah přiloženého CD ............................................................................................ 52
1 Úvod Robotika je nedílnou součástí našeho života. Usnadňuje nám práci, pomáhá při výzkumech na vzdálených planetách, zabavuje naše děti ve formě hraček, či naučných stavebnic. Největší využití robotiky je v průmyslu, kde je kladen důraz na manipulační schopnost, automatickou činnost, univerzálnost a snadnou změnu programu při výrobě, měření, nebo přemisťování vyráběných komponentů. V poslední době jsou roboti využíváni při řešení válečných konfliktů. Vlády několika států investují do vývoje průzkumných, válečných robotů nemalé finanční prostředky. Roboti mohou ale i pomáhat. V lékařství provádějí různá vyšetření. Při přírodních katastrofách vyhledávají uvíznuté lidi mezi sutinami budov. Pomáhají pyrotechnikům zneškodňovat nastražené bomby. Cíl práce bude vytvořit robota, který bude podporovat dva řídicí režimy. Tyto režimy lze přepínat. V prvním režimu (sledovač čáry) bude robot řízen pomocí čidel reagujících na odraz, či pohlcení infračerveného světla od černé pásky. Ve druhém režimu (dálkové ovládání) bude pohyb robota řízen ze vzdáleného počítače pomocí Bluetooth. Práce je rozdělena na hardwarovou a softwarovou část. Nejprve se rozebere možnost výběru podvozku, jejich výhody a nevýhody. Princip programování pomocí ISP. Dále zde bude rozebrán teoretický přehled použitých periferií mikrokontroléru v režimech sledovače čáry a dálkového ovládání. V práci bude vysvětlena komunikace pomocí standardu RS-232. Hardwarová část bude zahrnovat návrh a vývoj plošných spojů jednotlivých modulů a vysvětlení principu funkce elektronických částí. Softwarová část se bude zabývat nastavením periferií mikrokontroléru a naprogramováním ovládacího softwaru pro režim dálkového řízení z počítače. Jako poslední část bude věnována testování nejdůležitějších signálů robota za pomocí osciloskopu.
8
2 Robot Robot je sestaven z podvozku TANK-02, který je komerčně dostupný firmou hobbyrobot doplněný o přídavné montážní plochy. Zvolené řešení hardwarové části spočívá v rozdělení funkce robota na jednotlivé společně propojené moduly. Moduly jsou navrženy v programu EAGLE 5.11.0. Hlavní částí se stává řídicí modul, který je osazen mikrokontrolérem ATmega16. Tento mikrokontrolér byl zvolen kvůli dostačujícímu pracovnímu kmitočtu a potřebných periferií. Dalším modulem je modul ovládající motorky. Modul ovládající motorky disponuje dvojitým H můstkem L293D, který byl použit kvůli jeho jednoduchosti ovládání a návrhu. Pro komunikaci přes bluetooth byl použit komerčně dostupný bluetooth modul od firmy ConnectBlue. Využití tohoto modulu bylo nejlepším řešením, samotný návrh a realizace by byla velice obtížná. Modul je založen na čipu Philips BGB203, který není v České republice moc dostupný. Modul čidel se skládá z IR LED CNY70. Pro vyhodnocení signálu byl využit analogově-digitální převodník mikrokontroléru. V tomto případě, pouhé čtení logických hodnot čidel není dostačující, protože napěťové úrovně logických hodnot se od sebe nepatrně liší a nezajišťují při log. 1 napětí 5V. Proto je dobré využít analogovědigitální převodník a rozlišení mezi log. 1 a log. 0 řešit programově. Pro řízení v režimu bluetooth je využit komunikační protokol RS-232. Softwarová část je rozdělena na dvě aplikace. Programem AVR Studio 5.0 od firmy ATMEL je programován řídicí program pro řídicí modul s mikrokontrolérem. Ovládací program vzdáleného řízení v režimu bluetooth je naprogramován ve vývojovém prostředí Embardacedo C++ Builder 2010 od firmy Embarcadero Technologies. Vývojové prostředí bylo vybráno z důvodů zkušeností a poznatků získaných ve výukovém předmětu Programování Win32 Aplikací na Vysoké školy polytechnické v Jihlavě. 2.1
Podvozek
Na trhu je velice pestrá škála podvozků v nabídce několika firem. Po patřičném zhodnocení kladů a záporů jsme vybrali pásový podvozek pod označením TANK-02. Z hlediska optimální velikosti, napětí pro napájení motorků a počtu potřebných motorků. K podvozku jsou k dispozici rozšiřující montážní plochy. Dá se tedy přidat
9
plocha pro montování rozšiřujících modulů. Na všechny níže uvedené podvozky se dají montovat komponenty stavebnice merkur. Vybírali jsme mezi těmito podvozky:
2.1.1 TANK-01 „Pasový podvozek pro malého robota. Obsahuje sadu pásů TM70100, čtyřrychlostní převodovku TM70168 a plastové díly. Rozměry 115x110x65mm. Napájení motorků 36V“1. Díky malým rozměrům montážních ploch je tento podvozek nevyhovující.
Obrázek 1: podvozek TANK-01 (zdroj http://www.hobbyrobot.cz/)
2.1.2 TANK-02 „Pasový podvozek pro malého robota. Obsahuje sadu pásů TM70100, čtyřrychlostní převodovku TM70168, plastové díly a spojovací materiál. Rozměry 200x110x60mm. Napájení motorků 3-6V“2. Velice podobný podvozek s podvozkem TANK-01. Díky možnostem přidávání dalších montážních ploch a počtu motorků, se tento podvozek ukázal jako vyhovující.
Obrázek 2: podvozek TANK-02 (zdroj http://www.hobbyrobot.cz/) 1
Snail Instruments. TANK-01 [online]. 2008 [cit. 2013-04-25]. Dostupné z: http://shop.snailinstruments.com/index.php?main_page=product_info&cPath=77&products_id=312 2 Snail Instruments. TANK-02 [online]. 2008 [cit. 2013-04-25]. Dostupné z: http://shop.snailinstruments.com/index.php?main_page=product_info&cPath=77&products_id=313
10
2.1.3 UMU-01 „Univerzální pohonná jednotka. Základ malých dvoukolových robotů. Obsahuje 2x GM8PW. Motory jsou opatřeny odrušovacími kondenzátory, kablíky a konektory. Materiál plexi 3mm. Rozměry 90x90x31mm (bez kol). Světlost podvozku 20mm. Součástí je též ocasní kulička a radlice. Kabelová šachta průměru 18mm“3. Podvozek pro menší roboty, pro naši aplikaci nevyhovující.
Obrázek 3: podvozek UMU-01 (zdroj http://www.hobbyrobot.cz/)
3
Snail Instruments. UMU-01 [online]. 2008 [cit. 2013-04-26]. Dostupné z: http://shop.snailinstruments.com/index.php?main_page=product_info&cPath=77&products_id=242
11
2.1.4 MOB-03 „Čtyřkolový podvozek s pohonem všech kol (4x4). Poháněno čtyřmi motory GM37, 120 ot/min. Průměr poháněných kol 115 mm. Rozměry 240 x 270 x 115mm (d x š x v). Rozchod 227mm. Nosnost ~4kg. Materiál nerez, dural a duralové profily Item“4. Tento podvozek je pro naše účely předimenzovaný. Disponuje čtyřmi motory. Robustní stavba tohoto podvozku umožňuje nosnost až 4 kilogramy konstrukčních součástí.
Obrázek 4: podvozek MOB-03 (zdroj http://www.hobbyrobot.cz/)
2.2 Princip řízení robota Robot obsahuje dva režimy řízení. Řízení za pomocí infračervených čidel a řízení ze vzdáleného počítače pomocí přenosu dat přes technologii Bluetooth. Režimy řízení se přepínají dip switchovým přepínačem. Nejdůležitější hardwarovou částí robota je modul řízení. Modul obsahuje mikrokontrolér zajišťující sběr dat z čidel, přijímání dat ze sériové linky RS-232, detekuje externí impulzy z čidel enkodéru a řídí motorky za pomocí pulzně-šířkové modulace.
4
Snail Instruments. MOB-03 [online]. 2008 [cit. 2013-04-28]. Dostupné z: http://shop.snailinstruments.com/index.php?main_page=product_info&cPath=77&products_id=382
12
3 Programování mikrokontroléru pomocí ISP Na řídicí desce se nachází programovací konektor pro programování pomocí ISP (In System Programming). Jedná se o sériové programování přímo v aplikaci. Mikrokontrolér k programování využívá blíže popsané piny MISO – master in slave out, MOSI – master out slave in, SCK – hodinový impulz, a RESET – resetující linka. Pro programování ze strany počítače je použit komerčně dostupný programátor USBasp.
Obrázek 5: programátor USBasp (zdroj www.protostack.com) Programátor je ovládaný softwarem AVRDUDE, který je ovládaný přes příkazovou řádku za pomocí určených přepínačů a příkazů.
Obrázek 6: výpis přepínačů v AVRDUDE (zdroj http://www.ladyada.net/) Zápis příkazu: avrdude -c usbasp -p atmega16 -U flash:w:avrgcc5.hex 13
4 Režim sledovač čáry Elektronika v režimu sledovače čáry je rozdělena na tři moduly. Modul čidel, obsahující tři čidla CNY70. Řídicí modul, vyhodnocující signály z čidel za pomocí A/D převodníku mikrokontroléru. Modul motorků, přijímající PWM signál od řídicího modulu.
Obrázek 7: blokové schéma režimu sledovače čáry (zdroj vlastní)
4.1 Modul čidel V modulu čidel jsou využita tři čidla CNY 70. Čidla jsou optočleny s vyzařujícím zdrojem infračerveného světla (IR LED) a přijímačem ve formě fototranzistoru. Infračervené světlo je vysíláno ve vlnové délce 950nm. Celý princip modulu čidel je založen na pohlcování infračerveného světla do černé pásky. Pokud se nachází čidlo nad černou páskou, infračervené světlo je pohlceno. V opačném případě je světlo odraženo a na výstupu se objeví napětí. Napětí jsou dále přivedeny na jednotlivé vstupy A/D převodníku mikrokontroléru.
Obrázek 8: čidlo CNY70 (zdroj www.gme.cz)
4.2 Řídicí modul Již podle názvu, řídicí modul se stará o vyhodnocování a následné řízení ostatních modulů.
Nejdůležitější
částí
řídicího
modulu
je
mikrokontrolér
ATmega16.
14
Mikrokontrolér je taktován vnitřním kmitočtem 8MHz nastavený pomocí vnitřních tzv. fúzních bitů (FUSE bits) pomocí externího programu od firmy ATMEL.
Obrázek 9: mikrokontrolér ATmega16 (zdroj www.futurlec.com) Řídicí modul přijímá, čte jednotlivé kanály A/D převodníku, převádí napětí na číselnou hodnotu a na základě výsledku spíná motorky.
R = robot, M1,M2 = motory, zelená – motor start, červená – motor stop, ČIDLA = červená – světlo odraženo, žlutá – světlo pohlceno Obrázek 10: řízení v režimu sledovače čáry (zdroj vlastní)
15
4.2.1 A/D převodník Procesor má zabudovaný 8 kanálový, 10 bitový, analogově-digitální převodník napěťových úrovní. Využívaný pro měření elektrického napětí. Vlastnosti:
„až 10 bitové rozlišení
nelinearita max. 0,5 LSB
přesnost ± 2 LSB
průměrný čas konverze 65 - 260 us (15 000 vzorků / s)
celkem 8 možných vstupů (multiplexovaných)
7 rozdílových vstupů (2 s možností nastavení zisku)
nastavitelné rozlišení
vstupní napětí a reference v celém rozsahu napájení
nastavitelná vnitřní reference 2,56V
možnost volby mezi ručním spouštěním a kontinuálním během
možnost spuštění přerušení po dokončení konverze“5
4.2.2 PWM Pro nastavení pulzně-šířkové modulace se využívá funkce čítače časovače 1. Mikrokontrolér umožňuje výběr z několika režimů PWM. Je využit rychlý 8 bitový režim PWM. Princip funkce pulzně-šířkové modulace je založen na inkrementování číselné hodnoty (registr TCNT1), která čítá od 0 do maxima, v našem režimu do hodnoty 255. Frekvence inkrementování je odvozena od frekvence mikrokontroléru s nastavením dělicích poměrů. Pro překlápění mezi logickou úrovní 0 a 1 je vyhrazen speciální registr (OCR1x - x představuje výstupní kanál A nebo B), do kterého se zapíše hodnota nastavující střídu signálu (poměr výstupu mezi log. 0 a log. 1). Při začátku inkrementování se výstup nastaví do logické úrovně 0. V průběhu inkrementování se porovnává nainkrementovaná hodnota (TCNT1) s hodnotou nastavující střídu signálu (OCR1x). Pokud nastane rovnost hodnot, výstup se překlopí do logické úrovně 1. Následně se průběh opakuje.
5
Programujte.com. AVR a AD převodník [online]. 2007 [cit. 2013-05-01]. Dostupné z: http://programujte.com/clanek/2007041902-avr-a-ad-prevodnik/
16
Obrázek 11: pulzně-šířková modulace (zdroj vlastní) Frekvence pulzně-šířkové modulace se vypočítá podle vzorce:
= frekvence PWM,
= frekvence mikrokontroléru, N = nastavení
před děličky (1, 8, 64, 256, 1024), TOP = největší možná hodnota registru OCR1x = 255 Obrázek 12: vzorec nastavení frekvence PWM (zdroj datasheet ATmega16)
4.3 Modul motorků Pohon robota se řídí pomocí modulu motorků s integrovaným obvodem L293D. Tento obvod představuje dvojitý bipolární H-můstek k řízení stejnosměrných motorků. V obvodu je zakomponována řídicí logika, skládající se z třech řídicích vstupů a dvou výstupů na každý kanál. Každý kanál má k řízení vlastní Inhibit input (blokovací vstup EN). Vstup slouží k zapnutí, či vypnutí řízení (blokování). Další dva vstupy slouží k řízení směru otáčení motorků. Pokud jsou obě vstupní hodnoty rovny tj. log. 1 nebo log. 0 motor je zkratován v režimu brzdy. Následující tabulka určuje jednotlivé funkce v závislosti na vstupních hodnotách.
17
I1
I2
EN
Funkce
H
L
H
Otáčení vpravo
L
H
H
Otáčení vlevo
H
H
H
Motor zkratován
L
L
H
Motor zkratován
X
X
L
Motor odpojen
I1,I2 = vstupy, EN = blokovací vstup, H = vysoká úroveň (1), L = nízká úroveň (0), X = libovolná úroveň Tabulka 1: vstupy a funkce obvodu L293D (zdroj http://www.rotta.cz/PDF/bridge05.pdf)
Obrázek 13: integrovaný obvod L293D (zdroj www.gme.cz)
18
5 Režim dálkového ovládání V režimu dálkového ovládání je zakomponováno real-time řízení robota. Řízení reaguje reálně v čase na stisk ovládacích kláves. Ovládání probíhá pomocí ovládacího programu počítače. Ovládací program se nejprve musí spojit s bluetooth modulem. Přenos dat probíhá přes sériovou linku RS-232. Řídicí modul přijímá příkazy ze sériové linky a následně je zpracuje a vykoná. Modul enkodéru se využívá pro koordinaci otáček mezi motorky ovládající levý a pravý pás robota. Modul motorků řídí pohon robota.
Obrázek 14: blokové schéma režimu dálkového ovládání (zdroj vlastní)
5.1 Sériová komunikace RS-232 Sériová komunikace se zejména využívá pro propojení mezi dvěma zařízeními. Označovaná celosvětově jako standard RS-232. Nejčastější typ přenosu dat je asynchronní přenos. Asynchronní přenos je typický tím, že přijímač a vysílač musí mít stejné nastavení komunikace. Nastavení stejné přenosové rychlosti tzv. Baudové rychlosti, počet přenášených bitů, počet stop bitů a paritu. Při zahájení komunikace vysílač vysílá 1 start bit, následuje 8 přenášených bitů s pořadím od nejméně významného po nejvýznamnější bit, další bit představuje paritu a poslední bit je stop bit. Napěťové úrovně jsou definovány v tabulce.
19
Datové signály Napěťová úroveň
Vysílač
Přijímač
Log. 0
+5 V to +15 V
+3 V to +25 V
Log. 1
-5 V to -15 V
-3 V to -25 V
Nedefinovaný
-3 V to +3 V
Tabulka 2: napěťové úrovně pro standart RS-232 (zdroj www.hw.cz)
Obrázek 15: asynchronní přenos dat (zdroj www.hw.cz) Při asynchronní přenosu jsou využívány tyto piny. Zkratka
Jméno
Popis
TxD
Transmit Data
Odchozí data. Výstupní pin.
RxD
Receive Data
Příchozí data. Vstupní pin.
CTS
Clear to Send
Povolení k vysílání,
Tabulka 3: popis pinů v asynchronním přenosu (zdroj vlastní)
5.2 Bezdrátová komunikace bluetooth Technologie bluetooth je celosvětově standardizovaná technologie nejvíce využívána ve verzi bluetooth 2.0. V současné době technologií bluetooth disponuje celá řada přenosných ale i nepřenosný zařízení, například: mobilní telefony, tablety, notebooky, sluchátka, televize a herní konzole. Přenosová rychlost dosahuje až 3.0 Mbit/s. Bluetooth se dělí do tříd, podle výkonu a maximální přenosové vzdálenosti.
5.3 Bluetooth modul Nejdůležitější komponentou tohoto modulu je bluetooth RS-232 OEMSPA311 modul od firmy ConnectBlue. Modul se řadí do třídy 1 s dosažitelnou vzdáleností přenosu na 20
přímou viditelnost až 75m s výkonem 5mW. Přenosová rychlost dosahuje 921,6 kb/s. Pro konfiguraci modulu nabízí firma ConnectBlue software Serial Port Adapter Toolbox,
který je dostupný zdarma. Při nastavení asynchronního přenosu RS-232 stačí již jen navázat spojení a modul se postará o příjem a vysílání dat sám. Indikaci stavu připojení, chyb a přenosu dat indikují 3 výstupní piny, na které se dají připojit externí led diody odlišných barev.
Obrázek 16: bluetooth RS-232 OEMSPA311 (zdroj www.connectblue.com)
5.4 Řídicí modul V režimu dálkového řízení se řídicí modul stará o příjem dat z bluetooth modulu po datovém vodiči RxD ze strany mikrokontroléru. Další funkcí mikrokontroléru v tomto režimu je externí přerušení pro příjem impulzů od modulu enkodéru. Pomocí funkce čítače časovače je určen čas, po který se impulzy inkrementálně načítají.
5.4.1 Externí přerušení Externí přerušení je funkce mikrokontroléru reagující na vnější událost. Mikrokontrolér obsahuje 3 zdroje externího přerušení (INT0 až INT2). Robot využívá externí přerušení INT0. Pro externí přerušení se nastavují 4 druhy citlivosti v registru MCUCR bity ISC00, ISC01. 0
0
Reakce na log. 0
0
1
Reaguje na jakoukoliv změnu úrovně
1
0
Reakce na sestupnou hranu
1
1
Reakce na náběžnou hranu
21
Tabulka 4: nastavení citlivosti vstupů externího přerušení (zdroj datasheet ATmega16)
5.4.2 Čítač časovač 0 v režimu CTC Režim CTC čítače časovače 0 slouží k nastavení času, po jehož uplynutí se zavolá obsluha přerušení. Princip režimu CTC spočívá v inkrementování čítané hodnoty. Čítaná hodnota (registr TCNT0) se porovnává s hodnotou v registru OCR0. Pokud dojde ke shodě, hodnota v registru TCNT0 se vynuluje a zavolá se rutina obsluhy přerušení od čítače časovače 0. Frekvence čítání se odvozuje od frekvence mikrokontroléru s nastavenou před děličkou pomocí vzorce:
= frekvence časovače,
= frekvence mikrokontroléru, N = nastavení před
děličky (1, 8, 64, 256, 1024), OCR0 = hodnota nastavená v registru Obrázek 17: vzorec nastavení frekvence č/č 0 v režimu CTC (zdroj datasheet ATmega16)
5.5 Modul enkodéru Enkodér je elektromechanický převodník, který převádí otáčky motorů na elektrické impulzy. Princip inkrementálního enkodéru je založen na stálém přičítání hodnot. Hlavní součásti enkodéru jsou: enkodérové kolečko, přijímač a vysílač. Enkodérové kolečko je kruh, který je rozdělen symetrickými výsečemi na bílé a černé části. Počet výsečí určuje množství snímaných impulzů (rozlišení enkodéru).
Obrázek 18: enkodérové kolečko (zdroj vlastní) Vysílač je ve formě led diody vysílající světlo v infračerveném spektru. Přijímač je reprezentován jako foto tranzistor. Pro přijímač i vysílač je použita komerčně dostupná 22
součástka reflexní čidlo B3 od firmy stavebnice.com, vhodná i přímo pro montáž se stavebnicí merkur a podvozku robota.
Obrázek 19: reflexní čidlo B3 (zdroj www.stavebnice.cz) Princip funkce je stejný, jako princip čidel v režimu sledovače čáry v kapitole 4.1 Modul čidel.
5.6 Ovládací program Ovládací program Robot Bluetooth control pro režim dálkového ovládání je vytvořený ve vývojovém prostředí Embardacedo C++ Builder 2010. Po spuštění je nutno zadat číslo COM portu bluetooth modulu, na který se program pokusí připojit. Informace o výsledku připojení se zobrazí v listboxu aplikace. Parametry komunikace jsou již nastavené v programu a nedají se změnit. Po připojení se zpřístupní ovládací šipky a tlačítko odpojit se. Tlačítko odpojit se slouží k ukončení komunikace a odpojení od modulu. Po stisku a podržení příslušné šipky na klávesnici, nastává vyslání ovládacího znaku protokolem RS-232. Vysílání se přeruší při konci stisku tlačítka.
23
Obrázek 20: ovládací program Robot Bluetooth control (zdroj vlastní)
24
6 Schéma zapojení a popis principu funkce modulů Tato kapitola bude zaměřena na popis principu funkce modulů. Rozebrány zde budou jednotlivé moduly z hlediska funkce elektronických částí a doplněny o schémata zapojení. Součástí kapitoly bude popis využitého propojení mezi moduly.
6.1 Řídicí modul Pro napájení se využívá napětí z baterek přibližně 7V. Řídicí modul obsahuje napájecí část se stabilizátorem napětí L4940V05, který stabilizuje napětí na hodnotu 5V. Stabilizátor napětí je doplněný filtračními kondenzátory podle doporučených hodnot v datasheetu (katalogu) součástky. Modul s motorky potřebuje pro buzení a rozběh napětí o něco vyšší, než 5V, k tomuto účelu slouží propojka ještě před stabilizováním. Nejdůležitější částí řídicího modulu je mikroprocesor ATmega16. Procesor má připojený resetovací vstup přes tlačítko s filtračním kondenzátorem. Pokud je tlačítko stisknuto, je napájecí napětí přitaženo přes rezistor na zem. Reset nastává při logické hodnotě 0. Mikroprocesor má oddělené napájení pro A/D převodník vstupem AVCC. Na tento vstup musí být zapojen kondenzátor s cívkou, kvůli případnému rušení z digitální části, či vnějšího zdroje. Přepínač mezi režimy řízení je zapojen přes rezistor k napájecímu napětí. Pokud je spínač rozpojen, zajistí rezistor log. 1 na vstupním pinu mikrokontroléru.
25
Obrázek 21: schéma zapojení řídicího modulu (zdroj vlastní)
6.2 Modul čidel Použita jsou čidla CNY70. Pokud se nachází čidlo nad černou páskou, světlo je pohlceno a fototranzistor se zavírá, v opačném případě je fototranzistor otevřený. Při otevírání fototranzistoru je emitor přitažen k zemi a na výstupu se objeví napětí 0V. Mezi kolektorem a emitorem jednotlivých tranzistorů jsou zapojeny rezistory o velikosti 47Kohm. Tyto rezistory zajišťují při zavřeném tranzistoru napětí přibližně 2,1 V.
Obrázek 22: schéma zapojení modulu čidel (zdroj vlastní)
26
6.3 Modul motorků Základem je obvod L293D, který se stará o řízení směru a rychlosti otáčení, jeho princip činnosti je popsán v kapitole 4.3 Modul motorků. Diody SF26 slouží v zapojení jako ochranný prvek před zničením obvodu L293D naindukovanými špičkami napětí v elektromotorkách. Tyto diody jsou použity pro jejich vysokou rychlost. Šestice rezistorů v modulu slouží jako ochranný prvek vstupů mikrokontroléru.
Obrázek 23: schéma zapojení modulu motorků (zdroj vlastní)
6.4 Bluetooth modul Bluetooth modul disponuje indikací stavu připojení, odpojení, chybového stavu a komunikace pomocí tří led diod příslušné barvy. Červená – chybový stav, zelená – připojení, modrá - komunikace. Pro omezení proudu diodou a ochranu výstupu jsou za diodami zapojeny rezistory. Resetovací tlačítko je zapojeno proti zemi, reset nastává při logické úrovni 0. Výstup TxD je zapojen přes hradlo AND podle doporučení z katalogu. Vstup RxD je zapojen přes hradlo AND a odporový dělič napětí. Odporový dělič napětí je využit pro snížení napěťové úrovně logické hodnoty 1, protože logická úroveň 1 (pro bluetooth modul) je definována napětím v rozmezí 2,15V až 3,45V.
27
Obrázek 24: schéma zapojení bluetooth modulu (zdroj vlastní)
6.5 Modul enkodéru Modul využívá hardwarové ošetření zákmitů. Nejdůležitější částí modulu enkodéru je tvarovač signálu se součástkou 74HC14 – schmittův invertor, doplněný o integrační článek, který prodlužuje dobu trvání impulzu a potlačuje rychle se měnící signály.
Obrázek 25: schéma zapojení modulu enkodéru (zdroj vlastní)
6.6 Propojení mezi moduly Moduly, kde je potřeba více jak 6 pinů jsou propojeny konektory MLW10G pro ploché kabely. Propojovací kablík je poskládán z deseti žilového kabelu a zásuvkového konektoru PLF10.
28
Obrázek 26: konektor MLW10G (zdroj www.gme.cz) Moduly, které nepotřebují, pro propojení více jak 6 pinů jsou spojeny přes konektor se zámkem PSH02-0xP (x – hodnota podle počtu pinů). Celý propojovací kablík se skládá z dutinky, kablíku a konektoru PFH02-0xP (x – hodnota podle počtu pinů).
Obrázek 27: konektor PSH02-06P (zdroj www.gme.cz)
29
7 Konstrukce, plošné spoje a seznamy součástek Robot se skládá z podvozku a dvou přídavných pater. V podvozku se nachází dvojice motorků pro ovládání pásů. Na hnaném kole motoru je přiděláno enkodérové kolečko s čidly. V prvním patře přídavné plochy je připevněn modul motorků a modul enkodéru. Modul s čidly je přidělán pomocí dílů ze stavebnice merkur k prvnímu patru. Druhé patro je spojeno distančními sloupky. Na druhém patře je přidělán řídicí modul, bluetooth modul a patice s bateriemi.
Obrázek 28: dálkově řízený robot (zdroj vlastní)
7.1 Využitý princip výroby plošných spojů Moduly jsou navrženy v programu EAGLE 5.11.0. Plošný spoj se vytiskne na průhledný papír (fólií), speciální do laserové tiskárny. Cuprextit s fotocitlivou vrstvou vystavíme spolu s vytištěnou fólií osvitu pod UV záření po dobu asi 10 minut. Doba osvitu je relativní, záleží na okolnostech intenzitě dopadajícího UV záření a vzdálenosti vyzařování vzhledem k osvitové ploše. Osvícenou plochu vyvoláme vývojkou a následně vyleptáme leptacím roztokem.
30
7.2 Řídicí modul
Obrázek 29: deska plošného spoje řídicího modulu (zdroj vlastní) označení
hodnota
součástka
počet
C1
0.1mF
C5/2.5
1
C2
22mF
C5/2.5
1
C3
100nF
C5/2.5
1
C4
100nF
C5/2.5
1
C5
100nF
C5/2.5
1
C6
47mF/10V
CPOL-EUE2-5
1
IC1
MEGA16-P
MEGA16-P
1
IC2
L4940V05
7812T
1
L1
0.22uH
L-EUIR-2
1
MA06
ISP
MA06
1
R1
1k
R-EU_0309/10
1
R2
1k
R-EU_0309/10
1
R3
1k
R-EU_0309/10
1
S1
reset
10-XX
1
SL1
bluetooth
MA04
1
SL2
encoder
MA04
1
SV1
modul-cidla
MLW10
1
SV2
modul-motorky
MLW10
1 31
SW1
dip
SW_DIP-2
1
X1
baterie
W237-102
1
Tabulka 5: seznam součástek řídicího modulu (zdroj vlastní)
7.3 Modul čidel
Obrázek 30: deska plošného spoje modulu čidel (zdroj vlastní) označení
hodnota
součástka
počet
C1
100nF
C2.5/2
1
IC1
-
CNY70
1
IC2
-
CNY70
1
IC3
-
CNY70
1
R1
100
R-EU_0309/10
1
R2
47k
R-EU_0309/10
1
R3
47k
R-EU_0309/10
1
R4
47k
R-EU_0309/10
1
SV1
ridic_mod
MLW10
1
Tabulka 6: seznam součástek modulu čidel (zdroj vlastní)
32
7.4 Modul motorků
Obrázek 31: deska plošného spoje modulu motorků (zdroj vlastní) označení
hodnota
součástka
počet
D1
-
1N4004
1
D2
-
1N4004
1
D3
-
1N4004
1
D4
-
1N4004
1
D5
-
1N4004
1
D6
-
1N4004
1
D7
-
1N4004
1
D8
-
1N4004
1
IC1
-
L293D
1
R1
100
R-EU_0309/10
1
R2
100
R-EU_0309/10
1
R3
100
R-EU_0309/10
1
R4
100
R-EU_0309/10
1
R5
100
R-EU_0309/10
1
R6
100
R-EU_0309/10
1 33
SV1
ridic_mod
MLW10
1
X1
motor1
W237-102
1
X2
motor2
W237-102
1
Tabulka 7: seznam součástek modulu motorků (zdroj vlastní)
7.5 Bluetooth modul
Obrázek 32: deska plošného spoje bluetooth modulu (zdroj vlastní) označení
hodnota
součástka
počet
IC1
74HC08N
74HC08N
1
LED1
červená
LED5MM
1
LED2
zelená
LED5MM
1
LED3
modrá
LED5MM
1
R1
1k8
R-EU_0309/10
1
R2
2k2
R-EU_0309/10
1
R3
390
R-EU_0309/10
1
R4
390
R-EU_0309/10
1
R5
390
R-EU_0309/10
1
S1
reset
10-XX
1
SL1
con_blue
MA16
1
SL2
con_blue
MA16
1
SL3
ridici_mod
M04
1
Tabulka 8: seznam součástek bluetooth modulu (zdroj vlastní)
34
7.6 Modul enkodéru
Obrázek 33: deska plošného spoje modulu enkodéru (zdroj vlastní) označení
hodnota
součástka
počet
C1
1uF
CPOL-EUE2.5-7
1
C2
1uF
CPOL-EUE2.5-7
1
IC1
74HC14N
74HC14N
1
R1
3k3
R-EU_0309/10
1
R2
3k3
R-EU_0309/10
1
SL1
ridici_mod
MA04
1
SL2
cidlo1
MA03
1
SL3
cidlo2
MA03
1
Tabulka 9: seznam součástek modulu enkodéru (zdroj vlastní)
35
8 Programovací část Programovací část je rozdělena na dvě části. Aplikace pro PC v režimu dálkového ovládání a program pro mikrokontrolér. V obou aplikacích jsou vysvětleny nejzásadnější části kódu. V aplikaci pro PC bude vysvětlen princip navázání spojení s bluetooth modulem a realizace real-time řízení (zneplatnění focusu a odesílání dat). Program pro mikrokontrolér bude obsahovat nastavení používaných periferií a softwarové ošetření zákmitů při čtení stavů vstupních pinů přepínače režimů.
8.1 Aplikace pro PC Základem aplikace je hlavní formulář. Formulář je doplněný o tlačítka šipek pro ovládání směru. Pro navázání komunikačního spojení jsou zde dvě tlačítka, připojit se a odpojit se. Nedílnou součástí je editační pole, pro zadávání čísla COM portu. ListBox slouží pro výpis informace správnosti provedení funkcí programu. Poslední součástí aplikace pro PC je komponenta MainMenu, která definuje hlavní nabídku aplikace, nachází se zde dialogové okno o aplikaci a dialogové okno pro ukončení aplikace.
Obrázek 34: hlavní formulář aplikace (zdroj vlastní)
8.1.1 Navázání spojení Navázání spojení nastane při události OnClick na tlačítku Připojit se. Nejprve se uloží do proměnné Com - číslo COM portu zadané v editačním poli.
36
UnicodeString Com = Form1->Edit1->Text.t_str(); // předání zadaného COMu Následně sloučíme com_port a Com. com_port = "\\\\\.\\COM"; com_port = com_port + Com;
// sloučení COMu
Pokusíme se otevřít COM port. COM port se otevírá jako soubor, funkcí CreateFile. FHandle = CreateFile( com_port.t_str(), // otevřeni COM portu GENERIC_READ | GENERIC_WRITE, // pro čtení a zápis 0, NULL, //žádné zabezpečovací atributy OPEN_EXISTING, 0, NULL); Musíme otestovat správnost, otevření portu. if(FHandle==INVALID_HANDLE_VALUE) Po otevření portu nastává nastavení komunikačních parametrů strukturou DCB. // nastavení komunikace dcb.BaudRate=CBR_9600; dcb.ByteSize=8; dcb.Parity=NOPARITY; dcb.StopBits=ONESTOPBIT; dcb.fParity = FALSE; SetCommState(FHandle,&dcb);
// // // // // //
baudová rychlost šířka datového rámce parita počet stop bitu kontrola parity uložení DCB
8.1.2 Zneplatnění focusu a odesílání dat Pro zneplatnění focusu a odesílání znaku slouží metoda AppMessage, která je volána, pokud aplikace obdrží zprávu od windows. Kontroluje se stisk všech kláves a pomocí přepínače switch se filtruje stisk šipek, například VK_UP. void __fastcall TForm1::AppMessage( TMsg &Msg, bool &Handled ) { if (Msg.message == WM_KEYDOWN || Msg.message == WM_KEYUP) // o jaký typ zprávy se jedná { switch( Msg.wParam ) // parametr zprávy { case VK_UP: { 37
WriteFile(FHandle, "f", 1, &bytes_written, NULL); Sleep(1); break; } }
// // // //
Handle odchozí data znak f počet bytu k zápisu počet zapsaných bytu
// čekání 1 ms
} Pokud se focus nachází nad komponentami typu BitButton nebo Button přepíšeme parametr zprávy. TControl *activeControl = Screen->ActiveControl; TButton *isActiveButton= dynamic_cast
(activeControl); if(isActiveButton) // zneplatní předání focusu { Msg.wParam = 0; break; } TBitBtn *isActiveBitBtn = dynamic_cast(activeControl); if (isActiveBitBtn) // zneplatní předání focusu { Msg.wParam = 0; break; }
8.2 Program pro mikrokontrolér Při přivedení napájecího napětí se zinicializuje jednotka USART, nastavení enkodéru s čítačem časovačem 0 a nastavení pulzně-šířkové modulace. Následuje programová smyčka programu, vykonávající režimy řízení a čtení stavů přepínače. Při přepnutí režimu se zapínají nebo vypínají příslušné periferie mikrokontroléru. V režimu sledovače čáry program řeší, jak se má robot chovat při ztrátě stopy. Pokud nastane ztráta stopy, ostrou zatáčkou, zůstává aktivní poslední čidlo známé polohy čáry a robot se začne otáčet směrem k čáře. V případě, že robot jede rovně a stopa náhle končí, je neaktivní žádné čidlo a nastává sepnutí levého motoru. Robot se otočí do protisměru a jede zpět po čáře.
38
8.2.1 Nastavení vstupních a výstupních pinů Každý port, který využíváme, musí být inicializován jako vstup, nebo jako výstup. Pro nastavení vstupních a výstupních pinů slouží registr DDRx, kde x je port A, B, C, nebo D. Vstup se nastavuje zapsáním 0 na pozici v binárním kódu. Výstup pak hodnotou 1. Pro vstup pak lze nastavit pin jako vysoko impedanční vstup zapsáním 1 do registru PORTx. Na výstup je možno zapsat log. 1, nebo log. 0 přímo na pozici v registru PORTx. DDRD=0b11110011; DDRC=0b11111111; DDRA=0b00000000; DDRB=0b00000000;
//nastavení INT0 INT1 //nastavení //nastavení //nastavení
výstupu-motorky, vstupy
PORTB=0b11111111; PORTD=0b11110011; PORTC=0b11111111;
//inicializace portu B //inicializace portu D //inicializace portu C
výstupu-motorky vstupu-a/d-čidla vstupu-přepínač módu
8.2.2 Jednotka USART Mikrokontrolér ATmega16 obsahuje jednotku pro řízení sériové komunikace. Základem je nastavení přenosové rychlosti pomocí předdefinovaného výpočtového vzorce se zadanými proměnnými, jako frekvence mikrokontroléru a baudovou rychlostí. Výsledek výpočtu se uloží do registru UBRR. Dále je nutno nastavit formát datového rámce, pomocí registru UCSRC. Registrem UCSRB povolíme přijímání dat a přerušení, pokud jsou data přijmuta. Data vyhodnotíme v obsluze přerušení. #define #define #define #define
__AVR_ATmega16__ // definice procesoru F_CPU 8000000 // frekvence procesoru 8 MHz BAUD 9600 // definice boudové rychlosti ubrr F_CPU/16/BAUD-1 //výpočet nastaveni pro registr UBRR
void USART_inic() { UBRRH = (unsigned char)(ubrr>>8); //nastavení baudové rychlosti přenosu horní bity UBRRL = (unsigned char)ubrr; //nastavení baudové rychlosti přenosu spodní bity // povolení přijímání, odesílání a přerušení od přijmu UCSRB = (1<
// nastavený formát rámce: 8 data bit, 1 stop bit, no parity UCSRC=(1<
8.2.3 Inicializace enkodéru Enkodér využívá externí přerušení, které je nutno povolit a u kterého je nastavena reakce na náběžnou hranu. Doba měření impulzů je nastavena čítačem časovačem 0. Podle vzorce pro výpočet je nejpřesnější volbou před děličky 1 pro výsledný výpočet 1µs. Výsledná hodnota se rovná 3. Obsluha externího přerušení inkrementuje impulzy. Obsluze
přerušení
od
čítače
časovače
0
se
odpočítává
doba
250
µs.
Po uplynutí doby se zpracuje výsledný počet impulzů a pomocné proměnné se nulují. MCUCR=(1<
8.2.4 Nastavení PWM Je zvolen rychlý 8 bitový režim. Podle vzorce pro výpočet frekvence (30Hz) pulzně-šířkové modulace je nutno nastavit před děličku 1024. Je zvolen neinvertující 40
režim, kde nejvyšší hodnota registru OCR1x představuje střídu poměru 0:100 (0 pro log. 0, 100 pro log. 1). Nejnižší hodnota je pak opačný poměr, s opačnou střídou. //rychlý PWM 8 bitu //neinvertující režim //před dělička 1024 //výstupní kmitočet 30 Hz TCCR1A=(0<<WGM11)|(1<<WGM10)| (1<
8.2.5 A/D převodník Převodník je nastavitelný programově, využívající k tomu skupinu tří registrů: ADMUX - nastavení referenčního napětí, zarovnání výsledku převodu doleva-či doprava a nastavení snímaného kanálu. ADCSRA - zapínání převodníku, start převodu, auto spouštění převodu, příznak přerušení, povolení přerušení a nastavení kmitočtu převodu. ADCSRB - volba zdroje pro auto spouštění. Po správném nastavení a spuštění převodníku se výsledek převodu uloží do registru ADC. Výsledek registru ADC je nutno přepočítat na napětí konstantou ADC/(1024*2.56). Konstanta je složena z hodnoty 1024 – rozsah ADC registru a 2.56 - zvolená reference. uint16_t read_ad_senzor(unsigned char kanal) { // Zarovnání výsledku doleva: ADLAR = 1 // Diferenční kanál MUX0-MUX2 ADMUX = kanal; ADMUX |= (1<
41
8.2.6 Čtení stavu přepínače Při změně stavu přepínače dochází na vstupním pinu k zákmitu od přepínače. Zákmity se dají ošetřit hardwarově, za pomocí schmittovým klopným obvodem a integračním článkem. V našem případě je ošetření zákmitů řešeno softwarově. Princip spočívá v přečtení stavu pinu, následné počkání 1ms a přečtení znovu stejného pinu. Pokud jsou vzorky přečtených hodnot od sebe různé, je stav vyhodnocen jako chybný a čte se znova. Pokud nastane rovnost, došlo k ustálení stavu a výsledná hodnota se nachází v obou testovaných proměnných. do { //cyklus pro čtení hodnot z přepínače //cyklus přečte 2x hodnoty a porovná je mezi sebou. Postará se o ošetření zákmitů přepínače a=PINB; a=(~a)&0b00000011; _delay_ms(1); b=PINB; b=(~b)&0b00000011; }while(a!=b);
42
9 Testování Nedílnou součástí každé aplikace, modulu, nebo komponenty je testování. Při testování se hledají chyby, vzniklé špatným návrhem, dolaďují se nastavení periferií, ověřuje se správnost celého řešení. Pro testování elektrických signálů byl použit multimetr OWON HDS1022M. Specifikace:
„dvoukanálový
šířka pásma 20MHz
rychlost vzorkování 100Ms/s
časová základna 5ns/div - 5s/div, citlivost 5mV/div - 5V/div
kurzory pro snadné měření
paměť 6000 znaků/kanál
rozhraní USB, 645g“6
9.1 Modul motorků Ověření funkčnosti pulzně-šířkové modulace bylo testováno s nastavením OCR=155. Po přepočtu v tomto nastavení vycházela střída signálu 39:61. Měření na osciloskopu odpovídalo vypočtené hodnotě.
Obrázek 35: měření PWM (zdroj vlastní)
6
GM ELECTRONIC. Osciloskop dvoukanálový 20MHz OWON HDS1022M [online]. 2007 [cit. 2013-0508]. Dostupné z: http://www.gme.cz/cz/hc-hds1022m-p720-067/
43
9.2 Signál protokolu RS-232 Datový rámec komunikace protokolu RS-232 byl měřen pro znak ‚r‘. Podle ASCII tabulky má znak ‚r‘ dekadickou hodnotu 114. Po převodu na binární tvar vychází číslo 1110010 (zprava nejvýznamnější bit). Jelikož bity přicházejí na osciloskop od nejméně významného po nejvýznamnější, je zobrazován signál takto: start bit, 0100111, stop bit. Zobrazení signálu odpovídá odeslanému znaku.
Obrázek 36: měření signálu protokolu RS-232 (zdroj vlastní)
9.3 Signál modulu enkodéru Při umisťování pozice čidel enkodéru, bylo měření osciloskopem velice důležité. Snahou bylo umístit čidla tak, aby signál (log. 1) při otáčení enkodérového kolečka trval přibližně stejnou dobu v každé pozici otočení. Osciloskopem byla ověřena funkčnost tvarovače signálu s ošetřenými zákmity.
Obrázek 37: měření signálu enkodéru (zdroj vlastní)
44
10 Závěr Bakalářská práce spočívala v konstrukci dálkově řízeného robota obsahující dva režimy řízení. Součástí práce bylo navrhnout a otestovat dílčí moduly a vyvinout obslužnou aplikaci vzdáleného ovládání z počítače. Při návrhu bylo nejdůležitější studium dokumentace součástek pro následnou konstrukci jednotlivých modulů robota. Návrh desek plošných spojů byl realizován programem EAGLE 5.11.0. Mikrokontrolér byl programován softwarem AVR Studio 5.0. Hlavní částí implementace ovládacího programu bylo nastavení sériové komunikace protokolem RS-232. Jako vývojový nástroj pro ovládací program byl vybrán software Embardacedo C++ Builder 2010. Pro účely testování, zobrazení elektrických signálů byl využit multimetr OWON HDS1022M. Pro odesílání znaků po sériové lince byl zpočátku využit software RealTerm Seriál Capture Program 2.0.0.57. Zhotovená aplikace a konstrukce robota splnila stanovené cíle. Robot se dá využít jako učební pomůcka při vývoji ovládací aplikace mobilním telefonem. Možnost rozšíření režimu čidel je v implementaci inteligentnějšího algoritmu hledání čáry. Další možnosti rozšíření v režimu sledovače čáry spočívají v přidání čidel detekce překážek a implementace algoritmu objetí překážky.
45
Seznam použité literatury [1] NOVÁK, Petr. Mobilní roboty: pohony, senzory, řízení. Vyd. 1. Praha: BEN technická literatura, 2004, 247 s. ISBN 80-730-0141-1. [2] MATOUŠEK, David a Bohumil BRTNÍK. Programování mikrokontrolérů s jádrem 8051 v jazyce C: názorné příklady a funkční programy pro AT89S52. 1. vyd. Praha: BEN - technická literatura, 2010, 151 s. µC. ISBN 978-80-7300-264-0.
[3] CONNECTBLUE. Product Brief OEMSPA311/331 [online]. 2006 [cit. 2013-0425]. Dostupné z: http://www.spezial.cz/pdf/ProductBrief_OEMSPA311_331.pdf. [4] MATOUŠEK, David. C Builder: řešené příklady. 1. vyd. Praha: BEN - technická literatura, 2010, [94] s. ISBN 978-80-7300-258-9. [5] ELEKTRONICKÉ KONSTRUKCE. Dvojitý H-můstek pro řízení stejnosměrných motorů [online]. [cit. 2013-05-09]. Dostupné z: http://www.rotta.cz/PDF/bridge05.pdf
[6] Atmel Corporation. ATmega16 datasheet [online]. 2010 [cit. 2013-04-27]. Dostupné z: http://www.atmel.com/Images/doc2466.pdf
[7] Texas Instruments. L293, L293D QUADRUPLE HALF-H DRIVERS [online]. 2002 [cit. 2013-05-02]. Dostupné z: http://www.datasheetcatalog.org/datasheet/texasinstruments/l293d.pdf [8] Vishay. CNY70 [online]. 2012 [cit. 2013-05-05]. Dostupné z: http://www.vishay.com/docs/83751/cny70.pdf [9] MSDN. DCB structure [online]. 2013 [cit. 2013-05-09]. Dostupné z: http://msdn.microsoft.com/cscz/library/windows/desktop/aa363214%28v=vs.85%29.aspx
46
[10] Robotika. Enkodér [online]. 2003 [cit. 2013-05-09]. Dostupné z: http://robotika.cz/guide/encoders/en
[11] AVR Freaks. ATMega16 and PWM generation [online]. 2008 [cit. 2013-05-10]. Dostupné z: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=63701 [12] Květákov.net. Komunikujeme UART [online]. 2007 [cit. 2013-05-10]. Dostupné z: http://www.kvetakov.net/clanky/avr/59-komunikujeme-uart.html
47
Seznam obrázků Obrázek 1: podvozek TANK-01 (zdroj http://www.hobbyrobot.cz/)............................. 10 Obrázek 2: podvozek TANK-02 (zdroj http://www.hobbyrobot.cz/)............................. 10 Obrázek 3: podvozek UMU-01 (zdroj http://www.hobbyrobot.cz/) .............................. 11 Obrázek 4: podvozek MOB-03 (zdroj http://www.hobbyrobot.cz/)............................... 12 Obrázek 5: programátor USBasp (zdroj www.protostack.com) ..................................... 13 Obrázek 6: výpis přepínačů v AVRDUDE (zdroj http://www.ladyada.net/) ................. 13 Obrázek 7: blokové schéma režimu sledovače čáry (zdroj vlastní) ................................ 14 Obrázek 8: čidlo CNY70 (zdroj www.gme.cz) .............................................................. 14 Obrázek 9: mikrokontrolér ATmega16 (zdroj www.futurlec.com) ................................ 15 Obrázek 10: řízení v režimu sledovače čáry (zdroj vlastní) ........................................... 15 Obrázek 11: pulzně-šířková modulace (zdroj vlastní) .................................................... 17 Obrázek 12: vzorec nastavení frekvence PWM (zdroj datasheet ATmega16) ............... 17 Obrázek 13: integrovaný obvod L293D (zdroj www.gme.cz) ....................................... 18 Obrázek 14: blokové schéma režimu dálkového ovládání (zdroj vlastní) ...................... 19 Obrázek 15: asynchronní přenos dat (zdroj www.hw.cz) ............................................... 20 Obrázek 17: bluetooth RS-232 OEMSPA311 (zdroj www.connectblue.com) .............. 21 Obrázek 18: vzorec nastavení frekvence č/č 0 v režimu CTC (zdroj datasheet ATmega16) ..................................................................................................................... 22 Obrázek 19: enkodérové kolečko (zdroj vlastní) ............................................................ 22 Obrázek 20: reflexní čidlo B3 (zdroj www.stavebnice.cz) ............................................. 23 Obrázek 16: ovládací program Robot Bluetooth control (zdroj vlastní) ........................ 24 Obrázek 21: schéma zapojení řídicího modulu (zdroj vlastní) ....................................... 26 Obrázek 22: schéma zapojení modulu čidel (zdroj vlastní) ............................................ 26 Obrázek 23: schéma zapojení modulu motorků (zdroj vlastní) ...................................... 27 Obrázek 24: schéma zapojení bluetooth modulu (zdroj vlastní) .................................... 28 Obrázek 25: schéma zapojení modulu enkodéru (zdroj vlastní)..................................... 28 Obrázek 26: konektor MLW10G (zdroj www.gme.cz) .................................................. 29 Obrázek 27: konektor PSH02-06P (zdroj www.gme.cz) ................................................ 29 Obrázek 28: dálkově řízený robot (zdroj vlastní) ........................................................... 30 Obrázek 29: deska plošného spoje řídicího modulu (zdroj vlastní)................................ 31 Obrázek 30: deska plošného spoje modulu čidel (zdroj vlastní) .................................... 32 Obrázek 31: deska plošného spoje modulu motorků (zdroj vlastní) .............................. 33 48
Obrázek 32: deska plošného spoje bluetooth modulu (zdroj vlastní) ............................. 34 Obrázek 33: deska plošného spoje modulu enkodéru (zdroj vlastní) ............................. 35 Obrázek 34: hlavní formulář aplikace (zdroj vlastní) ..................................................... 36 Obrázek 35: měření PWM (zdroj vlastní)....................................................................... 43 Obrázek 36: měření signálu protokolu RS-232 (zdroj vlastní) ....................................... 44 Obrázek 37: měření signálu enkodéru (zdroj vlastní) ..................................................... 44
49
Seznam tabulek Tabulka 1: vstupy a funkce obvodu L293D (zdroj http://www.rotta.cz/PDF/bridge05.pdf) .......................................................................... 18 Tabulka 2: napěťové úrovně pro standart RS-232 (zdroj www.hw.cz) .......................... 20 Tabulka 3: popis pinů v asynchronním přenosu (zdroj vlastní)...................................... 20 Tabulka 4: nastavení citlivosti vstupů externího přerušení (zdroj datasheet ATmega16) ........................................................................................................................................ 22 Tabulka 5: seznam součástek řídicího modulu (zdroj vlastní) ....................................... 32 Tabulka 6: seznam součástek modulu čidel (zdroj vlstní) .............................................. 32 Tabulka 7: seznam součástek modulu motorků (zdroj vlastní) ...................................... 34 Tabulka 8: seznam součástek bluetooth modulu (zdroj vlastní) ..................................... 34 Tabulka 9: seznam součástek modulu enkodéru (zdroj vlastní) ..................................... 35
50
Seznam použitých zkratek PC – Personal Computer (osobní počítač) MCU – Micro Control Unit (mikrokontrolér) LSB – Least Significant Bit (nejméně významný bit) PWM – Pulse Width Modulation (pulzně-šířková modulace) Log – logická úroveň ISP – In System Programming (programování přímo v aplikaci) SPA – Serial Port Adapter (adaptér pro sériový port) USART – Universal Synchronous / Asynchronous Receiver and Transmitter (sériová komunikace) ASCII – American Standard Code for Information Interchange (americký standardní kód pro výměnu informací).
51
Přílohy 1 Obsah přiloženého CD
Bakalářská práce ve formátu .pdf
Návod obsluhy programu ve formátu .pdf
Zdrojové kódy aplikace
Zdrojové kódy programu pro mikrokontrolér
Návrhy plošných spojů
52