Line-Follower Robot - Popescu Silviu 333CA
Demo Proiect
Hardware Design
Lista componente:
Etapele dezvoltarii hardware:
1.Asamblare Sasiu Robot
2.Montare Componente Elcetronice
3.Realizare Cablaj
Software Design
Tehnologii Utilizate
Principiul de Functionare al Senzorilor
Se monteaza doi senzori infrarosii pe extremitatile robotului.
Fiecare senzor are doua LED-uri:emitor si receptor.
Emitorul emite o raza de lumina infrarosie.
Daca raza ajunge pe o suprafata alba, care reflecta lumina, aceasta este captata de receptor.
Daca raza ajunge pe o suprafata neagra, care absoarbe lumina, aceasta nu mai este captata de receptor.
Astfel, senzorul poate determina tipul suprafetei pe care se afla.
Interactiunea cu Motoarele
Fiecare motor are asociati 3 pini: 1 pin pentru controlul vitezei si 2 pini pentru controlul directiei.
Scrierea pe pinul de viteza se face folosind PWM.
Interactiunea cu Senzorii
Senzorii sunt conectati la pinii analogici A2 si A4 ai placutei Arduino.
Citirea acestora se face folosind ADC cu prescaler 128 pentru a obtine valori discrete.
Pe baza valorilor citite constant de la senzori, se iau urmatoarele decizii:
Ambii senzori sunt pe suprafata alba ⇒ Robotul se afla pe linie ⇒ Se deplaseaza inainte
Senzorul dreapta se afla pe linia neagra ⇒ Vireaza la dreapta
Senzorul stanga se afla pe linia neagra ⇒ Vireaza la stanga
Ambii senzori se afla pe suprafata neagra ⇒ Stop
Controlul Sistemului
Sistemul este controlat printr-un algortim PID:Proportional, Integrative, Derivative. Mecanismul asigura deplasarea controlata a robotelului in timpul virajelor, lucru ce duce la un timp mai bun de parcurgere al circuitului.
Acesta calculeaza starea curenta a robotului si pe baza acesteia calculeaza o erorare. Modul de calcul pentru eroarea curenta este:
daca senzor_dreapta = negru && senzor_stanga = alb → err = 1000
daca senzor_dreapta = alb && senzor_stanga = negru → err = -1000
daca senzor_dreapta = alb && senzor_stanga = alb → err = 0
In functie de eroare, se modifica viteza de rotatie a motorului:
err = -1000 → viraj stanga → cresc viteza motorului drept, scad viteza motorului stang(eventual rotesc in sens invers)
err = 1000 → viraj dreapta → cresc viteza motorului stang, scad viteza motorului drept(eventual rotesc in sens invers)
Rezultate Obţinute
Datorita proiectului am implementat primul meu robotel.
Acesta foloseste un algoritm de control PID, pentru a obtine stabilitate si o viteza mai performanta.
Proiectul poate fi imbunatatit:
Hardware:
Software:
Adaugarea mai multor senzori infrarosii(8) pentru ca PID sa fie cat mai precis
Utilizarea unor valori diferite pentru constantele Kp, Ki, Kd
Utilizarea unor biblioteci speciale: QTRSensors
Concluzii
Mi-a placut sa implementez acest proiect, chiar daca m-am chinuit :)
Download
Bibliografie/Resurse
Resurse Hardware
Resurse Software