Můj robot: R2

Představím Vám svého druhého robota (proto R2 :-)) sledujícího čáru.

Konstrukce

Základem je hliníková konstrukce, vytvořená ze čtvercových hliníkových trubek o rozměrech 10 x 10 mm. Celá konstrukce má rozměry 110 x 125 x 120 mm (výška x šířka x délka). Po připočtení rozměrů kol má robot na šířku celkem 215 mm. Jednotlivá podlaží jsou vytvořena z plastových destiček stavebnice Merkur. Podvozek je dvoukolový s diferenciálním řízením pohybu. Robot je vybaven dvěma motory s plastovou převodovkou GM7 od firmy Solarbotics a jedním podpůrným kolečkem.

Elektronika

Řídící jednotkou je Arduino Duemilanove. K jednotlivým pinům Arduina jsou připojeny snímače a další elektronika. Motory jsou řízeny pomocí H-můstku, jehož zapojení najdete zde. Ultrazvukový snímač HC-SR04 slouží k detekci překážky. Line sensor modul slouží k detekování čáry a výsledky předává řídící jednotce po I2C sběrnici. Snímač ifm OJ5048 slouží k objíždění překážky.

Více napoví blokové schéma:

Robot je napájen čtyřmi NiMH akumulátory velikosti AA a jedním 12 V akumulátorem. První slouží k napájení motorů, druhý napájí ifm snímač a řídící jednotku. 5 V pro ostatní elektroniku je odebíráno z desky Arduina, která obsahuje stabilizátor na 5 V.

Snímače

Ultrazvukový dálkoměr HC-SR04

HC-SR04 je levný ultrazvukový dálkoměr. Na robotovi slouží k detekci překážky. Vzhledem k vytvořené knihovně pro Arduino je jeho obsluha velmi snadná. V mém případě je snímač nastaven tak, aby detekoval překážku ve vzdálenosti 7-8 cm před robotem.

Reflexní světelný snímač OJ5048

Jedná se o snímač vyrobený firmou ifm Electronic. Tento snímač je na robotovi používán pouze při objíždění překážky. Nejedná se o snímač přímo určený pro robotiku, ale pro obecné průmyslové aplikace; jeho provozní napětí je proto 10 – 30 V. Používá binární výstup (log. 1 – detekován objekt, log. 0 – objekt nedetekován). Log. 1 je zde reprezentována jako 10 V a log. 0 jako 0 V. Jelikož mikroprocesor pracuje s napěťovými úrovněmi 0 – 5 V musel jsem vytvořit převodník z 10 V na 5 V. Jde pouze o tranzistor zapojený ve spínacím režimu dle následujícího schématu:

RobotR2-TranzistorJakoSpinac

Modul pro sledování čáry

Pro sledování čáry jsem vytvořil modul, který sbírá údaje z čidel (reflexní optočleny CNY70) a následně je odesílá řídící jednotce po I2C sběrnici. To jej činí použitelným i na jiných robotech.

Modul se skládá ze dvou desek. První deska je osazena pěti reflexními optočleny CNY70. (Fototranzistor a infračervenou LED diodu umístěné ve společném pouzdře). Pokud se pod snímačem objeví černá čára, pak černá barva infračervené světlo pohltí a paprsek na fototranzistor nedopadne. Na výstupu snímače se potom objeví vysoká úroveň (log. 1). Když se pod snímačem objeví bílá, infračervený paprsek se odrazí do fototranzistoru a na výstupu se objeví nízká úroveň. Tři snímače se nachází uprostřed a dva po krajích, aby byl robot schopen zachytit čáru i v prudkých zatáčkách. Krajní snímače tedy slouží jako jakási záchranná brzda.

Tato deska se snímači je přes kabel připojena k základní desce modulu.

Základní deska

Je řízena mikrokontrolérem ATMEGA8, který je taktován na 16MHz. Obsahuje 5 vstupů pro desku se snímači. Dále obsahuje 6 vstupně/výstupních pinů pro připojení dalších snímačů. Do budoucna k nim plánuji připojit mikrospínače pro detekci nízkých překážek, které ultrazvukový snímač nedokáž nedetekovat. Dále deska obsahuje dvě tlačítka; první slouží jako resetovací, druhé zatím není v programu využito, jednu LED diodu indikující napájení a další dvě pro budoucí potřeby programu. Mikrokontrolér obsahuje arduino bootloader – díky tomu je možné jej programovat pomocí jazyka Wiring jako řídící jednotku.

Funkce je následující: přečte údaje ze všech snímačů a data odešle po I2C sběrnici do řídící jednotky. Může se zdát, že je zde zbytečně použit další mikrokontolér a snímače můžeme připojit přímo na řídící jednotku. Myšlenka je, ale taková, že se jedná o univerzální modul, který sbírá data z různých snímačů a vyhodnocuje je a následně posílá dál. Tímto řešením ušetříme mnoho pinů řídící jednotky. Do budoucna bych chtěl algoritmus rozšířit o informace, které bude odesílat. Momentálně posílá pouze údaje o tom, pod jakým snímačem se nachází čára. Dále by měl posílat informace, pokud si to řídící jednotka vyžádá, jestli se alespoň pod nějakým snímačem nachází čára. Prostřední čidla jsou připojena na analogové vstupy mikrokontoroléru. Algoritmus chci rozšířit o nastavování prahových hodnot, aby robot mohl sledovat čáru i na jiném barevném podkladu.

Pro lepší představu ještě několik fotografií robota: