- Materiale necesare
- Conceptele de Line Follower
- Explicația circuitului
- Funcționarea robotului Line Follower folosind MSP430
- Diagrama circuitului
- Explicație de programare
Robotul de linie este unul dintre proiectele populare de robotică în rândul studenților și începătorilor, datorită simplității sale. Urmează o linie, albă sau neagră, în funcție de modul în care vă programați microcontrolerul. Aici realizăm un robot de linie care folosește lansatorul MSP430 de la Texas Instruments, care urmează linia neagră. Dacă nu sunteți nou la lansarea MSP430, vă rugăm să citiți Tutorialul nostru privind privirea cu MSP430.
Materiale necesare
- MSP430G2 LaunchPad de la Texas Instruments
- Modulul driverului de motor L298D
- Conectarea firelor
- Module senzor IR
- Chasis, roată, roller coaster
- Energia IDE
- Alimentare (3.3v) și 5v-12v
Conceptele de Line Follower
Conceptul de liniar este legat de lumină. Am folosit comportamentul luminii la suprafața alb-negru. Când lumina cade pe o suprafață albă, aceasta se reflectă aproape complet și, în cazul suprafeței negre, lumina este absorbită de suprafața neagră. Acest comportament explicat al luminii este utilizat în acest robot de linie.
În acest robot urmăritor de linie bazat pe MSP430 am folosit emițătoare IR și receptoare IR numite și diode foto. Sunt folosite pentru trimiterea și primirea luminii. IR transmite lumini infraroșii. Când razele infraroșii cad pe suprafața albă, acestea sunt reflectate înapoi și captate de fotodiodele care generează unele modificări de tensiune. Când lumina IR cade pe o suprafață neagră, lumina este absorbită de suprafața neagră și nu se reflectă raze înapoi, astfel dioda foto nu primește nicio lumină sau raze. Pentru a afla mai multe despre senzorii IR, urmați linkul.
Aici, în acest robot urmăritor de linie bazat pe MSP430, atunci când senzorul detectează suprafața albă, atunci MSP primește 1 ca intrare și când detectează linia neagră MSP primește 0 ca intrare.
Explicația circuitului
Putem împărți întregul robot de linie în diferite secțiuni, cum ar fi secțiunea senzorului, secțiunea de control și secțiunea șoferului.
Secțiunea senzorului: Această secțiune conține diode IR, potențiometru, comparator (Op-Amp) și LED-uri. Potențiometrul este utilizat pentru setarea tensiunii de referință la un terminal al comparatorului și senzorii IR detectează linia și asigură o schimbare a tensiunii la al doilea terminal al comparatorului. Apoi comparatorul compară ambele tensiuni și generează un semnal digital la ieșire. Aici în acest circuit am folosit doi comparatori pentru doi senzori. LM358 este folosit ca comparator. LM358 a încorporat două amplificatoare opționale cu zgomot redus.
Secțiunea de control: MSP430 Launchpad este utilizat pentru controlul întregului proces al robotului de linie. Ieșirile comparatoarelor sunt conectate la pinul digital P1_3 și P1_4 al MPS430 Launchpad. MSP430 Launchpad citește aceste semnale și trimite comenzi către circuitul driverului pentru a conduce urmăritorul de linie.
Secțiunea driver: Secțiunea driver constă în driverul motorului și două motoare de curent continuu. Driverul motorului este utilizat pentru acționarea motoarelor, deoarece MSP430 Launchpad nu furnizează suficientă tensiune și curent motorului. Așa că am adăugat un circuit de conducător auto pentru a obține suficientă tensiune și curent pentru motor. Aici am folosit driverul L298d pentru conducerea motoarelor DC. MSP430 Launchpad trimite comenzi către acest driver de motor și apoi acționează motoare.
Am dezvoltat roboți Line Follower folosind diferite microcontrolere:
- Line Follower Robot folosind microcontrolerul 8051
- Line Follower Robot folosind Arduino
- Line Follower Robot folosind Raspberry Pi
- Line Follower Robot folosind microcontrolerul PIC
Funcționarea robotului Line Follower folosind MSP430
Funcționarea adeptului de linie este foarte interesantă. Robotul care urmărește linia detectează linia neagră utilizând senzorul și apoi trimite semnalul către MSP430 Launchpad. Apoi MSP430 Launchpad conduce motorul în funcție de ieșirea senzorilor.
Aici, în acest proiect, folosim două module de senzori IR și anume senzorul stâng și senzorul drept. Când senzorii stânga și dreapta simt albul, robotul merge înainte.
Dacă senzorul stâng vine pe linia neagră, atunci robotul rotește partea stângă.
Dacă senzorul din dreapta detectează linia neagră, atunci robotul se întoarce pe partea dreaptă până când ambii senzori ajung pe suprafața albă. Când vine suprafața albă, robotul începe să avanseze din nou.
Dacă ambii senzori intră pe linia neagră, robotul se oprește.
Diagrama circuitului
Circuitul acestui robot MSP430 Line Follower este foarte simplu. Ieșirea comparatoarelor este conectată direct la pinul digital MSP430 Launchpad numărul p1_3 și P1_4. Și pinul de intrare al conducătorului de motor IN1, IN2, IN3 și IN4 sunt conectați la pinul digital P1_5, respectiv P2_0, P2_1, P2_2 al MSP430 Launchpad. Un motor este conectat la pinul de ieșire al driverului de motor OUT1 și OUT2, iar un alt motor este conectat la OUT3 și OUT4. Aici am folosit o sursă de 3.3v pentru alimentarea întregului circuit, cu excepția modulului Motor Driver. Am furnizat 8v la modulul driverului motorului. Utilizatorul poate folosi 5v-12v.
Puteți, de asemenea, să vă construiți propriul modul IR, așa cum am creat pe Perf Board. Mai jos este circuitul pentru modulul IR:
Explicație de programare
Programul complet și videoclipul pot fi găsite la sfârșitul acestui articol.
Într-un program, în primul rând, definim pinul de intrare și de ieșire pentru senzor și motoare. Apoi definiți câteva macrocomenzi pentru direcția urmăritorului de linie și apoi scrieți o directivă pentru a selecta ieșirea senzorului
Notă: Senzorul poate fi activ scăzut sau activ ridicat, deci verificați mai întâi care este ieșirea senzorului, apoi selectați directiva comentând sau decomentând activeLowMode . Pentru HIGH active, comentațimacrocomanda 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 = {forward, left, right, stop}; #else int res = {oprire, dreapta, stânga, înainte}; #endif
După aceea, în funcția de configurare , dăm direcția senzorului și pinului motorului. Și apoi în funcția de buclă , verificăm intrările și trimitem ieșirea la modulul driverului motorului pentru a rula motoarele.
void setup () { pentru (int i = 0; i <4; i ++) pinMode (pini, OUTPUT); pinMode (l_sensor, INPUT); pinMode (r_sensor, INPUT); } void loop () {int sense = (digitalRead (l_sensor) << 1) - digitalRead (r_sensor); pentru (int i = 0; i <4; i ++) digitalWrite (pini, (res >> i) & 0x01); }
Există patru condiții în acest adept de linie pe care le citim folosind MSP430 Launchpad. Am folosit doi senzori și anume senzorul din stânga și cel din dreapta.
Condiții: Ieșire activă HIGH
Intrare |
Ieșire |
Circulaţie De Robot |
||||
Senzor stâng |
Senzor drept |
Motor stânga |
Motor dreapta |
|||
LS |
RS |
LM1 |
LM2 |
RM1 |
RM2 |
|
0 |
0 |
0 |
0 |
0 |
0 |
Stop |
0 |
1 |
1 |
0 |
0 |
0 |
Obligatoriu Dreapta |
1 |
0 |
0 |
0 |
1 |
0 |
Vireaza la stanga |
1 |
1 |
1 |
0 |
1 |
0 |
Redirecţiona |
Programul este scris în conformitate cu condițiile din tabelul de mai sus. Verificați complet codul și videoclipul demonstrativ de mai jos.