Jak programátor k robotovi přišel
Jednoho dne jsem se rozhodl postavit si vlastního robota. Příčina tohoto rozhodnutí byla jednoduchá – prostě jsem záviděl svému robotickému okolí, že si má s čím hrát a já ne. Přece jen, hrát si s autodráhou už se nehodí a robotika se ukázala jako výborné zábava. Brzy se však ukázalo, že elektronika věda sama o sobě (navíc se jí asi nedá vyhnout) a ve srovnání s programy se o dost náročněji ladí (jsem taky programátor). Nakonec jsem se ale i přes počáteční chuchvalce drátů dostal zdárně do cíle.
- Je to taková tříkolka, která umí pomocí točení dvou bočních koleček jezdit dopředu a dozadu a otáčet se o 90 stupňů – byl jsem líný pouštět se do složitějších výpočtů polohy při jiných úhlech – také kvůli dále popsané robůtkově featuře – rychlé ztrátě orientace.
- Polohu počítá z informací dodávaných enkodéry, které jsou napojeny na kolečka. Z počátku jsem používal infra-prosvěcování šesti dírek, které jsou v malém převodovém kolečku o Merkura – stavebnice, ze které je celá konstrukce. To bylo ale ďábelské „rozlišení”, které umožňovalo i Robůtkovi omezenému na úhly 90 stupňů dostat se po chvíli provozu jakýmkoliv směrem do jakéhokoliv bodu. Později jsem proto přešel na asi klasičtější řešení s černobílými paprsky a jejich detekci CNYčkem.
- Jako mozek jsem pro Robůtka vybral jednočip AVR AT90S4433. Ani s touto technologií jsem neměl žádné zkušenosti. Moje seznamování s ní proto neprobíhalo nijak hladce, ačkoliv jsem nakonec na Robůtkovi použil stejný čip, se kterým jsem si začínal hrát – uznávám, že hlavně díky velké odolnosti tohoto jednočipu proti různým elektronickým „botám”.
- Robůtek umí zobrazovat, co si zamanete na tří číslicovém sedmi segmentovém displeji.
- Vezmu AVR-studio
- Napíšu v něm kód v Céčku
- Přeložím AVR-GCCčkem přidaným do AVR-studia jako externí kompilátor
- Přeložený kód nahraji IC-PROGem přes FUN-CARD kabel do vypnutého AVRka v základním zapojení
- Zapnutím AVR po odpojení kabelu se program spustí
- Kostra a motory
- Kostra robota je postavena výhradně ze stavebnice Merkur. Přední kolečko je vyrobeno s pingpongového míčku s navlečenou osičkou uprostřed. Dva stejnosměrné motůrky pochází ze stavebnice Merkur 2.1.Pozor! V jedné stavebnici je pouze jeden motorek!
- Napájení
- Jako jediný zdroj napětí na robotovi používám 5 akumulátorových tužkových monočlánků zasazených do pouzdra na monočlánky A306361.
- Základní deska
- Jako jedinou desku na součástky používám nepájivé kontaktní pole N-ZSB212, které výrazně usnadňuje začátečnickou konstrukci, a zjednodušuje testování. Jeho nevýhodou je snížená přehlednost, když je na něm více zapojení, a větší rozměry o proti klasickému plošnému spoji.
- Řídící jednotka
- Jako řídící jednotku jsem použil microcontroller AT90S4433 od firmy Atmel. Vyznačuje se nízkou cenou (asi 170kč), není nutné používat vnější programátor, má dostatečné množství I/O linek (20), 4kB paměti na kód, 256B EEPROM (vnitřní programem měnitelná, stálá (používám ji na ukládání informací o jednotlivých čtvercích)). Je snadno dostupný poměrně použitelný software. Základní schema zapojení se dá najít na této stránce. Pro funkci CPU je v podstatě potřeba zapojit pouze krystal (Q8MHZ) k pinům XTAL1,2 s přilehlými dvěma kondenzátory, napětí (asi 5V) na VCC a zem na GND. Vše ostatní už je navíc. Programovací kabel ani software, zmiňovaný na té stránce, se mi neosvědčily.
- Programovací kabel
- Pro programování CPU používám jednoduchý kabel, který najdete zde. Jsou k němu potřeba jen 3 odpory 220 ohmů (RR220R) a konektor do LPT portu (CAN25V).
- Software
- K psaní programu používám AVR-studio od firmy Atmel, ve kterém se dají s výhodou ladit aplikace i na simulátoru procesoru. Sharewarová verze sice neobsahuje kompilátor jazyka C, ale od AVRFreaks se dalo stáhnout AVG-GCC, které šlo používat podle přiloženého návodu jako kompilátor uvnitř AVR-studia. V nové verzi AVR-studia (4.0) ještě externí kompilátor používat nelze, takže se hodí pouze pro psaní v AVR-assembleru. K nahrání přeloženého programu do CPU používám program IC-PROG. Pro výše popsaný kabel je potřeba v nastavení adaptéru v programu vybrat ze seznamu „Fun-card”. Pokud jste s mikrokontrolery ještě nepracovali, určitě si přečtěte i článek Blikáme LEDkou, který jsme pro vás pro tyto účely připravili.
- Display
- Pro zobrazování hlášek robota používám třímístný sedmi segmentový displej s multiplexováním (HD-514RD -tento kód je pro čtyřmístný (třímístný nemůžu najít v katalogu)). Jako driver displeje (převodník se 4 vstupy udávajícími zobrazované číslo binárně a 7 výstupy, které ovládají jednotlivé ledky na displayi) používám DM74LS47. Principiálně není potřeba, ale šetří výstupy CPU o tři a usnadňuje zobrazování čísel… Displej je řízen multiplexovaně, takže pomocí časovače v CPU, který v přesných intervalech střídavě zobrazuje číslice na jednotlivých místech displeje, je dosaženo efektu ovládání všech míst současně za použití jen tří výstupů CPU navíc.
- Řízení Motorů
- Motory jsou řízeny pomocí dvojitého H-bridge L293D, jehož aplikaci můžete najít například zde.Tedy pomocí čtyř výstupů CPU je řízen pohyb obou motorů vpřed a vzad.
- Enkodéry
- Na každém z obou koleček je připevněn kotouček s černobílými paprsky, které jsou snímány optočlenem CNY70. Jeho analogový výstup se převádí na digitální například takto. Pomocí trimru (v obvodu označen jako R4) PT6HK010 se nastaví práh pro komparátor LM393 mezi černým a bílým políčkem. Výstupem hradla je už digitální signál (černá/bílá).
Pošlete email redakci.
Všechny materiály, které máme k dispozici, jsou již součástí článku, na který reagujete (tj. pokud tam tedy není např. plánek na stavbu, je to proto, že nic takového nemáme).
Vaši zprávu se bohužel nepodařilo odeslat, ale můžete nám napsat sami na adresu webmaster-at-robotika.cz
Vaše zpráva byla úspěšně odeslána
Pro odeslání formulář je třeba mít zapnutý javascript.