czech english

Barbucha

další český reprezentant na slovenkém Istrobotu 2003

Prvotním impulsem pro stavbu našeho robota bylo rozhodnutí přihlásit se do soutěže Istrobot 2003. Soutěžní kategorie nám přišly vhodné pro začátečníky. V první kategorii — sledování čáry — bylo úkolem projít ze startu do cíle a sledovat přitom černou čáru. Pro druhou kategorii — bludiště — bylo potřeba dojet z kraje čtvercového bludiště do středu. Pro zdolání obou úkolů tedy stačí „pouze” postavit pojízdné vozítko se senzory na sledovnání čáry a překážek a vytvořit dva programy.

Rozhodli jsme se postavit robota s diferenciálním řízením. Prvním úkolem tedy bylo sehnat motory, kdy jsme zvažovali následující tři možnosti:
  • stejnosměrné motory
  • krokové motory
  • upravené servomotory
Nejsnadnější se nám zdály servomotory. Napájejí se stejnosměrným proudem a pro řízení rychlosti a směru se používá PWM, což se dá generovat jednočipem. Žádná další elektronika už není třeba, protože servo obsahuje stejnosměrné motory i s řídícím obvodem. Serva ve svém principu nejsou určeny pro kontinuální pohyb, ale umí se natáčet v určitém rozmezí podle šířky pulzu PWM a svojí polohu poté drží. To jim dovoluje potenciometr připevněný k hřídeli motoru zprostředkovávající zpětnou vazbu. Z mechanického hlediska spočívá úprava v odstranění plastových zábran na ozubeném kolečku a potenciometru. Geniálním trikem je nahrazení potenciometru odporovým děličem, čímž servo nebere ohled na natočení hřídele — myslí si, že je stále otočeno stejně, ale změnou požadavku na natočení zrychluje, zpomaluje a mění směr otáčení hřídele.
Použili jsme servomotory HS322. Nevyužitý potenciometr jsme chtěli použít jako enkodér otáček, pro který byl napsán program v C. Pro nedostatek času na tuto „vymoženost” nikdy nedošlo.
Pro řízení robota jsme si vybrali procesor PIC16F876A od Microchip. Pro napsání, přeložení a ladění programu v asembleru existuje prostředí MPLAB. Přeložený program se nahraje do jednočipu pomocí programátoru. Existuje mnoho komerčních programátorů, ale i mnoho schémat na Internetu, podle kterých si ho lze vyrobit. My jsme se nechali inspirovat na stránkách pira.cz. Protože jsme používali externí napájení, nepotřebovali jsme jednočip napájet z paralelního portu a schéma jsme podle toho upravili. Pro nahrání programu do jednočipu po stránce softwaru se nám osvědčil IC-Prog.
Napájení celého robota zajišťovala 9V baterie zapojena se stabilizátorem na 5V. To přineslo časem jeden problém — procesor padal. Když se rozjížděly motory, odběr z baterií byl tak velký, že se jednočip restartoval. Zvětšili jsme napájení z 9V na 18V a přidali do obvodu k napájení procesoru kondenzátor.
Při zjišťování, co vlastně jednočip umí, jestli dělá to, co chceme a podobně, je dobré mít nějaký výstup. Většinou se používá dioda, v krajním případě lze měřit napětí na jednotlivých nožičkách jednočipu. My jsme se rozhodli pro netradiční řešení. Sehnali jsme zlevněný LCD displej 16x2. Na něj (po několika dnech strávených laděním a rozchozením displeje) se dají vypisovat potřebné údaje o stavu programu. Dobré stránky pro začátek.
K detekci čáry jsme použili čtyři dvojice infra součástek dioda-fototranzistor umístěné ve dvou kostičkách z Lega, odstíněné alobalem. Pro menší spotřebu nožiček procesoru jsme adresovali jednotlivé diody pomocí multiplexeru a demultiplexeru. Toto zařízení bylo velice problémové. Během testování se odpálily dvě diody, ale podařilo se je nahradit a napsat řídící program pro sledování čáry. Po příjezdu na soutěž byly zase některé diody odpálené. Přes veškerou snahu součástky nahradit jsme z první kategorie odstoupili.
Senzor na detekci překážek se skládal z IR-diody a IR-přijímače SFH5110-36. Do diody jsme pouštěli signál modulovaný na 36 kHz a četli stav přijímače. Součástka SFH5110-36 obsahuje fototranzistor a demodulátor s největší citlivostí na 36 kHz. Součástky se musí navzájem odstínit, aby dioda nesvítila přímo do přijímače. K tomu účelu jsme použili opět alobal a lepenku pro přichycení. Vychýlením vysílací frekvence od nejcitlivějšího kmitočtu se zmenšuje citlivost přijímače, čímž se dá „měřit” vzdálenost překážky, od které se světlo odráží. Detektory překážek byly tři — dva po stranách a jeden namířen před robota. Pro sledování zdi stačí měřit dvě úrovně. Pokud budeme pořád sledovat pravou zeď, aplikací pravidla pravé ruky, dojedeme do cíle bludiště.
Bohužel, jak již to chodí na robotických soutežích, neustále nás provázely technické problémy. Hned po příchodu jsme zjistili, že část diod určených na detekci čar přestala fungovat. I přes okamžitý výjezd do města a úspěšné sehnání nových diod, naše snahy o opravu ztroskotaly na až příliš odolné konstrukci Barbuchy. Naše trápení pokračovalo v testovací místnosti, kde jsme zaznamenali problémy s překladačem assembleru, který při linkování neohlásil překročení paměti a slinkoval moduly přes sebe. Tato chyba se jevila jako problém hardwaru, proto jsme její původ odhalili až po skončení zkušební doby. Proto jsme testovali jen v průběhu první části soutěže, ze které jsme byli nuceni odstoupit kvůli problémům s diodami. V tomto čase jsme se pokoušeli nakalibrovat senzory na parametry bludiště. Povedla se nám kalibrace detekce překážek na krátkou vzdálenost (pod 2cm). Měli jsme však problémy s detekcí stěny na delší vzdálenost – 10cm. Byli jsme ji schopni detekovat jen na vzdálenost 15cm. Ani zoufalé pokusy se stíněním diod různými materiály nám tyto problémy nepomohly odstranit.
Přestože naše první účast na robotické soutěži nám nepřinesla stupeň vítězů, byla pro nás nesmírně přínosná. Už teď se tešíme na příští ročník, a věříme že díky získaným zkušenostem budeme daleko úspěšnejší.


Máte-li jakékoli dotazy či připomínky – kontaktujte nás. Rádi vám odpovíme.