Sonar

Introducere

Scopul proiectului este crearea unui dispozitiv ce masoara distanta pana la un obstacol. Rezultatul va fi afisat pe un display LCD. Dispozitivul poate fi setat sa si anunte (sa afiseze pr ecran) cand este la o anumita distanta de obstacol (distanta setata initial).

Descriere generală

Dispozitivul va folosi ultrasunete pentru a determina distanta. Un ciclu de functionare consta in: - emiterea unui semnal - asteptarea ecoului - calculare distanta si afisare pe ecran Pe baza timpului scurs, stiind viteza sunetului, se poate determina distanta pana la obstacol.

Schema:

Transmitatorul si receptorul se vor gasi intr-un senzor SRF05. Acest modul cuprinde, pe langa cele doua componente, si o logica de control si analiza. Functioneaza cu semnale TTL. Un semnal specific declanseaza masurarea, iar durata semnalului de raspuns depinde de distanta pana la obiect. Stiind timpul si viteza sunetului, se aplica formula: Distanta = Timp * Viteza sunetului.

Hardware Design

Modulul SRF05 poate functiona in doua moduri: la fel ca SRF04 (pini separati pentru comanda si raspuns) sau poate primi raspunsul pe acelasi pin pe care a fost data comanda. Va fi folosit in primul mod. De asemenea, el dispune de doua module separate pe care le voi folosi pe rand pentru o masurare mai exacta.

Cipul, impreuna cu LCD-ul vor fi conectate la controller dupa urmatoarea schema:

Software Design

Softwareul va fi scris limbajul C si va fi utilizat compilatorul AVR-GCC sub Windows. Diagrama de stari pentru masurarea distantei va arata astfel:

Dispozitivul va masura continuu distanta fata de obiectul catre care este indreptat. Pentru partea de afisare pe LCD va fi folosit laboratorul 1.

Va fi scris cate un handler pentru semnalele SIG_INPUT_CAPTURE1 si SIG_OVERFLOW1.

Pentru primul, se verifica daca frontul a fost crescator sau descrescator si, in functie de acesta, fie se va salva valoarea din ICR1 (care a fost preluata din TCNT1 la intrerupere) si se va opri timerul, fie se va porni timerul cu setarile corespunzatoare (trigger la front descrescator, TCNT1 pus la 0, overflow setat).

Pentru al doilea se va opri masuratoarea.

Partea de SRF in pseudocod ar fi: - setare pin la 1 - hold la semnal minim 10us - clear - cand ajunge ecoul, se va activa ICP-ul cu front crescator → se porneste timerul si se seteaza ICP1 sa raspunda la front descrescator - cand se termina ecoul, se activeaza ICP la front descrescator → se preia valoarea din ICR1 si se opreste timerul

Codul pentru handlere:

SIGNAL(SIG_INPUT_CAPTURE1)//handler pentru intrerupere
{   if (front == 1) // front descrescator
    {   action = 0; // opreste masurarea
        front = 0; // front crescator
        val1 = ICR1; // preia valoarea
        TIMSK &= ~(1<<TOIE1); // opreste ovfl
    }
    else
    if (front == 0) // front crescator
    {   TIMSK |= (1<<TOIE1); // enable ovfl
        TCCR1B |= (1<<CS10); // prescale 64 pentru 400cm
        TCCR1B |= (1<<CS11); // prescale la 1 pentru maxim 70cm
        TCNT1 = 0; // clear tcnt
        TCCR1B &= ~(1<<ICES1); // intrerupere pe front descrescator
        front = 1; // descrescator
    }
}
SIGNAL(SIG_OVERFLOW1) // handler pentru overflow
{   action = 0; // opreste masurarea
    front = 0;  // front crescator
    TCNT1 = 0; // clear tcnt
    cli();
}

Distanta in cm se obtine impartind rezultatul in us (de aceea se imparte la 16) la 58 (valoare data in datasheet). Tot aici se face si verificarea daca este o anumita distanta setata initial (cu o eroare de ±3 cm). Va afisa acest lucru pe ecran.

#define CM 58
#define TIMERCOUNT 0.0625f

int sonic_calc() // calculeaza distanta
{   int rez;
    rez = val1 * TIMERCOUNT;
    rez = rez / CM;  
    if(rez<dist+3 && rez>rez-3) afisare(); // afisare ca este la distanta dist de obstacol
    return rez;
}

Rezultate Obţinute

Proiectul este neterminat… Cred ca este o problema cu placuta…

Concluzii

Pot spune ca a fost o experienta foarte interesanta sa creez un dispozitiv…chiar daca in cazul meu nu a functionat, sa vezi cum, pas cu pas, de la zero ajungi la ceva, este cu adevarat frumos.

Bibliografie/Resurse

pm/prj2011/pgp/sonar.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