Mihai Filip poate fi contactat la adresa: Login pentru adresa
Cristian Pop poate fi contactat la adresa: Login pentru adresa
Proiectul are ca scop realizarea unui robot ce urmareste, in mod independent, cu ajutorul unor senzori, o linie de culoare diferita de cea a fundalului.
Motivatia acestei alegeri a fost reprezentata, in primul rand, de complexitatea proiectului si, in al doilea rand, pentru ca ii putem testa performantele, comparativ, cu alti roboti realizati de colegi de-ai nostri. De asemenea, am considerat ca putem dobandi numeroase cunostinte de utilizare a microcontrollerelor, realizand un proiect interactiv si interesant.
Un robot, programat sa urmareasca o traiectorie, are multiple intrebuintari si in viata cotidiana: de la roboti industriali care urmeaza un singur traseu pentru diferite transporturi, pana la autovehicule autonome.
Aceasta este schema placii driverului de motoare.
In aceasta schema, pot fi remarcate conexiunile realizate intre microcontroller si driverul de motor, respectiv placa de senzori.
Lista piese:
1. placa de la prima etapa a proiectului care utilizeaza ATmega324
2. placa de senzori QTR-8A
3. L298 care contine doua punti H
4. stabilizator de tensiune 7805
5. 8 diode Schottky 1N5817
6. 4 LED de 3 mm (2 verzi, 2 rosii)
7. o capacitate de 22 nF
8. o capacitate de 220 uF
9. doua rezistene de pull-up de 47k
10. doua rezistente de limitare a curentului de 2k2
11. bareta de pini
12. trei conectori Degson DG306
13. 30 calburi mama-mama
14. doua roti de 70mm
15. doua motoare cu reductie 120:1
16. ball caster
17. doua placi textolit
18. suruburi, piulite, etc
Pret orientativ: 200 lei
Mediul de dezvoltare utilizat a fost Programmer's Notepad, fiind cel utilizat si in cadrul laboratoarelor.
Software-ul se imparte in: modulul de control al motoarelor, conversie a valorilor output-urilor senzorilor si modulul care implementeaza logica de line following.
Motoarele sunt interfatate utilizand un circuit driver de motor care expune, pentru fiecare motor, trei linii de control: doua de INPUT, care sunt utilizate pentru a da directia de rotatie a acestora si unul de ENABLE, care este utilizat e noi pentru a regla turatia motoarelor. Pentru controlul directiei de rotatie a unui motor, este de ajuns sa modificam valorile pinilor corespunzatori celor doua linii de INPUT ale driverului de motor. Cele doua linii trebuie sa fie complementare pentru a se roti, iar pentru a frana, acestea sunt initializate la aceeasi valoare. Pentru controlul turatiei motoarelor, utilizam un PWM, pe pinii de ENABLE. PWM-ul utilizeaza timerul 2 in mod Fast PWM.
Placa de senzori QTR-8A contine 8 senzori, astfel ca avem nevoie sa convertim de la valori analogice la valori digitale toate cele 8 optput-uri ale senzorilor. Fiind 8, este nevoie de o multiplexare a acestora, ele fiind conectate la port-ul A, care reprezinta un ADC cu functie de multiplexare. La initializarea ADC-ului, se seteaza bitii de multiplexare la valoarea corespunzatoare pinului PA0 si se lanseaza conversia de pe acest pin. La finalizarea conversiei, se va declansa o intrerupere care va memora valoarea, va seta bitii de multiplexare pentru urmatorul pin din port-ul A si va lansa conversia.
Logica este implementata in intreruperea ADC-ului si este executata doar in momentul in care s-a citit cate o valoarea pentru fiecare dintre cei 8 senzori. Primul lucru realizat este obtinerea configuratie senzorilor, care pune in evidenta pozitia liniei fata centrul robotului. Urmatoarea actiune este calculul distantei liniei fata de centrul robotului, ca apoi sa se regleze turatia motoarelor in functie de configuratie si de distanta. In cazul in care turatia unui motor trebuie sa coboare sub o anumita valoare, roata respectiva este franata pentru o redresare rapida.
Am testat cu ajutorul unei placute Arduino Uno controlul motoarelor si conversiile output-urilor senzorilor. Pentru testarea conversiei am realizat o conexiune UART cu Arduino (utilizand un UART software), iar de pe Arduino ceea ce primeam, trimiteam mai departe, pe calculator, prin seriala.
Dupa realizarea montajului, am constatat lipsa unui loc potrivit pentru baterii, astfel ca ne-am gandit sa le taram dupa noi.
Dar cablurile motoarelor s-au dovedit a fi un suport numai bun pentru cutia de baterii.
Varianta finala a robotului line-follower, testat in sala de lectura.
A fost un proiect interesant, care ne-a imbogatit bagajul de cunostinte si, in acelasi timp, ne-a dezvoltat anumite abilitati de programare si proiectare.
Robotul ar putea fi imbunatatit atat la partea hardware cat, mai ales, la partea software.
Cu toate ca suntem multumiti de partea hardware, recomandam utilizarea unor leduri pentru un debugg-ing mai usor pe placuta de senzori, cat si un design mai placut pentru robot (am fost limitati din cauza sistemului de prindere al motoarelor).
La partea de software, algoritmul este unul rudimentar, care totusi urmareste linia, dar cu un compromis de viteza.
Realizarea proiectului a durat aproximativ o saptamana, cu cate 2-3 ore de lucru in fiecare zi.