- Szükséges anyagok:
- A vonalkövető fogalmai
- Áramkör és magyarázat:
- PIC mikrovezérlő programozása:
- PIC-vonalkövető működés közben:
A Vonalkövető robot egy egyszerű, ámde lenyűgöző robot, amelyet a legtöbb hallgató / hobbi készíthet. Ebben az oktatóanyagban megtudhatjuk, hogyan működik egy vonalkövető robot, és hogyan építhetünk ilyet a PIC16F877A PIC mikrovezérlő segítségével. A PIC16F877A egy 40 tűs többcélú MCU a Microchip-től, ezt az IC-t a teljes PIC oktatósorozatunkban használtuk. Ha új vagy, itt érdemes megnéznie ezeket a PIC-oktatóanyagokat, hogy megismerje ennek az IC-nek az alapjait, és hogyan tölthet fel programokat a mikrovezérlőre. Mivel ezeket az információkat már bemutattuk oktatóanyagainkban, kihagyjuk őket az alábbi magyarázatban.
Ha érdekel a robotika, akkor nagyon ismernie kell a „ Vonalkövető robot ” nevet. Ez a robot képes egy vonal követésére, csak pár érzékelő és motor segítségével. Ez a robot teret enged a végtelen fejlődésnek, és erre olyan példák vannak, mint a Kiva (az Amazon raktári robotja). Ellenőrizheti a többi vonalkövető robotunkat is:
- Vonalkövető robot a 8051 mikrokontroller használatával
- Vonalkövető robot Arduino használatával
- Vonalkövető robot a Raspberry Pi használatával
Szükséges anyagok:
- PIC16F877A
- IR érzékelő (2Nos)
- DC sebességváltó motor (2Nos)
- L293D motorvezérlő
- Cheeses (saját is készíthet kartonokat)
- Teljesítménybank (bármilyen rendelkezésre álló áramforrás)
A vonalkövető fogalmai
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 mikrovezérlőre, például PIC-re, 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 a PIC mikrovezérlő 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.
Áramkör és magyarázat:
A PIC alapú vonalkövető robot teljes kapcsolási rajza az alábbiakban látható
Az áramkör két infravörös érzékelőt és pár egyenáramú motoros motort, valamint a motor meghajtó modult használ a fentiek szerint. A projektben használt motor meghajtó modul L293D, szükségünk lesz egy motor meghajtóra, mert a PIC mikrokontroller kimeneti csapja nem tud elegendő áramot biztosítani a motorok hajtásához. Ezt a modult közvetlenül az áramforrás (5V) táplálja, ahogy az áramkör mutatja. A modulnak négy csapja van (mindegyik motorhoz kettő), amelyek a PIC-hez vannak csatlakoztatva a motorok irányának vezérléséhez. Két IR-érzékelőnk is van, amelyek bemenetként működnek a PIC mikrovezérlőben. Ezek az érzékelők magasra (1) mennek, ha fehér felületen vannak, és alacsonyra (0), amikor fekete felületre kerülnek. A teljes érintkezőket az alábbi táblázat szemlélteti.
S.No |
Csatlakozás innen: |
Csatlakozva valamihez |
1 |
IR-érzékelő Bal oldali csap |
RD2 (21. tű) |
2 |
IR-érzékelő Jobb oldali csap |
RD3 (22. tű) |
4 |
1. motor 1. csatorna A tű |
RC4 (23. érintkező) |
5. |
1. motor B csatornája |
RC5 (25. érintkező) |
6. |
2. motor A csatornája |
RC6 (26. érintkező) |
7 |
2. motor B csatornája |
RC7 (27. érintkező) |
A tényleges hardverben egy tápegységet használtam, amely + 5V kimenetet ad közvetlenül az USB portján keresztül; ezért megkerültem a 7805 feszültségszabályozót, és ugyanezzel a tápellátással láttam el a PIC-t, az érzékelőket és a motorokat. Ugyanezt teheti, ha egy 12 V-os akkumulátort és egy szabályozót használ, amint az áramkörben látható.
PIC mikrovezérlő programozása:
Ha készen áll a hardverrel, itt az ideje elkezdeni a programozást. Ennek a PIC vonalkövető robotprojektnek a teljes programja az oldal végén található. A fontos darabokat azonban alább ismertetjük.
Inicializálja az I / O csapokat a következő sorokkal. A 2 IR-érzékelő érintkezője bemenetként, a négy motorcsap pedig kimeneti csapként működik.
TRISD2 = 1; TRISD3 = 1; // Fürdesse meg az IR érzékelő csapjait TRISC4 bemenetként = 0; TRISC5 = 0; // Az 1. motor csapjai kimenetként deklarálva TRISC6 = 0; TRISC7 = 0; // A motor 2 csapja kimenetként deklarálva
Most le kell olvasnunk mind az IR érzékelő állapotát, mind pedig ennek megfelelően kell vezérelnünk a motort. Például, ha mindkét érzékelő magas (nem kerül fekete vonal alá), akkor mindkét motort előre mozgatjuk, az alábbi program szerint.
if (RD2 == 1 && RD3 == 1) // Mindkét érzékelő nem áll át a balck vonalon {RC4 = 0; RC5 = 1; // 1. motor előre RC6 = 1; RC7 = 0; // 2. motor előre}
Ha a bal oldali érzékelő a fekete vonal fölé kerül, akkor jobbra fordulunk, ha az 1 motort mozdulatlanul tartjuk, és a 2 motort előre forgatjuk. Ezt a fajta esztergálást differenciális esztergálásnak nevezzük.
else if (RD2 == 0 && RD3 == 1) // A bal érzékelő fekete vonal felett van {RC4 = 1; RC5 = 1; // Motor 1 leállás RC6 = 1; RC7 = 0; // 2. motor előre}
Hasonlóképpen, ha a jobb oldali érzékelő a fekete vonal fölé kerül, akkor a botot úgy kell elvégezni, hogy balra forduljon úgy, hogy mozdulatlanul tartja a második motort, és az első motort egyedül forgatja előre, az alábbiak szerint.
else if (RD2 == 1 && RD3 == 0) // A jobb oldali érzékelő fekete vonal felett van {RC4 = 0; RC5 = 1; // 1. motor előre RC6 = 1; RC7 = 1; // 2. motor leállítása}
Végül, ha mindkét érzékelő fekete vonal alá esik, itt az ideje, hogy megállítsa a botot. Ezt úgy tehetjük meg, hogy mindkét motor összes csapját magasra teszjük. Az ehhez hasonló kód az alábbiakban látható
else // Mindkét érzékelő fekete vonal felett {RC4 = 1; RC5 = 1; // Motor 1 leállás RC6 = 1; RC7 = 1; // 2. motor leállítása}
Ez az, hogy a program készen áll, és bármilyen programozóval, például a PicKit segítségével feltölthető a PIC-be.
PIC-vonalkövető működés közben:
Miután a hardver és a kód készen áll, ideje cselekedni. Mint korábban említettem, egy Power bankot használtam a bot meghajtására, így csak annyit kell tennem, hogy egyszerűen csatlakoztassam a power bankot ahhoz a bothoz, amelynek a hardvere be van állítva és a kód már feltöltött.
A PIC Perf kártya a PIC oktatósorozatunkhoz készült, amelyben megtanultuk a PIC mikrovezérlő használatát. Érdemes visszatérni azokhoz a PIC mikrokontroller oktatóanyagokhoz, amelyek MPLABX-t és XC8-at használnak, ha nem tudja, hogyan kell egy programot a Pickit 3 segítségével égetni, mivel ezeket az alapvető információkat kihagyom.
Most egyszerűen indítsa el a botot egy fekete vonalon, és figyelnie kell a vonal követésére.
Az elején nehézségekkel szembesülhet, ebben az esetben olvassa el tovább Ha a kerekek ellentétesen forognak, egyszerűen cserélje ki a motor ellentétes irányban forgó motorjának polaritását. Ha a bot eltér a vonaltól, cserélje ki az IR érzékelőt, és minden jónak kell lennie.
A bot teljes működése az alábbi videón található. Remélem tetszik a projekt, és élvezett valami hasonló építését. Ha problémája van ennek működtetésével, tegye közzé őket az alábbi megjegyzés szakaszban, hogy megoldja ezt, vagy használja fórumunkat a műszaki tartalom megvitatására.