- Koncepcia robota sledovača liniek
- Súčasti sú povinné
- Schéma zapojenia
- Programovanie Atmega16 pre robota sledovača liniek
Tu budeme stavať ďalší projekt s mikrokontrolérom AVR Atmega16. Ak ste v oblasti mikrokontrolérov AVR nováčikom, môžete si prečítať predchádzajúce projekty a výukové programy AVR.
Zostavenie robota je pre všetkých nadšencov elektroniky vždy vzrušením. A toto vzrušenie možno maximalizovať, ak robot dokáže automaticky robiť niektoré veci bez akýchkoľvek externých pokynov. Jedným z najčastejšie vyrábaných robotov začiatočníkmi elektroniky je Line Follower Robot. Ako naznačuje názov, robot bude nasledovať čiaru nakreslenú na povrchu. Čiara nemusí byť priamka. Čiary môžu byť tiež ľubovoľných farieb.
Predtým sme stavali projekty robotov na sledovanie riadkov pomocou rôznych ovládačov:
- Robot sledovača liniek pomocou mikrokontroléra 8051
- Robot sledovača liniek pomocou mikrokontroléra PIC
- Line Follower Robot pomocou Arduina
- Robot sledovača liniek pomocou Raspberry Pi
- Robot sledovača liniek pomocou ovládacieho panela MSP430
Dnes použijeme mikrokontrolér AVR na zostavenie robota Line follower.
Na detekciu liniek sa používajú väčšinou IR senzory. IR senzory sú dobré pri detekcii bielych alebo čiernych povrchov. Môžete však použiť aj iné sofistikované snímače, ktoré budú schopné detekovať všetky farby a môžu vytvoriť robota, ktorý dokáže sledovať všetky farebné čiary. Robot by mal byť schopný detekovať čiaru aj v prípade, že sa dráha zmení zmenou uhla a bude ju sledovať. Mal by sa tiež zastaviť všade, kde je v rade dorazová zóna.
Roboty na sledovanie liniek sa dnes veľmi často používajú vo výrobnom priemysle, v lekárstve, v domácich aplikáciách a v skladoch tovaru. Roboti sa neobmedzujú iba na tieto aplikácie a môžu svoje aplikácie rozširovať v mnohých budúcich aplikáciách.
Koncepcia robota sledovača liniek
IR senzory sú kľúčovým hráčom v tomto projekte. IR senzory sú umiestnené na prednej strane robota na sledovanie nakreslenej čiernej čiary a povrchu. Robot je umiestnený medzi linkou a pomocou infračervených senzorov robot sleduje linku. IR senzory spätne odošlú čítanie mikrokontroléru a pomocou IR čítania mikrokontrolér presunie motory na ľavú alebo pravú stranu a opäť privedie robota na cestu.
Robot sledovača linky je schopný sledovať linku pomocou infračerveného senzora. Tento snímač má IR vysielač a IR prijímač. IR vysielač (IR LED) prenáša svetlo a prijímač (fotodióda) čaká na návrat preneseného svetla. IR svetlo sa vráti späť, iba ak je odrážané povrchom. Zatiaľ čo všetky povrchy neodrážajú IR svetlo, iba biely farebný povrch ich môže úplne odrážať a čierny farebný povrch ich bude úplne pozorovať, ako je to znázornené na obrázku nižšie. Viac informácií o module IR senzora sa dozviete tu.
Teraz pomocou dvoch infračervených senzorov skontrolujeme, či je robot v stope s linkou, a pomocou dvoch motorov opravíme robota, ak sa pohybuje mimo koľaje. Tieto motory vyžadujú vysoký prúd a mali by byť obojsmerné; preto používame modul ovládača motora ako L293D. Budeme tiež potrebovať mikrokontrolér ako ATmega16, ktorý bude inštruovať motory na základe hodnôt z IR snímača. Zjednodušený blokový diagram je uvedený nižšie.
Tieto dva infračervené snímače budú umiestnené po jednom na oboch stranách vedenia. Pokiaľ žiadny zo senzorov nedeteguje čiernu čiaru, potom mikrokontrolér AVR dá motorom pokyn, aby sa pohli dopredu, ako je to znázornené nižšie
Ak sa ľavý senzor dostane na čiernu čiaru, mikrokontrolér dá robotovi pokyn, aby odbočil doľava samotným otáčaním pravého kolieska.
Ak sa pravý senzor dostane na čiernu čiaru, potom mikrokontrolér dá robotovi pokyn, aby odbočil vpravo otáčaním ľavého kolesa samotného.
Ak sa oba snímače dostanú na čiernu čiaru, robot sa zastaví.
Týmto spôsobom bude robot schopný sledovať čiaru bez toho, aby sa dostal mimo trať. Teraz sa pozrime, ako vyzerá obvod a kód.
Súčasti sú povinné
- Jednosmerné prevodové motory (2 jednotky)
- Modul IR senzora (2 jednotky)
- Modul L293D
- Bezdrôtový zdroj napájania (napr. Batéria, napájacia banka)
- Robotické leňošky
- Integrovaný obvod mikrokontroléra Atmega16
- Krištáľový oscilátor 16 MHz
- Dva kondenzátory 100nF
- Dva kondenzátory 22pF
- Tlačidlo
- Prepojovacie drôty
- Nepál
- USBASP v2.0 (na programovanie Atmega16)
Schéma zapojenia
Pripojte všetky komponenty tak, ako je to znázornené nižšie v schéme zapojenia
Programovanie Atmega16 pre robota sledovača liniek
Tu je Atmega16 programovaný pomocou USBASP a Atmel Studio7.0. Ak neviete, ako možno programovať Atmega16 pomocou USBASP, kliknite na odkaz. Kompletný program je uvedený na konci projektu, stačí ho nahrať do Atmega16 pomocou programátora JTAG a Atmel Studio 7.0, ako je vysvetlené v predchádzajúcom návode.
Snažili sme sa, aby bol kód čo najkratší a najjednoduchší. V tomto kóde teda používame makrá a registre špeciálnych funkcií.
if (bit_is_clear (PINA , leftSen)) { // skontrolujte, či je ľavý senzor vypnutý
Toto vyhlásenie kontroluje, či je PA0, kde je pripojený ľavý senzor, NÍZKY alebo VYSOKÝ.
Ak sa chcete dozvedieť viac informácií o tomto výroku a ďalších makrách, prejdite na tento odkaz
Existujú štyri podmienky, ktoré sledujeme pri čítaní korytových infračervených senzorov. IR senzory sú pomenované podľa ich umiestnenia na prednej strane robota. Ľavý IR je ľavý snímač a pravý IR je pravý snímač. O pohybe robota rozhodnú nasledujúce podmienky.
Kód sme napísali podľa vyššie uvedených podmienok. Jedinou zmenou je, že na pohon oboch motorov používame iba dva vstupné piny L293D.
Kompletný kód s ukážkovým videom je uvedený nižšie.