Rus Alexei, 334CA
Proiectul consta in realizarea unui robotel, actionat de 4 motorase care ocoleste obstacolele pe care le intalneste in calea sa. Robotelul a fost antrenat pentru concursul de sumo, dar momentan a renuntat la violenta si face atletism.
Pentru a realiza acest proiect am avut nevoie de urmatoarele componente:
Schema de principiu este urmatoarea
Motoarele sunt puse in functiune cu ajutorul driverelor, care primesc semnal de comanda PWM si cu ajutorul alimentarii directe de la baterie, pun in funtiune rotile. Ambele roti de pe fiecare parte actioneaza sincron si au cate un driver dedicat. Fiind sincrone, se putea face si cu un singur circuit L298N, dar din considerente de siguranta si dat fiind faptul ca puterea consumata de doua motoare este apropiata de puterea suportata de un driver, am hotarat sa pun 2 astfel de circuite.
Schema electrica:
Robotelul este complet autonom si dupa pornirea de la buton merge inainte pana da de un obstacol, pe care il ocoleste fie pe partea dreapta, fie pe partea stanga, in functie de pozitia robotului fata de obstacol.
In fiecare moment de timp, pe baza unei medii de citiri de la ADC a celor doi senzori (am folosit media pe ultimele 20 de citiri pentru a elimina miscarile bruste cauzate de zgomote sau erori de conversie), se ia o decizie si robotelul trece in una din cele trei stari posibile:
Programul contine o etapa de initializare a ADC-ului, a timerelor si a motoareleor.
In rutina principala, exista o bucla infinita care la fiecare pas citeste datele primite de la ADC de la cei doi senzori. In functie de aceasta robotelul ia o decizie si anume sa mearga inainte, la dreapta sau la stanga. Au fost folosite macro-definitii pentru simplitatea utilizarii si reciclarii a codului.
Avand pedegree sportiv, robotelul poate fi pus sa faca diverse treburi, in dotarie standard intrand 5 senzori de distanta Sharp (2 in fata de 80 de centimetri, 2 in laterale si unul in spate de 40 de centimetri), precum si cu 4 senzori de culoare indreptate in jos ce sunt capabile sa detecteze o linie (care poate fi o margine de ring ce trebuie evitata sau o linie ce terbuie urmarita). Cu mici modificari la montaj se pot actiona independent toate cele 4 roti, insa practic, aceasta nu aduce nici un avantaj.
Arhiva cu fişierul obţinut în urma compilarii proiectului (.hex), sursa programului (.c) si makefile se poate downloada aici