This is an old revision of the document!


Anemometru

Autor: Stoica Robert-Valentin

Grupa: 333CD

Introducere


Anemometrul este un aparat care masoara viteza vantului. Desi exista mai multe metode prin care aceasta masuratoare poate fi facuta, am ales sa folosesc senzori ultrasonici deoarece sunetul este o unda mecanica. Prin natura sa, sunetul are nevoie de un mediu de propagare, acesta influentand atat viteza cat si amplitudinea/frecventa undei sonore. Pornind de la aceasta idee, putem deduce usor faptul ca viteza sunetului depinde de viteza aerului ce poarta unda sonora, si deci, viteza vantului va avea un impact direct asupra timpului dintre o transmise si o receptie a unui semnal.

In imaginea de mai sus, distanta parcursa de sunet va fi: $\frac{d}{\sin(\alpha)}$, iar viteza de propagare pe directia transmitator-receptor va fi $c + v \cos(\alpha)$, unde:

  • $c$ - viteza sunetului
  • $v$ - viteza vantului

In concluzie, timpul intre o transmisie si o receptie va fi:

$t\_forward = \frac{d}{\sin(\alpha) (c + v \cos(\alpha))}$ sau

$t\_back = \frac{d}{\sin(\alpha) (c - v \cos(\alpha))}$, daca interschimbam transmitatorul cu receptorul.

Din aceste 2 relatii rezulta:

$v = \frac{d}{2 \sin(\alpha) \cos(\alpha)} (\frac{1}{t\_forward} - \frac{1}{t\_back})$

$c = \frac{d}{2 \sin(\alpha)} (\frac{1}{t\_forward} + \frac{1}{t\_back})$

Pentru cazul particular in care $\alpha = \pi / 2$, distanta parcursa de unda sonora va fi chiar $d$.

Descriere Generala


Senzorii ultrasonici functioneaza la o frecventa fixa, fiind nevoie sa generam un PWM de 40kHZ care va servi ca intrare pentru transmitatorul nostru. Deoarece PWM-ul generat este intre 0 si 3V3 iar senzorii au nevoie de o amplitudine a semnalului mai mare, vom folosi drivere de amplificare inainte ca semnalul sa fie transmis.

Odata receptionat, semnalul sonor va fi amplificat cu ajutorul unor AO-uri si legat la ADC-ul microcontrollerului.

Cei 4 senzori vor fi grupati in perechi de cate 2, comunicand pe directii perpendiculare pentru a putea masura viteza pe ambele axe. Pentru a selecta in acelasi timp un transmitator si un receptor, am folosit un multiplexor.

Hardware Design


Schematic

Speakers & Transducers 400PT16M

Acest sistem de diode si rezistente permite folosirea senzorului atat ca transmitator cat si ca receptor, conectand pe rand la GND unul din cei 2 pini ai sai.

Interface IC Multichannel RS-232 MAX3222ECDWR

Datorita condensatoarelor din partea stanga, aceste componente actioneaza ca niste amplificatoare de semnal, marind amplitudinea PWM-ului generat de microcontroller.

Switch ICs Dual 4-Ch SN74LV4052ADR

Multiplexorul joaca un rol esential in functionarea circuitului deoarece el selecteaza pe rand perechile de transmisie-receptie prin intermediul intrarilor A si B.

Operational Amplifiers MCP6487-E/SN

Dupa ce semnlul sonor a fost primit, acesta va fi amplificat pentru a putea fi interpretat de microcontroller.

Nucleo G431KB

Rolul microcontrollerului este acela de a genera semnalul PWM, de a citi raspunsul analogic primit si de a contoriza timpul scurs intre transmisie si receptie. In plus, acesta serveste ca sursa de tensiune si intrare de EN pentru o parte din componente, el fiind responsabil si de selectarea intrarilor multiplexorului.

PCB


Design

Pentru simplitate si eficienta sporita, pe spatele placutei este planul de masa, componentele fiind plasate doar pe partea de top. Pozitionarea componentelor a fost facuta astfel incat sa minimizeze numarul de via-uri, realizand legaturi cat mai scurte si predominant pe partea de top. In ceea ce priveste microcontrollerul, acesta va fi asezat pe conectori pentru a simplifica procesul de debugging. Planul de masa este distribuit uniform, fara a fi sectionat excesiv de traseele de pe bottom, asigurand fiecarei componente o zona suficient de mare pentru descarcare.

Latimea traseelor este de 0.2mm, exceptie facand cele de alimentare care au 0.5mm. Dimensiunile placutei sunt de 70x65mm.

Soldering

pcb_nou.jpeg

Procesul de lipire a fost unul simplu si rapid deoarece am utilizat flux si un stencil pentru a distribui pasta pe pad-uri. Componentele au fost asezate cu penseta dupa care placuta a fost pusa pe plita. Conectorii au fost lipiti separat.

Cand a fost testata placuta, am observat ca microcontrollerul se reseta continuu din cauza unei conexiuni gresite. Asa cum se poate observa si in schenam de mai sus a amplificatorului operational, acesta a fost alimentat invers. Pentru a rezolva aceasta greseala a fost necesara taierea traseelor de Vcc si GND, tragand 2 fire pentru a corecta eroarea.

Software Design


Descrierea Functionala

GPIO

Primul pas este acela de a alege o pereche transmitator-receptor cu ajutorul intrarilor A si B ale multiplexoruiui. Acestea sunt conectate la 2 pini de GPIO ai microcnotrollerului (PB7 si PA11). Pentru partea de selectie, vom utiliza urmatorul tabel din datasheet-ul multiplexorului:

Generarea Semnaluli Sonor

In continuare, timerul 4 va fi utilizat pentru a genera semnalul de PWM pe pinul PB6. Acest PWM va servi ca semnal sonor, avand o frecventa de 40kHZ. Pentru a obtine aceasta frecventa, timerul are ca sursa de ceas clock-ul intern al microcontrollerului (care ruleaza la o frecventa de 170MHZ), un prescaler de 0 si o perioada de 4250, avand un duty cycle de 50%. Pentru a genera un numar de 5 pulsuri, o intrerupere va avea loc de fiecare data cand timerul atinge valoarea 4250. In aceasta intrerupere va fi incrementat un contor. Cand contorul atinge valoarea 5, duty cycle-ul va fi pus pe 0%, oprind astfel transmisia.

Masurarea Timpului Transmisie-Receptie

Timerul 2 este pornit inainte de generarea semnalului sonor pentru a masura timpul dintre transmisie si recepie. Dupa o perioada fixa de timp bine aleasa, timerul va genera o intrerupere marcand faptul ca semnalul receptionat este stabil si gata de citire. Din acest moment se poate face input capture pentru a determina timpul. Deoarece masuratoarea va fi facuta in ambele sensuri, viteza vantului poate fi determinata prin diferenta celor 2 valori de timp. Avand ambele acelasi timp de asteptare, diferenta maxima ce poate fi inregistrata este de o perioada a semnalului generat (25us), acest lucru limitand valoarea maxima ce poate fi masurata de aparat. Pentru o acuratete ridicata, valoarea timerului este salvata pe parcursul mai multor fronturi succesive, ca apoi sa fie facuta o medie ce va reprezenta durata de timp intre transmisie si receptie.

Intregul proces se repeta, utilizand alte perechi de senzori pentru a masura timpul pe ambele axe si in ambele directii.

Testare

Pentru etapa de testare am folosit doar 2 senzori (transmitator receptor) si am incercat sa micsorez cat mai mult erorile de timp generate la masuratori succesive in lipsa vantului.

testare.jpeg

Atat semnalul transmis cat si cel primit au fost afisate oe osciloscop/

osciloscop.jpeg Semnalul mov este PWM-ul generat de microcontroler si amplificat inainte de transmisie. Semnalul galben este cel receptionat. Acesta este un semnal sinusoidal analogic care a fost trecut prin 2 amplificaoare operationale, rezultand un semnal digital. Se poate observa ca acesta creste treptat, si nu este constant la inceput, avand nevoie de o perioada pentru a se stabiliza.

pm/prj2024/iotelea/robert.stoica2205.1715969564.txt.gz · Last modified: 2024/05/17 21:12 by robert.stoica2205
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