Autorul poate fi contactat la adresa: Login pentru adresa
Robotel care urmareste linia neagra de pe un fundal alb si are ca scop principal sa parcurga traseul determinat acea linie intr-un timp cat mai scurt.
Am ales acest proiect pentru ca am asistat la concursuri de roboti care aveau si sectiunea de line follower; so… why not?
Utilitate practica nu cred ca are in forma in care o sa il construiesc insa il consider o platforma de baza pentru roboti ce folosesc senzori mai avansati si au o functioalitate extinsa. Este in acelasi timp si o provocare pentru ca nu am mai construit, pana acum, nimic unde sa realizez si partea hardware si software.
Senzorii de linie vor citi in continuu si vor transmite datele catre ATMEGA324, dupa prelucrarea acestora, microcontrolerul va pune date de directie de pe pinii PB1, PB2, PB5, PB6 si va face PWM pe pinii PB3 si PB4; toate aceste date vor fi transmise catre modulul de driver care va controla motoarele conform setarilor celor 6 pini mentionati mai sus (rotire stanga, rotire dreapta, mers inainte).
Lista piese:
Microcontroler ATMEGA324 PM
Kit sasiu + motoare: https://www.optimusdigital.ro/ro/robotica-kit-uri-de-roboti/140-kit-robot-2-motoare.html
Driver dual motoare L298N: https://www.optimusdigital.ro/ro/drivere-de-motoare-cu-perii/145-driver-de-motoare-dual-l298n.html
Bara senzori linie analogic QTR-8A: https://www.robofun.ro/bara_senzori_linie_qtr_8a
Jumperi mama-mama, tata-tata, tata-mama
Diode, rezistente, condensatori
Schema electrica:
Pentru implementarea software-ului am folosit Linux editorul Sublime si compilatorul avr-gcc. Pentru debug am folosit “Advanced Serial Port Terminal” si un cablu de conversie USB ↔ Usart. Nu am folosit librarii 3rd-party.
Citirea senzorilor o fac prin ADC, folosind toti pinii intre PA0 si PA7. Datele citite sunt prelucrate in felul urmator: fiecarui pin de ADC i se atribuie o pondere -1 sau 1; daca senzorula citit linia neagra, ponderea sa se adauga la suma ponderilor. Dupa ce sunt cititi toti pinii si se obtine o suma a ponderilor se ajusteaza prin PWM puterea care merge la motoare astfel incat robotul sa se centreze pe linie.
Robotul reuseste sa urmareasca linia neagra totusi are ceva imperfeciuni(la vireajele stranse) datorita dimensiunilor sasiului(e putin cam mare-lat) insa pe un traseu unde curbele au raza de curbura suficient de mare pentru acest sasiu, se descurca destul de bine.
Filmulet demo: https://youtu.be/w2_lCceIkPM
A fost o experienta interesanta. Am invatat cum pot controla motoarele folosind PWM si cum sa folosesc senzorul QTR-8A. Rezultatul este putin sub asteptarile mele deoarece sasiul s-a dovedit a fi mai mare decat ma asteptam (am comandat kit sasiu+motoare+roti) si acest lucru face ca robotul sa fie putin greoi in viraje ⇒ am fost nevoit sa reduc viteza la care ruleaza motoarele pentru ca inertia sa nu impinga robotul de pe linie. Per total am ramas placut surprins de proiect si mai ales de faptul ca am reusit sa creez un robot practic de la 0; pe viitor ma gandesc sa fac si varianta sa imbunatatita (care se misca mai repede).
Arhiva cod: linefollower_alexandru-mihai_stroie.zip
Schema Eagle: Schema Alexandru-Mihai Stroie
21-Apr-2018: Completat etapa 1.
26-Apr-2018: Completat etapa 2.
27-Apr-2018 - 04-Mai-2018: Comanda pieselor pentru linefollower, asamblarea sasiului, testarea placutei si completarea etapei 3.
05-Mai-2018 - 23-Mai-2018: Asamblarea finala a robotului, scrierea sofware-ului si testarea acestuia