Sunteți pe pagina 1din 7

PROIECTAREA SISTEMULUI DE MĂSURARE A TURAȚIILOR

Structura hardware și componentele pe care le-am folosit pentru proiectarea Tahometrului.

 Arduino Uno R3
 LCD 16X2(Ecran cu cristale lichide)
 Potențiometru
 Led infraroșu
 Fotodiodă infraroșu

Arduino Uno R3 este un microcontroler bazat pe ATmega328 (datasheet). Dispune de 14


pini digitali de intrare și ieșire (dintre care 6 pot fi utilizați ca ieșiri PWM), 6 intrări analogice, un
oscilator de cristal de 16 MHz, o conexiune USB, o mufă de alimentare, un antet ICSP și un buton
de resetare. Conține tot ce este necesar pentru a susține microcontrolerul.

 Microcontroller : ATmega328p
 Voltajul de operare : 5V
 Tensiunea de intrare (recomandată) : 7-12V
 Tensiunea de intrare (limite) : 6-20V
 Pini digitali I/O : 14 (of which 6 provide PWM output)
 Pini de intrare anagolică : 6
 Curent continuu pentru pin I/O: 40 mA
 Curent continuu pentru pinul de 3.3V : 50 mA
 Memorie Flash : 32 KB (ATmega328) din care 0.5 KB sunt utilizați de bootloader SRAM 2
KB (ATmega328)
 EEPROM : 1 KB (ATmega328)
 Viteza ceasului : 16 MHZ

Arduino Uno poate fi alimentat prin conexiunea USB sau cu o sursă externă de alimentare. Sursa
de alimentare este selectată automat. Alimentarea externă (non-USB) poate proveni de la un adaptor
AC-DC sau un acumulator. Adaptorul poate fi conectat cu ajutorul unui conector central de 2,1 mm
în mufa de alimentare a plăcii. Conductoarele din baterie pot fi introduse în pinii Gnd și Vin.

Placa poate fi alimentată de la o sursă externă, intervalul recomandat fiind intre 7 si 12


volți.Dacă tensiunea de alimentare este mai mică de 7 volți placa poate fi instabilă,iar daca
tensiunea este mai mare de 12 volți regulatorul de tensiune se poate supraîncălzi si poate deteriora
placa.

*VIN este pinul care se utilizează atunci cand vrem sa alimentăm placa arduino utilizând o
sursă externă de alimentare (spre deosebire de conexiunea prin USB care oferă tensiunea de 5V).

*5V este o sursa de alimentare reglata, utilizata pentru microcontroler si alte componente ale
plăcii.Alimentarea se poate face prin pin-ul VIN,prin intermediul unui USB sau prin altă alimentare
regulată de 5V.
Fig.3.1 Pinii de intrare si ieșire

Fig.3.2 Sistemul si pinii de alimentare

*3V3 este o alimentare generată de regulator.Rezistența curentului maxim este de 50mA.

*GND este pinul de impămantare

Fiecare dintre cei 14 pini pot fi utilizați ca intrare sau ieșire,folosind pinMode(),digital
write(),și digitalRead()functions. Pinii funcționează cu 5V. Fiecare pin in parte poate furniza sau
primi maxim 40mA si are o rezistență internă de 20-50 kOhms.În plus,cațiva pini au funcții
speciale:
 RX este utilizat pentru a recepționa iar TX pentru a transmite date. Aceștia sunt cunectați la
Atmega8U2 USB-to-TTL Serial chip prin pinii corespunzatori.

 Întreruperile externe:2 si 3. Acesti pini pot fi configurați pentru a declanșa o întrerupere la o


valoare mică sau pentru a schimba valorile.

 PWM(pulse with modulation):3,5,6,9,10 si 11. Asigură ieșirea tensiunii variabile pe 8 biți

 SPI(Serial Peripheral Interface) :10(SS - Slave Select), 11(MOSI Master out slave
in),12(MISO Master in slave out),13(SCK Serial Clock). Acesti pini susțin comunicațiile
SPI utilizând librăria SPI

 LED:13.Există un Led incorporat care este conectat la pin-ul 13.Atunci când pin-ul are o
valoare mare,led-u este pornit iar cand pin-ul are o valoare mică led-ul este oprit.

 TWI:Pin-ul A4 sau SDA,Pin-ul A5 sau SCL.Ajută comunicațiile TWI folosind librăria.

LCD-ul este un modul electronic de afișare care folosește cristale lichide pentru a produce
o imagine vizibilă. Ecranul LCD de 16x2 este un modul foarte răspândit si ușor de utilizat,de obicei
fiind utilizat in circuite.16x2 poate afișa 16 caractere pe fiecare dintre cele două linii disponibile.
Fiecare caracter este afișat intr-o matrice de 5 x 7 pixeli.

Fig.3.3 Pinii Lcd-ului


Fig.3.4 Descrierea pinilor afisajului LCD 16x2 caractere

Registrul de comandă stochează instrucțiunile de comandă date pe ecranul LCD. O comandă


este o instrucțiune dată LCD-ului pentru a face o sarcină predefinită, cum ar fi inițializarea acesteia,
ștergerea ecranului, setarea poziției cursorului, controlul afișajului etc. Registrul de date stochează
datele care urmează să fie afișate pe ecranul LCD. Datele reprezintă valoarea ASCII a caracterului
care trebuie afișat pe ecranul LCD.

M-am gândit că cel mai simplu mod de a detecta pauzele în calea luminii era de a folosi un
led infraroșu și o fotodiodă.
Senzorul emite lumină infraroșie și emite un semnal atunci când detectează lumina reflectată.

Fig.3.5 Principiul de funcționare a senzorului

Un senzor infraroșu este alcătuit dintr-un emițător, detector și circuite asociate. Circuitul
necesar pentru a face un senzor infraroșu este compus din două părți; circuitul emițătorului și
circuitul receptorului.
Emițătorul este pur și simplu un led infraroșu(diodă emițătoare de lumină) și detectorul este
o fotodiodă infraroșu care este sensibilă la lumina infraroșie. Când lumina cade pe fotodiodă,
rezistența sa și, în consecință, tensiunea de ieșire, se modifică proporțional cu magnitudinea luminii
primite. Acesta este principiul fundamental al funcționării senzorului infraroșu.

Fig.3.6 Modul de instalare a componentelor


Structura Software

Fig.3.7 Schema logică a algoritmului


După pornirea sistemului se inițializează LCD-ul,variabilele de lucru si pinii
microcontrollerului urmând sa fie afișat mesajul inițial si mesajul de întâmpinare. Ultima inițializare
si cea mai importantă este inițializarea sistemului de întreruperi care v-a determina valoarea
maximă a rotațiilor.

După pornirea motorului și alegerea turațiilor cu ajutorul potentiometrului se apropie de


senzorul format din led-ul infraroșu si fotodioda infraroșu pentru a putea calcula turațiile.

Dacă au fost primite 5 sau mai multe impulsuri ca urmare a apariției întreruperii se execută
funcția RPMCount()) care calculează turațiile istantanee si memorează valoarea in una din cele 5
locații ale variabilei ‘’readings’’.Daca toate cele 5 locații ale variabilei readings au fost ocupate se
calculează media celor 5 valori ,se resetează ‘’readIndex’’ și se afișează valoarea medie pe LCD.

Dacă de la citirea precedentă au trecut mai mult de 5 secunde se șterg datele de pe ecran si
se afișează turația maximă care a fost atinsă.

După alte două secunde după ce a fost afișată turația maximă se afiseăza textul ‘’gata de
măsurare’’,tahometrul fiind pregătit să reia din nou măsuratorile.

rpm = 15*1000/(millis() - time)*REV;

Pentru a calcula numărul efectiv de rotații pe minut, avem nevoie de timpul necesar pentru
o revoluție. Și (millis() - time) este timpul necesar unei singure revoluții.

În acest caz,t să fie timpul necesar pentru o singură revoluție, astfel încât numărul total de
revoluții pe minut în 15 de sec (15 * 1000 milisecunde) este:

Rotații pe minut = 15 * 1000 / t * actualREV => rpm = 60 * 1000 / (milis () - timp) * REV /
4 sau rotații pe minut = 15 * 1000 / (milis () - timp) * REV;

S-ar putea să vă placă și