- Koncept robota následovníka čáry
- Požadované komponenty
- Kruhový diagram
- Programování Atmega16 pro robota sledovače linek
Zde budeme stavět další projekt s mikrokontrolérem AVR Atmega16. Pokud jste u mikrokontrolérů AVR nováčkem, můžete si přečíst předchozí projekty a výukové programy AVR.
Výroba robota je pro všechny fanoušky elektroniky vždy vzrušující. A toto vzrušení lze maximalizovat, pokud robot dokáže automaticky dělat některé věci bez jakýchkoli externích pokynů. Jedním z nejčastěji postavených robotů začátečníky v elektronice je Line Follower Robot. Jak název napovídá, robot bude následovat čáru nakreslenou na povrchu. Čára nemusí být přímka. Čáry mohou být také libovolných barev.
Dříve jsme stavěli projekty robotů následovníků linky pomocí různých ovladačů:
- Robot sledovače linek pomocí mikrokontroléru 8051
- Robot sledovače linek pomocí mikrokontroléru PIC
- Line Follower Robot pomocí Arduina
- Line Follower Robot pomocí Raspberry Pi
- Robot sledovače linek pomocí příručního panelu MSP430
Dnes použijeme mikrokontrolér AVR k sestavení robota Line follower.
K detekci vedení se většinou používají infračervené senzory. IR senzory jsou dobré při detekci bílých nebo černých povrchů. I když můžete použít další sofistikované senzory, které budou schopny detekovat všechny barvy a mohou vytvořit robota, který dokáže sledovat všechny barevné linie. Robot by měl být schopen detekovat čáru, i když je dráha změněna změnou úhlu a sledovat čáru. Mělo by se také zastavit všude tam, kde v řadě dorazí zóna zastavení.
Roboty pro sledování linek se dnes hojně používají ve výrobních průmyslech, lékařství, domácích aplikacích a skladech zboží. Roboti se neomezují pouze na tyto aplikace a mohou své aplikace rozšířit v mnoha budoucích aplikacích.
Koncept robota následovníka čáry
IR senzory jsou klíčovým hráčem v tomto projektu. IR senzory jsou umístěny na přední straně robota, aby sledovaly nakreslenou černou čáru a povrch. Robot je umístěn mezi linkou a pomocí infračervených senzorů robot sleduje linii. Infračervené senzory zpětnou vazbu odečtu do mikrokontroléru a pomocí infračerveného odečtu mikrokontrolér přesune motory na levou nebo pravou stranu a znovu přivede robota na cestu.
Line Follower Robot je schopen sledovat linku pomocí infračerveného senzoru. Tento snímač má IR vysílač a IR přijímač. IR vysílač (IR LED) přenáší světlo a přijímač (fotodioda) čeká na návrat vysílaného světla. IR světlo se vrátí zpět, pouze pokud je odrazeno povrchem. Zatímco všechny povrchy neodrážejí infračervené světlo, pouze bílý barevný povrch je může zcela odrážet a černý barevný povrch je bude zcela pozorovat, jak je znázorněno na obrázku níže. Další informace o modulu infračerveného senzoru naleznete zde.
Nyní použijeme dva infračervené senzory ke kontrole, zda je robot ve stopě s linkou, a dva motory k opravě robota, pokud se pohybuje mimo stopu. Tyto motory vyžadují vysoký proud a měly by být obousměrné; proto používáme modul ovladače motoru jako L293D. Budeme také potřebovat mikrokontrolér, jako je ATmega16, abychom instruovali motory na základě hodnot z IR senzoru. Níže je znázorněno zjednodušené blokové schéma.
Tyto dva infračervené senzory budou umístěny po jednom na obou stranách linky. Pokud žádný ze senzorů nedetekuje černou čáru, mikrokontrolér AVR dá motorům pokyn k pohybu vpřed, jak je znázorněno níže
Pokud se levý senzor dostane na černou čáru, mikrokontrolér dá robotovi pokyn, aby se otočil doleva samotným otáčením pravého kola.
Pokud se pravý senzor dostane na černou čáru, mikrokontrolér dá robotovi pokyn, aby se otočil doprava otáčením samotného levého kola.
Pokud jsou oba senzory černé, robot se zastaví.
Tímto způsobem bude robot schopen sledovat čáru, aniž by se dostal mimo trať. Nyní se podívejme, jak vypadá obvod a kód.
Požadované komponenty
- Stejnosměrné převodové motory (2 jednotky)
- IR senzorový modul (2 jednotky)
- Modul L293D
- Bezdrátový zdroj energie (např. Baterie, napájecí banka)
- Robotické lenošky
- IC mikrokontroléru Atmega16
- 16MHz krystalový oscilátor
- Dva 100nF kondenzátory
- Dva kondenzátory 22pF
- Stiskněte tlačítko
- Propojovací dráty
- Nepájivá deska
- USBASP v2.0 (k programování Atmega16)
Kruhový diagram
Připojte všechny komponenty podle schématu níže
Programování Atmega16 pro robota sledovače linek
Zde je Atmega16 programován pomocí USBASP a Atmel Studio7.0. Pokud nevíte, jak lze programovat Atmega16 pomocí USBASP, navštivte odkaz. Kompletní program je uveden na konci projektu, stačí nahrát program do Atmega16 pomocí programátoru JTAG a Atmel Studio 7.0, jak je vysvětleno v předchozím tutoriálu.
Snažili jsme se, aby byl kód co nejkratší a nejjednodušší. V tomto kódu tedy používáme makra a registry speciálních funkcí.
if (bit_is_clear (PINA , leftSen)) { // zkontrolujte, zda je levý senzor vypnutý
Toto prohlášení kontroluje, zda je PA0, kde je připojen levý senzor, NÍZKÝ nebo VYSOKÝ.
Pokud se chcete dozvědět více o tomto prohlášení a dalších makrech, přejděte na tento odkaz
Existují čtyři podmínky, které sledujeme při čtení koryta infračervených senzorů. IR senzory jsou pojmenovány podle jejich umístění v přední části robota. Levý IR je levý senzor a pravý IR je pravý senzor. O pohybu robota rozhodnou následující podmínky.
Kód jsme napsali podle výše uvedených podmínek. Jedinou změnou je, že k pohonu obou motorů používáme pouze dva vstupní piny L293D.
Kompletní kód s ukázkovým videem je uveden níže.