Construirea unei masinute care pe baza unui senzor de distanta exploreaza o anumita zona.
Dupa cum se poate vedea si din schema bloc, microcontroller-ul citeste valori de la senzorul de distanta si pe baza informatiilor primite de la acesta comanda driver-ul.
Pentru realizarea proiectului am folosit un kit de masinuta [1] cu 4 motorase si un senzor Sharp de distanta [2].
Am folosit pentru masurarea distantei un senzor Sharp GP2Y0A21YK. Acesta are un pin de Vcc, un pin de masa si un pin pe care scoate o tensiune care varieaza in functie de distanta masurata. Pentru a transforma acea tensiune in distanta i-am masurat valorile tensiunii de iesire pentru distante in intre 0-80cm, la intervale de 5cm. Semnalul scos de senzor este masurat pe pinul de ADC0 [3].
Motoarele sunt controlate prin intermediul unui driver L298N. Avand in vedere ca virajele se vor realiza in mod asemanator cu cele ale unui tanc, motoarele le-am legat in paralel 2 cate 2. Fiecare canal de iesire al driver-ului are montate 4 diode 1N4007 pentru protectie, iar intrarea de Vs are o capacitate de 100nF legata la masa.
Atat driverul cat si placa de baza sunt alimentate de la un set de 6 baterii de 1.5V = 9V. Insa, motoarele nu primesc decat 6V (atat spune in specificatia lor), limitarea facandu-se prin PWM pe intrarile de Enable ale celor 2 canale ale driver-ului. Pentru a face asta am folosit cele 2 Timere pe 8 biti ale microcontroller-ului [4].
Circuitul imprimat pentru driver este urmatorul:
Masinuta intainteaza in linie dreapta pana la intalnirea primului obstacol. In momentul in care a detectat un obstacol la o distanta <25cm, va incepe sa exploreze in stanga pentru a gasi o cale de ocolire, apoi in dreapta (daca n-a gasit liber in stanga) directiei originale.
Intre manevrele de schimbare de directie am introdus o pauza de 1 secunda pentru ca schimbarea directiei sa se efectueze dupa ce robotul s-a oprit din deplasarea sa.
Arhiva cu programul: 334cb_condurache_cristian.zip