- Materiale necesare:
- Conceptele de Line Follower
- Schema și explicația circuitului:
- Programarea microcontrolerului PIC:
- Urmăritor PIC Line în acțiune:
Un robot Line Follower este un robot simplu, dar fascinant, pe care majoritatea studenților / pasionaților îl pot construi. În acest tutorial vom afla cum funcționează un robot de linie și cum putem construi unul folosind microcontrolerul PIC PIC16F877A. PIC16F877A este un MCU multifuncțional cu 40 de pini de la Microchip, am folosit acest IC în seria noastră completă de tutoriale PIC. Dacă sunteți nou, aici vă recomandăm să aruncați o privire la aceste tutoriale PIC pentru a afla elementele de bază ale acestui IC și cum să încărcați programe pe microcontroler. Deoarece am acoperit deja aceste informații în tutorialele noastre, le vom ignora în explicația de mai jos.
Dacă sunteți interesat de robotică, atunci ar trebui să fiți foarte familiarizați cu numele „ Line Follower Robot ”. Acest robot este capabil să urmeze o linie, doar folosind o pereche de senzori și motoare. Acest robot vă oferă spațiu pentru o dezvoltare infinită, iar roboți precum Kiva (robot de depozit Amazon) sunt un exemplu pentru acest lucru. Puteți verifica și ceilalți roboți ai noștri Line Follower:
- Line Follower Robot folosind microcontrolerul 8051
- Line Follower Robot folosind Arduino
- Line Follower Robot folosind Raspberry Pi
Materiale necesare:
- PIC16F877A
- Senzor IR (2Nos)
- Motor cu transmisie DC (2Nos)
- Driver motor L293D
- Scaune (Puteți, de asemenea, să vă construiți propriile dvs. folosind cartoane)
- Power bank (Orice sursă de energie disponibilă)
Conceptele de Line Follower
Line Follower Robot este capabil să urmărească o linie cu ajutorul unui senzor IR. Acest senzor are un transmițător IR și un receptor IR. Transmițătorul IR (LED IR) transmite lumina, iar receptorul (fotodiodă) așteaptă ca lumina transmisă să revină înapoi. O lumină IR se va întoarce înapoi numai dacă este reflectată de o suprafață. În timp ce, toate suprafețele nu reflectă o lumină IR, doar albul, suprafața culorii le poate reflecta complet, iar suprafața neagră le va observa complet așa cum se arată în figura de mai jos. Aflați mai multe despre modulul senzorului IR aici.
Acum vom folosi doi senzori IR pentru a verifica dacă robotul este în linie cu linia și două motoare pentru a corecta robotul dacă acesta se deplasează în afara pistei. Aceste motoare necesită curent mare și ar trebui să fie bidirecționale; prin urmare, folosim un modul de driver de motor ca L293D. De asemenea, vom avea nevoie de un microcontroler precum PIC pentru a instrui motoarele pe baza valorilor de la senzorul IR. O diagramă bloc simplificată a acestuia este prezentată mai jos.
Acești doi senzori IR vor fi așezați unul pe ambele părți ale liniei. Dacă niciunul dintre senzori nu detectează o linie neagră, microcontrolerul PIC instruiește motoarele să avanseze așa cum se arată mai jos
Dacă senzorul stâng vine pe linia neagră, atunci microcontrolerul instruiește robotul să vireze la stânga rotind singură roata dreaptă.
Dacă senzorul din dreapta vine pe linia neagră, atunci microcontrolerul îi instruiește robotul să se întoarcă la dreapta rotind singur roata stângă.
Dacă ambii senzori intră pe linia neagră, robotul se oprește.
În acest fel, robotul va putea urma linia fără a ieși în afara pistei. Acum, să vedem cum arată circuitul și codul.
Schema și explicația circuitului:
Schema completă a circuitului pentru acest robot de urmărire a liniei bazat pe PIC este prezentată mai jos
Circuitul folosește doi senzori IR și o pereche de motoare de curent continuu împreună cu un modul de comandă a motorului, așa cum se arată mai sus. Modulul driverului de motor utilizat în acest proiect este L293D, vom avea nevoie de un driver de motor deoarece pinul de ieșire al microcontrolerului PIC nu poate furniza suficient curent pentru ca motoarele să funcționeze. Acest modul va fi alimentat direct de la sursa de alimentare (5V) așa cum se arată în circuit. Modulul are patru pini (doi pentru fiecare motor) care sunt conectați la PIC pentru a controla direcția motoarelor. Avem, de asemenea, doi senzori IR care acționează ca o intrare în microcontrolerul PIC. Acești senzori se vor ridica (1) dacă sunt peste o suprafață albă și vor scădea (0) când vor fi peste o suprafață neagră. Conexiunile complete ale pinilor sunt ilustrate în tabelul de mai jos.
S. Nu |
Conectat de la |
Conectat la |
1 |
Senzor IR Pin lăsat afară |
RD2 (pinul 21) |
2 |
Senzor IR Pin dreapta |
RD3 (pinul 22) |
4 |
Motor 1 canal A pin |
RC4 (pinul 23) |
5 |
Motor 1 canal B. pin |
RC5 (pinul 25) |
6 |
Motor 2 Canal A pin |
RC6 (pinul 26) |
7 |
Motor 2 canale B. Pin |
RC7 (pinul 27) |
În hardware-ul propriu-zis am folosit o bancă de putere care va da o ieșire de + 5V direct prin portul său USB; prin urmare, am ocolit regulatorul de tensiune 7805 și am alimentat PIC, senzorii și motoarele folosind același lucru. Puteți face același lucru cu utilizarea unei baterii de 12V împreună cu un regulator așa cum se arată în circuit.
Programarea microcontrolerului PIC:
După ce sunteți gata cu hardware-ul dvs., este timpul să începeți programarea. Programul complet al acestui proiect POT Line Follower Robot este dat la sfârșitul acestei pagini. Cu toate acestea, bucățile importante sunt explicate mai jos.
Inițializați pinii I / O cu următoarele rânduri. Cei 2 pini ai senzorului IR acționează ca intrare, iar cei patru pini ai motorului acționează ca pini de ieșire.
TRISD2 = 1; TRISD3 = 1; // Baia pinilor senzorului IR este declarată ca intrare TRISC4 = 0; TRISC5 = 0; // Motorul 1 pini declarat ca ieșire TRISC6 = 0; TRISC7 = 0; // Motor 2 pini declarați ca ieșire
Acum, trebuie să citim starea senzorului IR și să controlăm motorul în consecință. De exemplu, dacă ambii senzori sunt înalți (nu intră sub linia neagră), atunci mutăm ambele motoare înainte așa cum se arată în programul de mai jos.
if (RD2 == 1 && RD3 == 1) // Ambii senzori nu sunt peste linia albă {RC4 = 0; RC5 = 1; // Motorul 1 înainte RC6 = 1; RC7 = 0; // Motor 2 înainte}
Dacă senzorul din stânga depășește linia neagră, atunci facem un viraj la dreapta ținând motorul 1 nemișcat și rotind motorul 2 în direcția înainte. Acest tip de strunjire se numește strunjire diferențială.
altfel dacă (RD2 == 0 && RD3 == 1) // Senzorul din stânga este peste linia neagră {RC4 = 1; RC5 = 1; // Motor 1 oprire RC6 = 1; RC7 = 0; // Motor 2 înainte}
În mod similar, dacă senzorul din dreapta trece peste linia neagră, atunci botul este făcut să ia o viraj la stânga ținând al doilea motor nemișcat și rotind primul motor singur în direcția înainte, așa cum se arată mai jos.
altfel dacă (RD2 == 1 && RD3 == 0) // Senzorul din dreapta este peste linia neagră {RC4 = 0; RC5 = 1; // Motorul 1 înainte RC6 = 1; RC7 = 1; // Motor 2 oprire}
În cele din urmă, dacă ambii senzori intră sub o linie neagră, atunci este timpul să oprească robotul. Acest lucru se poate face prin ridicarea tuturor pinilor ambelor motoare. Codul pentru a face același lucru este prezentat mai jos
else // Ambele senzor peste linia neagră {RC4 = 1; RC5 = 1; // Motor 1 oprire RC6 = 1; RC7 = 1; // Motor 2 oprire}
Acesta este programul gata și poate fi încărcat pe PIC folosind orice programator precum PicKit.
Urmăritor PIC Line în acțiune:
Odată ce hardware-ul și codul sunt gata, este timpul pentru o acțiune. Așa cum am spus mai devreme, am folosit o bancă de alimentare pentru a alimenta botul, așa că tot ce trebuie să fac este să conectez banca de energie la botul care are setarea hardware și codul deja încărcat.
Placa PIC Perf a fost realizată pentru seria noastră de tutoriale PIC, în care am învățat cum să folosim microcontrolerul PIC. S-ar putea să doriți să reveniți la acele tutoriale PIC Microcontroller care utilizează MPLABX și XC8 dacă nu știți cum să ardeți un program folosind Pickit 3, deoarece voi sări peste toate acele informații de bază.
Acum, pur și simplu lansați botul peste o linie neagră și ar trebui să-l urmăriți urmând linia.
S-ar putea să vă confruntați cu unele dificultăți la început, în acest caz citiți mai departe. Dacă roțile se rotesc în sens opus, schimbă polaritatea motorului care se rotește în direcția opusă. Dacă robotul se abate de la linie, schimbați senzorul IR și totul ar trebui să fie bun.
Funcționarea completă a botului poate fi găsită la videoclipul prezentat mai jos. Sper că îți place proiectul și ți-a plăcut să construiești ceva similar. Dacă aveți probleme la punerea în funcțiune, le puteți posta în secțiunea de comentarii de mai jos pentru a rezolva problema sau folosiți forumurile noastre pentru a discuta conținut tehnic.