Vysoká škola báňská - Technická univerzita Ostrava
Fakulta elektrotechniky a informatiky Katedra měřicí a řídicí techniky
Mobilní roboti
2010
JIŘÍ KOCIÁN
Obsah 1
2
3
4
5
6
7
8
9
Robotika.......................................................................................................................................... 2 1.1 Dělení robotů ........................................................................................................................... 2 1.1.1 Průmyslová robotika........................................................................................................ 2 1.1.2 Experimentální robotika .................................................................................................. 3 1.2 Podvozky mobilních robotů .................................................................................................... 5 1.3 Způsoby navigace mobilních robotů ....................................................................................... 5 Pohony robotů................................................................................................................................. 7 2.1 Elektromotor - popis................................................................................................................ 7 2.2 Obecné vlastnosti stejnosměrných motorů .............................................................................. 7 2.3 Motor s permanentním magnetem ........................................................................................... 8 2.4 Sériový elektromotor ............................................................................................................... 9 2.5 Derivační elektromotor............................................................................................................ 9 Řízení stejnosměrného motoru ..................................................................................................... 10 3.1 PWM řízení otáček ................................................................................................................ 10 3.2 Řízení směru otáčení ............................................................................................................. 10 3.3 Reţimy H-můstku.................................................................................................................. 11 Snímání otáček ............................................................................................................................. 14 4.1 Optické enkodéry .................................................................................................................. 14 4.2 Princip rotačního optického enkodéru pro měření natočení .................................................. 15 4.2.1 Inkrementální enkodéry ................................................................................................. 16 4.2.2 Absolutní enkodéry ....................................................................................................... 18 4.3 Vyuţití enkodérů ................................................................................................................... 20 4.4 Popis funkce zapojení ............................................................................................................ 20 Energetické zdroje pro pohon mobilních robotů .......................................................................... 22 5.1 Obecné vlastnosti akumulátorů ............................................................................................. 22 5.2 Druhy chemických akumulátorů ........................................................................................... 22 Návod k rozšířenému robotu „junior― o funkci sledování čáry .................................................... 24 6.1 Popis mechanických částí ...................................................................................................... 24 6.2 Řídicí systém ......................................................................................................................... 24 6.3 Napájení robotu ..................................................................................................................... 24 6.4 Komunikace........................................................................................................................... 24 6.5 Řízení robotu ......................................................................................................................... 25 6.6 Motor ..................................................................................................................................... 25 Mikroprocesor AVR ..................................................................................................................... 27 7.1 Vlastnosti procesoru ATmega16-16AU ................................................................................ 27 7.2 Přidruţené vlastnosti ............................................................................................................. 27 Technické řešení hardwaru robotu................................................................................................ 30 8.1 Schéma robotu ....................................................................................................................... 30 8.1.1 Napájení......................................................................................................................... 30 8.1.2 Budič levého a pravého motoru..................................................................................... 31 8.1.3 Zpracování signálu z inkrementálních čidel .................................................................. 32 8.1.4 Bezdrátová komunikace ................................................................................................ 33 8.1.5 Mikroprocesor ............................................................................................................... 33 8.2 Deska plošného spoje ............................................................................................................ 34 8.1 Inkrementální senzory ........................................................................................................... 36 Programové vybavení robotu ........................................................................................................ 39 9.1 Inicializace procesoru ............................................................................................................ 40 9.2 Komunikace........................................................................................................................... 40 9.3 Měření otáček levého a pravého kola .................................................................................... 40 9.4 Regulace levého a pravého kola ............................................................................................ 41 9.5 Měření napětí na baterii ......................................................................................................... 41
9.6 Popis programového vybavení mikroprocesoru NRF24E1 ................................................... 41 Popis regulace ............................................................................................................................... 42 10.1 Řízení motorů ........................................................................................................................ 43 10.2 Příklad kódu pro měření rychlosti ......................................................................................... 44 10.3 Příklad kódu pro regulaci rychlosti robotu ............................................................................ 44 11 Postup při zhotovení inkrementálního senzoru ............................................................................. 45 11.1 Postup při zhotovení inkrementálního senzoru ..................................................................... 45 11.2 Inkrementální senzor ............................................................................................................. 47 11.3 Sestavení kola robotu ............................................................................................................ 47 11.4 Elektronické schéma, DPS robotu ......................................................................................... 50 11.5 Osazení desky plošného spoje robotu.................................................................................... 53 12 Oţivení elektroniky robotu ........................................................................................................... 55 13 Sestavený robot............................................................................................................................. 57 13.1 Instalace programu pro ovládání vysílače a mikrorobotu počítačem .................................... 57 13.2 Nastavení portu...................................................................................................................... 58 13.3 Minimální poţadavky na systém ........................................................................................... 58 13.4 Technické parametry vysílače ............................................................................................... 58 14 Programování procesorů AVR: .................................................................................................... 59 14.1 COM programátor ................................................................................................................. 59 14.2 USBtiny SPI programátor ..................................................................................................... 60 14.3 Práce ve vývojovém prostředí ............................................................................................... 62 14.4 Vytvoření nového projektu .................................................................................................... 66 14.5 Zdrojový kód příkladu: .......................................................................................................... 68 14.5.1 Příklad algoritmu USARTu ........................................................................................... 70 14.5.2 Příklad algoritmu Timeru .............................................................................................. 71 14.5.3 Příklad algoritmu PWM ................................................................................................ 72 15 Moţnosti rozšíření robotu ............................................................................................................. 74 15.1 Snímač překáţky ................................................................................................................... 74 15.1.1 Ultrazvukový snímač ..................................................................................................... 74 15.1.2 Infračervený snímač ...................................................................................................... 75 15.2 Algoritmus na základě kamerového systému ........................................................................ 75 16 Pouţita literatura ........................................................................................................................... 76 10
1 Robotika Robotika je věda o robotech, jejich designu, výrobě a aplikacích. Robot můţe buď pomáhat, nebo dělat lidskou práci. Robotika úzce souvisí s elektronikou, mechanikou a softwarem. Tento název jako první pouţil spisovatel Isaac Asimov ve svých povídkách o robotech.[30]
1.1
Dělení robotů
Robotiku rozdělujeme podle mnoha kritérií. Nejdůleţitější rozdělení je na průmyslovou a experimentální robotiku. Tyto dvě odvětví se dále ještě specializují.
1.1.1 Průmyslová robotika Příběhy o umělých pomocnících a společnících mají dlouhou historii, ale první plně automatizovaný stroj se objevil aţ v 19. století.[30] První patent týkající se robotiky podal George Devol roku 1954. Jeho společnost Unimation byla první, která vyrobila průmyslového robota. Tento robot byl nasazen do průmyslu v roce 1961 Jejich hlavním účelem bylo přenášení objektů z jednoho místa na druhé a do humanoidního tvaru měli daleko. Unimation měl minimum konkurence aţ do konce 70. let, kdy do robotiky vstoupilo několik velkých japonských konglomerátů. Japonsko neuznávalo americké patentové právo a japonské patenty Unimation neměl, proto mohli vyrábět podobné roboty. Japonsko vede průmyslovou robotiku dodnes a vede i ve výzkumu. Dnes jiţ existují humanoidní roboti na první pohled nerozlišitelní od člověka, i kdyţ inteligence a univerzality Asimovových robotů nedosahují (slouţí například jako turističtí průvodci). Dnešní komerční a průmyslové roboty jsou obecně rozšířené, vykonávají práci levněji, přesněji a spolehlivěji neţ člověk. Jsou také vyuţívány v pracích, kde je nečisto, hrozí případné nebezpečí nebo v pracích, které nejsou obecně pro člověka vhodné. Roboty se široce vyuţívají ve výrobě, montáţích, transportech, vesmírném bádání, lékařství, vojenství, laboratořích a bezpečnosti. Termínem průmyslové roboty jsou označována ústrojí, která se vyznačují následujícími vlastnostmi:
Manipulační schopnost: Pomocí jedné nebo několika manipulačních paţí (ramen) lze uchopit předmět, přemístit jej, provádět různé montáţní úkony a úpravu předmětů.
Automatická činnost: Posloupnost úkonů je provedena automaticky podle předem zadaného programu bez dalšího zásahu člověka.
Snadná změna programu: Program není pevný, ale je zadáván člověkem a je moţné jej kdykoli bez obtíţí změnit.
Univerzálnost: Zařízení můţe slouţit k mnoha účelům, někdy dost rozmanitým.
Zpětná vazba: Kromě běţných mechanických (dotykových), tlakových a elektromagnetických čidel se u sloţitějších systémů počítá i s vizuální zpětnou vazbou.
Prostorová soustředěnost: Tato vlastnost není důleţitá funkčně, ale můţe mít některé vedlejší výhody, např. moţnost snadného transportu. Pro některé aplikace lze téţ poţadovat, aby byl systém mobilní.[30]
1.1.2 Experimentální robotika Za první moderní experiment s robotem lze povaţovat připojení počítače k jinak ručně ovládanému manipulátoru, které bylo zrealizováno jako doktorská práce H. A. Ernsta v letech 1960 - 1961 na MIT. Vybaven dotykovými a fotooptickými čidly přímo v dlani, byl tento robot schopen vyhledat a zvednout libovolný předmět, předem poloţený na stůl. V polovině šedesátých let byly zahájeny vědecké experimenty s roboty ve třech k tomuto účelu specializovaných laboratořích v USA (MIT, Stanfordská univerzita, Stanfordský výzkumný ústav), o něco později téţ ve Velké Británii (Edinburská univerzita) a na několik místech v Japonsku (laboratoře firem Hitachi a Mitsubishi, Elektrotechnická laboratoř v Tokiu, Wasedská univerzita a další).
a) Systémy ruka-oko Sestává se z pohyblivé manipulační paţe zakončené mechanickou rukou, z televizní kamery, pracovního stolu a z počítače. První takovéto systémy byly sestrojeny současně na MIT a na Stanfordské univerzitě. Systém ruka-oko Stanfordské univerzity byl vybaven vidikonovou (kvantikonovou) kamerou, manipulační paţí o šesti stupních volnosti s elektrickým pohonem, dále mikrofonem pro příjem řeči a počítačem. Původní úlohy realizované tímto systémem spočívaly ve stavbě struktur z kostek různých tvarů, náhodně rozhozených po stole. Náročnější úlohou byl známý hlavolam, postavit čtyři kostky s různě obarvenými stěnami na sebe tak, aby se na ţádné straně výsledného útvaru neopakovala tatáţ barva. Tento hlavolam kladl větší nároky na zpracování vizuální informace, neţ na vyřešení vlastního problému. V pozdější době bylo stanfordského robota pouţito v montáţi vodního čerpadla automobilu Ford a byly prováděny experimenty se dvěma paţemi. Systém ruka-oko MIT byl velmi podobný stanfordskému robotu. Typické experimenty spočívaly v analýze a napodobení struktur sestavených z kostek a vedly k rozvoji různých metod automatické analýzy scén sestávajících z mnohostěnů. Robot "Freddy" Edinburské univerzity byl tvořen mechanickou rukou, vybavenou dotykovými čidly a zavěšenou od stropu na pohyblivým pracovním stolem, dvěma televizními kamerami a počítačem. Jeho úloha spočívala v nasunutí čtyř různých disků na kolík nebo montáţ autíčka z šesti dílů. Obecně je na počátku experimentu na stole hromada různých předmětů, které Freddy postupně odděluje, rozpozná porovnáním jejich obrazu s předem zadanými vnitřními modely a rozmisťuje je na určená místa. Potom sestaví či smontuje předměty do určené konfigurace podle určeného postupu. Vlastní montáţ byla slepá, bylo pouţito pouze dotykových čidel. Robot "HIVIP Mark I." výzkumné laboratoře firmy Hitachi, vyvinutý v roce 1970, měl dvě vidikonové televizní kamery a manipulátor se samostatnými servomotorickými pohony pro 7 stupňů volnosti. Robot sestavuje jednoduché struktury z kostek různého tvaru na základě výkresu obsahující půdorys, nárys a bokorys ţádané struktury. Jedna z kamer je zaměřena na tento výkres,
druhá kamera slouţí k lokalizaci a rozpoznávání kostek na pracovním stole. Pomocí počítače je provedena analýza úlohy, tj. zjištěna celková konfigurace, tvar a počet potřebných dílů a na základě toho je stanoven pracovní postup. Systém ruka-oko ETL má manipulační paţi se šesti stupni volnosti s hydraulickým pohonem. Ruka má vyměnitelné prsty a dotykové senzory. Komunikace s člověkem je moţná pomocí dálnopisu ve zjednodušeném přirozeném jazyce. Systém je schopen rozpoznávat předměty vizuálně i hmatem. Příkladem úkolu realizovaného tímto robotem je zasunutí hranolu se čtvercovým průřezem do čtvercového otvoru jen o málo většího, a to pomocí vizuální zpětné vazby, umoţňující zjišťovat rozdíl mezi skutečnou a ţádanou polohou.[30]
b) Mobilní roboty Robot "Shakey" výzkumného ústavu SRI dokončený v roce 1969, je jedním z nejproslulejších mobilních robotů. Jeho pohyblivá část je bezdrátově propojena s počítačem. Komunikace s robotem probíhá ve zjednodušené angličtině. Shakey je schopen orientovat se v prostředí sestávajícím z několika místností, spojených dveřmi a obsahujících krabice různých tvarů a rozměrů, vyhýbat se překáţkám a přemisťovat krabice strkáním podle zadané úlohy. Robot "Jason" Berkeleyské univerzity, konstruovaný v roce 1973, je příkladem úsporně navrţeného mobilního robota se schopností orientovat se a manipulovat s předměty v reálném prostředí. Jeho hlavním smyslovým orgánem je ultrazvukový detektor vzdáleností, pohybů a povrchové struktury objektů. Je vybaven protetickou paţí s hákovým chapadlem. Pro komunikaci s člověkem má zařízení na rozpoznání 30 aţ 40 slov mluveného jazyka a omezený syntetizér řeči. Programové vybavení robota je uloţeno ve velkém počítači, se kterým je bezdrátově propojen. Pro samostatné plánování činnosti byl pro tento robot vytvořen zajímavý přístup, spojující symbolické řešení úloh s pravděpodobnostními metodami rozhodování v neurčitém prostředí. Robot má být schopen vytvářet takové plány činnosti, které maximalizují pravděpodobnost dosaţení cíle a současně minimalizují vynaloţenou energii. Antropomorfní robot "WABOT-1" Wasedské univerzity je stroj se dvěma pracovními paţemi, z nichţ kaţdá má sedm stupňů volnosti, dvěma nohama s pohyblivými chodidly a dvěma televizními kamerami, umístěnými ve střední části trupu. Robot je schopen přijímat jednoduché příkazy hlasem a rovněţ hlasem odpovídat (v japonštině). Systém je řazen minipočítačem. WABOT dovede kráčet v přímém směru, změnit směr doprava nebo doleva, nalézt předmět, uchopit jej jednou rukou, přendat do druhé, poloţit na zadané místo atp., vše na základě ústních příkazů. Experimentální robot JPL byl sestrojen jako moţný průzkumník Mars (planeta)u a vzdálenějších těles sluneční soustavy. Počítalo se zde hlavně se zpoţděním při telekomunikaci (v případě Marsu 20 minut) a aby byl zmenšen podíl jiných neţ vědeckovýzkumných dat při přenosu. Značný stupeň autonomnosti vizuálního vnímání, přemisťování se a manipulování s objekty neurčitého tvaru umoţňuje, aby takový robot plnil globální příkazy typu: "Jdi do polohy X, identifikuj kámen střední velikosti a zvedni jej."[30]
1.2 Podvozky mobilních robotů
diferenciální podvozek – dvě hnaná kola, rovnováha udrţována opěrnými body, nebo pasivním kolem (obr. 2a)
synchronní podvozek – často 3 kola, kaţdé se 2 stupni volnosti (můţe se otáčet i natáčet)
trojkolový podvozek s řízeným předním kolem – 2 hnaná kola a jedno motoricky natáčené (obr. 2b)
Ackermanův podvozek – 4 kola, 2 hnaná a 2 natáčená kola (kaţdé mírně odlišně, protoţe kaţdé při zatáčení opisuje jinou dráhu); tyto podvozky mají běţné automobily
trojúhelníkový podvozek – tři nezávisle poháněná kola, jejichţ osy procházejí těţištěm a jejichţ povrch (sloţený obvykle z malých koleček) umoţňuje volný skluz ve směru osy (obr. 2c)
pásové podvozky
kráčející podvozky
Obr. 2a Diferenciální podvozek Obr. 2b Trojkolový podvozek Obr. 2c Trojúhelníkový podvozek
1.3 Způsoby navigace mobilních robotů
výpočtová navigace (dead reckoning) – matematická procedura pro určování současné pozice vozidla pomocí postupného přičítání na základě známého kurzu a rychlosti v průběhu času (nejjednodušší implementací této metody je odometrie)
sledování vodicí čáry – robot opticky či pomocí magnetometrů (či Hallových sond) sleduje vodicí čáry; pro svou spolehlivost je to v průmyslu nejpouţívanější metoda
inerciální navigace – vyuţívá gyroskopů a akcelerometrů pro měření zrychlení a následně tak určuje výslednou pozici
inerciální snímače otočení o
primárně snímající úhlovou rychlost
o
primárně snímající úhlovou polohu
mechanické gyroskopy o
snímající jeden stupeň volnosti
o
snímající dva stupně volnosti
optické gyroskopy – vyuţívají Sagnacův efekt (rozdílná doba letu 2 paprsků světla v důsledku pohybujícího se senzoru)
akcelerometry – vyuţívají setrvačnosti hmoty
GPS
navigace pomocí taktilních (dotykových) a proximitních (bezdotykových) senzorů [22]
2 Pohony robotů Mobilní roboty je moţné pohánět různými typy motorů:
elektromotory
spalovací motory
pneumatické motory
hydraulické motory
iontové motory
Volba motoru je závislá na typu a způsobu vyuţití robotu. Pro fotbalové roboty je nejvhodnější pouţití elektromotoru vzhledem k poměru hmotnosti a výkonu, snadné regulaci a čistoty provozu.
2.1
Elektromotor - popis
Elektromotor je elektrický stroj, měnící elektrickou energii na mechanickou práci. Většina elektromotorů pracuje na elektromagnetickém principu, ale existují i motory zaloţené na jiných elektromechanických jevech jako jsou elektrostatické síly, piezoelektrický efekt či tepelné účinky průchodu elektrického proudu. Základním principem, na němţ jsou elektromagnetické motory zaloţeny, je vzájemné silové působení elektromagnetických polí vytvářených elektrickými obvody, kterými protéká elektrický proud. V běţném rotačním motoru je umístěn rotor tak, aby magnetické pole vytvářené ve vodičích rotoru a magnetické pole statoru vyvíjely krouticí moment přenášený na rotor stroje. Tento krouticí moment pak způsobuje rotaci otáčivé části stroje - rotoru, motor se točí a vykonává mechanickou práci.
2.2
Obecné vlastnosti stejnosměrných motorů
Rychlost motoru na stejnosměrný proud obecně závisí na velikosti napětí a proudu procházejících vinutím motoru a na zátěţi neboli velikosti brzdného momentu. Rychlost motoru při daném brzdném momentu je úměrná napětí a točivý moment je úměrný proudu. Rychlost motoru lze regulovat změnou vstupního napětí. Výhodou stejnosměrných motorů je relativní jednoduchost a univerzálnost vyuţití. Sériový a derivační motor mohou fungovat nejen na stejnosměrný, ale i střídavý proud nízkých frekvencí. Jsou to tedy motory univerzální. Další výhodou proti motorům střídavým je moţnost dosáhnout libovolných mechanicky dosaţitelných otáček. Největší nevýhodou stejnosměrných motorů je existence komutátoru. Je to mechanický přepínač, který spíná velké proudy a je, kromě náchylnosti k poruchám, náročný na údrţbu a seřízení, jedná se o mechanicky poměrně značně namáhané zařízení vyţadující pravidelnou údrţbu či výměnu některých jeho součástí. Jiskření na kartáčcích (tvořených obvykle bloky čistého uhlíku) je zdrojem významného elektromagnetického rušení. S rozvojem levnější a spolehlivější silnoproudé elektroniky (tedy
zejména výkonovými tyristory a tranzistory) jsou proto stejnosměrné motory postupně vytlačovány motory s rotujícím magnetickým polem buzeným elektronicky. U sériových a derivačních motorů nelze změnit směr otáčení pouhým přepólováním napájecího napětí celého motoru - protoţe by došlo k přepólování statoru i rotoru, směr otáčení by zůstal zachován. Pro změnu směru je třeba přepólovat jen stator nebo jenom rotor. [21]
2.3
Motor s permanentním magnetem
Nejjednodušší motor na stejnosměrný proud má stator tvořený permanentním magnetem a rotující kotvu ve formě elektromagnetu s dvěma póly. Rotační přepínač zvaný komutátor mění směr elektrického proudu a polaritu magnetického pole procházejícího kotvou dvakrát během kaţdé otáčky. Tím zajistí, ţe síla působící na póly rotoru má stále stejný směr. V okamţiku přepnutí polarity udrţuje běh tohoto motoru ve správném směru setrvačnost. Motory s permanentním magnetem se dodnes vyuţívají například v modelářství. Jen kotva je obvykle minimálně třípolová, aby nevznikal problém s mrtvým úhlem motoru. Výhodou motoru s permanentním magnetem je moţnost snadno měnit směr otáčení polaritou vstupního napětí. Princip funkce motoru s permanentními magnety je znázorněn na obr. 3a, 3b, 3c.
Obr.3a Rotor (kotva) je přes oranţový komutátor připojen ke zdroji stejnosměrného napětí. Stator je tvořen dvěma velkými permanentními magnety.
Obr.3b Vzhledem k polaritě statoru a rotoru se souhlasné póly (barvy) odpuzují a rotor se otáčí.
Obr.3c Opačné póly se přitahují, rotor se stále otáčí. V okamţiku, kdy se rotor dostane do vodorovné polohy, dojde na komutátoru k přepnutí polarity magnetického pole rotoru.
Obr. 3a, 3b, 3c Princip funkce stejnosměrného motoru s komutátorem
2.4
Sériový elektromotor
Místo permanentního magnetu se pro statory běţných větších motorů vyuţívá elektromagnetu. Pokud je vinutí statoru spojeno s vinutím rotoru do série, mluvíme o sériovém elektromotoru. Tento typ elektromotoru má točivý moment nepřímo úměrný otáčkám. To znamená, ţe stojící elektromotor má obrovský točivý moment. Vyuţívá se proto především u dopravních strojů a v elektrické trakci (vlaky, metro, tramvaje). Ve spojení s generátorem je schopen ideálně nahradit mechanickou převodovku. [29]
2.5
Derivační elektromotor
Derivační elektromotor má elektromagnet statoru napájený paralelně s motorem. Otáčky tohoto motoru jsou méně závislé na zátěţi motoru. Navíc lze proud statoru samostatně regulovat. Proto se tento typ motoru vyuţívá především u strojů, kde jsou poţadovány relativně neměnné otáčky. [21]
3 Řízení stejnosměrného motoru U elektromotoru je moţné řídit rychlost a směr otáčení, polohu natočení rotoru, proud a napětí na motoru. Otáčky DC motoru jsou úměrné napájecímu napětí a zatíţení. Rychlost tedy můţeme řídit změnou napětí. Protoţe proud do motoru je poměrně velký, nelze pouţít lineární regulaci, proto se pouţívá PWM řízení – pulzně šířková modulace.
3.1
PWM řízení otáček
Princip spočívá v rychlém spínání a vypínaní napájení. Díky setrvačnosti motoru a dostatečně vysoké frekvenci spínání, rotor nestačí tyto změny sledovat. Motor se chová, jako kdyby byl napájen napětím o velikosti střední (průměrné) hodnoty, která je dána poměrem doby zapnutí a vypnutí (obr. 4).
Umax 1 U = 0,6.Umax
0 0
0,5
T1
1
T2
1,5
U
2
2,5
T1 .U max T2
Obr. 4 PWM řízení otáček
3.2
Řízení směru otáčení
Řízení směru otáčení se realizuje změnou polarity napájení zapojením nazývaným H-můstek (obr. 5). H-můstek je tvořen čtveřicí spínacích prvků dle schématu: Napájení
Napájení motoru (+)
Horní strana (levá)
Horní strana (pravá)
Dolní strana (levá)
Řízení
Dolní strana (pravá)
Zem motoru (-) Obr. 5 H-můstek
3
3.3
Režimy H-můstku
Grafické znázornění reţimů H-můstku je znázorněno na obr. 6. Napájení
Napájení
vpřed
Napájení
volné otáčení
brzda
Obr. 6 Reţimy H-můstku
Horní levý spínač A
Spodní levý spínač B
Horní pravý spínač C
Spodní pravý spínač D
Motor
0
0
0
0
volně se otáčí
1
0
0
1
vpřed
0
1
1
0
vzad
0
1
0
1
brzda
1
0
1
0
brzda
Tab. 1 Znázornění reţimů H-můstku v tabulce Řídicí elektronika musí zajistit, aby nikdy nenastalo současné sepnutí obou spínačů na levé nebo pravé straně. Zároveň je vhodné sníţit počet potřebných ovládacích vodičů, proto se pouţívá několika různých zapojení podle způsobu řízení můstku. Typické zapojení je dvou nebo třívodičové [23]:
jeden vstup IN1 řídí levou polovinu můstku (inverzně zapíná a vypíná horní a spodní spínač, vţdy je jeden spínač sepnutý a druhý vypnutý)
druhý IN2 řídí pravou polovinu můstku a třetí vstup ENABLE vypíná celý můstek
IN1
IN2 ENABLE A B C D
Motor
0
0
1
0
1
0
1
brzda
1
0
1
1
0
0
1
vpřed
0
1
1
0
1
1
0
vzad
1
1
1
1
0
1
0
brzda
x
X
0
0
0
0
0
volně se otáčí
Tab. 2 H-můstek se 3 vstupy Sign-Magnitude 1 = směr velikost Vstupy IN1 a IN2 = DIR volíme směr otáčení, na vstup ENABLE je přiveden PWM signál, řídicí rychlost. Příslušné dva tranzistory (dle směru otáčení) spínají napájení. Při vypnutí jsou všechny tranzistory uzavřeny, tj. motor se můţe „volně otáčet―.
IN1 = DIR IN2 = DIR
EN = PWM A B C D
Motor
0
1
0
0
0
0
0
volně se otáčí
0
1
1
1
0
0
1
vpřed
1
0
0
0
0
0
0
volně se otáčí
1
0
1
0
1
1
0
vzad
Tab. 3 Směr velikost 1 Sign-Magnitude 2 = směr velikost
Jeden vstup IN1 určuje směr otáčení, na druhý IN2 je přiveden signál PWM, pro řízení rychlosti, vstup ENABLE je trvale aktivní. Jedna strana můstku má trvale sepnutý jeden tranzistor, na druhé straně se střídavě spíná horní a dolní, dle PWM. Tzn. motor akceleruje nebo brzdí.
IN1 = PWM IN2 = DIR ENABLE A B C D Motor
0
0
1
0
1
0
1
brzda
1
0
1
1
0
0
1
vpřed
0
1
1
0
1
1
0
vzad
1
1
1
1
0
1
0
brzda
Tab. 4 Směr velikost 2 Locked-antiphase = střídavé řízení Oba vstupy IN1 a IN2 = IN1 jsou připojeny na PWM signál, vstup ENABLE je trvale aktivní. Pokud je plnění PWM 50%, je výsledná střední hodnota napětí nulová a motor stojí. Pro plnění <50% se otáčí jedním směrem pro >50% se otáčí druhým směrem. [23]
IN1 = PWM IN2 = PWM ENABLE A B C D Motor
0
1
1
1
0
0
1
vpřed
1
0
1
0
1
1
0
vzad
Tab. 5 Střídavé řízení
4 Snímání otáček Rychlost je vektorová veličina definovaná jako přírůstek dráhy Δs v časovém intervalu Δt a lze ji proto stanovit derivací signálů snímačů polohy. Měření rychlosti robotu odvozujeme z rychlosti otáčení jeho kol a měříme ji pomocí snímačů otáček. Snímače otáček lze rozdělit na generátorové a modulační.[29] Generátorové snímače Tento typ snímačů umoţňuje přeměnu neelektrické veličiny (otáček) na elektrickou energii bez potřeby pomocného zdroje energie. Při působení otáček se snímač chová jako zdroj energie.
tachogenerátor
tachodynamo
magnetoindukční snímač
Modulační snímače Tyto snímače potřebují pomocný zdroj energie. Působením měřené veličiny na senzor se mění některé elektrické parametry senzoru.
optický snímač
magnetický snímač (s hallovou sondou)
4.1
Optické enkodéry
Enkodéry slouţí pro přesné nastavení polohy nebo pro měření rychlosti otáčení a převádějí otáčivý nebo posuvný pohyb na elektrický signál. Jsou pouţívané ve zpětnovazebních systémech řízení polohy, rychlosti a případně zrychlení v rozsahu aplikací od periférií počítačů, přes průmysl aţ po zdravotnickou techniku. V robotice a dnes vlastně jiţ téměř ve všech aplikacích, kde se vyuţívají pohony, je nutné zajistit přesné zjišťování okamţité polohy natočení hřídele motoru, měřit úhlovou rychlost otáčení nebo zrychlení, aby bylo moţné zajistit přesné řízení dané aplikace. V případě pouţití krokových motorů je moţné přímo předem přesně určit a řídit pohyb, úhel natočení nebo rychlost otáčení bez nutnosti zpětné kontroly. U ostatních provedení motorů je nutné pouţít systém se zpětnou vazbou. Existuje několik moţných principů, jak lze vyhodnocení provést. Jedním z nich je pouţití tzv. rotačního optického enkodéru polohy hřídele, kdy se vyuţívá principu optické závory. Optická vazba optočlenu je zde vytvářena kotoučkem s průchozími nebo odraznými plochami, připevněným na hřídeli řízeného motoru (obr. 7a). Na stejném principu pracuje i optický snímač myši (obr. 7b). [18] , [19]
Obr. 7a Příklad soustavy rotačního optického enkodéru
4.2
Obr. 7b Optický snímač myši
Princip rotačního optického enkodéru pro měření natočení
Rotační enkodér (snímač) je elektromechanický převodník, který převádí rotační pohyb na sekvence elektrických digitálních impulsů. Celý systém enkodéru je sloţen z následujících hlavních částí:
kódový kotouč s posloupností opticky průhledných otvorů a neprůhledných plošek nebo odrazných a neodrazných plošek
optický vysílač - nejčastěji LED dioda vysílající světlo ve viditelné nebo infračervené části spektra
optický přijímač - fototranzistor nebo fotodioda
optika pro zaostření optického paprsku (nebývá pouţita vţdy)
Princip funkce enkodéru Kódový kotouč je spojen s hřídelí enkodéru, která je přes spojku připevněna k hřídeli motoru. Světlo vysílané světelným zdrojem (diodou LED), který je umístěn před kódovým kotoučem, můţe procházet kódovým kotoučem pouze průzory, zatímco zbývající neprůhledná část kódového kotouče pohlcuje světlo. Světelné impulsy vytvářené otáčením kódového kotouče aktivují optický snímač, který je převádí na elektrické impulsy (obr. 8). Aby bylo u snímače zajištěno generování obdélníkových impulzů bez rušení, musí být elektrický signál zesílen a elektronicky zpracován. Pro zlepšení kvality a stability výstupních signálů se můţe snímat v diferenciálním reţimu, kdy se porovnávají dva téměř totoţné signály s opačnou fází (tj. fázový rozdíl 180 elektrických stupňů). Snímání rozdílu dvou signálů odstraňuje souhlasné rušení, protoţe stejné signály libovolného tvaru se vţdy překryjí.[@(]
Obr. 8 Princip rotačního optického enkodéru V případě reflexních enkodérů (obr. 12) jsou zdroj světla i jeho přijímač společně umístěny na jedné straně kotouče, na kterém jsou reflexní a matné plošky. Jejich střídání před přijímačem při otáčení kotouče na něm způsobuje změny napětí v důsledku změny mnoţství detekovaného světla. Provedením prahování napětí na přijímači se získá obdélníkový signál, kde kaţdý obdélník odpovídá jedné reflexní či matné ploše. Při jejich rovnoměrném rozmístění po obvodu kotouče odpovídá jeden obdélník otočení vţdy o shodný počet stupňů. Enkodérům generující takovýto pravidelný obdélníkový signál říkáme inkrementální. Mimo výše popsaných inkrementálních enkodérů existují i tzv. absolutní. Zatímco inkrementální enkodéry pouze detekují změnu polohy o pevně daný minimální krok, absolutní enkodéry nám říkají přímo polohu v rámci 360 stupňů. Toho je dosaţeno zakódováním kaţdé polohy natočení kotouče, tzn., ţe kaţdému určitému úhlovému rozsahu odpovídá určitá jedinečná kombinace impulzů.[29]
4.2.1 Inkrementální enkodéry Inkrementální enkodér obvykle generuje dva obdélníkové průběhy, o 90 elektrických stupňů, které se nazývají kanál A a kanál B (obr. 9).
vzájemně
posunuté
Obr. 9 Provedení inkrementálního enkodéru s detekcí směru pohybu a definovaným počátkem Zpracováním samotného kanálu A lze získat informaci o rychlosti otáčení, pomocí druhého kanálu je moţné podle sekvence stavů generovaných oběma kanály rozeznat i směr otáčení (obr. 10). K dispozici je ještě další signál, nazývaný Z nebo také nulový kanál, který udává referenční (nulovou) polohu hřídele enkodéru. Tento signál je obdélníkový a ve fázi s kanálem A.
dráha A dráha B
otáčení doleva A B
optický detektor otáčení doprava A B
+90°
-90°
dráha A je o 90°
dráha B je o 90°
posunuta před dráhou B
posunuta před dráhou A
Obr. 10 Princip detekce směru otáčení kotouče enkodérů prostřednictvím pouţití dvou kanál A a B Samotná posloupnost dvou, případně tří, obdélníkových signálů z inkrementálního enkodéru však není z pohledu vyhodnocení nebo zobrazení aţ tak ideální. Nejjednodušší způsob, jak provést převod z uvedených signálů na jednoduše srozumitelné číslo, je pouţití čítače s moţností čítání nahoru a dolů. Pro jednoduché praktické aplikace v průmyslu lze pouţít multifunkční čítač/časovač v krabičkovém provedení s displejem (obr. 11). dráha A dráha B
čítač nahoru dolů
displej
nulování Obr. 11 Blokové schéma zpracování signálů z inkrementálního čidla kódový kotouč
Vcc GND kanál A kanál B
vyhodnocovací elektronika
Obr. 12: Příklad provedení a funkce reálného enkodéru - Hewlett-Packard
4.2.2 Absolutní enkodéry Absolutní enkodéry v optickém provedení potřebují větší počet optických přijímačů, jejichţ počet odpovídá poţadovanému rozlišení. Nejběţnější je provedení dle obrázku 13, kde kotouč (l) obsahuje 8 paralelních drah, coţ znamená rozlišení 8 bitů. Pro detekci je tak potřeba jeden zdroj světla (2) a 8 optických přijímačů (3), kde kaţdý má vlastní dráhu. Pak například informace o natočení můţe být binární posloupnost 11001110. Jinou moţností realizace je princip, kdy všechny optické přijímače jsou za sebou na kraji kotouče a informace o poloze je dána pomocí jednoznačného kódu. Pro osm poloh a tři senzory by to mohlo být např. 000 001 010 101 011 111 110 100 a na kotouči by bylo 00010111 (v případě tří senzorů a osmi poloh, ale pouze relativní informace bychom získali rozlišení 24 místo 8). [18] , [19]
Obr. 13 Příklad principu absolutního optického rotačního enkodéru Kódování signálu u absolutních enkodérů Na rozdíl od inkrementálních enkodérů je zde kódováním přesně dána pozice hřídele. Nejčastěji se vyuţívá dvou typů kódování [18] , [19]:
standardního binárního kódování (tab. 6, obr. 14a)
Grayův kód (tab. 7, obr. 14b)
První kód je klasický, principielně jednoduchý a lehce srozumitelný, ale prakticky pro vyuţití v enkodéru nevýhodný. Standardní binární kód je v případě enkodérů totiţ velmi náchylný na generování tzv. hazardních stavů, kdy například při přechodu z binárního stavu 01 na nejbliţší následující stav 10 můţe být na kotouči krátce generován stav 00. Za to můţe nejen nedokonalé provedení kotouče enkodéru, ale někdy i optické jevy typu odrazu, ohybu nebo stínu světla procházejícího přes kotouč od vysílače (LED) k přijímači (fotodioda). Pravděpodobnost náhodných nebo i systematických vzniků hazardů je tím větší, čím víc bitů má kód, tedy čím má enkodér vyšší rozlišení (jemnější dělení kotouče). Uvedený problém se pak musí prakticky vyřešit ve snímací elektronice enkodéru. Nejjednodušeji to lze provést například metodou taktování signálu, resp. jeho synchronizací s hodinovým signálem odvozeným od rychlosti otáčení.[29]
Sektor Snímač 1 Snímač 2 Snímač 3
Úhel
1
Log. 0
log. 0
log. 0
0° to 45°
2
Log. 0
log. 0
log. 1
45° to 90°
3
Log. 0
log. 1
log. 0
90° to 135°
4
Log. 0
log. 1
log. 1
135° to 180°
5
Log. 1
log. 0
log. 0
180° to 225°
6
Log. 1
log. 0
log. 1
225° to 270°
7
Log. 1
log. 1
log. 0
270° to 315°
8
Log. 1
log. 1
log. 1
315° to 360°
Tab. 6 Tabulka stavů 3bitového standardního binárního kódování
Sektor Snímač 1 Snímač 2 Snímač 3
Úhel
1
Log. 0
log. 0
log. 0
0° to 45°
2
Log. 0
log. 0
log. 1
45° to 90°
3
Log. 0
log. 1
log. 1
90° to 135°
4
Log. 0
log. 1
log. 0
135° to 180°
5
Log. 1
log. 1
log. 0
180° to 225°
6
Log. 1
log. 1
log. 1
225° to 270°
7
Log. 1
log. 0
log. 1
270° to 315°
8
Log. 1
log. 0
log. 0
315° to 360°
Tab. 7 Tabulka stavů Grayova kódování
Obr. 14a Provedení kotouče v kódování ve standardním kódu
4.3
Obr. 14b Provedení kotouče v kódování v Grayově kódu
Využití enkodérů
Enkodéry jsou dnes jiţ běţnou součástí motorů v aplikacích, kde je potřebné přesné nastavení polohy nebo měření rychlosti otáčení klasických analogových motorů. Mimo rotační provedení enkodérů je moţné se setkat také s lineárním provedením pro lineární motory. [18] , [19]
4.4
Popis funkce zapojení
Výstup z optického enkodéru většinou nelze připojit přímo do procesoru. Signál je nutno upravit tak, aby měl přesně definovanou logickou 0 a logickou 1, proto byl navrţen obvod viz. obr. 15, kde frekvence blikání LED 3 udává rychlost otáčení clonky, LED 1 a LED 2 naznačují směr jejího otáčení. Pro přesnější určení polohy (rychlosti otáčení) stejnou clonkou je navrţeno schéma viz. obr.16. Toto zapojení doplněné o obvod 4070 - exclusice-OR zajistí dvojnásobný počet impulsů na otáčku clonky. To je moţné díky jeho pravdivostní tabulce (tab. 8).[29]
Tab. 8 Pravdivostní tabulka stavů O1 = výstup I1, I2= vstupy L= logická 0 H= logická 1
5 Energetické zdroje pro pohon mobilních robotů Nejběţnější typy energetických zdrojů pro roboty jsou akumulátory. Jsou zaloţeny na elektrochemickém principu. Procházející proud v nich vyvolává vratné chemické změny, které se projeví rozdílným elektrochemickým potenciálem na elektrodách. Z elektrod se pak dá čerpat na úkor těchto změn elektrická energie zpět. Protoţe je napětí na článcích chemických akumulátorů relativně malé (okolo 1,2 — 2 V, lithiové okolo 3,7 V), jsou někdy akumulátory sdruţovány do akumulátorových baterií.[29]
5.1 Obecné vlastnosti akumulátorů Akumulátor dodává plný výkon, jen je-li jeho vnitřní odpor co nejniţší. Pokud je odpor článku vysoký, při zatíţení výrazně klesá jeho napětí. Taková situace nastává při větším zatíţení motorů, např. při akceleraci robotu. Na tento pokles napětí můţe zareagovat např. řídící obvod robotu hlídající vybití akumulátoru a způsobí jeho předčasné odpojení, ačkoliv je v něm stále ještě nevyuţitá energie. Dalšími důleţitými vlastnostmi akumulátoru, které ovlivňují jejich vyuţití v robotu jsou: kapacita, napětí, hmotnost, ţivotnost akumulátoru atd.
5.2 Druhy chemických akumulátorů
niklokadmiový NiCd akumulátor
metalhydridový NiMh akumulátor
olověný Pb akumulátor
alkalický akumulátor
lithiový akumulátor Li-Ion
Li-Pol akumulátor
A. NiCd akumulátory NiCd akumulátory vykazují malý vnitřní odpor. Vnitřní odpor dobře udrţovaného niklokadmiového akumulátoru se takřka nezvýší ani po mnoha nabíjecích cyklech. Výhodou oproti ostatním typům je vysoká proudová zatíţitelnost. Snáší vysoké nabíjecí proudy. Nevýhodou těchto článků je vznik paměťového efektu při nesprávném nabíjení. Příčinou vzniku tohoto efektu je nabíjení baterií, které nebyly úplně vybité. Na záporné elektrodě se usazují kovové krystalky. Tím se sniţuje kapacita, roste vnitřní odpor a článek při zátěţi neudrţí napětí. Paměťový efekt je moţné odstranit opakovaným vybíjením a nabíjením akumulátoru. Pouţívání těchto akumulátorů se však omezuje z důvodu pouţití jedovatého kadmia, z kterého je vyrobena záporná elektroda. [13] B. NiMH akumulátory
Akumulátory typu NiMH mají podobnou stavbu jako články niklokadmiové, pouţívají ale mnohem ekologičtější materiály. Mají vnitřní odpor vyšší neţ akumulátory NiCd. Při opakovaném nabíjení se vnitřní odpor ještě zvyšuje. Jejich samovybíjecí proudy jsou niţší neţ u článků NiCd, z tohoto důvodu vydrţí déle nabité. NiMH článek uskladní při téţe hmotnosti téměř dvojnásobek energie oproti NiCd. [13] C. Olověný akumulátor Olověný akumulátor je galvanický článek s elektrodami na bázi olova, jehoţ elektrolytem je kyselina sírová. Olověné akumulátory jsou nejpouţívanějším sekundárním elektrochemickým zdrojem energie. Vyrábějí se v kapacitách řádově od 1 do 10 000 Ah. Hlavními výhodami je dobře zvládnutá technologie výroby, relativně nízká cena a vysoký výkon. Ţivotnost olověného akumulátoru je delší neţ u ostatních baterií. Nemá paměťový efekt a má malý vnitřní odpor. Nevýhodou je malá kapacita vzhledem k hmotnosti akumulátoru. [12] D. Alkalický akumulátor (RAM) Katoda článku je tvořena slisovanými krouţky kysličníku manganičitého (MnO2), nasyceného grafitem za účelem zvýšení vodivosti. Tyto krouţky jsou zalisovány do poniklovaného ocelového kalíšku tvořícího pouzdro a zároveň kladný vývod článku. Katoda dále obsahuje přísady umoţňující opakované nabití. RAM články téměř vůbec nemají samovybíjecí proudy a vydrţí proto v nabitém stavu 4-5 roků, na rozdíl od článků NiCd a NiMH. Nemají paměťový efekt. Nejsou stavěny na vysoké vybíjecí proudy. [14] E. Lithiový akumulátor (Li-Ion) Tyto akumulátory mají výhodný poměr váha / kapacita, velké napětí na článek (3,6 V), velmi malé samovybíjení a nemají paměťový efekt. Nevýhodou je větší vnitřní odpor neţ NiCd, špatně pracují při velmi nízkých teplotách, vyšší cena a nutná ochrana proti podvybití. [15] F. Články Li-Pol Tyto články mají ještě lepší vlastnosti neţ Li-Ion - zejména vnitřní odpor a větší poměr kapacita/váha. Tyto články jsou schopné dávat vyšší proudy neţ Li-Ion. Základní parametry jsou stejné jako u LiIon. [15]
6 Návod k rozšířenému robotu „junior“ o funkci sledování čáry Cílem návrhu je realizace levného mobilního robota s jednoduchým bezdrátovým propojením s moţností manuálního ovládání nebo řízení počítačem, který se bude svými vlastnostmi co nejvíce přibliţovat soutěţním robotům. Blokové schéma robotu je znázorněno na obr. 15.[29]
Obr. 15 Blokové schéma robotu
6.1 Popis mechanických částí Robot patří do kategorie MiroSot. Má podobu krychle o hraně cca 75 mm. Robot se pohybuje po dvou kolech poháněných dvěma motory. Kola mají průměr 50 mm. Šasi (podvozek) se skládá ze čtyř bočnic vyrobených z ocelového plechu řezaného laserem. Jednotlivé díly jsou spolu spojeny metodou bodového svařování.
6.2
Řídicí systém
Řídicí systém robotu se skládá z následujících částí: mikrořadiče budičů motorů bezdrátové komunikace inkrementálních čidel
6.3
Napájení robotu
Pro napájení robotu slouţí 4 akumulátory NiMH typu AAA nebo 4 akumulátory typu AA.
6.4
Komunikace
Jednou ze základních aplikačních funkcí je komunikace robotu s osobním počítačem, kdy mohou být robotu předávány příkazy. U nově konstruovaných robotů kategorie MIRO-SOT-JUNIOR je
hardwarově připraveno pouţití oboustranné komunikace, při které robot můţe sdělovat např. svou aktuální rychlost, stav baterií apod. Komunikace mezi robotem a komunikačním modulem počítače probíhá prostřednictvím rádiových vln. Pro správnou funkci je nutný bezdrátový přenos dat s nízkým stupněm poruch. Pro vysílání je vyuţito pásmo 2,4 – 2,5 GHz. V robotu je moţno podle typu pouţité desky plošných spojů zvolit obvod NRF2401, který je pouze jednočipovým transceiverem nebo NRF24E1. Obvod NRF24E1 je sice draţší a větší, ale je pouţit i ve vysílači a umoţňuje předzpracování přijatých dat a tím odlehčí výpočty hlavnímu procesoru. [29]
6.5
Řízení robotu
Pro řízení fotbalového robotu musí být splněny dva poţadavky: ovládání dvou stejnosměrných motorů rychlá a bezpečná komunikace s komunikačním modulem počítače Pro řízení motorů jsou pouţity dva PSD regulátory, které řídí budiče motorů. Jako zpětná vazba slouţí signál z optických čidel, které snímají pohyb robotu. Jako hlavní řídicí obvod slouţí mikrořadič ATmega16-16.
6.6
Motor
Pro pohon robotu MIRO-SOT-JUNIOR slouţí motor MIG 280 (obr. 21 a obr. 22).
Obr. 16 Robot – umístění motorů
Obr. 17 Motor
Svou geometrickou koncepcí vychází tvar a rozloţení jednotlivých subsystémů robotu z pravidel FIRA pro kategorii MIRO-SOT. Prototyp fotbalového robotu kategorie MIRO-SOT-JUNIOR je prezentován na obr. 18 a obr. 19.[29]
Obr. 18 Robot
Obr. 19 Robot – pohled shora
7 Mikroprocesor AVR Pro řízení fotbalového robotu MIRO-SOT-JUNIOR byl zvolen mikroprocesor AVR.
7.1 Vlastnosti procesoru ATmega16-16AU
pouzdro TQFP44 (obr. 25)
32 I/O linek sdruţených do portů A, B, C a D
paměti: 16kB FLASH (program), 1kB SRAM (data) a 512B EEPROM (záloha dat)
frekvence oscilátoru aţ 16MHz (aţ 16.000.000 instrukcí za sekundu)
RICS architektura
programování přes ISP (In System Programming) v zapojeném systému
2x 8-mi bitový čítač/časovač (T/C 0 a T/C 2), funkce OC a PWM
16-ti bitový čítač/časovač (T/C 1), funkce OC, IC a PWM
4x PWM (2 x 8-bitový a 2x 16-bitový)
10-ti bitový A/D převodník s osmikanálovým multiplexem, interní reference 2,54V
rozhraní SPI, USART a I2C
7.2 Přidružené vlastnosti
dostupnost volně šiřitelného programového vybavení pro programování a ladění procesorů AVR, AVRStudio 4.12
dostupnost C/C++ compileru WinAVR pro procesory AVR a jeho moţnost pouţití v AVRStudio 4.12
dostupnost volně šiřitelného programového vybavení PonyProg2000 pro nahrávání programu do procesoru a z procesoru.
jednoduchá konstrukce programátorů pro ISP, připojení na sériový port počítače [24]
Obr. 20 Rozmístění vývodů mikroprocesoru
Obr. 21 Blokový diagram procesoru Pro řízení robotu jsou vyuţity hlavně tyto části mikrořadiče: SPI pro komunikaci s jednočipovým rádiem
AD převodník pro zjišťování stavu baterie 2 PWM výstupy pro řízení budičů motoru externí přerušení pro načítání pulzů z inkrementálního čidla komunikace po RS232 čítače časovače vstupní a výstupní piny mikroprocesorů [29]
Technické řešení hardwaru robotu
8
Hardware robotu se skládá z přijímače, procesoru AVR, budičů motorů, levého a pravého motoru a snímače pohybu robotu.
8.1
Schéma robotu
Schéma robotu MiroSot Junior bylo vytvořeno v programu Eagle verze 4.16r2. Tento program je volně dostupný na internetu a umoţňuje vytváření schémat a desek plošných spojů. Popis schématu Toto schéma se dá rozloţit do několika částí:
napájení
budič levého a pravého motoru
zpracování signálu z inkrementálních čidel
bezdrátová komunikace
mikroprocesor
8.1.1 Napájení Robot je napájen čtyřmi mikrotuţkovými nebo tuţkovými akumulátory typu NIMH. Jejich výstupní napětí se pohybuje v rozmezí 4,4 - 5,6V. Procesor a pomocné obvody potřebují pro správnou funkci napětí od 4,3V do 5,6V, proto není moţné pouţít standardní lineární stabilizátor. Deska je napájena přes RC filtr přímo z baterií (obr.22). Výhodou tohoto řešení je malý úbytek napětí na filtru oproti řešení se stabilizátorem. Ochranu proti přepětí zajišťují 2 zenerovy diody, které jsou umístěny za tímto filtrem. Diody omezí maximální napětí na procesoru na 5,6V. Filtr společně s diodami se začne chovat jako stabilizátor napětí. Za tímto prvním filtrem je umístěn stabilizátor napětí pro transceiver, který pracuje od napětí 1,9 do 3,3V. Stabilizátor je řešen pomocí odporu R24 a zenerovy diody D5. Ochrana proti přepólování je zajištěna pomocí odporu R25 a diody D3. Odpor R25 má hodnotu 0,05Ω a je v provedení SMD velikosti 1206. Tento odpor slouţí jako pojistka proti zkratovému proudu. Pokud by došlo k přepólování baterie, projde proud z baterie přes tento odpor a diodu D3. Proud zničí odpor R25 a tím se zabrání zničení desky robotu. Díky tomuto řešení nedochází ke ztrátám energie na diodě, která by musela být umístěna v sérii s baterií. Úbytek na odporu R25 je minimální - činí maximálně 0,2V. [29]
Obr. 22 Obvody pro stabilizaci napětí
8.1.2 Budič levého a pravého motoru Budiče motorů jsou realizovány pomocí MOSFET tranzistorů IRF7389 (obr. 28). V jednom pouzdře jsou umístěny dva tranzistory - jeden je typu N a druhý typu P. Toto řešení umoţňuje maximální úsporu místa na plošném spoji viz. schéma zapojení obr. 24. Tranzistory jsou připojeny přímo k výstupům z procesoru. To je umoţněno tím, ţe Mosfet tranzistory i procesor pracují na stejné napěťové úrovni.[29]
Obr. 23 MOSFET tranzistor Charakteristické vlastnosti tranzistoru
VDS=30V
ID N kanál =7,3 A
ID P kanál =-5,3 A
RDS(on) N kanál = 0,029Ω
RDS(on) P kanál = 0,058 Ω
UGS(th) N kanál = 1V
UGS(th) P kanál = -1V [25]
Z uvedených údajů vyplývá, ţe budič motoru je moţné pouţít pro proud maximálně 5,3A.
Obr. 24 Budiče motorů
8.1.3 Zpracování signálu z inkrementálních čidel Signál z inkrementálního čidla je nutno zpracovat pomocí RC filtru typu dolní propust. Filtr je zde pouţit proto, aby nedocházelo k rušení signály o vyšším kmitočtu, neţ je maximální kmitočet signálu z inkrementálního čidla. Dále je do signálu vloţen Schmittův klopný obvod. Tento obvod zajistí ţe, signál z inkrementálního čidla má vţdy přesně definovanou logickou nulu nebo logickou jedničku a nepohybuje se v zakázané logické úrovni. Zapojení je znázorněno na obr. 25.[29]
Obr. 25 Obvody pro zpracování signálu z inkrementálních čidel
8.1.4 Bezdrátová komunikace Pro bezdrátovou komunikaci je pouţit jednočipový transceiver NRF24E1 (obr. 26). Transceiver je k mikroprocesoru připojen pomocí komunikačního rozhraní RS232. Transceiver je napájen napětím 3,3V, a proto je jeho logická jednička 3,3V. Mikroprocesor ATmega16 16 je napájen cca 5V (závisí na stavu baterie), a proto je jeho logická jednička 5V. Úpravu logického signálu z 5V na 3,3V ve směru mikroprocesor – transceiver zajišťuje zenerova dioda D1 společně s odporem R10. Úprava signálu v opačném směru není nutná, ale je provedena pomocí odporu R11 a diody D2, čímţ se signál z transceiveru upraví na úroveň logická nula 0,6V a logická jednička na 5V.
Obr. 26 Transceiver
8.1.5 Mikroprocesor K řízení robotu MiroSot Junior je pouţit mikroprocesor ATmega16 16 (obr. 27). K tomuto mikroprocesoru jsou připojeny všechny výše popsané části uvedené v popisu schématu robotu. Dále je k tomuto mikroprocesoru připojen programovací konektor, krystal, tlačítko resetu, přepínač DIP a 4 indikační led diody.[29]
tlačítko resetu umoţňuje resetovat procesor
přepínače DIP slouţí pro nastavení vlastností jízdy robotu
indikační led diody slouţí pro ladění programu a pro signalizaci vybité baterie
Obr. 27 Procesor ATmega16-16
8.2
Deska plošného spoje
Plošný spoj je navrhnut na jednu oboustrannou desku s oboustrannou montáţí součástek (obr. 28, obr. 29). Deska má rozměry 72mm x 56mm. Všechny pouţité součástky jsou typu SMD. Výjimkou jsou elektrolytické kondenzátoy, konektory, vypínač a paměť 25LC640. Na horní straně desky je umístěn mikroprocesor a komunikační čip, na spodní straně desky jsou umístěny budiče motorů. Konektory pro připojení motorů jsou zapojeny tak, aby bylo moţné připojit k desce robotu motory MIG280 i motory faulhaber. Montáţní otvory mají průměr 3 mm a rozteč 65mm x 39,3mm, coţ přesně odpovídá konstrukci robotu. Plošný spoj je přišroubován k šasi robotu pomocí čtyř distančních sloupků dlouhých 5mm.[29] Popis konektoru pro motory 1 – motor 2 – motor 3 – zem 4 – 5V 5 – signál A z kvadraturního senzoru
6 – signál B z kvadraturního senzoru Popis programovacího konektoru 1 – MOSI 2 – MISO 3 – SCK 4 – RESET 5 – 5V 6 – ZEM
Konektory pro připojení motorů
Bezdrátová komunikace Konektor pro sériovou komunikaci
Mikroprocesor ATmega16 16 Reset
Hlavní vypínač
Napájecí konektor Obr. 28 Horní strana desky plošného spoje
Programovací konektor
Budiče motorů
Montáţní otvory
Napájecí zdroj Obr. 29 Spodní strana plošného spoje
8.1
Inkrementální senzory
Pro snímání otáček motoru robotu je pouţit inkrementální optický senzor TCUT1200 (obr. 30). Senzor je v provedení SMD a má rozměry 4mm x 5mm x 4 mm. Obsahuje jeden vysílač a dva fotocitlivé tranzistory, díky čemuţ je moţné pouţít tento senzor jako kvadraturní s rozlišením směru otáčení. Senzor je zapojen podle doporučeného zapojení (obr. 31). Maximální počet impulzů na otáčku motoru je dán velikostí pouţité clonky a vlastnosti pouţitého snímače. Snímač je schopen snímat otáčky s rozlišením směru do minimální velikosti průzorů a čar na clonce 1,1mm a větší. Maximální průměr clonky je 21mm. Obvod clonky je π*d=3,1415*21= 65,9715 mm, maximální počet průzorů a čar na clonce je 65,97/1,1= 59,972 (výsledek je zde nutno zaokrouhlit dolů), to znamená maximálně 29 impulzů na otáčku. Pro vyšší spolehlivost jsem při sestrojování robotu pouţil clonku s 25-ti průzory, tzn. 25 impulzů na otáčku.[29] Clonka je zhotovená slepením dvou totoţných kotoučů enkodérů vytištěných laserovou tiskárnou na fólii. Kotouče jsou lepeny tonerem k sobě, čímţ se zamezí jeho setření a zvýrazní se kontrast. Pro lepení clonek je pouţito lepidlo UHUpor, které zachovává na fólii toner bez poškození. Clonka je připevněna na hřídel prostřednictvím kovového (popř. silonového) unášeče (obr. 32).
Obr. 30 Optický senzor TCUT1200
Obr. 31 Doporučené zapojení senzoru TCUT1200
Obr. 32 Unašeč
Obr. 33: Schéma zapojení inkrementálního senzoru
Obr. 34 Deska plošného spoje inkrementálního senzoru
Programové vybavení robotu
9
Program pro robotu je vytvořen v prostředí AVR Studio. Toto prostředí umoţňuje programovat mikrokontrolér v programovacím jazyku C. Podstatnou výhodou tohoto software je to, ţe ho společnost ATMEL nabízí na svých internetových stránkách zdarma ke staţení. Grafické znázornění programu je na obr. 35, 36 a 37.[29] Program je moţné rozdělit do několika částí:
inicializace procesoru
komunikace
regulace levého kola
regulace pravého kola
měření otáček levého kola
měření otáček pravého kola
měření napětí na baterii
uc Actors
Fotbalov ý robot
Vysílač
Uživ atel
Obr. 35 Zobrazení příkladu uţití robotu uc Actors
Fotbalov ý robot
Uživ atel
«include»
Komunikace
«include»
«include»
Regulátor
Obr. 36 Grafické zobrazení programu robotu
Měření otáček
Start
Inicializace
Načítání dat
Měření otáček lev ého kola
Regulace lev ého a prav ého kola
Načítání otáček prav ého kola
[Nedostatečné napětí] [Dostatečné napětí] Napětí na baterii
Signalizace v ybité baterie
Konec
Obr. 37 Grafické znázornění průběhu programu
9.1
Inicializace procesoru
Po zapnutí robotu je automaticky provedena inicializace procesoru a transceiveru. Nyní je procesor připraven na přijetí instrukcí.
9.2
Komunikace
Komunikace je zajišťována načítáním dat z komunikačního čipu. Načtená data jsou zpracována a uloţena v jednotlivých proměnných. Standardně se přenáší jen poţadované otáčky levého kola, pravého kola a typ řízení. Typ řízení umoţňuje zapnout nebo vypnout regulátor v robotu. Je také moţné přenášet kanál pro vysílání, konstanty P, S a D pro regulátor a rychlost vzorkování. [29]
9.3
Měření otáček levého a pravého kola
Měření otáček je provedeno prostřednictvím přerušení. Při kaţdém přerušení dojde k inkrementaci nebo dekrementaci proměnné příslušného kola podle směru jeho otáčení. Kaţdý inkrementální snímač je napojen na svůj kanál přerušení.[29]
9.4
Regulace levého a pravého kola
Část, v níţ se provádí regulace otáček, je spouštěna pravidelně podle časového přerušení, coţ odpovídá vzorkování. Program se snaţí zajistit, aby kolečko dosáhlo v daném čase určité polohy, to odpovídá rychlosti jeho otáčení. [29]
9.5
Měření napětí na baterii
Měření napětí na baterii zajišťuje ochranu baterie proti úplnému vybití, při němţ by mohlo dojít ke zničení pouţívané baterie. Vzorkování napětí probíhá pravidelně po skončení části programu s regulací rychlosti otáčení kol. Je zde pouţit digitální filtr, který odfiltruje krátké poklesy napětí způsobené rozjezdy motorů. K odpojení motorů dojde aţ při delším poklesu napájení pod 4,2V, čemuţ odpovídá napětí 1.05V na článek baterie.[29]
9.6
Popis programového vybavení mikroprocesoru NRF24E1
Tento mikroprocesor zajišťuje pouze bezdrátovou komunikaci. Po zachycení dat je automaticky spočítáno a zkontrolováno, jestli souhlasí 16. bitové CRC a adresa. Mikroprocesor načte datový paket a pokud se jedná o standardní data jako je rychlost levého a pravého kola, pak tento paket zkrátí a odešle ho po sériové lince hlavnímu mikroprocesoru ATmega16. Tímto zkrácením datového paketu šetří čas hlavnímu mikroprocesoru. Pokud se jedná o data obsahující kanál nebo adresu, automaticky se nastaví nový přijímací kanál nebo adresa, Tato data se jiţ nikam neposílají. To má za následek částečné rozdělení výpočetního výkonu mezi tento mikroprocesor a hlavní mikroprocesor. Po resetu program standardně nastaví kanál 1 a adresu BB01. Dále čeká na datový paket přijatý rádiem. Pokud paket přijme, protřídí data a odešle je po sériové lince. Procesor pak opět čeká na příchod nových dat. Tento cyklus se stále opakuje.[29]
10 Popis regulace Pro pohon robotu jsou pouţity dva stejnosměrné 6V motory. Na hřídelích těchto motorů jsou připevněny clonky inkrementálních čidel. Motor je připojen ke kolu na kaţdé straně robotu ozubeným převodem v poměru 1:8. Pro robota je pouţit diferenciální podvozek. Chování diferenciálního podvozku je velmi podobné chování podvozku pásového se všemi jeho výhodami i nevýhodami. Hlavní výhodou je jednoduchost a robustnost podvozku. Pro robota lze za velkou výhodu povaţovat také otáčení podvozku na místě. Nevýhodou je obtíţnější řízení směru pohybu robotu. Pro zajištění přímého pohybu robotu je nutné udrţet stejnou obvodovou rychlost postranních kol (obr. 38). Kola mají stejný průměr, proto obvodová rychlost kol závisí na jejich rychlosti otáčení. Rychlost otočení kola detekují inkrementální čidla na hřídelích motoru. Rychlost je odvozena z počtu impulzů za jednotku času. Inkrementální čidla jsou umístěna na motoru, čímţ se získá díky převodování 8x vyšší přesnost určení rychlosti. Zatáčení robotu je podmíněno různou rychlostí otáčení kol (obr. 39)
v L rL v R rR v
[2]
vL vR R r L 2 2
[2]
Obr. 38 Přímý pohyb robotu
v L R 2 L v R R1R
[2] [2]
L 2 L R2 R 2 R1 R
[2] [2]
Obr. 39 Zatáčení robotu
10.1 Řízení motorů Pro řízení motorů jsou pouţity dva PSD regulátory, které řídí budiče motorů. Jako zpětná vazba slouţí signál z optických čidel, která snímají pohyb robotu. Základní zjednodušené blokové schéma regulačního obvodu je znázorněno na obr. 40, podrobnější blokové schéma je na obr. 41. Jako hlavní řídicí obvod slouţí mikrořadič ATmega 16. Tento mikrořadič pouţívá:
AD převodníky pro monitorování stavu baterie
2 PWM modulátory pro řízení budičů motorů
přerušovací vstupy pro načítání pulzů z inkrementálních čidel
časovače pro určení okamţiku vzorkování
Obr. 40 Základní blokové schéma regulačního obvodu Použité značky w- poţadovaná hodnota
e- regulační odchylka….(e=w-y) u- akční veličina y- skutečná hodnota regulované veličiny
Obr. 41 Blokové schéma regulačního obvodu robotu
10.2 Příklad kódu pro měření rychlosti // Obsluha INT1 SIGNAL ( SIG_INTERRUPT1 ) { if ( PINA & 0b00100000 ) // detekce směru otáčení --count; // vzad else ++count; //vpřed }
10.3 Příklad kódu pro regulaci rychlosti robotu P_slozka=(Pslozka*(Otacky-(skutecne_otacky))); S_slozka=S_slozka+Sslozka * (otacky- skutecne_otacky); D_slozka=Dslozka*(count0-count); Akcni_velicina= P_slozka +I_slozka+D_slozka; Význam jednotlivých proměnných: „Pslozka― – proporcionální konstanta regulátoru „Sslozka― – sumační konstanta regulátoru „Dslozka― – diferenční konstanta regulátoru „Otacky― – poţadované otáčky kola „Akcni_velicina― – hodnota nastavující PWM
// P sloţka // S sloţka // D sloţka //Součet P S D sloţek
11 Postup při zhotovení inkrementálního senzoru 11.1 Postup při zhotovení inkrementálního senzoru Výroba clonky Clonka je zhotovená slepením dvou totoţných kotoučů enkodérů vytištěných laserovou tiskárnou na fólii. Kotouče jsou lepeny tonerem k sobě, čímţ se zamezí jeho setření a zvýrazní se kontrast. Pro lepení clonek je pouţito lepidlo UHUpor, které zachovává na fólii toner bez poškození. Clonka je připevněna na hřídel prostřednictvím kovového (popř. silonového) unášeče. Na obě části clonky (na stranu s obrazcem) naneseme velké mnoţství lepidla. Ihned přitiskneme obě části k sobě. Přitom se snaţíme vytlačit všechny bublinky vzniklé v lepidle. Pokud bublinky není moţné odstranit, pouţili jsme málo lepidla. Vytlačené lepidlo kolem clonky setřeme párátkem. Je nutno dávat pozor, aby se lepidlo nedostalo z vnější strany do obrazce clonky. Došlo by k jejímu zašpinění a clonka by nemusela fungovat správně. Oba obrazce na clonce nastavíme, tak aby se přesně překrývaly. Toto je nutné udělat v co nejkratším čase neţ lepidlo zatuhne. Po přesném srovnání clonek obě části k sobě přitlačíme svěrkou. Clonky necháme zaschnout přibliţně 24 hodin. Potom clonku vystřihneme a do středu vyvrtáme díru, aby ji bylo moţné nasadit na unášeč. Posledním krokem je přilepení clonky k unášeči a po zatuhnutí lepidla přilepíme unášeč k ose motoru. Celý postup výroby je znázorněn na následujících fotografiích. [29]
Obr.42 Dvě totoţné části clonky vytištěné na fólii
Obr.43 Nanesení velké vrstvy lepidla na clonky
Obr.44 Stlačení obou clonek dohromady
Obr.45 Vystřiţení clonky a vyvrtání otvoru
Obr.46 Hotová clonka a unášeč
11.2 Inkrementální senzor
Obr.47 Schéma zapojení inkrementálního senzoru
TCUT1200
Obr.48 Deska plošného spoje inkrementálního senzoru měřítko 1:1
11.3 Sestavení kola robotu Nejdříve zkontrolujeme, jestli jsou na horní části šasi robotu dobře vyvrtány čtyři díry pro upevnění plošného spoje. Pokud nejsou, je nutné je vyvrtat vrtákem o průměru 2,5 mm. Následně vyřeţeme do těchto otvorů závity závitníkem M3. Šasi robotu dokonale očistíme od ţelezných pilin a zbytků oleje. Dalším krokem je sestavení obou kol. Kola se sestavují z hlavní části (1) dále z loţisek (6), unášeče (4), ozubeného kola (3) a hřídele.[29]
Obr.49 Části kola robotu Na hřídel nasadíme loţiska a vymezovací krouţek. Tuto hřídel vloţíme do unášeče.
Obr.50 Sestavení kola robotu Nyní provedeme sloţení celého kola dohromady. Kolo skládáme v pořadí: hlavní část kola, ozubené kolo a unášeč. Tyto části se sešroubují dohromady z vnější strany kola třemi šroubky M2,5. Dále je nutné připájet k motorům dráty a přilepit clonky k osám motorů. Po zaschnutí lepidla přišroubujeme motory MIG280 do šasi robotu. [29]
Obr.51a Přišroubování motoru k šasi robotu
Obr.51b Přišroubování kola k šasi robotu
11.4 Elektronické schéma, DPS robotu
Obr.52 Schéma robotu
Obr.53 DPS robotu, pohled zespodu (měřítko 1:1)
Obr.54 DPS robotu, pohled shora (měřítko 1:1)
Obr.55 Osazovací výkres - horní strana desky plošného spoje
Obr.56 Osazovací výkres - spodní strana desky plošného spoje
11.5 Osazení desky plošného spoje robotu Při osazovaní desky plošného spoje robotu je nutno dávat pozor na statickou elektřinu, protoţe některé pájené součástky jsou velmi náchylné a mohly by se zničit. Je důleţité pájet na uzemněné podloţce určené pro pájení. Pouţíváme mikropájku s uzemněným hrotem, a zároveň se sami uzemníme pomocí zemnící soupravy. Pro pájení je vhodné pouţít tenký cín nejlépe o průměru 0,5mm. Teplotu pájky volíme kolem 350°C. Dále budeme potřebovat malé ostré boční štípací kleště, pinzetu přímou a zahnutou. Pájených součástek se nedotýkáme holýma rukama, ale bereme je pouze pinzetami, aby nedošlo k zamaštění pájecích plošek. Klasické SMD součástky jako jsou odpory, kondenzátory, tranzistory apod. pájíme tak, ţe nejprve naneseme malou kapku cínu na jednu pájecí plošku desky plošného spoje. Potom přiloţíme součástku a připájíme ji k plošce, na kterou jsme nanesli tuto kapku. Dále připájíme další vývody součástky. SMD součástky, které mají více neţ 3 vývody, pájíme stejně jako klasické součástky. Rozdíl je pouze v případě, ţe místo profesionálně vyrobené pocínované desky plošného spoje máme pouze desku nepocínovanou. V tomto případě musíme pocínovat všechny plošky plošného spoje velmi tenkou vrstvou cínu. To provedeme tak, ţe plošky pocínujeme a pak cín pomocí odsávacího měděného knotu s tavidlem odsajeme. Na plošce nezůstane téměř ţádný cín, pájecí ploška pouze změní barvu ze ţluté „měděné― na stříbrnou „cínovou―. Teď můţeme pájet jako na profesionálně vyrobenou desku s pocínováním. Pájení komunikačního čipu je odlišné. Čip má mnoho vývodů, které jsou vyvedeny pod čipem a po stranách zůstávají pouze velice malé vývody. Je vhodné pouţít pájecí gel „ţelé―, který nezanechává korozívní zbytky a je nevodivý. Je nutné poloţit čip velice přesně na své místo a ujistit se ze všech stran, ţe pájecí plošky čipu leţí na pájecích ploškách desky plošného spoje. Čip je vhodné shora zatíţit na vodorovné podloţce a opět se ujistit ţe se nepohnul. Teprve nyní připájíme první vývod komunikačního čipu a znovu zkontrolujeme polohu čipu na desce. Pokud se nepohnul, zapájíme vývod v protějším rohu čipu. Teď je moţné zapájet celý čip. Při pájení komunikačního čipu se nenanáší kapka cínu na jednu plošku předem. Pokud se některé noţičky slijí cínem, je moţné cín odsát odsávacím knotem. Nejdříve je nutno zapájet komunikační čip NRF24E1, který je nejobtíţněji pájitelnou součástkou na plošném spoji robotu. Pokud bychom nezapájeli jako první komunikační čip, bylo by velmi obtíţné se dostat k jeho vývodům a zapájet je.[29] Pokud nemáme plošný spoj s vyrobenými prokovkami, pájíme prokovky. Prokovky se vyrábějí z několika vlasců měděného kabelu (cca. 5 podle velikosti díry a tloušťky drátu). Drátky se zkroutí a protahují se otvory na prokovky. Potom se zapájí shora i zespodu a štípacími kleštěmi se odštípnou těsně u plošného spoje. Dále je nutné zapájet nejniţší součástky, jako jsou SMD odpory a SMD kondenzátory na horní straně desky. Nyní zapájíme procesor ATmega16 a obvod 74HC14 a provedeme osázení desky ze spodní strany, kde připájíme všechny součástky od nejniţších po nejvyšší. Následně zapájíme i součástky s drátovými vývody. Všechny součástky s drátovými vývody postačuje zapájet na straně, kde se pájí standardně. Pouze programovací konektor, konektor s rozhraním RS232, patici paměti, přepínače DIP a tlačítko resetu je nutno zapájet shora i ze spodu desky plošného spoje.
Paměť 25LC640 je nutno připojovat přes patici. Proto místo paměti je nutné zapájet precizní patici a paměť pak umístit do této patice. Krystal Q3 se osazuje na izolační podloţku, aby nedošlo ke zkratování některých vodivých cest na plošném spoji. Prokovku přímo pod procesorem ATmega 16 nepájíme, protoţe by nebylo moţné osadit procesor. Osazovaní desky s inkrementálními snímači Je vhodné napřed připájet inkrementální senzor a potom teprve SMD odpor, protoţe jinak by bylo málo místa pro pájení inkrementálního senzoru. Po zapájení všech součástek je nutné desku očistit od zbytků tavidla lihem nebo izopropylalkoholem. Po důkladném očištění musíme zkontrolovat, jestli jsou všechny součástky dobře připájeny a jestli se neslily některé noţičky obvodů, které mají být odděleny. Potom desku nalakujeme.[29]
12 Oživení elektroniky robotu Po zapájení všech součástek na desce plošného spoje provedeme oţivení elektroniky robotu. Oţivení provádíme nejprve bez připojených motorů a baterie. Desku robotu připojíme na laboratorní zdroj napětí s proudovým omezením. Proudové omezení nastavíme přibliţně na 100mA a výstupní napětí zdroje na 0V. Zapneme vypínač na robotu a pomalu zvyšujeme napětí zdroje od 0V do 3,3V. Odběr proudu by měl být cca. 45mA. Měla by se rozsvítit dioda LED 5, která má zelenou barvu. Příklady nejpravděpodobnějších chyb při oživování robotu a jejich náprava
Odběr proudu je vyšší neţ 55mA – na desce je pravděpodobně zkrat. Napájení je nutné odpojit a hledat chyby v pájení součástek.
Proud je pod hodnotou 40mA a zelená dioda LED 5 nesvítí - ukazuje na chybu v napájecí větvi 3,3V. V tomto případě zkontrolujeme připájení odporu R24 nebo některé prokovky.
Odběr proudu se pohybuje kolem 45mA a LED 5 nesvítí – LED 5 je pravděpodobně zapájená s opačnou polaritou.
Pokud při oţivování robotu zatím ţádné chyby nenastaly nebo byly opraveny a vše správně funguje, nastavíme napětí na zdroji 3,9V. Odběr proudu by neměl překročit cca 52mA. Nyní změříme napětí na zenerové diodě D5. Na této diodě nesmí být vyšší napětí neţ 3,4V. V případě vyššího napětí, zkontrolujeme hodnotu odporu R24. Pokud má správnou hodnotu je pravděpodobně zenerova dioda vadná nebo je na jiné napětí neţ 3,3V. V tom případě diodu vyměníme. Nyní nastavíme na zdroji napětí 5V. Odběr proudu by měl být cca 82mA. Opět zkontrolujeme napětí na diodě D5. Pokud je napětí vyšší neţ 3,5V, okamţitě zdroj vypneme a vyměníme tuto diodu. Na zdroji nastavíme proudové omezení na 120mA a napětí 5,7V. Pokud je robot správně zapájen, měl by odebírat přibliţně 100mA. Nyní nastavíme na zdroji napětí 5V a proudové omezení na 100mA. (Je vhodné změřit osciloskopem, jestli se rozkmital krystal u komunikačního čipu. Pokud ne, je pravděpodobně špatně připájený). Připojíme programátor k programovacímu konektoru a k počítači a pomocí programu PonyProg nastavíme: Setup > Interface setup nastavte SI Prog API a sériový port, ke kterému je připojen programátor Device > AVR micro > ATmega16 Comand > Security and configurations bits bity podle obr. 57 a zadejte Write.
Obr. 57 Nastavení konfiguračních bitů V programu PonyProg otevřeme soubor s programem pro robotu MiroSot Junior s příponou HEX a zadáme nahrávání do procesoru. Po nahrání programu by se měla rozsvítit zelená LED 10. Pokud se dioda nerozsvítí, vyzkoušíme Osciloskopem, jestli se rozkmital krystal Q3 a pokud ne, hledáme chybu v pájení kolem tohoto krystalu. V případě, ţe se zelená led dioda rozsvítí, sníţíme napětí na zdroji na 3,9V. Dioda by měla zhasnout a měla by se rozsvítit červená LED 9 a rozblikat ţlutá LED 8. Tento stav signalizuje pokles napájení. Dalším krokem je oţivení procesoru NRF24E1. Po zapnutí robotu se musí rozsvítit zelená dioda LED 1. Po zapnutí vysílače pro fotbal robotů, tato dioda zhasne. Pokud vysílač vypneme a zapneme, dioda se znovu rozsvítí. Pokud vysílač začne vysílat data a robot je v dosahu, potvrzuje LED 1 příjem dat a funkčnost komunikačního procesoru blikáním. Nyní přistoupíme k oţivení snímačů a budičů motorů. Robota vypneme a připojíme k němu konektory se snímači a motory. Robota opět zapneme. Proudové omezení je nastaveno na 150mA a napětí zdroje na 5V. Odebíraný proud by měl mít hodnotu kolem 125mA. Proudové omezení nastavíme na 0,5A a pootočíme kolečkem robotu. Měli bychom cítit odpor, kterým se snaţí robot kolečka vyrovnat do původní polohy. Zároveň pozorujeme na zdroji narůstající proud, který je úměrný síle, kterou robot při snaze vrátit kolečka vyvíjí. Pokud kolečko pustíme, musí se vrátit do původní polohy. Kdyţ se kolečko nevrací, ale naopak se rychle roztočí ve směru, ve kterém jsme ho pootočili, musíme přepájet dráty připojené k motoru nebo zaměnit dráty, připájené na senzoru otáček signály označené „A― a „B― (ovlivňuje, která část robotu je přední a která zadní). V případě, ţe proud překročí proudové omezení nastavené na zdroji a napětí na robotu klesne pod 4,2V, robot se vypne a indikuje nízké napětí na baterii. Pokud vše správně funguje, vyzkoušíme moţnost ovládání robotu vysílačem. V případě, ţe ovládání funguje, vloţíme do robotu baterie. Robot by měl být připraven k provozu.[29]
13 Sestavený robot
Obr.58 Multifunkční robot
13.1 Instalace programu pro ovládání vysílače a mikrorobotu počítačem Program pro vysílač musí být do počítače nainstalován, čímţ se vytvoří potřebné knihovny pro jeho správnou funkci. Program je psán pro operační systém Windows a měl by být kompatibilní od Windows ME aţ po Windows XP. Instalace probíhá ve třech krocích: Připojíme vysílač k počítači pomocí standardního USB kabelu s konektory A/B. Počítač nám nabídne instalaci nově přidaného zařízení. Zvolíme instalaci ze souboru a zadáme cestu k CD, na kterém je ve sloţce driver a podsloţce WinXP (podle operačního systému) umístěn tento driver. Driver můţeme nainstalovat z internetu. (Nalezneme ho na adrese společnosti FTDI. http://www.ftdichip.com/ ) Tím se v našem počítači vytvoří virtuální sériový port, pomocí něhoţ budeme komunikovat s vysílačem přes rozhraní USB. Posledním krokem je instalace samotného programu pro ovládání vysílače, které provedeme následujícím způsobem: Na CD-romu ve sloţce Installer označíme soubor setup.exe. Dále se budeme řídit pokyny průvodce instalací. Můţeme zadat pouze umístění, kde se bude daný program instalovat (standardně to je
C:\Program Files\. Po tomto kroku je dokončena kompletní instalace programu a můţeme spustit samotný program MirosotJunior nebo některý z dalších programů vytvořených pro ovládání robota.[29]
13.2 Nastavení portu Toto nastavení je potřeba provést, pokud nám počítač robota neovládá. Jedná se o volbu sériového kanálu, do kterého se posílají data z programu. Toto nastavení musí souhlasit s virtuálním sériovým kanálem, který jsme vytvořili při instalaci. U běţného počítače je to č.3. Toto číslo se liší podle počtu sériových portů na počítači. Klasický počítač má většinou 2 sériové porty, ale u notebooku nemusí být ţádný. Pokud počítač nemá ţádný sériový port, zvolíme číslo 1.[29]
13.3 Minimální požadavky na systém
Windows ME (se servispackem min. 6), Windows 2000, Windows XP CPU 600 MHz RAM 64 MB Volné místo na disku 75 MB Volný port USB
13.4 Technické parametry vysílače Napájecí napětí (USB) Napájecí napětí (adaptér) Odběr z adaptéru při pouţití analogového joystiku Odběr z USB bez joystiku Dosah vysílače Vysílací kmitočet Tab.9 Parametry vysílače
5V 7,5 – 24 V 30 mA 25 mA max. 10 m 2,4 GHz
[29]
14 Programování procesorů AVR: Jak jednoduše naprogramovat procesor firmy ATMEL s jádrem AVR? Jako první věc musíme sehnat procesor (Např: ATmega16-16PU).
Obr.59 Postup bitu Zařízení určené k naprogramování procesoru (zkopírování programu do paměti FLASH) lze nazvat programátor. Program je umístěn ve FLASH paměti a je to vlastně kód, který říká co má procesor zrovna teď dělat, a data jsou umístěna v EEPROM a pro běţnou činnost procesoru nejsou zapotřebí, jedná se jen o nějaké skladiště, které se můţe, ale nemusí pouţívat. S programátory je nutno trochu experimentovat, jelikoţ ne všechny a hlavně ne všude fungují. Výhodou procesorů AVR je, ţe se dají programovat sériově a to pomocí 4 pinů (MOSI, MISO, SCK a RESET) a to dokonce přímo v zapojení.
14.1 COM programátor Tento programátor komunikující po ISP interface procesorů ATMEL řady AVR. Čily se nejedná o programátor, ale o jakýsi převodník RS-232 <=> ISP/TTL. Napojení na MCU se provádí pomocí vodičů MOSI (vstup), MISO(výstup), SCK (clock posunu) a RESET. Programovaný MCU se nepřesouvá do externího zařízení, ale programuje se přímo v zapojeném systému. MCU se před programováním pomocí RESETu odpojí od okolních periferií, připojené zůstanou jen programovací linky MOSI/MISO/SCK na které nesmí být v průběhu programování příváděn signál. MCU taktéţ musí mít povolený RESET pin, který jde u některých typů předefinovat jako standartní I/O, pak ale nejde k programování pouţít ISP. Předefinování RESETu na I/O se provádí pomocí FUSE programovacích bitů.[29]
Obr.60 Schema programatoru, obrázek realizovaného programátoru Software, který komunikuje s tímto 'převodníkem' je PonyProg2000. Navigace v programu je zcela intuitivní, jen je třeba v menu Setup > Interface Setup... zvolit Seriala v rozbalovacim menu poloţku SI Prog Api. Poté ještě nakalibrujeme timing pomocí Setup > Calibration. Nic víc jiţ není potřeba.
Jednoduchost programátoru je vykoupena jistou omezeností. Programování je relativně zdlouhavé hlavně u MCU jako je ATmega16 s 16kB FLASH se jedná o desítky sekund. Taktéţ nelze programovat MCU s taktovacím kmitočtem vyšším neţ cca 10MHz a niţším neţ cca 100kHz.
14.2 USBtiny SPI programátor Stejně jako předchozí programátor komunikuje přes ISP interface. Čily se nejedná o programátor, ale o jakýsi převodník USB <=> ISP/TTL. Z čehoţ vyplívá, ţe pouţívá pro propojení s MCU stejné vývody jako předchozí programátor. Jediným rozdílem je, ţe je zde vyuţit jiný MCU který provádí vlastní převod z USB na ISP.[29]
Obr.61 Schéma USB programátoru
Obr.62 Realizovaný USB prográmátor Hlavní výhodou tohoto programátoru je moţnost aktualizace firmwaru a tím vzniká moţnost programování novějších typů MCU Atmel. Nevýhodou je nutnost pouţití driverů stejně jako u jiných zařízení (vše najdete na http://www.ladyada.net/make/usbtinyisp/). V tomto případě se pro programování vyuţívá AVRdude a ne PonyProg. AVRdude je program běţící pod příkazovým řádkem. Ve Windows klikněte na menu Start/Run a zadejte cmd.
Obr.63 Cestu k AVRdude
Obr.64 Výpis systému V AVRdude existuje mnoho moţností:
-P <partno>: Specifikace AVR zařízení (zadání sériového čísla AVR) -b
: Zadání datové rychlosti pro RS232. Stačí standardní nastavení. -B : Změnu bitrate. Nastavení periody pro čtení nebo zápis. -C : Nastavení konfiguračního souboru. -c <programmer>: Specifikace programátoru typu, pokud pouţíváte pouţijte stk500, pokud pouţíváte DT006 pouţijte dt006, atd. -D: Zakáţe vymazání čipu před programováním. -P <port>: Jedná se o komunikační port pouţitý ke komunikaci s programátorem. -F: Test spojení
STK500
-e: Smazání čipu. -U <memtype>: r | w | v: [: format]: OK Tohle je důleţitý příkaz. Provádí vlastní programování. <memtype> - Zde se zadává flash, eeprom, hfuse, lfuse nebo efuse. r | w | v - Zde se zadávají příkazy r (read) w (write) nebo v (verify). - Zde se zadává jméno soubor. [: format]- Zde se zadává formát zadaného souboru (většinou je typu hex) Například: 1. Chcete-li write soubor s názvem firmware.hex na flash: -U flash: w: firmware.hex 2. Chcete-li verify soubor s názvem mydata.eep z eeprom: -U eeprom: v: mydata.eep 3. Chcete-li read fuse do souboru: -U lfuse: r: lfusefile.hex: i -n: To znamená, ţe nemusíte psát vlastně nic, je dobré, pokud chcete, aby se ujistilo, ţe neposíláte ţádné další příkazy, které by mohly poškodit čip, druh 'safety lock'. -V: Vypne auto ověření při zápisu. -u: Nastavení fuse bitu. -t: 'Terminál' mód. Můţete zadat příkazy do řady. -E: Zde jsou uvedeny některé údaje o programátoru. -v: Výstup pro ladění. -q: Výstup pro ladění ale méně výkonný neţ –v. Ty, které budete pouţívat 99% času jsou zvýrazněny červeně.[29]
14.3 Práce ve vývojovém prostředí Pro naprogramování procesoru AVR lze pouţít PonyProg2000. V zapnutém PonyProgu dáme moţnost Command > Read All a mělo by se objevit něco podobného jako na obrázku níţe:
Obr.65 Ukázka programu PonyProg2000 Pokud prostředí hlásí nějaké chyby je třeba tyto chyby vyhledat a odstranit (Správně zvolený typ procesoru nebo typ programátoru, atd). Připomínám, ţe ne všechny programátory fungují u všech
procesorů a na všech počítačích. Pokud vše funguje jak má, přepneme zdroj systémových hodin (clock) na externí krystal. Můţeme však klidně pouţívat interní RC, ten je však nepřesný a nestabilní. Nastavte FUSE bits a to příkazem Command > Security and Configuration Bits... > Read dle obrázku a pak jen Write.
Obr.66 Nastavení Jde o to hlavně nastavit bity SUTx a CKSELx. Určují dobu za jakou se po zapnutí napájení zapne samotné jádro procesoru (Start Up Time) a zdroj hodin/oscilátoru (Clock Select). Teď potřebujeme prostředí, ve kterém budeme psát zdrojové kódy (WinAVR). Doporučuji pouţívat C místo assembleru, i pokud jste zcela začátečník. ATMEL k procesorům AVR dodává zdarma i vývojový software, který obsahuje compiler assembleru a debuger, nově od verze 4.12 můţe AVR Studio pouţívat compiler jazyka C (GNU AVR GCC) od WinAVR. Stáhneme AVR studio, SP i WinAVR, vše nainstalujeme a zapneme AVR studio (http://sourceforge.net/projects/winavr/files/ a http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725). WinAVR je open source vývojové prostředí pro RISC MCU od ATMEL s jádrem AVR, zaloţené na platformě windows. Základ tvoří GNU GCC kompiler jazyka c/c++. Snad jediný kompiler c, který nemá omezení velikosti výsledného strojového kódu (a je zdarma). Nejedná se o typické vývojové prostředí, ale je v balíku společně ještě s programem Makefile, Programmers Notepad 2 a několika soubory nápovědy. Jako editor lze pouţít cokoli v čem se dá psát a uloţit s koncovkou .c např. Notepad, PSpad nebo přiloţený Programmers Notepad 2.[29]
Obr.67 Ukázka programu Makfile Program Makfile vytváří soubory pro překladač, které definují typ pouţitého MCU, název zdrojového souboru, stupeň optimalizace, formát výstupu, typ výstupu pro debugger... Je nutné tímto programem vygenerovaný soubor uloţit do stejného adresáře jako je zdrojový soubor. Pro spuštění WinAVR kompiléru zadejte do příkazové řádky make all nebo při pouţití Programmers Notepad 2 vyberte z menu Tools > [WinAVR] Make All.
Obr.68 Výběr typu procesoru Pro správnou funkci komplileru a k radosti programátora je nutné trošku prostudovat nápovědu (hlavně soubory od avr-libc - jsou jak pdf tak html a je tam i FAQ). Např. pouţití globální proměnné v procedurách přerušení (SIGNAL() nebo INTERRUPT()).
Obr.69 AVR Studio
Obr.70 Ukázka prostředí AVR Studia Přednosti programování v C/C++ oproti AVR asm jsou nesporné, navíc připustíme-li ţe některá MCU mají v asm aţ 130 instrukcí. Né však všechny AVR MCU jdou programovat ve WinAVR C/C++, jedná se hlavně o typy s hardware zásobníkem (hardware stack - zásobník není v RAM/RWM), jako AT90S1200, ATtiny11/12/15/28. Avšak lze pro programování pouţít WinAVR, ale jen jeho asembler.
14.4 Vytvoření nového projektu Jako příklad projektu dáme New Project a zvolíme AVR GCC, projekt nazveme blik a dáme Next, zde zvolíme AVR Simulator a procesor ATmega16, pak nakonec Finish.
Obr.71 Ukázka okna pro vytvoření nového projektu Ještě dáme Project > Configuration Options na záloţce General zadáme frekvenci 16MHz a hlavně změníme stupeň optimalizace na standardní - Optimalization -Os.
Obr.72 Nastavení Tak a jdeme psát zdrojový kód, vytvoříme blikání LEDkou, která bude připojena na Port A a pin 0 (PA.0), zpoţdění bude realizováno na instrukcích - nebude tedy nijak přesně stanoveno.[29]
Obr.73 Ukázka vývojového prostředí
14.5 Zdrojový kód příkladu: #include
// definice periferii procesoru
//--------------------------------------------- >> Zpozdovaci procedura << void delay ( uint32_t time ) { while ( time-- ); } //============================================= >> HLAVNI FUNKCE MAIN << int main( void ) { //--------------------------------------------- >> I/O PORTY << //0 - VSTUP, 1 - VYSTUP DDRA
= 0b00000001;
//--------------------------------------------- >> Nekonecna smycka << while( 1 ) { PORTA = PINA ^ 0b00000001; delay( 1e6 );
} return 0; } int main(void) je hlavní funkce a zde začne procesor pracovat po resetu/startu, tato funkce se nesmí nikdy ukončit, jelikoţ další činnost není definována, při skončení této funkce by došlo k nějakému nedefinovanému stavu, proto je před návratovou hodnotou return 0 vloţena nekonečná smyčka while( 1 ), procesor, respektive jako Program Counter, nemůţe z této smyčky vystoupit (respektive můţe, např. při obsluze přerušení nebo při volání funkce, avšak se vţdycky po ukončení dané funkce/rutiny vrací zpět). Smyčka je nekonečná, jelikoţ podmínka je vţdy pravdivá (nepravda je 0 a pravda je různá od nepravdy, tedy cokoli různé od 0), u jiných autorů můţete taky narazit na for( ; ; ). Před nekonečnou smyčkou se provádí úkony, které stačí udělat jen jednou, tedy inicializace. V našem případě je zde jen nastavení směru toku dat na PORTu A - pin PA.0 (DDRA - Data Direction Register A ) je nastaven jako výstup, zde na tento pin pak připojíme LED s vhodným odporem. 0b00000001 je binární zápis čísla 1 (nastavení bitu 0), pouţívám jej zcela úmyslně, jelikoţ z tohoto zápisu je jednoduché poznat, který bit je nastaven. Např.: 0b01000100 (nastaveny bity 2 a 6) je dekadicky 68, pouţít se dá i zápis hexadecimální a 68 je v něm 0x44. Jak tedy naše LEDka bliká? Jednoduše střídáním stavu log.0 (0V) a log.1 (5V) na pinu portu. PORTA je registr do kterého se zapisuje hodnota, kterou chceme zobrazit na Portu ( PORTA = 0b00000001; LEDku rozsvítí a PORTA = 0b00000000; LEDku zase zhasne). Čtením PINA coţ je registr obsahující hodnotu na pinu (PORTA je výstupní registr proto do něj zapisujeme) zjistíme zdali LEDka svítí či ne a provedením funkce XOR, coţ je v jazyku C "^" dosáhneme střídáním stavu log.0 nebo log.1.
Tab.10 Logická tabulka Ve zdrojovém kódu ještě vidíme #include , coţ slouţí pro definici názvů registrů k jejich adrese. U procesoru to funguje tak, ţe veškeré periferie (porty, časovače, AD převodník, atd) jsou namapovány do paměti (SRAM), proto přístup na tyto periferie je jednoduchý a to zápisem nebo čtením z určité adresy v paměti. Tedy kaţdá periferie je reprezentována ve skutečnosti adresou pamětí, coţ je nepraktické a header file io.h obsahuje přiřazení názvu k adrese paměti, proto ve zdrojovém kódu píšeme např. PORTA, PINA atd. místo psaní adres. Teď naše LEDka bliká, avšak s několika megaherzovou frekvencí. Proto je hned za příkaz, který střídá stavy na pinu PA.0, dána funkce delay() která dělá zpoţdění. Funkce přijímá jako argument kladné 32bitové číslo (0 aţ 4 294 967 296), které znamená dobu zpoţdění. V těle funkce pak vidíme opět cyklus while(), který trvá tak dlouho pokud jeho argument je pravdivý (různý od 0), avšak onen argument není konstantní, ale z kaţdým cyklem se zmenšuje o 1, to je dáno zápisem dvou mínus u podmínky (time--). Zápisem (1e6) se určila ona doba zpoţdění na 1 000 000 ( 1e6 = 1 * 10^6 ), tohle pak přibliţně odpovídá 1,33Hz frekvenci blikání.
Po vytvoření kódu v AVR Studiu dáme volbu Build > Build, tím pustíme překlad (compiler) a jeho výsledek v podobě souboru \blik\default\blik.hex (pokud máte v kódu syntaktickou chybu překlad neproběhne a dokonce compiler vám vypíše chybu - v takovém případě se soubor blik.hex nevytvoří) nahrajeme do PP přes příkaz File > Open Program (FLASH) File..., teď dáme Command > Write Program (FLASH) a tímto nahrajeme program do procesoru.[29]
14.5.1 Příklad algoritmu USARTu #include #include #include <string.h> #include <stdlib.h> volatile uint8_t buffer[ 10 ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 };// buffer prijmuteho packetu volatile uint8_t buffCt = 1; // pointer v buffru prijimace - prijem ho inkrementuje => 1 // asynchronni odeslani word void sendUSART( uint16_t data ) { while ( !( UCSRA & ( 1 << UDRE ) ) ); UDR = data >> 8; while ( !( UCSRA & ( 1 << UDRE ) ) ); UDR = data & 0x0FF; }
// pockat na vyprazdneni vysilaciho bufferu // odeslat data - horni byte // pockat na vyprazdneni vysilaciho bufferu // odeslat data - dolni byte
//---------------------------------------------------------------------- >> Obsluha USART RS232 << void USARThandle( void ){ if ( buffer[ buffCt - 1 ] == 0x0D ) // detekce ukoncovaciho znaku ENTER { for ( buffCt = 0 ; buffCt < 9 ; buffCt++ ) se odvysílají zpět do PC { sendUSART( buffer[ buffCt ] ); }
// pokud byl nalezen enter přijatá data
for ( buffCt = 0 ; buffCt < 9 ; buffCt++ ) buffer[ buffCt ]=0; buffCt = 0; sendUSART(13); haperterminálu sendUSART(10); }
// smazani bufferu // neprime smazani bufferu // znak pro posuna na nový řádek v
if ( buffCt >= 8 ) { // pokud není načten enter do 9. znaku přijatá data se rovněţ odvysílají for ( buffCt = 0 ; buffCt < 9 ; buffCt++ ) { sendUSART( buffer[ buffCt ] ); }
for ( buffCt = 0 ; buffCt < 9 ; buffCt++ ) // smazani bufferu buffer[ buffCt ]=0; buffCt=0; // znak pro posuna na nový řádek v haperterminálu } } //============================================= >> HLAVNI FUNKCE MAIN << int main( void ){ //---------------------------------------------------------------------- >> I/O PORTY << //0 - VSTUP, 1 - VYSTUP DDRD = 0b11110000; / PORTD = 0b00000000; //---------------------------------------------------------------------- >> USART << volatile uint16_t BaudRate = 34; 16.0000MHz Q UCSRA |= ( 1 << U2X ); UCSRB |= ( 1 << RXEN ) | ( 1 << TXEN); UCSRB |= ( 1 << RXCIE ); UCSRC |= ( 1 << URSEL ) | ( 3 << UCSZ0 ); UBRRH |= BaudRate >> 8; UBRRL |= BaudRate & 0x00FF; //--------------------------------------------- >> I/O PORTY <<
// baudrate 57.6k - U2X = 1 , // dvojnasobna rychlost // povoleni prijimace a vysilace // povoleni preruseni od prijimace // 8-bit, no parity, 1 stop bit
// povolení přerušení // nekonečná smačka
sei(); while(1){ USARThandle(); } } SIGNAL (SIG_USART_RECV) { buffer[ buffCt ] = UDR; buffCt++; }
// Obsluha přerušení od USART RS232 // uloţení přijatého znaku // zváčení ukazatele na pole
Tento příklad ukazuje, jakým způsobem se pracuje s USARTem. Čily je tento program vyuţit pouze pro výuku. Stejný princip práce je vyuţit v obou algoritmech pro řízení robota. Rozdílem je akorát, ţe zde dochází ke komunikaci s PC. Program obsahuje všechny důleţité části pro komunikaci pomocí po USARTu – Deklarace bufferu, odeslání slova (sendUSART), obsluha USARTu (USARThandle), základní nastavení USARTu (smyčka main) a obsluha přerušení (příjem dat).[29]
14.5.2 Příklad algoritmu Timeru #include #include #include <string.h> #include <stdlib.h> volatile uint8_t count = 0;
//============================================= >> HLAVNI FUNKCE MAIN << int main( void ){ //--------------------------------------------- >> I/O PORTY << 0 - VSTUP, 1 - VYSTUP DDRC= 0b10000000; //---------------------------------------------------------------------- >> T/C2 << 30,5Hz // Clear timer on compare mach - mode 2 TCCR2 |= ( 1 << WGM21 ) | ( 0 << WGM20 ); // Top OCR2 = 155; // clk / 1024 TCCR2 |= ( 1 << CS22 ) | ( 1 << CS21 ) | ( 1 << CS20 ); // Interrupt enable TIMSK |= ( 1 << OCIE2 ); // globalni maska preruseni sei(); //--------------------------------------------- >> Nekonecna smycka << while( 1 ); return 0; } //--------------------------------------------- >> Obsluha preruseni << SIGNAL ( SIG_OUTPUT_COMPARE2 ){ count++; if (count>=10){ PORTC = PINC ^ 0b10000000; count=0; } } SIGNAL ( SIG_INPUT_CAPTURE2 ){ } Tento příklad ukazuje, jakým způsobem se pracuje s čítačem/časovačem. Čily je tento program vyuţit pouze pro výuku. Algoritmus příkladu je určen pro rozblikání LED diody umístěné na portu C. Čítač/časovač je nakonfigurován v reţimu Clear Timer on Compare Match, coţ znamená, ţe čítač je nulován při dosaţení určité hodnoty. Hodnota je v registru OCR2, tedy 155. Dále je pro tento čítač nastavena dělička taktu krystalu na 1024. Frekvence se ještě dělí 10-ti pomocným softwarovým registrem count. Tento softwarový registr se inkrementuje po kaţdém vzniku přerušení od čítače časovače. Po dosaţení hodnoty 10 v softwerowém registru dojde k překlopení pinu 7 na portu C a tím k rozsvícení nebo zhasnutí LED. Softwarový registr se vynuluje a proces začíná znovu.[29]
14.5.3 Příklad algoritmu PWM #include #include #include <string.h>
#include <stdlib.h>
int main( void ) { //---------------------------------------------------------------------- >> nastaveni I/O << //0 - VSTUP, 1 - VYSTUP DDRD = 0b00110000; PORTD = 0b00000000; // OC1A, OC1B - PWM LEVEHO a PRAVEHO motoru TCCR1B |= ( 1 << WGM13 ) | ( 0 << WGM12 ); TCCR1A |= ( 0 << WGM11 ) | ( 0 << WGM10 ); // MODE 8 - PWM phase and frequency correct - TOP ICR1 ICR1 = 400; // maximum pro citani PWM - 20kHz // Clear OC1A/OC1B on Compare Match when upcounting. Set OC1A/OC1B on Compare Match when downcounting. TCCR1A |= ( 1 << COM1A1 ) | ( 0 << COM1A0 ); TCCR1A |= ( 1 << COM1B1 ) | ( 0 << COM1B0 ); OCR1A = 100; //PWM střída PWM1 0 - ICR1 OCR1B = 300; //PWM střída PWM2 0 - ICR1 TCCR1B |= ( 0 << CS12 ) | ( 0 << CS11 ) | ( 1 << CS10 );// CLK/1 while( 1 ){ } } Tento příklad ukazuje, jakým způsobem se pracuje s PWM. Čily je tento program vyuţit pouze pro výuku. Algoritmus příkladu vytvoří dva PWM signály s pevně nastavenou střídou a periodou obou PWM signálů. PWM signál se nastavuje od 0 do hodnoty nastavené v registru ICR1. V tomto případě od 0 do 400 coţ odpovídá střídě 0 aţ 100%. Pro hodnotu 0 bude výstupní pin neustále v logické nule pro hodnotu 400 bude v logické jedničce. Frekvence PWM signálu závisí na velikosti čísla uloţené v ICR1. Čím je toto číslo větší, tím je frekvence PWM signálu menší. Střída signálu PWM se nastavuje v proměnné OCR1A OCR1B. Hodnota v těchto proměnných odpovídá rozsahu od 0 do 100% a to odpovídá hodnotě 0 aţ ICR1.[29]
15 Možnosti rozšíření robotu Robota lze rozšířit o řadu dalších algoritmů. Je třeba, aby byl podporován i z hlediska hardwaru (další přídavné moduly).
15.1 Snímač překážky Algoritmus snímání překáţky záleţí na principu pouţitého snímače. Snímač můţe být dvojí (ultrazvukový snímač a infračervený snímač).
15.1.1 Ultrazvukový snímač Snímač je zaloţen na hotovém produktu v podobě ultrazvukového dálkoměru SFH05. Jedná se o kompaktní modul pro měření vzdáleností od 3cm do 4m. V robotovi je pouţito připojení pomocí dvou vodičů a to Trigger a Echo (pin Mode právě volí moţnost připojení).
Obr.74 Ukázka ultrazvukového snímače
Obr.75 Řídící signály Měření se zahájí impulsem na vstup Trigger (10s), a posléze se hledá náběţná hrana na výstupu Echo. Po detekování náběţné hrany se zahájí měření délky impulsu na výstupu Echo. Měření provádí časovač 0 s periodou 50s, počet přetečení časovače pak určuje vzdálenost v 8mm krocích. Zvuk při rychlosti 350 m/s urazí za 50s vzdálenost 8,75 + 8,75 mm – tam i zpět.
Robot v průběhu jízdy po čáře měří vzdálenost před sebou, a pokud detekuje odraz ve vzdálenosti menší neţ 150mm zahájí sekvenci objetí překáţky, resp. cihly. Jako první po detekci cihly robot vyjede obloukem s malým poloměrem z čáry směrem vlevo od cihly, dále pak nastavením různých rychlostí na kolech, objede cihlu zleva obloukem o poloměru 16cm. Oblouk však nedotáhne aţ k čáře ale v určité vzdálenosti se rozjede rovně. Po celou dobu oblouku vyhledává čáru, a pokud na ní narazí snímačem OC7, udělá krátkou otočku směrem k čáře (doleva) a dále pokračuje s algoritmem sledování čáry.[29]
15.1.2 Infračervený snímač Dálkoměr pracuje na principu pseudo-změny citlivosti IR optického přijímače SFH5110-36, který má nejvyšší citlivost na IR paprsek modulovaný nosným kmitočtem 36kHz, proto změnou frekvence nosné frekvence se dá dosáhnout měření vzdáleností na reflexním principu. Poměr nosné frekvence k základní nosné f/f0 pak odpovídá citlivosti. Pro f/f0 = 1 je citlivost nejvyšší, tudíţ lze detekovat předměty, které jsou nejvzdálenější. Při pouţití fixní frekvence se dá taky senzor modifikovat na obyčejný proximitní senzor (senzor přiblíţení - Near Proximity Sensor), kdy výstup zrcadlí stav: je předmět (je odraz paprsku) nebo není. Jistý problém však nastává při určité vzdálenosti kdy výstup začne kmitat (neexistuje ostrá hranice je odraz není odraz), proto je na desce procesoru přidán filtr 1. řádu v podobě RC integračního článku s frekvencí cca 10Hz a společně s hysterezí Schmittova KLO (při čtení stavu portu MCU se čte příslušný pin přes integrovaný S-KLO) tento neduh značně eliminuje.[29]
15.2
Algoritmus na základě kamerového systému
Tento algoritmus je ve stádiu vývoje. Předpokládaný princip algoritmu je zaloţen na vyuţití kamerového systému obsahující inteligentní software. Inteligentní software zpracovává obraz ze, kterého se získají data o pozici černé čáry a tyto data se odešlou po USARTu. Tyto data po té zpracuje algoritmus řízení v řídicí jednotce robota.[29]
16Použita literatura [1]
HORÁK BOHUMIL. Fotovotaické solární systémy, 2008
[2]
TOMAN MARTIN. Jihočeská univerzita v Českých Budějovicích[online], 12.08.2010 [20.08.2010]. Dostupné z
[3]
FUKÁTKO TOMÁŠ. Detekce a měření různých druhů záření, BEN - technická literatura, 2007. ISBN 978-80-7300-193-3[3]
[4]
Šetrné systémy.cz [online], 08.08.2010 [20.08.2010].
[5]
VSOLAR solární systémy a tepelné čerpadla [online], 23.07.2010 [20.8.2010]. Dostupné z < http://www.vsolar.cz/?page=produkty/solarni-systemy/teorie-solarni-techniky>
[6]
Wigipedia [online], 11.07.2010 [20.08.2010]. http://cs.wikipedia.org/wiki/Sluneční_energie>
[7]
KAPOUN JAN. Fakulta pedagogická [online], 08.07.2010 [20.08.2010]. Dostupné z < http://www.kof.zcu.cz/st/dp/hosnedl/html/slunecni.html>
[8]
VOPA-SOLAR, Solar energetic [online].2009 [20.08.2010]. Dostupné z
[9]
ČEZ, Čez [online], 2010 [20.08.2010].
[10]
HORÁK MOBUMIL, FRIEDRISCHKOVÁ KRISTÝNA. Sluneční záření a jeho energetické využití, Rešerše k projektu VAVE, 2009 Ostrava
[11]
IT serve [online], 2008 [20.08.2010]. Dostupné z
[12]
Isolar [online]. 2009 [20.08.2010].
[13]
H-Energy Systems [online]. energy.cz/fotovoltaika/princip>
[14]
KOPECNÝ JAN. Vysoká škola báňská technická univerzita Ostrava [online]. 2009 [20.08.2010]. Dostupné z
[15]
VÁLEK JAN. Studium degradace tenkých vrstev .Brno: Masarykova univerzita katedra fyziky- pedagogická fakulta. 1.06.2009. Vedoucí:doc. RNDr. Petr Sládek, CSc.
2009
[20.08.2010].
Dostupné
Dostupné
Dostupné
z
Dostupné
Dostupné
z
z
<
z
z
[16]
Elektřina a magnetismus [online]. 2009 [20.08.2010].
[17]
KUNC ALEŠ. Základní škola Jihlava [online]. 2009 [20.8.2010].
[18]
TZB INFO. TZB-info [online]. 2007 [20.08.2010]. Dostupné z
[19]
JOYCE [online]. 2008 [20.8.2010]. energie.cz/files/files/Mono_poly_rozdl.pdf>
[20]
Solární projekty [online]. 2020 [20.8.2010].
Dostupné
z
[21]
SUNNY watt [online]. 2010 [20.8.2010].
Dostupné
z
[22]
TURBOSOLAR. Turbo solar s.r.o [online].
[23]
TZBINFO. Stavebnictví, úspory energií, Technická zařízení budov[online]. 3.9.2009 [20.8.2010]. Dostupné z
[24]
SOLARENSTVÍ. Solarenství
[25]
SOLAR SYSTEM PROKOP. Obnovitelné zdroje energie. 21.4.209 [20.8.2010]. Dostupné z
[26]
ČEA. SOLARTEC s.r.o. [online]. 2010 [20.8.2010]. Dostupné z
[27]
WIKIPEDIE. Informační portál [online].
20.6.2010
[20.8.2010].
Dostupné
z
[28]
WIKIPEDIE. Informační portál [online].
20.6.2010
[20.8.2010].
Dostupné
z
[29]
[30]
SK
s.r.o.
Dostupné
[online].
2010
z
Dostupné
Dostupné
z
[20.8.2010].
2010
z
[20.8.2010].
Dostupné
Dostupné
z
z
JIŘÍ KOCIÁN. Diplomová práce: Stavebnicový řídicí systém mobilního robotu 21.6.2010 [4.5.2008]. Dostupné z archivu VŠB-TUO WIKIPEDIE. Informační portál [online]. http://cs.wikipedia.org/wiki/Robotika >
20.6.2010
[20.8.2010].
Dostupné
z
<