- Szükséges anyagok
- A vonalkövető fogalmai
- Áramkör magyarázat
- Vonalkövető robot működése az MSP430 segítségével
- Kördiagramm
- Programozási magyarázat
A vonalkövető robot egyszerűsége miatt az egyik legnépszerűbb robotikai projekt a hallgatók és a kezdők körében. Fekete vagy fehér vonalat követ, attól függően, hogy miként programozza a mikrovezérlőt. Itt egy vonalkövető robotot készítünk a Texas Instruments MSP430 indítópadjával, amely a fekete vonalat követi. Ha Ön még nem ismeri az MSP430 indítópultot, kérjük, olvassa el Az MSP430 bámulása oktatóanyagot.
Szükséges anyagok
- MSP430G2 LaunchPad a Texas Instruments-től
- Az L298D motor meghajtó modul
- Csatlakozó vezetékek
- IR érzékelő modulok
- Alváz, kerék, hullámvasút
- Energia IDE
- Tápellátás (3,3v) és 5v-12v
A vonalkövető fogalmai
A vonalkövető fogalma összefügg a fénnyel. Használtuk a fény viselkedését fekete-fehér felületen. Amikor a fény egy fehér felületre esik, az majdnem teljes mértékben visszaverődik, és fekete felület esetén a fényt elnyeli a fekete felület. A fény ezen megmagyarázott viselkedését alkalmazzák ebben a vonalkövető robotban.
Ebben az MSP430 alapú vonalkövető robotban IR-adókat és IR-vevőket használtunk, amelyeket fotodiódának is nevezünk. Fény küldésére és fogadására szolgálnak. Az infravörös fényt sugároz. Amikor az infravörös sugarak fehér felületre esnek, visszaverődnek és fotodiódák fogják el, ami némi feszültségváltozást generál. Amikor az infravörös fény egy fekete felületre esik, a fény felszívja a fekete felületet, és egyetlen sugár sem tükröződik vissza, így a fénydióda nem kap fényt vagy sugarakat. Ha többet szeretne megtudni az IR-érzékelőkről, kövesse a linket.
Itt, ebben az MSP430 alapú vonalkövető robotban, amikor az érzékelő fehér felületet érzékel, akkor az MSP 1-et kap bemenetként, és amikor a fekete vonalat érzékeli, az MSP 0-t kap bemenetként.
Áramkör magyarázat
Feloszthatjuk az egész vonalkövető robotot különféle szakaszokra, például érzékelő szakaszra, vezérlő szakaszra és vezető szakaszra.
Érzékelő rész: Ez a szakasz infravörös diódákat, potenciométert, komparátort (Op-Amp) és LED-eket tartalmaz. A potenciométert a referenciafeszültség beállítására használják az összehasonlító egyik kapocsján, és az infravörös érzékelők érzékelik a vezetéket, és biztosítják a feszültség változását a komparátor második kapcsán. Ezután az összehasonlító összehasonlítja mindkét feszültséget és digitális jelet generál a kimeneten. Ebben az áramkörben két komparátort használtunk két érzékelőhöz. Az LM358-at használjuk összehasonlító anyagként. Az LM358 beépített két alacsony zajszintű Op-erősítőt.
Vezérlő szakasz: Az MSP430 Launchpad a vonalkövető robot teljes folyamatának vezérlésére szolgál. Az összehasonlítók kimenetei az MPS430 Launchpad P1_3 és P1_4 digitális érintkezõihez vannak csatlakoztatva. Az MSP430 Launchpad beolvassa ezeket a jeleket, és parancsokat küld a meghajtó áramkörének a hajtóvonal követõjének.
Vezető rész: A vezető rész motor meghajtót és két egyenáramú motort tartalmaz. A motorvezérlőt a motorok hajtására használják, mivel az MSP430 Launchpad nem szolgáltat elegendő feszültséget és áramot a motorhoz. Tehát hozzáadtunk egy motor meghajtó áramkört, hogy elegendő feszültséget és áramot kapjunk a motorhoz. Itt az L298d meghajtót használtuk a DC motorok vezetéséhez. Az MSP430 Launchpad parancsokat küld ennek a motor meghajtónak, majd meghajtja a motorokat.
Különböző mikrovezérlőket használó vonalkövető robotokat fejlesztettünk ki:
- 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
- Vonalkövető robot PIC mikrokontroller használatával
Vonalkövető robot működése az MSP430 segítségével
A vonalkövető munkája nagyon érdekes. A vonalkövető robot érzékelő segítségével érzékeli a fekete vonalat, majd elküldi a jelet az MSP430 Launchpad-nak. Ezután az MSP430 Launchpad hajtja a motort az érzékelők kimenete szerint.
Ebben a projektben két IR érzékelő modult használunk, nevezetesen a bal és a jobb oldali érzékelőt. Amikor a bal és a jobb oldali érzékelő egyaránt fehéret érzékel, akkor a robot halad előre.
Ha a bal oldali érzékelő fekete vonalon jelenik meg, akkor a robot forduljon balra.
Ha a jobb érzékelő érzékeli a fekete vonalat, akkor a robot forduljon jobbra, amíg mindkét érzékelő fehér felületre nem kerül. Amikor fehér felület jön, a robot újra előre indul.
Ha mindkét érzékelő fekete vonalon áll, a robot leáll.
Kördiagramm
Az MSP430 vonalkövető robot áramköre nagyon egyszerű. Az összehasonlítók kimenete közvetlenül csatlakozik az MSP430 Launchpad p1_3 és P1_4 digitális PIN-kódjához. És a motorvezérlő IN1, IN2, IN3 és IN4 bemeneti csatlakozói az MSP430 Launchpad P1_5, P2_0, P2_1, P2_2 digitális érintkezőjéhez vannak csatlakoztatva. Az egyik motor az OUT1 és OUT2 motorvezérlő kimeneti tüskéjéhez, egy másik motor pedig az OUT3 és OUT4 csatlakozókhoz van csatlakoztatva. Itt 3,3 V-os tápfeszültséget használtunk az egész áramkör áramellátásához, a Motor Driver modul kivételével. A motor meghajtó moduljához 8 V-ot szállítottunk. A felhasználó használhatja az 5v-12v-t.
Készíthet saját IR modult is, például én építettem a Perf Board-ra. Az alábbiakban látható az IR modul áramköre:
Programozási magyarázat
A teljes program és videó a cikk végén található.
Egy programban először is meghatározzuk az érzékelő és a motorok bemeneti és kimeneti tüskéjét. Ezután definiáljon néhány makrót a vonalkövető irányához, majd írjon egy irányelvet az érzékelő kimenetének kiválasztásához
Megjegyzés: Lehet, hogy az érzékelő alacsony vagy aktív aktív, ezért először ellenőrizze az érzékelő kimenetét, majd válassza az direktívát az ActiveLowMode megjegyzésével vagy kommentálásával. Aktív HIGH esetén kommentálja az activeLowMode makrót.
#define l_sensor P1_3 #define r_sensor P1_4 int pins = {P1_5, P2_0, P2_1, P2_2}; #define forward 0x05 #define left 0x06 #define right 0x09 #define stop 0x00 // # define activeLowMode #ifdef activeLowMode int res = {előre, balra, jobbra, stop}; #else int res = {stop, jobb, bal, előre}; #endif
Ezt követően a beállítási funkcióban irányt adunk az érzékelőnek és a motor csapjának. Ezután a hurok funkcióban ellenőrizzük a bemeneteket és kimenetet küldünk a motor meghajtó moduljába a motorok futtatásához.
void setup () { for (int i = 0; i <4; i ++) pinMode (csapok, OUTPUT); pinMode (l_szenzor, INPUT); pinMode (r_szenzor, INPUT); } void loop () {int sense = (digitalRead (l_sensor) << 1) - digitalRead (r_sensor); for (int i = 0; i <4; i ++) digitalWrite (csapok, (res >> i) & 0x01); }
Ebben a sorkövetőben négy feltétel van, amelyeket az MSP430 Launchpad használatával olvastunk el. Két érzékelőt használtunk, nevezetesen a bal és a jobb oldali érzékelőt.
Feltételek: Aktív HIGH kimenet
Bemenet |
Kimenet |
Mozgalom A robot |
||||
Bal érzékelő |
Jobb érzékelő |
Bal motor |
Jobb motor |
|||
LS |
RS |
LM1 |
LM2 |
RM1 |
RM2 |
|
0 |
0 |
0 |
0 |
0 |
0 |
Álljon meg |
0 |
1 |
1 |
0 |
0 |
0 |
Jobbra |
1 |
0 |
0 |
0 |
1 |
0 |
Forduljon balra |
1 |
1 |
1 |
0 |
1 |
0 |
Előre |
A program a fenti táblázat feltételeinek megfelelően van megírva. Ellenőrizze az alábbi teljes kódot és bemutató videót.