Ruleta sonica

Introducere

Ruleta sonica este un dispozitiv ce masoara si afiseaza la display distanta pana la un obiect folosind un senzor ce emite ultrasunete. Dispozitivul sonic este usor de folosit si reprezinta o alternativa la stilul de masurare clasic.

Descriere generala

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.

Microcontrollerul va afisa distanta masurata pe un display, masuratorile fiind facute continuu.

Hardware Design

In afara de placuta cu microcontrollerul realizata in prima etapa am utilizat urmatoarele componente:

  • Senzor ultrasonic de masurare a distantei
  • LCD cu afisaj pe 16 caractere
  • Cablu USB pentru programarea placutei
  • Potentiometru pentru reglarea contrastului display-ului

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.

LCD de tip DEM16101 pe 16 caractere:


Scheme componente:

  • senzor distanta:

  • display:


Am folosit 2 pini ai senzorului de distanta: RX si AN.

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 AN al senzorului de distanta produce o tensiune proportionala cu distanta masurata. Aceasta tensiune va fi convertita de catre ADC-ul microcontroller-ului intr-o valoare numerica, valoare ce va fi folosita pentru obtinerea rezultatului final in cm.

Formule de calcul:

  • ADC = Vin * 1024 / Vref
  • Vi = Vcc / 512
  • Rezultatcm = (Vin / Vi) * 2.54 = (Vref / Vcc) * ADC * 1.27

Unde:

  • ADC - valoarea din registrul ADC al microcontroller-ului rezultata in urma conversiei analog digitale
  • Vin - tensiunea analogica intoarsa de catre sonar , ce constituie intrarea pentru convertorul analog digital
  • Vi - tensiunea specificata in datasheet-ul sonarului ca fiind corespunzatoare unui inch

Software Design

Pentru a comanda inceperea si oprirea unei masuratori am setat respectiv resetat pinul RX al senzorului, folosind define-urile incluse in fisierul lcd.h:

  • RX_HIGH()
  • RX_LOW()

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).

Proiectul mai contine urmatoarele functii:

  • ftos(float val, char *m) - pentru conversia unui float la sir de caractere
  • ADC_init() - pentru initializarea ADC-ului atmega16
  • ADC_get() - ADC-ul incepe o conversie

Rezultate Obtinute

pm/prj2012/amocanu/5.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0