Vyšší odborná škola a Střední průmyslová škola elektrotechnická Olomouc, Božetěchova 3
PRAKTICKÁ ZKOUŠKA Z ODBORNÝCH PŘEDMĚTŮ Autonomní robot RX1
2008
Milan Kořínek
Praktická zkouška z odborných předmětů - Autonomní robot RX1
2
Praktická zkouška z odborných předmětů - Autonomní robot RX1 Prohlašuji, že jsem praktickou zkoušku vypracoval samostatně a všechny prameny jsem uvedl v seznamu použité literatury.
…………………………… jméno a příjmení studenta
Chtěl bych vyslovit poděkování panu Ing. Liborovi Kyselému za odborné konzultace a poskytnuté informace.
…………………………… jméno a příjmení studenta
Prohlašuji, že nemám námitek proti půjčování nebo zveřejňování mé práce nebo její části se souhlasem školy.
…………………………… jméno a příjmení studenta
3
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Obsah 1. Úvod .................................................................................................................................. 6 1. Úvod .................................................................................................................................. 6 2. Mechanická část robota ..................................................................................................... 7 2.1 Základní typy robotů ................................................................................................... 7 2.2 Použitý materiál ........................................................................................................... 7 2.3 Realizace pohybu robota – dopředu, dozadu a do stran .............................................. 7 2.4 Pásy.............................................................................................................................. 8 3. Elektrická část robota ...................................................................................................... 10 3.1 Základní vlastnosti, výrobní procesy ......................................................................... 10 3.2 Řídicí jednotka........................................................................................................... 11 3.2.1 Základní informace ............................................................................................. 11 3.2.2 Mikrokontrolér a programátor ............................................................................ 11 3.2.3 Resetovací obvod ................................................................................................ 12 3.2.4 Oscilátory ........................................................................................................... 12 3.2.5 Generátor pseudonáhodných čísel ...................................................................... 13 3.2.6 Detektory překážek ............................................................................................. 13 3.2.7 Výstupní budič sběrnice ..................................................................................... 16 3.2.8 Další konektory a signalizace ............................................................................. 17 3.3 Výkonový budič stejnosměrných motorů .................................................................. 19 3.3.1 Budící obvody stejnosměrného elektromotorku ................................................. 19 3.3.2 Obvod L293D ..................................................................................................... 19 3.3.3 Popis zapojení výkonového budiče stejnosměrných motorů .............................. 20 3.3.4 Odrušení motorů ................................................................................................. 21 3.4 Tvarovač, dekodér kvadraturního signálu ................................................................. 22 3.4.1 Základní popis zapojení ...................................................................................... 22 3.4.2 Připojované senzory ........................................................................................... 22 3.4.3 Tvarovač signálu................................................................................................. 24 3.4.4 Dekodér kvadraturního signálu .......................................................................... 24 3.4.5 Propojení s řídící jednotkou................................................................................ 25 3.5 Kompas CMPS03 ...................................................................................................... 26 3.6 Komunikační jednotka............................................................................................... 28 3.6.1 OEMSPA311i-04 ............................................................................................... 28 3.6.2 Komunikační jednotka – napěťová úprava signálu ............................................ 29 3.6.3 Bluetooth adaptér na straně PC .......................................................................... 31 3.7 Napájecí jednotka ...................................................................................................... 32 3.8. Seznam součástek ..................................................................................................... 34 4
Praktická zkouška z odborných předmětů - Autonomní robot RX1 3.8.1 Tvarovač, dekodér kvadraturního signálu .......................................................... 34 3.8.3 Výkonový budič motorů ..................................................................................... 36 3.8.4 Komunikační jednotka........................................................................................ 37 3.8.5 Napájecí jednotka ............................................................................................... 38 3.8.6 Ostatní................................................................................................................. 38 4. Programová část robota ................................................................................................... 39 4.1 Program mikrokontrolérů AT89S52 .......................................................................... 39 4.1.1 Základní informace, inicializační část programu ............................................... 39 4.1.2 Systémový časovač, 16b instrukce ..................................................................... 40 4.1.2 Řízení spojky ...................................................................................................... 42 4.1.3 Automatický režim robota .................................................................................. 43 4.1.4 Komunikace s kompasem ................................................................................... 45 4.1.5 Komunikace mikrokontroléru s počítačem......................................................... 47 4.2 Komunikátor – program pro počítač ......................................................................... 50 Závěr .................................................................................................................................... 52 Seznam použité literatury a studijních materiálů ................................................................ 53 Seznam příloh obsažených na CD ....................................................................................... 54
5
Praktická zkouška z odborných předmětů - Autonomní robot RX1
1. Úvod Robotika se dnes řadí mezi mladé, ale velmi rychle se rozšiřující vědní obory. Samotná robotika se, pak dělí do mnoha dalších disciplín např. výzkum 3D vidění, navigace, umělá inteligence, konstrukční řešení robotů atd. V dnešní době narazíme na roboty na každém rohu. Roboti se využívají v domácnostech, v průmyslu, v kosmonautice. Je snahou, aby všichni tito roboti byli natolik inteligentní, tak aby si dokázali poradit s neočekávanými situacemi, základem každého inteligentního robota je schopnost učení se. Cílem dlouhodobé maturity bylo sestavit funkční verzi robota postaveném na speciálním podvozku (popsán v kapitole mechanické části) a zjistit jeho výhody/nevýhody proti konvečnímu řešení. Dalším z cílů bylo detekovat překážky pomocí vhodných čidel, realizovat komunikace mezi počítačem a robotem. Pomocí počítače mít možnost ovládat robota ručně. Během celého cyklu sestavování a oživování robota jsem se snažil veškeré problémy řešit sám bez cizí pomoci. Veškerá zapojení, konstrukční díly jsem sestavoval sám za pomocí odborné literatury a datasheetu, díky čemuž jsem získal mnoho cenných zkušeností z oblasti elektroniky, navrhování plošných spojů a celkového řešení robota. Celého robota lze rozdělit na šest základních bloků, jenž je znázorněn na obrázku č. 1. Nejdůležitější a také nejsložitější částí robota je řídící jednotka, která se stará o řízení a zpracování dat z ostatních bloků. Senzorický subsystém lze rozdělit na dvě základní skupiny senzorů. První skupina slouží pro vnitřní potřeby a zabezpečení správné funkce samotného robota. Druhá skupina senzorů je využita pro orientaci robota v prostoru. Další částí je akční subsystém, který je určen pro samotný pohyb. Nejméně důležitým blokem je komunikační jednotka, bez které může robot bez většího omezení fungovat. Komunikační jednotka je určena pro zabezpečení komunikace mezi robotem a počítačem, kde může operátor převzít kontrolu nad robotem, sledovat chybové stavy, nastavovat významné konstanty ovlivňující chování robota. Do akčního subsystému spadají motory pro pohyb robota. Napájení robota je řešeno kabelem z externího zdroje. Robot nemá vlastní zdroj napětí z finančních důvodů a z důvodu velké hmotnosti baterií.
Počítač
Komunikační jednotka
Řídicí jednotka
Napájecí jednotka
Senzorický subsystém
Obr. č. 1: Blokové znázornění robota RX1.
6
Akční subsystém
Praktická zkouška z odborných předmětů - Autonomní robot RX1
2. Mechanická část robota 2.1 Základní typy robotů Existuje mnoho kategorií robotů podle prostředí, ve kterém se mohou pohybovat: na souši (vnitřní/vnější prostory), ve vzduchu, ve vodě atd. Já jsem si vybral robota pro vnitřní prostředí, protože na rozdíl od ostatních základních typů je nejjednodušší na realizaci a není striktně vyžadována přesnost, malá váha, aerodynamický tvar atd. Dále tento typ robotů můžeme rozdělit podle druhu podvozku: - Kolové - Pásové - Kráčející - Hybridní Jelikož jsem několik měsíců před zadáním dlouhodobé maturity začal vyvíjet mechaniku pro řízení pásového podvozku, rozhodl jsem jej tedy použít, otestovat, vyhodnotit výhody a nevýhody proti konvenční realizaci podvozku.
2.2 Použitý materiál Hlavním materiálem na výrobu robota sloužil ocelový plech o tloušťce 1,4 mm; šrouby M3,5 a jiné součástky ze stavebnice Merkur; závitové tyče. Nebylo možné používat plastových dílů, protože pro správnou funkci spojky a správné napnutí pásů, musel být materiál pevný, neohebný. Pro ovládání pohybu robota jsem použil dva stejnosměrné elektromotorky, jejichž základní parametry naleznete v tabulce č. 1. Převodovky pro pohon a ovládání spojky jsou vlastní výroby. Pro jejich realizaci byly použity ozubené kola, získána během mnoha let pravděpodobně ze starých budíků, mechanických hraček atd. Parametr Motor M1 – pohon Motor M2 – ovládání spojky 6 3 Napájecí napětí [V] 4 0.6 Výkon [W] 4500 Otáčky[ot/min] Tab. č. 1: Základní parametry stejnosměrných elektromotorků.
2.3 Realizace pohybu robota – dopředu, dozadu a do stran Základem je motor M1 (popsán výše) s převodovkou. Podle směru otáčení robot jede dopředu nebo dozadu. Klasická koncepce řízení pásového robota spočívá v použití dvou identických motorů a převodovek, každý pro jeden pás. Toto je nejběžnější a nejvhodnější řešení robotů malých rozměrů, ale i těch větších. Výhody tohoto sytému jsou: otáčení robota na místě, vysoká manévrovatelnost, rychlá odezva. Zásadní nevýhodou je vysoká cena kolem 2500 Kč při použiti převodovek s kovovým ozubením. Umělohmotné převodovky nemá příliš smysl kupovat, protože se rychle opotřebovávají, jsou vhodné opravdu jen pro malé roboty s nízkou váhou, kde by nebyly přetěžovány. Pro tento účel jsem vyvinul vlastní systém, který potřebuje pouze jeden hlavní motor s převodovkou, a druhý mnohem slabší motor pro ovládání spojky. Celá hnací osa je rozdělena na tři části: 1. Středová hnací osa, která je spojena natvrdo s převodovkou. 2. Levá osa spojená s levým pásem. 3. Pravá osa spojena s pravým pásem.
7
Praktická zkouška z odborných předmětů - Autonomní robot RX1 Princip je následující: Podle nastavení spojky jsou ke středové hnací ose připojena levá, pravá nebo oba pásy. V základní poloze jsou tedy spojeny všechny tři osy – robot pojede rovně. V druhé poloze spojka zůstane spojená s pravou stranou, ale s levou se rozpojí – robot se bude otáčet kolem levého pásu doleva. Velkou výhodou tohoto systému jsou malé náklady na úkor složitosti. Pro otočení robota je zapotřebí oblast ve tvaru kruhu s poloměrem dvojnásobku šířky robota. Jeho manévrovatelnost je značně omezena z důvodu doby než se spojka nastaví do správné polohy. Jistý problém může nastat při otáčení robota na hrubých podlahách, kde dochází značného opotřebování pásu, podle něhož se robot otáčí. V další verzi spojky tento problém zkusím vyřešit, tak že mechanicky docílím toho, aby se při otáčení robota pásy točily každý na jinou stranu.
2.4 Pásy Jak už jsem naznačil, robot má dva pásy. Jsou vyrobeny z řetězu z kola, na kterém je připevněn gumový pás ze stavebnice Merkur. Pro usazení řetězu jsou použita umělohmotná ozubená kola, která se požívají do přehazovaček u horských kol. Původně byly použity pouze gumové pásy, ale ukázalo se, že je není možné usadit tak, aby se nevyzuly. Pásy jsou do dvou třetin délky robota a slouží pro jeho pohon, vepředu jsou umístěna dvě pomocná kola. Pro toto uspořádání jsem se rozhodl z těchto důvodů: - Z principu fungování spojky vyplývá, že čím by byl pás delší tím by bylo tření mezi pásem a podlahou větší a robot by se otáčel jen s velkými obtížemi. - V konečném důsledku je robot o několik desítek gramů lehčí. Na obrázcích č. 2, 3 je zobrazena spojka s popisem. Na obrázcích č. 3, 4 je konstrukční uspořádání desek elektroniky a celkové mechanické řešení robota.
Obr. č. 2: Mechanismus řízení spojky, rozmístění dorazových optozávor.
8
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Obr. č. 3: Mechanismus řízení spojky, rozmístění elektroniky.
Obr. č. 4: Celkový pohled na robota, rozmístění elektroniky. 9
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3. Elektrická část robota 3.1 Základní vlastnosti, výrobní procesy Všechny plošné spoje použity v robotovi jsou realizovány pro jednodušší výrobu na jednostranném plošném spoji. Všechny desky jsem navrhoval v Eaglu verze 4.16r2 ve freeware verzi, která je určena pro nekomerční účely. Velikostí desek je omezena na 100 x 80 mm. Součástky jsem ve většině případů používal v klasických pouzdrech a rozměrech. Při vývoji řídící desky jsem byl donucen použít poprvé během vývoje robota SMD součástky, protože jsem narazil na omezení Eaglu. Montáž SMD součástek nebyla příliš náročná, tak jsem se rozhodl jej uplatňovat i na dalších desek, čímž jsem docílil zmenšení rozměrů desek a nákladů. Veškeré desky jsem vyráběl fotocestou za pomocí positivu 20 a leptal ve chloridu železitém FeCl3. Desky jsou ošetřeny natřenou kalafunou. Blokové schéma elektronické části je zobrazeno na obrázku č. 5. V následujících několika kapitolách budou jednotlivé části podrobně popsány. Ke každému integrovanému obvodu je připojen jeden 100n keramický blokovací kondenzátor, který eliminuje případné výkyvy napájecího napětí vlivem spínaní IO.
PC
2x Kompas
optosenzor překážek
Bluetooth modul
I2C Napájecí jednotka
Bluetooth modul
RS232
Komunikační jednotka
Řídicí jednotka Tvarovač, dekodér kvadraturního signálu
Motor pohonu – M1 Motor spojky – M2
Výkonový budič ss motorů
Inkrementální senzor
Obr. č. 5: Blokové schéma elektroniky.
10
3x optozávora
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.2 Řídicí jednotka 3.2.1 Základní informace Řídicí jednotka je nejsložitější a nejdůležitější části celého robota. Zabezpečuje řízení pohybu, vyhodnocuje signál z optosenzorů, zpracovává data poslána z PC, zprostředkovává komunikaci s kompasem. Jelikož se jedná o nejsložitější blok. Blokové schéma elektrické části je na obrázku č. 6, schéma zapojení je na obrázku č. 11 na konci kapitoly řídicí jednotka. Senzory spojky
Řízení motorů
8 x optosenzor
Připojení senzorů
Výstupní budič sběrnice
Rozšiřující port pro optosenzory
I2C
Generátor pseudonáhodných čísel
I2C Mikrokontrolér Atmel
RS232
RS232 - TTL
ISP/RS232
Resetovací obvod
RS232
Manuální reset
Generátor modulovaného signálu
Oscilátor 24MHz
Oscilátor 1.8432MHz
Obr. č. 6: Blokové schéma řídicí jednotky.
3.2.2 Mikrokontrolér a programátor Srdcem řídicí jednotky je mikrokontrolér Atmel. Já jsem si vybral AT89S52, ale je možné použití typů AT89S51, AT89S8252, AT89S8253. Hlavní rozdíly jsou uvedeny v následující tabulce č. 2.
Parametr Velikost paměti programu Maximální počet přepisů Velikost paměti dat Taktovací kmitočet
AT89S51 4 kB
AT89S52 8 kB
AT89S8252 8 kB
AT89S8253 12 kB
1 000
1 000
1 000
10 000
-
-
2 kB
2 kB
0Hz – 33MHz
0Hz – 33MHz
0Hz – 24MHz
0Hz – 24MHz
Tab. č. 2 : Porovnání mikrokontrolérů.
11
Praktická zkouška z odborných předmětů - Autonomní robot RX1 Tato „S“ řada mikrokontrolérů je vybavena ISP (In System Programing) – sériovým programováním mikrokontroléru. Většina na internetu publikovaných řešení využívá: a) Paralelního portu PC s jednoduchou elektronikou (několika rezistory, kondenzátory a hradly AND jako budičů). Výhody: vysoká rychlost, snadné ovládání. Nevýhody: Nebezpečí poškození portu, omezena délka kabelu, není k dispozici na všech PC. b) Tento programátor již vyžaduje řídicí elektroniku. Většinou se připojuje na sériový nebo na USB port. Program je PC odeslán do řídicí elektroniky, která si jej zpracuje. Pomocí několika vodičů je spojen programovaný obvod s tímto programátorem a je naprogramován. Výhodou je vysoká rychlost programování, snadné připojení, možnost použití dlouhého kabelu. Nevýhodu je nutnost mít programátor. c) V tomto případě se programovaný obvod přímo připojí na RS232 k PC přes převodník MAX232. Mcu je pak naprogramován stejně jako programátorem v předešlém bodě. Výhodou je snadné připojení k PC, relativně rychlý 1.64kB/s, problémy nastávají až při použití USB-RS232 převodníku, kde se rychlost u tohoto typu programátoru razantně sníží na 16B/s. Já jsem zvolil variantu c), se kterou jsem měl zkušenosti ve firmě a naprogramoval ovládací rozhraní. Program umožňuje zápis/čtení/verifikaci paměti programu a dat. Převodník napěťových úrovní pro RS232 na TTL je použit obvod IC3 – MAX232 zapojený podle datasheetu výrobce. Kondenzátory C4-C7 využívá tento obvod jako nábojovou pumpu. Zapojení pinů konektoru X2 je standardní a tudíž je možné použít obyčejný prodlužovací kabel pro sériový port PC s devíti pinovým konektorem cannon.
3.2.3 Resetovací obvod Mikrokontrolér má reset v log „1“, na rozdíl od většiny obvodů. K tomu musel být přizpůsoben resetující obvod složený z hradla NAND obvod IC2B. Rezistor R6 a C3 sloužící pro reset po připojení napájení, R5 definuje logickou hodnotu „H“, tlačítko S1 pro manuální reset. K resetovacímu obvodu je připojen reset od sériové linky, jelikož MAX232 má jen 2 vstupy a alternativní obvod s více vstupy je příliš drahý, rozhodl jsem se upravit logické úrovně RS232 na TTL pomocí zenerovy diody D1 jako stabilizátoru napětí, rezistorů R2, R3, hradla NAND. Rezistor R2 slouží pro omezení proudu tekoucí zenerovou diodou, R3 určuje logickou úroveň v případě odpojení sériového kabelu a hradlo tento signál neguje. Zapojení je sestaveno tak, aby nedošlo k resetu při připojení nebo odpojení sériového kabelu.
3.2.4 Oscilátory Na desce nalezneme celkem 2 oscilátory a jeden generátor modulovaného signálu, který popíši v další podkapitole. Použitý mikrokontrolér potřebuje pro svůj chod vnějšní taktovací kmitočet. Rozsah frekvencí je od 0Hz – 33MHz. Já jsem si zvolil 24MHz ze dvou důvodů: Lze použít jakýkoliv výše uvedený mikrokontrolér a výpočet délky jednoho strojového cyklu SC vyjde celé číslo – 0,5µs. Základem oscilátoru je krystal 24MHz, kondenzátory C1, C2, rezistor R1 a dvě hradla NAND obvodu IC2C, IC2D. Oscilátor je pak připojen k pinu XTAL1, pin XTAL2 zůstane nezapojen. Druhý oscilátor slouží jako taktovací kmitočet pro generátor pseudonáhodných čísel. Je totožně zapojen jako oscilátor pro mikrokontrolér. Skládá se z těchto součástek: R14, C10, C11 a dvou hradel obvodu IC6.
12
Praktická zkouška z odborných předmětů - Autonomní robot RX1 3.2.5 Generátor pseudonáhodných čísel Deska obsahuje 4bitový generátor pseudonáhodných čísel. Pseudonáhodný znamená, že se sekvence generovaných čísel opakuje. Jelikož ke generátoru přistupuji v náhodném čase, když robot narazí na překážku, tak ve výsledku dostanu náhodné číslo. Tento generátor využívám pro výpočet stupňů, o který se má robot otočit při detekci překážky. Základem je obvod 4006 – IC5, který obsahuje dva čtyřbitové a dva pětibitové posuvné registry. Tyto registry mají společný hodinový vstup, vstupy a částečně výstupy. Za výstupy jsou hradla XOR obvodu IC4, jejíž výstupy jsou vedeny na vstup obvodu IC5 a na tranzistory zapojené ve spínacím režimu. Kolektory těchto tranzistorů jsou připojeny k mikrokontroléru. Rezistory R10 – R13 slouží pro omezení proudu tekoucí bází a zaručují úplné otevření tranzistorů. Rezistory R24 – R26 zapojené mezí bází a emitorem jsou určeny pro rychlejší zavírání tranzistorů, vybitím kapacity PN přechodu. Jejich hodnota není kritická a pohybuje se v řádech desítek kiloohmů. Generátor používá obvody CMOS, protože k obvodu IC5 není ekvivalent v TTL logice. Zapojení je taktováno oscilátorem o frekvenci 1,8432MHz popsaným v předešlé podkapitole. Výstup generátoru je vyveden na pinech konektoru J4.1 – J4.4
3.2.6 Detektory překážek Aby robot byl schopen se vyhnout překážkám, musí mít vhodné senzory, které mu oznámí potenciální překážku. Existují tyto základní typy: a) Mechanický – Většinou se jedná o nárazník, kterým se po nárazu sepnou spínače. Ten by měl obsahovat každý robot, v případě selhání elektroniky. - Výhody: Spolehlivé, jednoduché zapojení a vyhodnocení - Nevýhody: Jedná se kontaktní detekci překážky. Robot se nic nedozví o svém blízkém ani vzdáleném okolí. b) Optický – Tyto senzory se používají pro zkoumání nejbližšího okolí robota. Existuje mnoho typů optických senzorů, nejjednodušší je použití infradiody a infratranzistoru. V tomto zapojení se dosahuje detekce ve vzdálenosti jednotky až desítky cm. Druhou možností je použití integrovaného řešení v podobě GP2D02. Jedná se o IR senzor , který měří vzdálenost k překážce na principu triangulace. Jeho rozsah je 10 cm – 80 cm. - Výhody: relativně levné řešení - Nevýhody: Závislost vyhodnocené vzdálenosti na typu materiálu, zvláště při čistém použití u IR diody a tranzistoru. Není vhodný pro detekci skla. c) Ultrazvukový - Používá se pro detekce vzdálenějších překážek. Jeho rozsah je 3 cm až jednotky metrů. Typy např. SRF04, SRF08… Informaci o vzdálenosti překážky odesílá buď po I2C, nebo délkou impulsu závislou na vzdálenosti od překážky. - Výhody: velký rozsah - Nevýhody: nedokáže detekovat měkké materiály jako je záclona, hadr… d) Kamery - Složitější roboti používají kamery. Je potřeba výkonného mikropočítače, nebo většinou je signál z kamery zpracováván PC. Za použití dvou kamer, je pak počítač schopen vytvořit 3D prostředí robota a dokáže se v něm navigovat. - Výhody: Umí si vytvořit opravdový obraz o svém okolí a tím vyčnívá nad ostáními senzory. - Nevýhody: Složitá analýza obrazu, velký datové toky a tím nároky na rychlý bezdrátový přenos dat a zpracování dat.
13
Praktická zkouška z odborných předmětů - Autonomní robot RX1 Já jsem zvolil kombinaci mechanického a optického senzoru. Nárazník je použit v případě, že by optický senzor nedetekoval překážku. Nárazník je sestaven ze svařovacího drátu, spojený pružinou s hlavní kostrou. V levé a v pravé poloze nárazníku jsou umístěny tlačítka, která se sepnou, když robot narazí na překážku. Tlačítko S1 je umístěno vlevo a S2 vpravo na nárazníku. Schéma zapojení tlačítek nárazníku je na obrázku č. 7. Propojení tlačítek s řídicí jednotkou ukazuje tabulka č. 3. J1 1 2 3
J4 (ŘJ) 7 8 9
Poznámka P2.6, Levé tlačítko P2.7, Pravé tlačítko GND
Tab. č. 3: Propojení tlačítek nárazníku. Obr. č. 7: Schéma zapojení tlačítek nárazníku s řídicí jednotkou (ŘJ). Optický senzor se skládá z obvodu SHF5110-36 a dvou vysílacích IR diod LD274, jenž se nachází na zvláštní desce plošných spojů. Diody jsou modulovány signálem o nosné 36kHz signálem o frekvenci 5kHz viz obrázek č. 8. Generátor modulovaného signálu je umístěn na desce řídící jednotky. Modulovaný signál je generovaný pomocí dvou časovačů obsažených v jednom pouzdru NE556 zapojených jako astabilní klopný obvod. Výstup časovače generující 5kHz je zapojen na reset druhého časovače, čímž vznikne na výstupu druhého časovače modulovaný signál. Rezistory R16 – R19 a kondenzátory C13, C15 slouží pro nastavení frekvence 36kHz a 5kHz. Pro přesné nastavení kmitočtu 36kHz je místo rezistoru R16 použit trimr.
Obr. č. 8 : Modulovaný signál pro IR LED. Tento signál je proudově zesílen a následně emitován IR diodami. Po odražení od překážky je zpracován obvodem IO1. Výstupem tohoto obvodu by měl být signál o frekvenci 5kHz, ale může být mnohem nižší, záleží na kvalitě odraženého signálu od překážky. Mikrokontrolér tyto pulsy čítá a následně je vyhodnotí. Programově lze nastavit citlivost senzorů. Výhodou použití modulovaného signálu je, že pak senzor nereaguje na okolní osvětlení. Jistou nevýhodou mohou být ovladače domácích spotřebičů, které způsobí falešnou detekci překážky. Schéma zapojení modulu senzorů je na obrázku č. 9, Všechny senzory jsou připojeny stejně za sebou na řídící jednotce. Tabulka č. 4 zobrazuje připojení prvního senzoru. Rezistor R2 slouží pro omezení proudu tranzistorem Q1. Tranzistor je použit PNP tak, aby 14
Praktická zkouška z odborných předmětů - Autonomní robot RX1 bylo možno spínat diody v log. „0“ (výstupní obvod, na desce řídicí jednotky pro řízení těchto senzorů, je aktivní v log. „0“ ). Proud tekoucí IR diodami D1, D2 je omezen rezistorem R1 na 50 mA. RC člen sloužený z R3 a C1 je určen pro filtraci napájení obvodu IO1, tento obvod není na finální desce zapojen, protože způsoboval špatnou funkci obvodu IO1, přestože je uveden v datasheetu. Obvod IO1 má výstup s otevřeným kolektorem bez vnitřního pull-up rezistoru, proto je nutné ho doplnit zvnějšku jako rezistor R4 o hodnotě 10k. Konektor Poznámka na ŘJ 1 J5.1 Modulovaný signál 2 J7.1 GND 3 J6.1 Výstup ze senzoru 4 J8.1 +5V Tab. č. 4: Připojení modulu senzoru 1 k řídicí jednotce (ŘJ). J1
Obr. č. 9: Schéma zapojení modulu optického senzoru. Aby bylo možné připojit více čidel, aniž bych přišel zbytečně o mnoho pinů mikrokontrolérů (každé čidlo potřebuje linku pro jeho zapnutí a čtení pulsů), rozhodl jsem se zapojit rozšiřující port, který umožňuje připojení až 8 optických senzorů. Pro řízení rozšiřovacího portu je zapotřebí pouze 5 pinů mikrokontrolérů, z čehož jsou piny P0.3, P0.4, P0.5 použity pro adresaci jednotlivých senzorů, pinem P0.6 je aktivován příslušný senzor a pin P0.2 slouží pro čtení výstupu ze senzoru. Port je složen z 8bit multiplexeru IC7 a z 8bit demultiplexeru IC8. Tyto obvody mají společnou adresní sběrnici. Generátor modulovaného signálu je připojen k demultiplexeru na povolovací pin 6, aby se tento signál dostal na výstup, je zapotřebí také aktivovat povolovací piny 4, 5 log. „0“ mikrokontrolérem. Tento obvod má výstupy aktivní v log. „0“, a z tohoto důvodu jsou použity tranzistory typu PNP na modulu optických senzorů, jak jsem dříve psal. Pro získání signálu z výstupu aktivovaného senzoru je potřeba použít multiplexer. Jeho výstup je pak připojen k mikrokontroléru k pinu P0.2. Na pin výstupu 6 je připojena Led LED4 s předřadným rezistorem R15 určená pro optickou signalizaci výstupního signálu ze senzoru. Shrnutí z ovládání přídavného portu: - mikrokontrolér nastaví adresu požadovaného senzoru - aktivuje senzor log. „0“ na pinu P0.6 - na pinu P0.2 je k dispozici výstup příslušného senzoru, opticky je signalizován na LED4 - deaktivuje senzor log. „1“ na pinu P0.6
15
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.2.7 Výstupní budič sběrnice Výstupní budič sběrnice je použit pro spínání optočlenů výkonového budiče motorů. Budič je výjimečný tím, že je realizován na zvláštní desce, jenž je k řídící desce připájena kolmo. Z důvodu minimální velikosti desky jsou použity SMD součástky. Schéma je na obrázku č. 10. Připojení budiče k řídící jednotce ukazuje tabulka č. 5.
J1 1 2 3 4 5 6 7 8
J1 na ŘJ 1 2 3 4 5 6 7 8
Poznámka GND GND GND +5V P1.0 P1.1 P1.2 P1.3
Tab. č. 5: Připojení výstupního budiče sběrnice k řídicí jednotce (ŘJ).
Obr. č. 10: Schéma zapojení výstupního budiče sběrnice. Tranzistory Q1 až Q4 jsou zapojeny jako spínače. Před bází jsou zapojeny předřadné rezistory R1 – R4 o hodnotě 1kΩ. Zapojení kolektorů a emitorů je takto voleno z důvodu, aby došlo při připojení k výkonovému budiči motorů zastavení motorů. Tabulka č. 6 ukazuje propojení výkonového budiče motorů s budičem sběrnice. J2 Pin na budiči motorů Poznámka 1 EN2 mcu - P1.3 2 DIR2 mcu - P1.2 3 NC GND 4 GND GND J3 1 EN1 mcu - P1.0 2 DIR1 mcu - P1.1 3 NC GND 4 NC GND Tab. č. 6: Připojení výstupního budiče k výkonovému budiči motorů.
16
Praktická zkouška z odborných předmětů - Autonomní robot RX1 3.2.8 Další konektory a signalizace Pro signalizaci orientačního stavu robota jsou k dispozici dvě LED diody viz. tabulka č. 7. LED
Pin mcu
LED2 P1.4 LED3 P1.0 Tab. č. 7: Led signalizace stavu robota.
Barva červená oranžová
Signalizace Kritická chyba Manuální režim
Napájení desky je 5V připojených na konektor SL3. Na pinu 1 je zem a na pinu 2 je +Ucc. Z důvodu ochrany desky před přepólováním byla použita dioda D2, když byla vybrána dioda s nízkým prahovým napětím, byla raději ve finálním provedení nahrazena propojkou z důvodu občasného resetu procesoru při aktivaci optických senzorů. Dále řídicí jednotka disponuje RS232 sběrnicí určenou pro komunikaci na konektoru SL1 viz kapitola komunikační jednotka. Dále lze k řídící jednotce připojit zařízení s rozhraním I2C, jenž je k dispozici na konektoru J9, viz tabulka č. 8.
J9 1 2 3 4
Význam +5V SCL SDA GND
Tab. č. 8: Popis konektoru I2C. Posledním konektorem na desce je J2 sloužící pro připojení čidel spojky viz kapitola Tvarovač, dekodér kvadraturního signálu.
17
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Obr. č. 11: Schéma zapojení řídicí jednotky 18
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.3 Výkonový budič stejnosměrných motorů 3.3.1 Budící obvody stejnosměrného elektromotorku
Směr otáčení Zapnutí motoru
Řídicí obvod
Pro řízení robota jsou použity dva stejnosměrné elektromotorky, které je zapotřebí zapnout a vybrat si směr otáčení. Pro změnu smyslu otáčení motoru je nutné otočit napájení, tato funkce se realizuje H-můstkem složeným ze čtyř výkonových tranzistorů, nejlépe unipolárních. Tento H-můstek je znázorněn na obrázku č. 12.
Obr. č. 12: H-můstek.
Funkce H-můstku je následovná. Jak jsem již řekl, změna smyslu otáčení motoru se provádí změnou polarity napětí. Pro otáčení motoru jedním směrem musí být sepnuty tranzistory T1, T4, pro otáčení na druhou stranu se sepnou tranzistory T3, T2 což zapříčiní změnu polarity napětí. Řídicí obvod nesmí dopustit sepnutí dvou tranzistorů pod sebou, což by zapříčinilo zkrat a pravděpodobné poškození tranzistorů, případně napájecího zdroje. Při sepnutí tranzistorů T1, T3 nebo T2, T4 zapříčiní zabrzděni motoru. Změnu otáček motoru lze realizovat dvěma způsoby: a) Změnou napájení motoru b) PWM signálem řídit zapínání motoru Rychlost otáčení pásů je nízká, a proto nebylo zapotřebí regulovat rychlost otáček motoru. Jediný případ, kdy reguluji otáčky motoru je při nastavování spojky.
3.3.2 Obvod L293D I když jsem si sestavil H-můstek z diskrétních součástek na nepájivém poli a řídil elektromotorky, rozhodl jsem se pro integrovanou verzi v podobě obvodu L293D, protože verze z diskrétních součástek zabírala příliš velký prostor a byly by mnohem větší problémy s chlazením tranzistorů. Obvod L293D obsahu v sobě 2 plnohodnotné H-můstky viz blokové schéma na obrázku č. 13. Z každého můstku lze odebírat proud až 600 mA, špičkově 1,2 A. V případě napájení obvodu 5 V (pin VSS) je kompatibilní s TTL logikou. Druhé napájecí kontakty (pin VS) slouží pro napájení motorů, napětí na motorech je pak menší o cca 1V oproti USS z důvodu napěťového úbytku na výkonových členech obvodu. Jako každý výkonový prvek i tento vyžaduje chladič. 19
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Obr. č. 13: Blokové schéma L293D.
V datasheetu jsou uvedeny možné způsoby chlazení. Já jsem využil kombinaci chladicích ploch (menších rozměrů než je uvedeno v datasheetu z důvodu zachování malých rozměrů desky) a hliníkového chladiče připevněného na pouzdro čipu pomocí svařovacího drátku, který je pak připájen na desce. Mezi chladič a čip jsem použil teplovodivou pastu pro lepší odvod tepla.
3.3.3 Popis zapojení výkonového budiče stejnosměrných motorů Celé schéma zapojení lze vidět na obrázku č. 14. Ve schématu jsou sice zakresleny motory, ale ve skutečnosti se motory připojí kabelem s odrušovacími prvky viz. kapitola odrušení motorů. Podle datasheetu by při stejné logické hodnotě mělo dojít ke zabrzdění motoru, ale při testováni na nepájivém poli jsem nebyl schopný realizovat tuto funkci, pravděpodobně bude chyba uvnitř. Z tohoto důvodu ani deska nepodporuje tuto funkci a lze řídit pouze směr a případně otáčky motoru. Aby možné měnit smysl otáčení motoru, je zapotřebí přivést na vstupy 1A, 2A (3A, 4A) opačnou logickou úroveň, proto je před vstupem 2A a 3A invertor v podobě obvodu IC2 74LS14. Všechny vstupy jsou opatřeny pull-up rezistory R3, R5, R7, R9, které definují vysokou logickou úroveň. Deska je napájena 6.5V. Z důvodu existence obvodu IC2 je zapotřebí toto napětí stabilizovat na 5V. K tomuto účelu slouží nízkoúbytkový stabilizátor T1 LE50cz, který potřebuje pro svou funkci pouze o 0.2V vyšší napětí než požadované výstupní. Motor 2 je určen pro nižší napětí než motor 1, z tohoto důvodu je zde předřadný výkonový rezistor R1. Z důvodu rušení a nebezpečí poškození řídicí jednotky jsou řídící vodiče od ní opticky odděleny optočlenem OK1 PC847. Na vstupech každého optočlenů je předřadný rezistor pro omezení proudu tekoucího diodami optočlenů. Tato deska navržena mezi prvními, a proto se zde vyskytlo několik menších chyb, které jsou popsány v závěru.
20
Praktická zkouška z odborných předmětů - Autonomní robot RX1
+ -
Obr. č. 14: Schéma zapojení výkonového budiče stejnosměrných motorů.
3.3.4 Odrušení motorů Při testování robota jsem narazil na velmi závažný problém – rušení. Toto rušení velmi narušovalo chod celého robota – mikrokontrolér se samovolně resetoval, špatné vyhodnocování senzorů atd. Odrušení robota trvalo prakticky několik týdnů, než jsem získal informace, jak robota odrušit. Asi největším problémem je celokovová kostra a tím mnohem větší šíření rušení. Nejdříve jsem nahradil jeden kovový díl za plastový. V další fázi jsem připájel kondenzátory k motorům. Sériovým spojením kondenzátorů vznikl střed, který se připojí na kovový kryt motoru viz obrázek č. 15. Dále jsme musel připojit do série s napájením motoru odrušovací tlumivku s dvojitým vynutím, díky čemuž se odruší symetrické rušení. Tyto odrušovací prvky jsou mimo desku výkonového budiče motoru a jsou umístěny u motorů.
Obr. č. 15: Zapojení odrušovacích prvků. 21
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.4 Tvarovač, dekodér kvadraturního signálu 3.4.1 Základní popis zapojení Schéma zapojení je vidět na obrázku č. 16. I když na první pohled zapojení vypadá složitě, v podstatě se jedná o 6 stejných obvodů. Tvarovač má za úkol upravit signál z optozávory/inkrementálního signálu. Druhý obvod – dekodér kvadraturního signálu se postará o dekódování signálu z inkrementálního snímače na získání informace o směru otáčení. Výstupy optozávor a směr otáčení inkrementálního snímače je signalizován pomocí LED. Optozávory a inkrementální snímače se připojují pomocí 3(4)-pinového konektoru k desce. Při návrhu desky bylo hlavně dbáno na velikost desky a z tohoto důvodu jsou dva konektory otočeny oproti ostatním. Z toho samého důvodu se výstupy nenachází vedle sebe, ale jsou rozmístěny kolem jedné hrany desky. Jelikož jsem nechtěl nechat polovinu obvodu nevyužitou rozhodl jsem se, že je využiju a tak dostanu k dispozici další obvody tvarovačů a dekodéru, které mohu využít kdykoliv později.
3.4.2 Připojované senzory K desce tvarovače lze připojit optozávory a inkrementální snímače. Existují dvě kombinace připojitelných senzorů, které jsou znázorněny v tabulkách č. 9 a č. 10. Senzor Vstupní konektor Výstupní piny Pulsy: pulsy 1 Inkrementální senzor SL3 1 Směr: smer 1 Optozávora 1 SL2 optozávora 1 Optozávora 2 SL1 optozávora 2 Optozávora 3 SL4 optozávora 3 Optozávora 4 SL5 optozávora 4 Tab. č. 9: Konfigurace 1 - 1x inkrementální senzor a 4x optozávora. Senzor
Výstupní piny Pulsy: pulsy 1 Inkrementální senzor 1 SL3 Směr: smer 1 Ucc, emitor1: SL4 Pulsy: pulsy 2 Inkrementální senzor 2 GND, emitor2: SL5 Směr: smer 2 Optozávora 1 SL2 optozávora 1 Optozávora 2 SL1 optozávora 2 Tab. č. 10: Konfigurace 2 – 2x inkrementální senzor a 2x optozávora.
LED D5 LED2 LED1 LED5 LED3
Konektor
LED D5 LED3 LED4 LED2 LED1
Já jsem použil první kombinaci, z které jsem využil inkrementální senzor a 3 optozávory. Inkrementální senzor slouží pro generování přerušení při nastavování spojky. V přerušení je řešeno veškeré řízení spojky, aby se nezastavilo provádění programu, než se nastaví spojka do požadované polohy. Původně byl inkrementální snímač určen pro přesné zjištění polohy spojky, ale z důvodu spolehlivosti jsem byl donucen předělat do podoby 3 optozávor, které přímo signalizují 3 polohy: - spojka vlevo - spojka uprostřed - spojka vpravo Schéma zapojení optozávory je na obrázku č. 17, inkrementální snímač na obrázku č. 18.
22
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Obr. č. 16: Schéma zapojení tvarovače, dekodéru kvadraturního signálu. 23
Praktická zkouška z odborných předmětů - Autonomní robot RX1
IR1
Obr. č. 17: Zapojení optozávory.
Obr. č. 18: Zapojení inkrementálního snímače.
V původním zapojením byl umístěn rezistor R1 pro omezení proudu vysílací diodou u optozávory na desce tvarovače, ale během testování se mi stalo, že jsme optozávoru nedopatřením zkratoval a ona shořela. Inkrementální senzor je vyseparovaný z kuličkové myši.
3.4.3 Tvarovač signálu Po připojení jakéhokoliv senzoru je nejdříve zapotřebí tento signál napěťově a tvarově upravit. Popíši obvod inkrementálního senzoru 1. Rezistor R7 slouží pro definování logické úrovně „L“. Při sepnutí fototranzistoru bude logická úroveň „H“. Kondenzátor C2 slouží pro odrušení vstupu, na výsledné desce není použit, protože se ukázalo, že není bezpodmínečně nutný a případné rušení se šířilo jinudy. Zenerovou diodou D1 před bází tranzistoru T4 jsem docílil strmých hran obdélníkového signálu a imunitu proti zákmitům. Signál ze senzorů se spíše podobá sinusovce. Tato dioda zároveň omezuje proud tekoucí bází. Signál z tranzistoru je přiveden na obvod IC2. Díky použití Schmittového klopného obvodu se tvar signálu zlepší. Rezistor R9 slouží pro definování logické úrovně při překlápění hradla. Stejně fungují další tvarovače na desce.
3.4.4 Dekodér kvadraturního signálu Abych zbytečně nezatěžoval procesor zbytečnými úkony, rozhodl jsme se postavit hardwarový dekodér kvadraturního signálu. Průběh signálu z inkrementálního senzoru lze vidět na obrázku č. 19. Lze vidět, že signály mají posunutou fázi o +90o. Při opačném směru otáčení by signály byly otočeny o -90o. Pro dekódování jsem použil IC3 klopný obvod typu D, který má dva vstupy. Jeden vstup je hodinový a druhý datový. Hodinový vstup reaguje na nástupnou hranu a při příchodu této hrany přečte data z datového vstupu a zapíše je na jeho výstup. Přečtená data si pamatuje do další náběžné hrany. Předpokládejme, že signál A je datový a signál B hodinový. Z grafu je jasné, že na výstupu obvodu bude vždy log. „H“, pokud se změní směr otáčení, pak na jeho výstupu bude log. „L“. Druhý výstup obvodu je negací prvního, tento negovaný výstup využívám pro signalizaci směru pomocí LED.
24
U [V]
Praktická zkouška z odborných předmětů - Autonomní robot RX1
U [V]
t [ms]
t [ms]
Obr. č. 19: Průběh signálu z inkrementálního snímače.
3.4.5 Propojení s řídící jednotkou Výše popsaný principy platí pro všechny další obvody na desce, jenž jsou totožné. Je nutné upozornit na připojování 2. inkrementálního snímače, který musí mít do série s vysílací diodou rezistor. Tento rezistor není na desce, jelikož připojované optozávory mají rezistor implementovány u sebe. Všechny výstupy z desky jsou opatřeny výstupy s otevřeným kolektorem. Pull-up rezistory nejsou potřeba, protože jsou obsaženy v mikrokontroléru. Tabulka č. 11 ukazuje propojení s řídící jednotkou.
Senzor
Výstupní piny Pulsy: pulsy 1 Inkrementální senzor 1 Směr: smer 1 Optozávora 1 optozávora 1 Optozávora 2 optozávora 2 Optozávora 4 optozávora 4 GND Tab. č. 11: Propojení s řídicí jednotkou (ŘJ).
25
J2 na ŘJ 7 6 2 3 5 1
Poznámka P3.2 – přerušení P3.4 P3.7 – levý dorazový P3.6 – pravý dorazový P3.3 - středový GND
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.5 Kompas CMPS03 Jedná se specializovaný elektronický kompas CMPS03 určený přímo pro mobilní roboty. Kompas využívá dvojici vzájemně kolmých senzorů KMZ10A založených na magnetorezistivním jevu, tedy jejich elektrický odpor je závislý na intenzitě a směru magnetického pole. Bohužel kompas neobsahuje třetí korekční senzor, který by korigoval natočení kompasu v kolmém směru. Pro správnou funkci kompasu je potřeba zajistit, aby se kompas nenakláněl. Přesnost měření je kolem 4o – 5o s rozlišením na desetiny stupně. Spotřeba kompasu je 15mA při 5V. Popis vývodů kompasu je na obrázku č. 20.
Obr. č. 20: Zapojení pinů kompasu.
Kompas posílá údaj o azimutu dvěma způsoby: 1. Šířkově modulovaným signálem (PMW) Šířka pulsu ve vysoké úrovni určuje azimut. Šířka se mění od 1 ms (pro azimut 0°) do 36.99 ms (pro azimut 359.9° ) – neboli 100us/° +1ms offset. Nízká úroveň signálu trvá konstantních 65 ms. Celková perioda se může měnit od v rozmezí 66 ms až 102 ms. Výstup PWM signálu je na pinu 4. 2. Přes sběrnici I2C Kompas disponuje sběrnicí I2C, po které lze získat verzi firmwaru, azimut, provést kalibraci kompasu. Sběrnice je vyvedena na pinech 2 – SDA(data), 3 – SCL(hodiny). Kompas se vždy chová jako slave. Tyto dva vstupy nejsou opatřeny pull-up rezistory, a proto je nutné je doplnit z vnějšku. U robota jsou implementovány na řídicí jednotce v podobě rezistorové sítě R7 o hodnotě 10k. Kompas je navržen pro maximální rychlost hodinového signálu 1 MHz. Při frekvenci vyšší jak 160 kHz je zapotřebí dodržovat některá pravidla, jenž jsou popsána v datasheetu (datasheet je k dispozici na CD). Azimut kompas odesílá buď jako 1 nebo 2 bajtovou hodnotu. Popis komunikace s kompasem bude popsán v kapitole popisu programu pro mikrokontrolér. Kompas je imunní proti síťovému rušení 50Hz nebo 60Hz v závislosti na nastavení pinu 7. Jestliže je pin 7 připojen na nízkou úroveň, pak měření azimutu probíhá každých 40 ms (50 Hz). V opačném případě se provádí měření každých 33,3 ms (60 Hz). Pin 7 je připojen vnitřně přes rezistor na 5 V, tedy ho není třeba nijak ošetřovat, jestliže nevyžadujeme odolnost proti síťové frekvenci 50 Hz.
26
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Kalibraci je třeba provést před nasazením robota v konkrétních podmínkách. Kalibraci lze provést dvěma způsoby a to příkazem přes sběrnici I2C nebo manuálně. Při kalibraci je zapotřebí, aby kompas ležel vodorovně. Můžeme si zvolit vlastní orientační bod, není nutné ho kalibrovat podle světových stran. Kalibrace kompasu přes I2C(manuálně): 1. Kompas natočíme na sever a do registru 15 zapíšeme FFh (pin 6 krátce připojíme na GND). 2. Kompas natočíme na východ a do registru 15 zapíšeme FFh (pin 6 krátce připojíme na GND). 3. Kompas natočíme na jih a do registru 15 zapíšeme FFh (pin 6 krátce připojíme na GND). 4. Kompas natočíme na západ a do registru 15 zapíšeme FFh (pin 6 krátce připojíme na GND). Kompas lze k řídicí jednotce připojit přímo do desky (konektor J3) nebo plochým kabelem. Propojení těchto zařízení je znázorněno v tabulce č. 12. Kompas 1 2 3 9
J3 na ŘJ 1 2 3 9
Význam +5V SCL SDA GND
Tab. č. 12: Propojení kompasu s řídicí jednotkou (ŘJ).
27
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.6 Komunikační jednotka Komunikační jednotka slouží pro bezdrátový přenos sériové sběrnice RS232 a tedy bezdrátovou komunikaci mezi robotem a počítačem. Komunikační jednotka se skládá ze dvou částí. Hlavní částí je samotný bluetooth modul OEMSPA311i-04 od firmy connectBlue. Pro Českou republiku jsou tyto moduly distribuovány firmou Spezial Electronic. Druhá část slouží pro napěťovou úpravu signálů z bluetooth modulu, jehož výstup je v 3V logice. Deska upraví tento signál pro kontabilitu s TTL obvody a s úrovněmi sériového portu PC. Na straně počítače se nachází USB bluetooth adaptér.
3.6.1 OEMSPA311i-04 Základní parametry bluetooth modulu jsou v tabulce č. 13. Parametr Hodnota Napájení 3–6V Odběr (průměr) 17 mA Výkon 7 dBm Dosah ~ 150 m Třída Class 2 Anténa Integrovaná SMD anténa Tab. č. 13: Základní parametry OEMSPA311i-04. Tyto moduly jsou primárně navrženy pro bezdrátový přenos RS232, RS422, RS485. Nahráním firmwaru, jenž je zdarma na stránkách výrobce, lze modul nakonfigurovat jako I/O modul, repeater atd. Možnosti těchto modulů výrobce neustále rozšiřuje. Pro nahrání firmwaru, nebo připojení k PC se provádí přes RS232 (je třeba vložit převodník MAX232 mezi modul a PC). Nastavení modulu se provádí AT příkazy nebo pomocí softwaru od výrobce. Stav modulu lze zobrazovat na LED, jenž se k němu připojí. Rozmístění konektorů a význam pinů konektoru J6 jsou na obrázku č. 21 a v tabulce č. 14.
Obr. č. 21: Rozmístění konektorů.
28
Praktická zkouška z odborných předmětů - Autonomní robot RX1
J6 1 2 3 4 5 6 7 8 9 10 11 12-15 16 17 18 19-22
Funkce GND VCC DTR Red LED Green LED/Switch1 Blue LED
Typ vstup výstup výstup vstup/výstup výstup
Poznámka Reset modulu, Aktivní v log „L“ GND 3 – 6V
Led svítí – navázáno spojení, Led bliká – probíhá přenos dat
CTS vstup TXD výstup RTS výstup RXD vstup Nevyužity DSR vstup SerialSelect-0 výstup SerialSelect-1 výstup Elektricky nepřipojeny Tab. č. 14: Popis pinů konektoru J6.
3.6.2 Komunikační jednotka – napěťová úprava signálu Aby bylo možné nakonfigurovat bluetooth modul připojením na RS232 v TTL úrovních, je potřeba signál z modulu upravit. V datasheetu jsou uvedeny doporučená schéma zapojení modulu. Na základě těchto schémat jsem sestavil schéma zapojení komunikační jednotky. Schéma je uvedeno na obrázku č. 22. Všechny výstupy bluetooth modulu jsou přímo připojeny na budič IC1. Před všemi vstupy bluetooth modulu, jenž jsou připojeny na budič IC1, jsou umístěny napěťové děliče složené z rezistorů. Reset bluetooth modulu lze provést tlačítkem S2 nebo přivedením log. „0“ na pin 1 konektoru J1. Tento vstup je s otevřeným kolektorem. Defaultní nastavení modulu je 57600 bits/s, 8 datových bitů, bez parity, 1 stop bit a hardware flow control. Tlačítkem S1 lze modul uvést do továrního nastavení. Tlačítko S1 je nutné držet minimálně 500ms těsně po resetu modulu. Dále se na desce nachází 3 signalizační LED význam, jejíchž stavů je uveden v tabulce č. 15.
Označení ve Stav Význam schématu Zelená+Červená Led2+Led4 Svítí Modul se nachází v AT módu Modrá+Červená Led1+Led4 Svítí Modul se pokouší o spojení Modrá Led1 Svítí Aktivní spojení Modrá Led1 Bliká Probíhá přenos dat Červená Led4 Bliká Přetečení bufferu, chyba parity UARTu Tab. č. 15: Význam signalizačních LED bluetooth modulu. Aktivní LED
29
Praktická zkouška z odborných předmětů - Autonomní robot RX1
30
Praktická zkouška z odborných předmětů - Autonomní robot RX1 Obr. č. 22: Schéma zapojení komunikační jednotky. Všechny signály RS232, které umí bluetooth modul přenášet, jsou připojeny na konektor J1. Dále se na konektoru J1 nachází reset, GND, pin Blue LED a pin Green LED. Všechny signály na J1 jsou v TTL úrovni. Některé signály jsou dále připojeny k obvodu IC2 převodníku TTL/RS232, pro konfiguraci bluetooth modulu, nebo jako přijímače/vysílače na straně počítače. Kondenzátory C5 - C8 využívá obvod IC2 jako nábojovou pumpu. Konektor je použit J2 RJ45 pro co nejmenší rozměr desky. Popis výstupních konektorů uvádí tabulka č. 16. Napájení je přivedeno na konektor SL1 a je signalizováno zelenou LED. Modul je chráněn proti přepólování diodou D2. J1 1 2 3 4 5 6 7 8 9 10
J2 Typ Signál vstup Reset – aktivní v log. „0“ výstup DTR výstup Blue LED výstup Green LED 7 vstup CTS 6 výstup TXD 8 výstup RTS 5 vstup RXD vstup DSR 4 GND Tab. č. 16: Popis výstupních konektorů.
3.6.3 Bluetooth adaptér na straně PC Tak jako robot má bluetooth modul, tak i na straně PC se musí nacházet bluetooth zařízení. Pro tyto účely jsem pořídil USB bluetooth adaptér od firmy Edimax. V počítači se vytvoří virtuální COM port, ke kterému softwarově přistupuji jako ke skutečnému COM portu PC. Parametry bluetooth adaptéru jsou v tabulce č. 17 Parametr Dosah Třída Připojení Některé podporované bluetooth profily Podporované OS
Hodnota ~ 80 m Class 2 USB 1.1, USB 2.0 SPP - Serial Port Profile, LAN Access, PAN - Personal Area Network… MS win. 98 SE, MS win. Me, MS win. 2000, MS win. xp, linux, Mac OS
Tab. č. 17: Parametry bluetooth adaptéru Edimax.
31
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.7 Napájecí jednotka U robota je napájecí jednotka realizována pouze dvěma lineárními stabilizátory (pro napájení elektroniky a napájení motorů). Je použit externí zdroj napětí, propojený s robotem dvojvodičovém vedením. U tohoto robota nemohla být použita baterka z důvodu nedostatku finančních možností a velké hmotnosti baterky dostatečné kapacity, kterou by měl robot problém uvést. Také by docházelo by k velkému opotřebování mechanických dílů. Schéma zapojení je obrázku č. 23.
Obr. č. 23: Schéma zapojení napájecí jednotky. Napájecí kabel od externího zdroje napětí se připojí na konektor J1, kladným pólem na pin 2 a zem na pin 1. Na vstupu je elektrolytický kondenzátor C3, jenž vyrovnává výkyvy napětí způsobené skokovými změnami odběru proudu (např. zapnutím/vypnutím motorů). O napájení veškeré elektroniky, kromě budiče motorů, se stará lineární stabilizátor IC1. Stabilizované napětí má hodnotu 5V signalizované pomocí LED1. Dále jsou zde 2 filtrační kondenzátory C1, C2 o hodnotě 100nF. Abych si mohl nastavit vhodné napájení pro motory (při prvotních testech jsem potřeboval nižší napětí než u konečné verze) použil jsem lineární regulovatelný stabilizátor IC2. Obvod jsem zapojil podle doporučení od výrobce. Kapacitu C4 není vhodné zvyšovat, protože by mohla nepříznivě ovlivnit vlastnosti regulátoru. Dolní člen z odporového děliče je realizován kvalitnějším trimrem. Čím je hodnota R2 větší a hodnota R1 menší tím vyšší napětí dostaneme na výstupu regulátoru. Může se stát, že dojde ke zkratu u vstupního vývodu stabilizátoru a vznikne okamžitý zkrat. Pak se náboj kondenzátoru C5 na výstupu vybije přes vnitřní obvody stabilizátoru. Vstupní elektroda je v tom okamžiku na nižším potenciálu než výstupní, protože C5 je dosud nabitý, pak proud může zničit část integrovaného obvodu. Zničení obvodu zabrání dioda D1. Dioda D1 je v okamžiku zkratu polována v propustném směru a téměř celý náboj kondenzátoru C4 propustí zpět na vstup, kde je nyní nulový potenciál. Úkolem C4 je blokovat řídící vstup regulátoru, aby se tudy nedostávaly rušivé signály, což by se mohlo projevit zvlněním výstupního napětí. Dioda D2 odvede náboj z C4 v případě zkratu. Činnost stabilizátoru je signalizována LED3, jenž signalizuje napětí od cca 1,5V. Připojení modulů k napájecí jednotce ukazuje tabulka č. 18.
32
Praktická zkouška z odborných předmětů - Autonomní robot RX1 Konektor na napájecí jednotce J2.1 J2.2 J2.1 J2.2 J3.1 J3.2 J7.1 J7.2
Konektor napájeného Poznámka modulu Řídicí jednotka SL3.2 +5V SL3.1 GND Tvarovač, dekodér kvadraturního signálu + +5V GND Komunikační jednotka SL1.1 +5V SL2.2 GND Výkonový budič stejnosměrných motorů + 2-9V GND
Tab. č. 18: Propojení modulů s napájecí jednotkou.
33
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.8. Seznam součástek 3.8.1 Tvarovač, dekodér kvadraturního signálu Součástka R4 R14, R20, R22, R30, R13, R21 R1 – R3, R6, R10, R15 – R19, R23 – R26, R29 R5, R7, R8, R12 R9, R11, R27, R28 C1, C2, C5 – C8 C3, C4 C10 LED1 – LED5 LED6 D1 – D6 T1 – T13 IC1 IC2 SL1, SL2, SL4, SL4 SL3
Hodnota Kusů Poznámka Rezistory – velikost R0207 180R 1 Metalizovaný 330R
6
Metalizovaný
1k
15
Metalizovaný
2k2 10k
4 4 Kondenzátory 4n7 6 100n 2 100µF/16V 1 Diody L934YD 5 L115WEGW 1 4V3 6 Tranzistory BC337 13 Integrované obvody 74lS14 1 74LS74 1 Konektory
Metalizovaný Metalizovaný Keramický Keramický Elektrolytický Led 3 mm 2 – barevná led, 3 mm Zenerova dioda NPN tranzistor DIL14 DIL14
PSH02-03W
4
Konektor se zámkem
PSH02-04W
1
Konektor se zámkem
Hodnota 330R H22A1
Kusů 1 1
Optozávora Součástka R1 IR1
34
Poznámka Metalizovaný, velikost R0207 Optozávora
Praktická zkouška z odborných předmětů - Autonomní robot RX1 3.8.2 Řídicí jednotka Řídící jednotka Součástka R20 – R22 R4, R8, R15 R17, R18 R2 R5 R3, R6, R10 – R13 R19 R23 – R26 R1, R14 R7 R19 C1, C2 C10, C11 C13 C15 C8, C9, C14, C16 – C22 C4 – C7 C3 LED1 – LED4 D1 D2 IC1 IC2 IC3 IC4 IC5 IC6 IC7 IC8 IC9 J1 – J9 J10 SL1 SL2 Q2 – Q4 Q1 Q6 S1
Hodnota Kusů Poznámka Rezistory – velikost R0207 0R0 3 Metalizovaný 330R 3 Metalizovaný 1k 2 Metalizovaný 1k5 1 Metalizovaný 4k7 1 Metalizovaný 10k 6 Metalizovaný 15k 1 Metalizovaný 47k 4 Metalizovaný 1M 2 Metalizovaný LC9001 – 10k Odporová síť, 8 rezistorů PT6V 1 Trimr, lakosazový Kondenzátory 10p 2 Keramický 33p 2 Keramický 3n3 1 Keramický 10n 1 Keramický 100n
10
Keramický
1µF/16V 3u3/16
4 1
Elektrolytický Elektrolytický
Diody Led 0,3 mm 4 4V7 1 1N5817 1 Integrované obvody AT89S52 1 74HCT00 1 MAX232 1 4077 1 4006 1 4093 1 74LS138 1 74LS151 1 NE558D 1 Konektory SIG40 2 CAN9 Z 90 1 PSH02-03W 1 PSH02-02W 1 Ostatní BC549 4 XTAL 1.843 HC 1 XTAL 24.000 HC 1 PHAP3362A 1 35
Zenerova dioda Schodky dioda DIL40 DIL14 DIL16 DIL14 DIL14 DIL14 DIL16 DIL16 SMD SO14 Lámací konektorové kolíky Konektor cannon do dps Konektor se zámkem Konektor se zámkem NPN tranzistor Krystal 1,843 MHz Krystal 24 MHz Tlačítko
Praktická zkouška z odborných předmětů - Autonomní robot RX1 Výstupní budič sběrnice Součástka R1 – R4 Q1 – Q2 J1 J2, J3
Hodnota 1k BC817 SIG40 SIG40W
Kusů 4 4 1 1
Poznámka SMD R1206 SMD SOT23, NPN Lámací konektorové kolíky Lámací konektorové kolíky
Hodnota 40R 100R 1k 10k 4,7µF/16 LD274 BC327 SHF5110-36 REF5-M
Kusů 1 1 1 1 1 2 1 1 2
Poznámka Metalizovaný R0207 SMD R1206 SMD R1206 SMD R1206 Elektrolytický Vysílací infradioda PNP Infrapřijímač Reflektor pro led
Modul optického senzoru Součástka R1 R3 R2 R4 C1 D1, D2 Q1 IO1 -
3.8.3 Výkonový budič motorů Výkonový budič motorů Součástka R2, R4, R6, R8 R3, R5, R7, R9 C1, C2, C3, C5 C4 IC1 IC2 OK1 T1
Hodnota Kusů Poznámka Rezistory – velikost R0207 330R 4 Metalizovaný 1k 4 Metalizovaný Kondenzátory 100n 4 Keramický 2,2 µF/16V 1 Elektrolytický Integrované obvody L293D 1 DIL16 74LS14 1 DIL14 PC847 1 4x optočlen LE50cz 1 Nízkoúbytkový stabilizátor
Odrušení motorů Součástka C1, C2 C3, C4
Hodnota 47nF 100nF
L1
RSD42V3020
L2
RSD42V2510
Kusů 2 2 1 1
36
Poznámka Keramický Keramický Odrušovací tlumivka, zapouzdřená Odrušovací tlumivka, zapouzdřená
Praktická zkouška z odborných předmětů - Autonomní robot RX1 3.8.4 Komunikační jednotka Součástka R15 – R17 R18 R1 R4, R13, R19 R3 R7, R9, R10 R8, R11, R12 R14 R5, R6 C1, C2, C4, C9 C3, C5 – C8 D1 D2 LED2, LED3 LED1 LED4 IC1 IC2 U1 T1 S1 SL1 J1 J2
Hodnota
Kusů Rezistory 0R0 3 0R0 1 390R 1 680R 3 1k 1 1k8 3 2k2 3 10k 1 470k 1 Kondenzátory 100n 4 1µF/16V 5 Diody 1N5711 1 1N5817 1 L934GD 2 LED3BLU 3000 1 LED3R 1 Integrované obvody 74HCT573 1 MAX232 1 Ostatní OEMSPA311i-04 1 BC846 1 PHAP3362A 1 PSH02-02W 1 SIG40 1 TZB463 Z P 8P8C 1
37
Poznámka Metalizovaný, velikost R0204 SMD R1206 SMD R1206 SMD R1206 Metalizovaný, velikost R0204 SMD R1206 SMD R1206 SMD R1206 SMD R1206 SMD C1206, keramický Elektrolytický Rychlá usměrňovací dioda Schottky dioda Zelená, 3 mm Modrá, 3 mm Červená, 3mm DIL20 SMD Bluetooth modul, connectBlue NPN, SOT23 Tlačítko Konektor se zámkem Lámací konektorové kolíky RJ45 do DPS
Praktická zkouška z odborných předmětů - Autonomní robot RX1
3.8.5 Napájecí jednotka Součástka R3 R1 R2 R4 C1, C2 C4, C5 C3 D1, D2 LED1, LED2 IC1 IC2 J1
Hodnota Kusů Poznámka Rezistory – velikost R0207 240R 1 Metalizovaný 680R 1 Metalizovaný 1k5 1 Metalizovaný TP095 /N /N – 15k 1 Trimr, cermetový Kondenzátory 100n 2 Keramický 10 µF/16V 1 Elektrolytický 2M2 µF/16V 1 Elektrolytický Diody 1N4004 2 Usměrňovací dioda LED3R 2 Led červená, 3 mm Integrované obvody 7805 1 Stabilizátor 5V LM317 1 Nastavitelný stabilizátor Ostatní SIG40 1 Lámací konektorové kolíky
3.8.6 Ostatní Součástka S1, S2
Hodnota CMPS03 SM05S04A
Kusů 1 2
38
Poznámka Kompas Tlačítka nárazníku
Praktická zkouška z odborných předmětů - Autonomní robot RX1
4. Programová část robota 4.1 Program mikrokontrolérů AT89S52 4.1.1 Základní informace, inicializační část programu Program pro mikrokontrolér byl psán v editoru PSPad s kompilátorem cass51. Tyto nástroje a veškeré programy jsou obsaženy na přiloženém CD. Logické celky programu jsou rozděleny do samostatných souborů. Kořenovým souborem je RX1.asm. V tomto souboru jsou uvedeny veškeré definice symbolů, pojmenování bitů.
ne
START ORG 0
START ORG 0Bh
START ORG 03h
START ORG 23h
Inicializace programových proměnných, přerušení
Časovač Interval: 10ms
Řízení spojky robota
Kompas
Návrat z přerušení
Návrat z přerušení
Tlačítko nárazníku aktivováno ?
Řízení sériové linky
Vynulování RI
ano Kontrola čidel a inicializace spojky
Inicializace
Hlavní programová smyčka
Čtení stavu detektorů překážek
Automatic ký režim?
Návrat z přerušení
ne
ano Automat
Nastavení spojky
Konec
Obr. č. 24: Blokové schéma inicializační části, hlavní smyčky, přerušení programu.
39
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Za definicemi symbolů se nachází obsluhy přerušení. Jsou využity tyto přerušení: Vnější přerušení EX0 – přerušení od inkrementálního snímače. Přerušení od časovače 0 ET0 – časovač s intervalem 10 ms. Přerušení od sériové linky ES0 – využívá se přerušené při přijetí dat . Za obsluhou přerušení se nachází inicializační část. V této části programu jsou inicializovány proměnné programu, nastavení přerušení, časovačů, sériové linky. Aby bylo možné s robotem manipulovat, je za inicializační částí umístěna smyčka, čekající na stisknutí pravého tlačítka nárazníku. Po stisknutí tlačítka dojde ke kontrole čidel spojky a spojka se nastaví doprostřed. Po nastavení spojky se program nachází v hlavní programové smyčce, ve kterém se čte stav senzorů překážek. V dalším kroku se rozhoduje mezi manuálním a automatickým režimem. V automatickém režimu se zavolá podprogram automatiky, ve kterém se vyhodnotí stav senzorů překážek a případným překážkám se robot vyhne. V manuálním režimu dojde pouze k nastavení spojky do správné polohy, pokud je požadováno (zbytek řízení je realizováno přímo v přerušení sériového kanálu). Na konci souboru se načítají ostatní části programu. Blokové schéma inicializační části je na obrázku č. 24.
4.1.2 Systémový časovač, 16b instrukce Mnoho podprogramů potřebuje ke své činnosti čekací smyčky v řádu desítek až stovek milisekund. K tomuto účelu běží časovač 0 s intervalem 10 ms. Tento interval byl zvolen jako kompromis mezi příliš častém přerušením od tohoto časovačem a mezi velkým intervalem, který by naopak byl nevhodný pro některé podprogramy. Blokové schéma je na obrázku č. 25. V těle časovače se inkrementuje proměnná timer1, jenž využívají některé podprogramy. Dále se zde nachází další čtyři funkce, jež se aktivují příslušným bitem. 1) Vypršení časového limitu od RS232 – Při příjmu prvního bajtu packetu se začne počítat čas, jestliže se nepřijme celý packet do dané doby (1s), pak se packet zahodí a nastaví se příslušný bit označující chybu příjmu. 2) Pulsování s motorem M1 – Tato funkce se vykonává při nastavování spojky. Zapíná motor vždy na 400 ms dopředu, a pak dozadu. Tímto dojde k bezproblémové funkci spojky a mechanické části do sebe snadněji zapadnou. 3) Brzda motoru M2 – Brzda slouží pro zastavení motoru M2 na požadované pozici. Díky brzdě je dosažena mnohem větší přesnost nastavení spojky. Brzda funguje tak, že otočí směr otáčení motoru na dobu 170 ms. 4) Vypršení doby měření optickým senzorem – Tato funkce se používá při detekci překážky optickým senzorem. V příslušném podprogramu se spustí měření, čítají se pulsy z optického senzoru do doby, než vyprší doba měření, jež je 60 ms. Změnou dobou měření lze změnit citlivost senzoru. Ne vždy mi stačily 8 bitové operace, proto jsem si naprogramoval 16 bitové instrukce sčítání, odečítání, inkrementace, dekrementace. Tyto instrukce používám například u výpočtu CRC. Registry parametrů a návratové hodnoty příslušných instrukcí jsou uvedeny v komentářích u každé z nich.
40
Praktická zkouška z odborných předmětů - Autonomní robot RX1
START timer0
Záloha registrů
Vypršení časového limitu RS232?
ano
Nastavení příznaku vypršení limitu, zahození přijatých dat
ano
Pulsování s motorem M1
ano
Vypnutí motoru M2
ano
Ukončení měření, nastavení pro nové měření
ne
Pulsovat s motorem M1?
ne
Brzda motoru M2?
ne
Vypršení doby měření?
ne Obnovení registrů
Ret
Obr. č. 25: Vývojový diagram těla systémového časovače (časovač 0).
41
Praktická zkouška z odborných předmětů - Autonomní robot RX1
4.1.2 Řízení spojky Spojka je nejsložitější a jedna z nejdůležitějších částí robota. Pro snadné ovládání spojky jsou k dispozici tyto bity: RClu (spojka doprava), LClu (spojka doleva), FClu (spojka doprostřed). Po nastavení příslušného bitu se musí zavolat podprogram setClutch. Tento podprogram, nejdříve zkontroluje, jestli je spojka inicializovaná. V dalším kroku se přejde k části podprogramu podle požadavku na nastavení spojky a zkontroluje se, zda žádaná poloha se neshoduje s aktuální, jestliže se neshodují, zapne se pulsování hlavního pohonu a spustí motor spojky. Od teď se veškeré řízení spojky odehrává v přerušení. V přerušení se testuje, zda se má spojka inicializovat nebo nastavit do požadované polohy. V inicializační části se spojka nastaví doprostřed. Při normálním režimu se testuje, jestli spojka dosáhla požadované polohy. Při dosažení žádané polohy se vypne pulsování hlavním motorem a spustí se brzda. Jakmile je motor M2 zabrzděn, spojka je nastavena. Vývojový diagram je na obrázku č. 26.
START clutch
Nastavit spojku?
ne
ano Záloha registrů
Nastaví spojku do požadované polohy
ne
Opravit polohu spojky?
ano Opraví polohu spojky
Obnovení registrů
Ret
Obr. č. 26: Vývojový diagram přerušení od spojky.
42
Praktická zkouška z odborných předmětů - Autonomní robot RX1 4.1.3 Automatický režim robota Vývojový diagram podprogramu automat je na obrázku č. 27. START automat
ne
Detekován a překážka ?
ano
Zpátečka robota 1s
Překážka vpravo?
ne
Nastavení parametrů spojky doprava
ano Nastavení parametrů spojky doleva
Nastavit spojku
ne
Spojka nastavena?
ano Vygeneruje úhel otočení
ne
Robot otočen?
ano
P1
P2
P3
43
Praktická zkouška z odborných předmětů - Autonomní robot RX1
P2
P1
P3
Nastavení parametrů spojky doprostřed
Nastavit spojku
ne
Spojka nastavena?
ano Test detekce překážek
Detekován a překážka ?
ano
ne
Ret
Obr. č. 27: Vývojový diagram automatického režimu robota. V tomto režimu se robot nachází automaticky po resetu systému. Po stisknutí pravého tlačítka nárazníku dojde k inicializaci spojky. Po inicializaci se program nachází v hlavní programové smyčce, kde se otestují překážky před robotem. Pak se zavolá podprogram automat. Nejdříve se zkontroluje, jestli byla detekována nějaká překážka, pokud ne podprogram se ukončí. Jestliže byla detekována překážka, pak robot jede zpět přibližně 1s. Poté se vyhodnotí, kde byla překážka detekována (vpravo nebo vlevo). Jestliže se překážka nachází vpravo, pak se spojka nastaví doleva a robot se vyhne překážce doleva. To samé platí pro překážku vlevo, jen s rozdílem, že se bude robot otáčet na druhou stranu. Potom se čeká, než se spojka nastaví do žádané polohy. Po nastavení spojky se vygeneruje náhodný čas, po který se robot otáčí. Následně se otestují překážky před robotem. Pokud se nedetekuje žádná překážka, pak se spojka nastaví doprostřed, v opačném případě se celý podprogram opakuje znova.
44
Praktická zkouška z odborných předmětů - Autonomní robot RX1
4.1.4 Komunikace s kompasem Komunikace s kompasem probíhá po sběrnici I2C. I2C sběrnice je dvojvodičové propojení dvou zařízení mezi jedním a více mikrokontrolérů - master s periferními zařízeními – slave. Jedná se o synchronní half duplexní přenos. Všechny tyto zařízení jsou připojeny na jednu sběrnici a výběr zařízení, se kterým se má komunikovat, je realizován jedinečnou adresou, jenž je poslána jako 1B informace na sběrnici. Ostatní zařízení poslouchají, pokud se jejich adresa shoduje s tou na sběrnici, pak je mezi těmito zařízeními naváže spojení. Komunikace probíhá pouze mezi nimi. Protokol I2C jsem musel naprogramovat. Pro příjem a pro odesílání je určen vždy 2B buffer. Kompas se chová jako slave a mikrokontrolér je master. Na obrázku č. 28 je protokol komunikace s kompasem po I2C.
Obr. č. 28: Protokol komunikace s kompasem po I2C.
Nejdříve je potřeba nastavit start bit, jimž se zahájí komunikace s kompasem. Dále po každém správně přijatém bajtu zprávy kompas ho potvrdí kvintovacím bitem ACK. V prvním bajtu je adresa kompasu s požadavkem na zápis. V druhém bajtu se nachází číslo registru, se kterým budeme chtít pracovat. V programu se používá registr 1, v němž se nachází 1B informace o azimutu. Popis dalších registrů a jejich význam je v datasheetu kompasu přiloženém na CD. V dalším kroku je potřeba opětovně poslat start bit. Ve třetím bajtu je znova adresa kompasu, ale tentokrát s požadavkem na čtení. Čtvrtý bajt odesílá kompas a je přijat mikrokontrolérem. Údaj o azimutu je uložen do paměti. Vývojový diagram komunikace s kompasem je na obrázku č. 29.
45
Praktická zkouška z odborných předmětů - Autonomní robot RX1
START kompas
I2C – start bit
Příprava dat, nastavení odesílací procedury
Odeslání 2B po I2C
I2C – start bit
Příprava dat, nastavení odesílací procedury
Odeslání 1B po I2C
Nastavení přijímací procedury
Příjem 1B po I2C
I2C – stop bit
Ret
Obr. č. 29: Vývojový diagram komunikace kompasem.
46
Praktická zkouška z odborných předmětů - Autonomní robot RX1
4.1.5 Komunikace mikrokontroléru s počítačem Komunikace s počítačem probíhá v packetech po sériové lince RS232. Parametry sériové linky jsou uvedeny v tabulce č. 18. Komunikace je typu dotaz, odpověď tzn. Počítač odešle packet mikrokontroléru a mikrokontrolér musí okamžitě odpovědět packetem poslaným počítači. Počítač odešle 9 – 10 packetů za sekundu. Struktura packetů je na obrázkách č. 30 a č. 31. 9600 b/s 8B Bez parity 1 Tab. č. 18: Parametry sériové linky.
Přenosová rychlost Velikost dat Parita Stop bit
Index
Řízení robota
Nastav. senzorů
Nastav. senzorů
Rovně
Dozadu
Doleva
Doprava
2B rezervovány
CRC
Aut /man
-
-
7. b
0. b
Obr. č. 30: Struktura přijatého packetu.
Index
Kompas 1. B
Kompas 2. B
Poloha spojky
Chyby 1. B
Poloha spojky
Chyby 2. B
Senzory
Stav robota
-
-
-
7. b
2B rezervovány
Dopředu /dozadu
CRC
Robot v pohybu 0. b
Obr. č. 31: Struktura odesílaného packetu. Počítač – master začíná celou komunikaci. První bajt packetu je index, jenž je na začátku komunikace roven nule. Mikrokontrolér je povinen index zkopírovat do svého packetu, podle nějž počítač pozná, že se jedná o odpověď na jeho odeslaný packet. Komunikace by sice mohla probíhat bez vážnějších důsledků bez tohoto indexu (u robota je využit jako hlavička packetu), ale s ohledem na budoucnost, by mohl mít index své opodstatnění. 47
Praktická zkouška z odborných předmětů - Autonomní robot RX1 Například při komunikaci s více zařízeními, nebo když je obsah odesílaného packetu závislý na přijatém v čase např. Počítač odešle packet s indexem 0, ale od packet o mikrokontroléru se někde ztratí. Pak počítač odešle znovu packet se stejným indexem, jelikož mikrokontrolér zjistí, že počítač odeslal packet zase s indexem 0, odešle počítači znovu původní packet. V dalším bajtu packetu se nachází řízení robota – směr, nastavení spojky a bit určující manuální/automatický režim. V dalších dvou bajtech jsou parametry nastavení optických senzorů překážek. Časem se může stát, že bude potřeba odeslat další údaje, k tomu slouží dva rezervovány bajty. Při přenosu se může stát, že dojde k poškození dat, aby bylo možné tuto situaci detekovat je poslední bajt zprávy CRC (Cyclic redundancy check – kontrolní redundantní součet). Je mnoho možností jak jej spočítat od čehož se potom odvíjí délka CRC a možnosti automatických oprav chyb v packetu. Kontrolní součet se vypočítá následovně: 1. Sečtou se všechny bajty zprávy o délce m (bez CRC) do dvoubajtové proměnné součet, jejíž horní bajt označím HB a dolní bajt DB: 2. Vypočítá se samotné CRC: 3. CRC se umístí na konec packetu, jenž se odešle Odesílaný packet z mikrokontroléru má na začátku index, jenž si zkopíroval z přijatého packetu. Za ním následují data. V prvních dvou bajtech se odesílá azimut, v dalších dvou chyby, které nastaly od posledního odeslaného packetu. Následuje 1B se stavem senzorů překážek (od optických senzorů a od nárazníku). Další 1B obsahuje stav spojky, aktuální směr robota. Pro ten samí důvod jako u přijatého bajtu jsou i zde 2 rezervovány bajty. Na konci packetu se nachází CRC. Komunikace na straně mikrokontroléru probíhá následovně. Po přijetí prvního bajtu packetu se spustí časovač (Timeout), který určuje maximální dobu, do které se musí celý packet přijmout. Jestliže se celý packet nepřijme, je zahozen a nastaví se příslušný příznak chyby. Packet je postupně ukládán do přijímacího bufferu. Po přijetí celého packetu se vypočítá CRC a vyhodnotí s přijatým. Pokud se neshodují, pak se nastaví příznak chyby poškození dat při přenosu a čeká se na nový packet. Jestliže je packet v pořádku, zastaví se časovač (timeout), separují se z data z packetu a uloží do paměti, případně nastaví pohon robota v manuálním režimu. V dalším bodě se naplní odesílací buffer, vypočítá CRC a odešle packet do počítače. Vývojový diagram je na obrázku č. 32.
48
Praktická zkouška z odborných předmětů - Autonomní robot RX1
START serial
Záloha registrů
Uložení přijatého bajtu
ne
Celý packet přijat?
ano Výpočet CRC
CRC se shoduje s přijatým?
ne
Nastavení příznaku chyby sériové linky
ano Separuje data z packetu
Výpočet CRC
Naplnění odesílacího bufferu
Odeslání packetu
Obnovení registrů
Ret
Obr. č. 32: Vývojový diagram příjmu, odeslání packetu. 49
Praktická zkouška z odborných předmětů - Autonomní robot RX1
4.2 Komunikátor – program pro počítač Komunikátor slouží pro komunikaci mezi robotem a počítačem, zobrazení stavů a nastavení parametrů robota. Pomocí komunikátoru lze robota přepnout do manuálního režimu, ve kterém jej může operátor ovládat. Program je napsán v programovém prostředí DELPHI 7. Rozhraní komunikátoru je rozděleno na tři základní části: 1) Záložka Řízení robota – Na této záložce je veškeré ovládání robota, zobrazení stavů robota a stavu komunikace. Zobrazení hodnot z kompasu je provedeno dvěma způsoby: Analogově rafičkou a digitálně zobrazením přímo hodnoty. Nula stupňů označuje referenční bod. Nemusí znamenat sever, záleží, v jaké poloze se kompas nakalibruje (Nula stupňů může třeba označovat jih, či jakýkoliv jiný směr). Popis záložky je na obrázku č. 33. 2) Záložka Nastavení – Zde se nachází nastavení sériové linky a nastavení parametrů robota. Popis je na obrázku č. 34 3) Záložka Log – Nachází se zde výpis přijatých packetů z komunikace s robotem a popis chyb při přenosu. Veškeré nastavení programu se ukládá do registru systému Windows. Pro komunikaci po sériové lince je využita komponenta ComPort verze 3.0. Komunikaci se zahájí stiskem tlačítka „Navázat spojení“. Tím je odeslán 1. packet s indexem 0 (struktura tohoto packetu byla popsána výše). Do dvou sekund musí přijít odpověď z mikrokontroléru, jinak se to vyhodnotí jako selhání komunikace s robotem. V intervalu dvou sekund se komunikátor snaží obnovit komunikaci. V případě přijetí několika špatných packetů je problém signalizován jako nízká kvalita přenosu dat.
Obr. č. 33: Popis obrazovky Řízení robota. 50
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Obr. č. 34: Popis obrazovky Nastavení.
51
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Závěr Cílem dlouhodobé práce bylo postavit a naprogramovat robota se dvěma režimy. A to režim automatický a manuální. V automatickém módu se robot sám vyhýbá překážkám, které se octnou před ním. V manuálním režimu, tentokrát je bezpodmínečně nutný počítač, lze ovládat robota pomocí příslušných tlačítek. Dále se počítač využívá pro vizualizace, řízení a nastavování významných konstant. Co tedy robot dokáže? Po připojení napájení a stisknutí pravého tlačítka nárazníku se robot rozjede. Pokud narazí na překážku, otočí se o náhodný úhel a jede dál. Hlavním senzorem pro detekci překážek je použit optický senzor na stejném principu jako ovladače u TV, jen s tím rozdílem, že se paprsek světla musí odrazit zpět k robotovi. Pro případ, že by optický senzor nedetekoval z nějakého důvodu překážku, má robot k dispozici nárazník s mechanickými senzory. Optický senzor dokázal detekovat umělohmotnou PET láhev, z blízka i sklo, předměty malých rozměrů (tyč s průměrem 1 cm), větší překážky pod velkým úhlem. Za ideálních podmínek detekoval zrcadlo ze vzdálenosti 40 cm. Při provozních podmínkách detekuje papírovou krabici ze vzdálenosti 12 cm – 20 cm. Dlouho jsem hledal vhodné řešení komunikace, až jsem se rozhodl pro Bluetooth modul od firmy connectBlue pro jeho velmi snadné ovládání, jak ze strany počítače, tak ze strany mikrokontroléru. Pomocí tohoto modulu jsem realizoval bezdrátovou verzi sériového portu. Po spuštění programu v počítači a navázaní spojení s robotem, lze pohodlně sledovat všechny důležité stavy robota, čidel, azimut kompasu a nastavovat parametry robota. Operátor může robota přepnout do manuálního režimu a v něm ho řídit. I když jsem se sebevíc snažil, vyskytlo se několik problémů a nedostatků u robota, což je normální jev u projektu větších rozměrů. Nejvýznamnější je, že motory bez připojené řídicí jednotky se rozběhnou a mohou způsobit poškození robota. Z tohoto důvodu je potřeba předělat budič stejnosměrných motorů. Velký problém byl s rušením elektroniky od motorů. Rušení se podařilo odstranit až po menší mechanické úpravě, doplnění odrušovacích prvků, softwarové filtraci některých vstupů. V další verzi řídicí jednotky bych ji chtěl doplnit o další rozšiřující porty, vyvedení konektoru pro ISP programování v TTL úrovních, který by se dal připojit ke komunikační jednotce a programovat robota bezdrátově. Pro vizualizaci stavu robota je nutný počítač, proto bych chtěl doplnit displej přímo na robota. Někdy se může stát, že se převodovka zadře a tím přes motor teče zkratový proud, který způsobí nadměrné přehřívání H-můstku. Aby nedošlo k nevratnému poškození, umístím teplotní čidla na kritické čipy. Dále co bych chtěl zlepšit v dalších verzích je velikost desek. Na tomto robotovi jsem získal mnoho cenných zkušeností s SMD součástkami, a proto již budu hlavně na finální výrobky využívat dvoustranných desek s SMD součástkami. Neposledně bych chtěl vytvořit novou verzi spojky, jenž by měla mnohem menší dobu odezvy a byla by spolehlivější a mechanicky robustnější. Na tomto robotovi jsem získal mnoho cenných zkušeností, které využiji v budoucnu. Naučil jsem se jak moc je důležité kvalitně navržené schéma a deska. Získal jsem mnoho zkušeností z různých oblastí elektrotechniky, práce s datasheety, mechaniky, programování mikrokontroléru a neposledně komunikace po RS232 a I2C. Tyto zkušenosti zúročím na dalším robotovi, na kterém mohu využít navržené obvody, ale již s vychytanými nedostatky vyskytnutým na robotovy RX1. 52
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Seznam použité literatury a studijních materiálů 1) Petr Novák: Mobilní roboty, BEN, ISBN 80-7300-141-1 2) David Matoušek: Práce s mikrokontroléry ATMEL AT89C2051, BEN, ISBN 807300-094-6 3) Václav Malina: Poznáváme elektroniku I., Kopp, ISBN 80-7232-039-4 4) Václav Malina: Poznáváme elektroniku II., Kopp, ISBN 80-7232-172-2 5) Burkhard Kainka: Elektronika s podporou PC Visual Basic v praxi, HEL, ISBN 8086167-22-4 6) http://www.programujte.com 7) http://rs232.hw.cz/ 8) http://www.elektroworld.info/index.php 9) http://astrotechnika.wz.cz/WWW/mysoid.htm 10) http://www.dhservis.cz/iic.htm 11) http://www.spezial.cz/apps/remote_control_bluetooth.html 12) http://sourceforge.net/projects/comport 13) Datasheety jednotlivých obvodů, jež jsou umístěny na CD
53
Praktická zkouška z odborných předmětů - Autonomní robot RX1
Seznam příloh obsažených na CD 1) 2) 3) 4) 5) 6) 7) 8)
Schémata, obrazce plošných spojů, osazovací plánky elektroniky robota Dokumentace a manuál robota Prezentace Datasheety některých integrovaných obvodů Program pro mikrokontrolér Program pro počítač PSPad + Kompilátor pro mikrokontrolér Fotky a video robota
54