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.