- Nepieciešamie materiāli
- Līnijas sekotāja jēdzieni
- Ķēdes skaidrojums
- Līnijas sekotāja robota darbība, izmantojot MSP430
- Ķēdes shēma
- Programmēšanas skaidrojums
Līnijas sekotāja robots ir vienkāršības dēļ viens no populārākajiem robotikas projektiem studentu un iesācēju vidū. Tas seko melnai vai baltai līnijai atkarībā no tā, kā programmējat mikrokontrolleru. Šeit mēs izgatavojam līnijas sekotāja robotu, izmantojot MSP430 palaišanas paliktni no Texas Instruments, kas seko melnajai līnijai. Ja jūs esat jauns MSP430 palaišanas palīgs, lūdzu, izlasiet mūsu Mācību skatīšana ar MSP430.
Nepieciešamie materiāli
- MSP430G2 LaunchPad no Texas Instruments
- L298D motora draivera modulis
- Savienojošie vadi
- IR sensoru moduļi
- Šasija, ritenis, amerikāņu kalniņi
- Energia IDE
- Barošanas avots (3.3v) un 5v-12v
Līnijas sekotāja jēdzieni
Līnijas sekotāja jēdziens ir saistīts ar gaismu. Mēs izmantojām gaismas uzvedību uz melnbaltās virsmas. Gaismai nokrītot uz baltas virsmas, tā gandrīz pilnībā atspoguļosies un melnas virsmas gadījumā gaismu absorbē melnā virsma. Šī izskaidrotā gaismas uzvedība tiek izmantota šajā līnijas sekotāja robotā.
Šajā MSP430 balstītajā līnijas sekotāja robotā mēs esam izmantojuši IR raidītājus un IR uztvērējus, kurus sauc arī par foto diodēm. Tos izmanto gaismas sūtīšanai un saņemšanai. IR pārraida infrasarkanās gaismas. Kad infrasarkanie stari nokrīt uz baltas virsmas, tie tiek atstaroti un tos uztver fotodiodes, kas rada dažas sprieguma izmaiņas. Kad infrasarkanā gaisma nokrīt uz melnas virsmas, gaisma absorbē melno virsmu, un stari netiek atstaroti atpakaļ, tādējādi fotodiods nesaņem nekādu gaismu vai starus. Lai uzzinātu vairāk par IR sensoriem, noklikšķiniet uz saites.
Šeit, šajā MSP430 bāzētajā līnijas sekotāja robotā, kad sensors uztver balto virsmu, tad MSP saņem 1 kā ievadi un, kad uztver melno līniju, MSP iegūst 0 kā ievadi.
Ķēdes skaidrojums
Mēs varam sadalīt visu līnijas sekotāja robotu dažādās sadaļās, piemēram, sensora sekcijā, vadības sadaļā un vadītāja sadaļā.
Sensoru sadaļa: Šajā sadaļā ir IR diodes, potenciometrs, komparators (Op-Amp) un gaismas diodes. Potenciometru izmanto, lai iestatītu standartspriegumu salīdzinātāja vienā spailē, un infrasarkanie sensori uztver līniju un nodrošina sprieguma izmaiņas pie salīdzinājuma otrā spailes. Tad salīdzinātājs salīdzina abus spriegumus un ģenerē ciparu signālu izejā. Šeit šajā ķēdē mēs izmantojām divus salīdzinātājus diviem sensoriem. LM358 tiek izmantots kā salīdzinājums. LM358 ir iebūvēts divi zema trokšņa Op-amp.
Vadības sadaļa: MSP430 Launchpad tiek izmantots, lai kontrolētu visu līnijas sekotāja robota procesu. Salīdzinātāju izejas ir savienotas ar MPS430 Launchpad digitālo tapu P1_3 un P1_4. MSP430 Launchpad nolasa šos signālus un nosūta komandas vadītāja shēmai, lai vadītu līnijas sekotāju.
Vadītāja sekcija: Vadītāja sekciju veido motora vadītājs un divi līdzstrāvas motori. Motora vadītāju izmanto motoru vadīšanai, jo MSP430 Launchpad nepiegādā motoram pietiekamu spriegumu un strāvu. Tāpēc mēs pievienojām motora draivera ķēdi, lai iegūtu pietiekamu spriegumu un strāvu motoram. Šeit mēs esam izmantojuši L298d draiveri, lai vadītu DC Motors. MSP430 Launchpad nosūta komandas šim motora draiverim, un pēc tam tas virza motorus.
Mēs esam izstrādājuši līnijas sekotāju robotus, izmantojot dažādus mikrokontrollerus:
- Līnijas sekotāja robots, izmantojot mikrokontrolleru 8051
- Līnijas sekotāja robots, izmantojot Arduino
- Līnijas sekotāja robots, izmantojot Raspberry Pi
- Līnijas sekotāja robots, izmantojot PIC mikrokontrolleru
Līnijas sekotāja robota darbība, izmantojot MSP430
Līnijas sekotāja darbs ir ļoti interesants. Līnijas sekotājs robots uztver melno līniju, izmantojot sensoru, un pēc tam nosūta signālu uz MSP430 Launchpad. Tad MSP430 Launchpad darbina motoru atbilstoši sensoru izejai.
Šajā projektā mēs izmantojam divus IR sensoru moduļus, proti, kreiso un labo sensoru. Kad gan kreisais, gan labais sensors uztver baltu krāsu, robots virzās uz priekšu.
Ja kreisais sensors nāk uz melnas līnijas, tad robots pagriezieties pa kreisi.
Ja labais sensors uztver melno līniju, tad robots pagrieziet labo pusi, līdz abi sensori nonāk pie baltas virsmas. Kad nāk balta virsma, robots atkal sāk virzīties uz priekšu.
Ja abi sensori nonāk melnā līnijā, robots apstājas.
Ķēdes shēma
Šī MSP430 līnijas sekotāja robota shēma ir ļoti vienkārša. Salīdzinātāju izeja ir tieši savienota ar MSP430 Launchpad digitālo tapu skaitu p1_3 un P1_4. Un motora vadītāja ieejas tapas IN1, IN2, IN3 un IN4 ir savienotas attiecīgi ar MSP430 Launchpad digitālo tapu P1_5, P2_0, P2_1, P2_2. Viens motors ir pievienots pie motora draivera OUT1 un OUT2 izejas tapas, bet otrs motors ir pievienots OUT3 un OUT4. Šeit mēs esam izmantojuši 3.3v barošanu visai ķēdei, izņemot Motor Driver moduli. Mēs esam piegādājuši 8v motora draivera modulim. Lietotājs var izmantot 5v-12v.
Jūs varat arī izveidot savu IR moduli, piemēram, es uz Perf Board. Zemāk ir IR moduļa shēma:
Programmēšanas skaidrojums
Pilnīga programma un video ir atrodami šī raksta beigās.
Programmā, pirmkārt, mēs definējam sensora un motoru ieejas un izejas tapu. Pēc tam definējiet dažus makro līnijas sekotāja virzienam un pēc tam uzrakstiet direktīvu, lai izvēlētos sensora izvadi
Piezīme: Sensors var būt aktīvs zems vai aktīvs augsts, tāpēc vispirms pārbaudiet sensora jaudu, pēc tam atlasiet direktīvu, komentējot vai nekomentējot activeLowMode . Lai aktivizētu HIGH, komentējietmakro activeLowMode .
#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 = {uz priekšu, pa kreisi, pa labi, apstāties}; #else int res = {apstāties, pa labi, pa kreisi, uz priekšu}; #endif
Pēc tam iestatīšanas funkcijā mēs dodam virzienu sensoram un motora tapai. Pēc tam cilpas funkcijā mēs pārbaudām ieejas un nosūta izvadi uz motora draivera moduli, lai darbinātu motorus.
void setup () { for (int i = 0; i <4; i ++) pinMode (pins, OUTPUT); pinMode (l_sensors, INPUT); pinMode (r_sensors, INPUT); } void loop () {int sense = (digitalRead (l_sensor) << 1) - digitalRead (r_sensor); priekš (int i = 0; i <4; i ++) digitalWrite (tapas, (res >> i) & 0x01); }
Šajā rindas sekotājā ir četri nosacījumi, kurus mēs izlasījām, izmantojot MSP430 Launchpad. Mēs izmantojām divus sensorus, proti, kreiso un labo sensoru.
Nosacījumi: Aktīva HIGH izeja
Ievade |
Rezultāts |
Kustība No robota |
||||
Kreisais sensors |
Labais sensors |
Kreisais motors |
Labais motors |
|||
LS |
RS |
LM1 |
LM2 |
RM1 |
RM2 |
|
0 |
0 |
0 |
0 |
0 |
0 |
Apstājies |
0 |
1 |
1 |
0 |
0 |
0 |
Nogriezieties pa labi |
1 |
0 |
0 |
0 |
1 |
0 |
Pagriezies pa kreisi |
1 |
1 |
1 |
0 |
1 |
0 |
Uz priekšu |
Programma ir uzrakstīta saskaņā ar iepriekšminētajiem tabulas nosacījumiem. Tālāk pārbaudiet visu kodu un demonstrācijas video.