- Conceptul robotului Line Follower
- Componente necesare
- Diagrama circuitului
- Programarea Atmega16 pentru robotul Line Follower
Aici vom construi încă un proiect cu microcontrolerul AVR Atmega16. Dacă sunteți nou în microcontrolerele AVR, atunci puteți consulta proiectele și tutorialele anterioare AVR.
Construirea unui robot este întotdeauna un fior pentru toți pasionații de electronice. Și acest fior poate fi maximizat dacă robotul poate face automat unele lucruri fără instrucțiuni externe. Unul dintre cei mai des construiți roboți de către începătorii în domeniul electronicii este Line Follower Robot. După cum sugerează și numele, robotul va urma linia trasată la suprafață. Linia nu trebuie să fie o linie dreaptă. De asemenea, liniile pot fi de orice culoare.
Am construit anterior proiecte de robot Line Follower folosind diferite controlere:
- Line Follower Robot folosind microcontrolerul 8051
- Line Follower Robot folosind microcontrolerul PIC
- Line Follower Robot folosind Arduino
- Line Follower Robot folosind Raspberry Pi
- Robot de urmărire a liniei folosind MSP430 Launchpad
Astăzi vom folosi microcontrolerul AVR pentru a construi un robot de linie.
Majoritatea senzorilor IR sunt utilizați pentru a detecta liniile. Senzorii IR sunt buni în detectarea suprafețelor albe sau negre. Deși puteți utiliza alți senzori sofisticați care vor putea detecta toate culorile și pot face un robot care poate urma toate liniile de culoare. Robotul ar trebui să poată detecta linia chiar dacă traseul este modificat prin schimbarea unghiului și continuă să urmeze linia. De asemenea, ar trebui să se oprească oriunde intră zona de oprire în linie.
Roboții care urmăresc linia sunt folosiți pe scară largă acum câteva zile în industriile producătoare, în aplicațiile medicale, domestice și în depozitul de bunuri. Roboții nu se limitează doar la aceste aplicații și își pot extinde aplicațiile în multe aplicații viitoare.
Conceptul robotului Line Follower
Senzorii IR sunt un jucător cheie în acest proiect. Senzorii IR sunt amplasați în partea din față a robotului pentru a urmări linia neagră trasată și suprafața. Robotul este plasat între linie și cu ajutorul senzorilor IR robotul ține evidența liniei. Senzorii IR transmit feedback-ul citirii către microcontroler și, cu ajutorul citirii IR, microcontrolerul mută motoarele în partea stângă sau dreapta și aduce din nou robotul pe cale.
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 ATmega16 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ă, atunci microcontrolerul AVR 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.
Componente necesare
- Motoare DC Gear (2 unități)
- Modul senzor IR (2 unități)
- Modulul L293D
- Sursă de alimentare fără fir (de ex. Baterie, banc de alimentare)
- Scaune robot
- IC microcontroler Atmega16
- Oscilator de cristal de 16 MHz
- Două condensatoare 100nF
- Două condensatoare de 22pF
- Apasa butonul
- Sârme jumper
- Breadboard
- USBASP v2.0 (Pentru a programa Atmega16)
Diagrama circuitului
Conectați toate componentele așa cum se arată mai jos în Diagrama circuitului
Programarea Atmega16 pentru robotul Line Follower
Aici Atmega16 este programat folosind USBASP și Atmel Studio7.0. Dacă nu știți cum poate fi programat Atmega16 folosind USBASP, accesați linkul. Programul complet este dat la sfârșitul proiectului, trebuie doar să încărcați programul în Atmega16 folosind programatorul JTAG și Atmel Studio 7.0, așa cum s-a explicat în tutorialul anterior.
Am încercat să păstrăm codul cât de scurt și simplu putem. Deci, folosim macrocomenzi și registre de funcții speciale în acest cod.
if (bit_is_clear (PINA , leftSen)) { // verificați dacă senzorul din stânga este OFF
Această afirmație verifică dacă PA0 unde este conectat senzorul din stânga este LOW sau HIGH.
Dacă doriți să aflați mai multe despre această afirmație și alte macrocomenzi, accesați acest link
Există patru condiții pe care le urmăm pentru a citi prin senzori IR. Senzorii IR sunt denumiți în funcție de amplasarea lor în partea din față a robotului. IR stânga este senzor stâng și IR dreapta este senzor drept. Următoarele condiții vor decide mișcarea robotului.
Am scris codul conform condițiilor de mai sus. Singura modificare este că folosim doar doi pini de intrare ai L293D pentru a acționa ambele motoare.
Codul complet cu un videoclip demonstrativ este prezentat mai jos.