Scopul proiectului este de a crea un robot autonom care sa poata urmari o sursa de lumina folosind o pereche de senzori de lumina (diode fotosensibile) pentru a calcula directia dorita si o pereche de motoare pentru deplasare.
Dupa cum se vede in schema am folosit alimentare separata pentru motoare si pentru placuta ca sa evit resetarea microcontroller-ului. Comunicarea intre uc si L293NE se face pe 4 pini + 2 de alimentare. Senzorii au cate 3 pini fiecare, 2 de alimentare si unul de semnal ce va fi conectat la una dintre intrarile convertorului analog-digital integrat.
Componente
Cutia de viteze cu motoarele au venit in cutie si au necesitat montaj.
L293NE a fost conectat la ATmega16 cu 4 pini de semnal pentru controlul motoarelor si inca 2 pini pentru alimentare si semnale de enable. Inca 2 perechi de fire au fost necesare pentru legarea motoarelor de punte si inca o legatura pentru alimentarea lor.
Cele 3 fire portocalii legate sunt conectate la +5V pentru semnalele de enable si alimentarea L293NE. Din fiecare din perechile de fire verde/verde-alb si maro/maro-alb, una este legata la pinii de semnal ai ATmega16, iar clealalta la motorul comandat de respectivii pini. Firul portocaliu singur reprezinta alimentarea motoarelor (6V), iar cei patru pini conectati cu firul maro sunt legati la GND.
Senzorii au venit gata montati si au 3 pini, 2 de alimentare si unul de semnal ce va fi conectat la una din intrarile convertorului analog-digital al ATmega16.
Codul a fost destul de simplu avand in vedere ca valorile citite de la senzori sunt intregi pe 10 biti. Astfel, vom avea 2 praguri de diferentiere configurabile. Daca diferenta dintre valorile senzorilor depaseste doar unul din praguri o roata va fi blocata si una va merge in fata, iar daca sunt depasite amandoua o roata se va roti inainte iar cealalta inapoi. Pentru o mai buna precizie, am introdus si calcularea mediei valorilor date de senzori pe un numar configurabil de esantioane.
Desi robotul functioneaza corect, este nevoie de o sursa de lumina destul de puternica pentru a sesiza diferenta de valori intre cei doi senzori.