- Vonalkövető robot fogalma
- Szükséges alkatrészek
- Kördiagramm
- Az Atmega16 programozása a vonalkövető robothoz
Itt egy újabb projektet építünk az AVR Atmega16 mikrokontrollerrel. Ha még nem ismeri az AVR mikrovezérlőket, akkor tekintse meg a korábbi AVR projekteket és oktatóanyagokat.
A robot építése mindig izgalmat jelent az összes elektronikai hobbista számára. És ez az izgalom maximalizálható, ha a robot automatikusan elvégez néhány dolgot külső utasítások nélkül. Az elektronika kezdők által az egyik leggyakrabban épített robot a Line Follower Robot. Ahogy a neve is sugallja, a robot követni fogja a felszínen húzott vonalat. A vonalnak nem kell egyenesnek lennie. A vonalak bármilyen színűek lehetnek.
Korábban építettünk vonalkövető robotprojekteket különböző vezérlők segítségével:
- Vonalkövető robot a 8051 mikrokontroller használatával
- Vonalkövető robot PIC mikrokontroller használatával
- Vonalkövető robot Arduino használatával
- Vonalkövető robot a Raspberry Pi használatával
- Vonalkövető robot az MSP430 Launchpad használatával
Ma az AVR mikrovezérlőt fogjuk használni egy vonalkövető robot felépítéséhez.
Leginkább IR érzékelőket használnak a vonalak érzékelésére. Az IR érzékelők jól érzékelik a fehér vagy fekete felületeket. Bár használhat más kifinomult érzékelőket is, amelyek képesek lesznek minden színt felismerni, és robotot készíthetnek, amely képes követni az összes színvonalat. A robotnak képesnek kell lennie észlelni a vonalat, még akkor is, ha az út megváltozik a szög megváltoztatásával, és folyamatosan követi a vonalat. Emellett meg kell állnia, bárhová kerül a megálló zóna a vonalban.
A vonalkövető robotokat napjainkban széles körben használják a feldolgozóiparban, az orvosi, háztartási alkalmazásokban és az áruraktárakban. A robotok nem korlátozódnak csak ezekre az alkalmazásokra, és sok jövőbeni alkalmazásban kiterjeszthetik alkalmazását.
Vonalkövető robot fogalma
Az IR érzékelők kulcsszerepet játszanak ebben a projektben. Az infravörös érzékelőket a robot elé helyezik, hogy nyomon kövessék a megrajzolt fekete vonalat és a felületet. A robot a vonal közé kerül, és infravörös érzékelők segítségével a robot nyomon követi a vonalat. Az infravörös érzékelők visszajelzik a leolvasást a mikrovezérlőnek, és az infravörös leolvasás segítségével a mikrovezérlő bal vagy jobb oldalon mozgatja a motorokat, és ismét a robotot hozza az útra.
Vonalkövető robot képes IR vonal érzékelésére egy IR érzékelő segítségével. Ez az érzékelő rendelkezik IR adóval és IR vevővel. Az infravörös adó (IR LED) továbbítja a fényt, és a vevő (fotodióda) várja, hogy az átadott fény visszatérjen. Az infravörös fény csak akkor tér vissza, ha egy felület visszatükrözi. Míg minden felület nem tükrözi az infravörös fényt, csak a fehér színű felület képes teljesen visszaverni őket, a fekete színű felület pedig teljesen megfigyelni fogja őket, ahogy az alábbi ábra mutatja. Tudjon meg többet az IR érzékelő modulról itt.
Most két IR szenzort fogunk használni annak ellenőrzésére, hogy a robot nyomban van-e a vonallal, és két motorral korrigáljuk a robotot, ha elmozdul a pályáról. Ezek a motorok nagy áramot igényelnek, és kétirányúaknak kell lenniük; ezért olyan motor meghajtó modult használunk, mint az L293D. Szükségünk lesz egy olyan mikrovezérlőre, mint az ATmega16, hogy az IR szenzor értékei alapján utasítsa a motorokat. Az alábbiakban egy egyszerűsített blokkdiagram látható.
Ez a két IR-érzékelő az egyiket a vonal mindkét oldalán elhelyezi. Ha egyik érzékelő sem érzékel fekete vonalat, akkor az AVR mikrokontroller utasítja a motorokat, hogy haladjanak előre, az alábbiak szerint
Ha a bal oldali érzékelő fekete vonalon jelenik meg, akkor a mikrovezérlő arra utasítja a robotot, hogy a jobb oldali kerék egyedül forgatásával forduljon balra.
Ha a jobb oldali érzékelő fekete vonalra kerül, akkor a mikrovezérlő a bal kerék egyedüli elforgatásával utasítja a robotot jobbra fordulásra.
Ha mindkét érzékelő fekete vonalon áll, a robot leáll.
Így a robot képes lesz követni a vonalat anélkül, hogy kijutna a pályáról. Most nézzük meg, hogyan néz ki az áramkör és a kód.
Szükséges alkatrészek
- DC hajtóműves motorok (2 egység)
- IR érzékelő modul (2 egység)
- L293D modul
- Vezeték nélküli áramforrás (pl. Akkumulátor, Power bank)
- Robotszék
- Atmega16 mikrokontroller IC
- 16Mhz kristályoszcillátor
- Két 100nF kondenzátor
- Két 22pF kondenzátor
- Nyomógomb
- Jumper huzalok
- Kenyérlemez
- USBASP v2.0 (az Atmega16 programozásához)
Kördiagramm
Csatlakoztassa az összes alkatrészt az áramköri ábra alább látható módon
Az Atmega16 programozása a vonalkövető robothoz
Itt az Atmega16 programozható az USBASP és az Atmel Studio7.0 használatával. Ha nem tudja, hogyan programozható az Atmega16 az USBASP segítségével, akkor látogasson el a linkre. A teljes program a projekt végén van megadva, csak töltse fel a programot az Atmega16-ba a JTAG programozó és az Atmel Studio 7.0 segítségével, az előző oktatóanyagnak megfelelően.
Igyekeztünk a lehető legrövidebb és egyszerűbb kódot tartani. Tehát ebben a kódban makrókat és speciális funkció regisztereket használunk.
ha (bit_is_clear (PINA , leftSen)) { // ellenőrzés, ha bal érzékelő KI
Ez az utasítás azt ellenőrzi, hogy a PA0, ahol a bal érzékelő van csatlakoztatva, LOW vagy HIGH.
Ha többet szeretne megtudni erről az állításról és más makrókról, akkor kattintson erre a linkre
Az infravörös érzékelők átolvasása során négy feltételt követünk. Az infravörös érzékelőket a robot elülső oldalán elhelyezkedésük szerint nevezik meg. A bal IR a bal és a jobb IR a jobb érzékelő. Az alábbi feltételek döntik el a robot mozgását.
A kódot a fenti feltételek szerint írtuk. Csak az a változás, hogy mindkét motor meghajtásához csak az L293D két bemeneti tüskéjét használjuk.
Az alábbiakban bemutatjuk a teljes kódot egy bemutató videóval.