Proiectul consta in realizarea unui dispozitiv de masurare a distantei pana la un obiect cu ajutorul ultrasunetelor emise de un dispozitiv de tip sonar si afisarea distantei masurate pe un LCD.
Senzorul ultrasonic masoara distanta folosind principiul ecoului. Acesta va emite o unda sonoara care va fi reflectata de obiectul pana la care va fi masurata distanta. Unda ecou corespunzatoare undei emise va fi captata de senzor, astfel fiind stabilit timpul total de calatorie al undei.
Luand in considerare timpul mentionat mai sus precum si viteza sunetului, senzorul de distanta va produce o tensiune proportionala cu distanta pana la obstacol. Aceasta tensiune va fi trimisa catre convertorul analog digital al microcontrollerului care utilizand tensiunea digitala obtinuta va calcula distanta exacta pe baza factorului de scalare al senzorului care este de 10mV per inch. Microcontrollerul va afisa distanta masurata pe un display, masuratorile fiind facute continuu.
In afara de placuta cu microcontrollerul realizata in prima etapa am utilizat urmatoarele componente:
Pentru alimentarea placutei am folosit un incarcator universal de laptop.
Senzor de distanta de tip LV-MaxSonar-EZ:
Detecteaza obiecte aflate pana la 6.45m distanta. L-am cumparat de la sediul RoboFun, Bucuresti.
LCD de tip DEM16101 pe 16 caractere:
Scheme componente:
Implementarea hardware a proiectului este finalizata.
Am folosit 2 pini ai senzorului de distanta: PW si RX.
Pinul RX trebuie setat ca pin de scriere si este folosit pentru a comanda o masuratoare prin punerea liniei pe 1 cel putin 20 de microsecunde.
Pinul PW al senzorului sonic trece pe “1” logic cand sonarul emite unda si trece pe '“0” logic la intoarcerea ecoului. La schimbarea starii logice a liniei ,trecerea din 0 in 1 iar apoi din 1 in 0, se genereaza o intrerupere care porneste un timer respectiv il opreste. Astfel obtinem un timp pe care impartind-ul la 58 obtinem distanta in CM , conform datasheet-ului senzorului.
Pentru a realiza afisarea la display, am completat functiile de afisare la LCD din cadrul scheletului laboratorului 1 de PM: LCD_init(), LCD_writeInstruction(unsigned char _instruction), LCD_writeData(unsigned char _data), LCD_write(unsigned char _byte), LCD_waitNotBusy() , LCD_waitInstructions(unsigned char _instructions), LCD_print(char* _msg).
Pentru sonar am scris urmatoarele functii: sonic_init(void), sonicsend_signal(), sonicstart_meas(), precum si handlerele pentru intreruperi(schimarea nivelului logic al liniei PW si timer overflow).
Proiectul este finalizat dpdv hardware. La incarcarea codului proiect.c in microcontreller am avut urmatoarele probleme:
- am conectat un potentiometru pe pinul de reglare a contrastului(am inlocuit dioda) si afisarea a mers.
- chiar daca afisarea la display functiona, senzorul nu emitea nimic(nu se auzea niciun sunet deoarece linia RX care datea comanda de masurare era pe “0” logic tot timpul, am verificat cu multimetrul si tensiunea era 0 mereu).
- dupa ce am reusit in final sa pornesc senzorul, nu stiu de ce nu a mai mers sa afisez nimic la display , am incercat cu mesaje simple precum “Hello” dar nu a functionat.
Sursa proiect: proiect.zip