În această lucrare voi prezenta pașii parcurși pentru realizarea unei stații meteo ce [613645]

Rezumat

În această lucrare voi prezenta pașii parcurși pentru realizarea unei stații meteo ce
permite afișarea datei , a orei, achiziționarea de valori ale temperaturii, ale umidității și ale
presiunii atmosferice.
Datele valorilor achiziționate se vor face prin intermediul microcontrolerului
ATMEGA328P. Programarea microcontrolerului se v a realiza cu ajutorul med iului de
programare Arduino IDE și a plăcii de dezvoltare Arduino UNO.
Component ele hardware ce vor fi folosite în cadrul lucrării sunt:

 Arduino UNO – utilizat pentru programarea microcontrolerului nostru
 BMP180 – senzorul de temperatur ă și presiune atmosferic ă
 DHT22 – senzorul de umiditate
 DS3231 – circuit integrat RTC
 PCF8574 – expander I2C
 LCD 2004A – utilizat pentru afi șarea datelor

Sumarry

In this paper I present the steps to achieve a weather station that allows to display time
and date, the acquisition the values of temperature, humidity and pressure.
The acquired values will be made through the ATMEGA328P microcontroller.
Progr amming the microcontroller will be done using the Arduino IDE programming
environment and Arduino UNO development board .
The hardware components that will be used in the paper are:

– Arduino UNO – Used to program our microcontroller
– BMP180 – temperature and pressure sensor
– DHT22 – humidity sensor
– DS3231 – Real Time Clock IC
– PCF8574 – expander I2C
– LCD 2004A – Used to display data

2

CUPRINS

Rezumat ………………………….. ………………………….. ………………………….. ………………………….. . 1
Sumarry ………………………….. ………………………….. ………………………….. ………………………….. .. 1
CAPITOLUL I ………………………….. ………………………….. ………………………….. ……………………… 4
INTRODUCERE ………………………….. ………………………….. ………………………….. ………………….. 4
CAPITO LUL II ………………………….. ………………………….. ………………………….. …………………… 10
MONITORIZAREA CLIMEI ………………………….. ………………………….. ………………………….. . 10
2.1. Clima. Fenomene fizice ………………………….. ………………………….. ………………………….. 10
2.2. Senzori și sisteme senzoriale utilizare în monitorizarea climei ………………………….. …. 13
2.2.1. Monitorizarea temperaturii ………………………….. ………………………….. ……………….. 15
2.2.2. Monitorizarea presiunii atmosferice ………………………….. ………………………….. ……. 18
2.2.3. Măsurarea umidității ………………………….. ………………………….. …………………………. 19
2.2.5. Monitorizarea fenomenelor eoliene ………………………….. ………………………….. …….. 21
2.3. MICROCONTROLERE ………………………….. ………………………….. …………………………. 25
2.3.1. Tipuri de arhitecturi ………………………….. ………………………….. …………………………. 26
2.3.2. Unitatea de memorie ………………………….. ………………………….. ………………………… 27
2.3.3. Întreruperile ………………………….. ………………………….. ………………………….. ……….. 27
2.3.4. Porturi de intrare / ieșire ………………………….. ………………………….. …………………… 28
2.3.5. Timer -ul ………………………….. ………………………….. ………………………….. …………….. 28
2.3.6. Convertor Analog Digital (ADC) ………………………….. ………………………….. ………. 28
2.3.7. Watchdog -ul ………………………….. ………………………….. ………………………….. ………. 28
2.3.8. Unitatea principală de procesare ………………………….. ………………………….. ………… 29
2.3.9. Magistrala de date (BUS -ul) ………………………….. ………………………….. ……………… 29
2.4. Microcontroller CISC vs RISC ………………………….. ………………………….. …………… 30
2.4.1. Tipuri de memorii ………………………….. ………………………….. ………………………….. .. 30
2.5 Platforma Arduino UNO ………………………….. ………………………….. …………………………. 31
2.5.1. Comunicarea între microcontroler și periferice ………………………….. …………………….. 33

3
CAPITOLUL III ………………………….. ………………………….. ………………………….. …………………. 35
PROIECTAREA UNEI STAȚII METEO ………………………….. ………………………….. …………… 35
3.1. Structura hardware a stației meteo ………………………….. ………………………….. ……….. 35
3.1.1 Schema bloc a circuitului ………………………….. ………………………….. …………………. 37
3.1.2. Regulatorul de tensiune LM317 ………………………….. ………………………….. ………… 37
3.1.2. Regulatorul de tensiune pentru BMP180 ………………………….. …………………………. 38
3.1.3. Display -ul 2004A ………………………….. ………………………….. ………………………….. .. 39
3.1.4. Circuitul integrat PCF8574A ………………………….. ………………………….. …………….. 39
3.2.3. Realizarea cablajului ………………………….. ………………………….. ………………………… 40
3.2. Monitorizarea ………………………….. ………………………….. ………………………….. ……………. 42
3.2.1. Senzoru l de temperatură și presiune atmosferică BMP180 ………………………….. … 42
3.2.2. Senzorul de umiditate DHT22 ………………………….. ………………………….. …………… 46
3.3. Programarea microcontroller -ului ………………………….. ………………………….. …………….. 48
CAPITOLUL IV ………………………….. ………………………….. ………………………….. …………………. 53
CONCLUZII FINALE ȘI DEZVOLTĂRI ULTERIOARE ………………………….. ……………….. 53
BIBLIOGRAFIA ………………………….. ………………………….. ………………………….. ………………… 54
ANEXA 1 – Schema electrică ………………………….. ………………………….. ………………………….. … 55
ANEXA2 – Codul sursă ………………………….. ………………………….. ………………………….. ……….. 57

4

CAPITOLUL I
INTRODUCERE

În perioada antică ideile privitoare la întâmplările atmosferice aveau caracter
filosofico -descriptiv și se refereau la evenimente cu caracter spectacular, mai ales manifestări
extreme în aspectul vremii și al climei.
Prima lucrare de „specialitate” ce se intitula „Meteorologica” aparținea lui Aristotel,
aceasta apare în secolul IV, anul 364 d. Hr.
Prin preajma anului 1953, Galileo Galilei inventează primul instrument meteorologic
– termometrul, acesta a folosit dilatația și contracția aerului dintr -un glob pentru a mișca apă
dintr -un tub. Prin preajma perioadei respective, viticultorii francezi din zona Bordeau x fac
primele observații referitoare la periodicitatea (ciclicitatea) climei.
După 1856 apare pentru prima dată problema de existență a unor rețele de stații și
posturi meteorologice care să permită supravegherea unor teritorii cât mai vaste. 31 de ani
mai târziu, în anul 1887, se înființează Organizația Meteorologică Internațională (O.M.I.)
care în 1951 devine O.M.M1. În anul 1932, Jacob Bjerkness realizează primul sistem de
înscriere a datelor meteorologice în cadrul hărților, ceea ce a făcut posibilă com unicarea între
meteorologi.
În 1948 se clădește primul ordinator științific, E.N.I.A.C2. cu ajutorul căruia s -a trecut
la un nou concept și noi metode ale prognozelor de vreme N.W.P3. (prognozele numerice).
Ceva mai târziu se lansează primul satelit meteor ologic T.I.R.O.S., cu ajutorul căruia se pun
bazele celui mai complet sistem de observare a atmosferei.

Figura 1. Prima imagine difuzată cu spațiul la TV a fost inregistrată de T.I.R.O.S

1 Organizația meteorologică mondială
2 Electronic numerical integrator and computer
3 Numerical Weather Prediction

5
În România , primele referiri cu privire la evenimente meteo -climatice extreme apar
în „Letopisețul Țării Moldovei”, aici, Grigore Ureche și Miron Costin fac o referire la apele
mari din anul 1504. Dimitrie Cantemir în anul 1584 „Descripțio Moldaviae” – seceta.
În a doua jumătate a secolului al XIX -lea, au fost făcute observații meteorologice regulate de
către chimistul Petru Poni la Iași. După acesta, au urmat o serie de observații efectuate de
intelectuali pasionați, care au înțeles rolul informațiilor meteorologic e.

Sunt cons emnate observații meteorologice conform următoarei cronologii:

– Iași (în anul 1770)
– București (începând cu 1773)
– Sibiu (începând din 1789)
– Cluj (începând cu 1833)
– Sulina (începând cu 1857)
– Giurgiu (începând cu 1863)
– Timișoara (începând cu 1874)
– Galați și la Brăila (începând cu 1878).

Între 18 și 30 iunie, anul 1884, Ștefan Hepites pune bazele Serviciului Meteorologic
al României , devenind una dintre cele mai vechi instituții cu caracter științific din România.
Tot in acelasi an, România, împreună cu alte țări, pune bazele Organizației Meteorologice
Mondiale (World Meteorological Organization – WMO).
În anul 1889 se înființeaza Serviciul de Măsuri și Greutăți , iar mai târziu a fost deschisă și o
secție de magnetism terestru și seismologie.

Rețeaua de stații si posturi meteorologice din România, A.N.M.:

În țara noastră, activitatea de supraveghere și cercetare a atmosferei se desfășoară pe
baza unui sistem , capabil să facă posibilă măsurarea elementelor meteorologice, cuantificarea
sau efec tuarea observațiilor, dar și pentru stabilirea calitativă a aerului pentru diferite spații
geografice. În cadrul acestui sistem, programele naționale A.N.M4. sunt subordonate
directivelor O.M.M. .
Primele stații meteorologice din România au început să fun cționeze în secolul al XIX –
lea, în anul 1859 înființându -se astfel stația meteorologică de la Sulina în cadrul Comisiei
Dunărene.
Câțiva ani mai târziu se înființează stații meteorologice în orașele :

4 Administrația Naționala de Meteorologie

6
– Bistrița, în anul 1864 ;
– Reghin – 1868 ;
– Baia Mare, Orșo va – 1871 ;
– Târgu Mureș – 1878 ;
– Miercurea Ciuc, Timișoara – 1873 ;
– Odorhei în 1874 ;
– Alba Iulia în 1875 , etc.

Între 1884 și 1904 se clădesc 66 de stații climatologice și 384 de posturi
pluviometrice5 în zona montană. Primul război mondial a dus la distrugerea unei părți din
rețeaua stațiilor meteorologice, producându -se astfel o întrerupere a datelor meteo pentru anii
1916 -1926. Stația de la Sulina și cea de la Bucuresti -Filaret au fost singurele staț ii ce și -au
păstrat continuitatea observațiilor.
Într-o perioadă de un an de zile, între anii 1926 și 1927, are loc o reorganiza re a rețelei de
stații meteorologice, fapt ce duce la reluarea activitati lor de observație .
Nouă an mai târziu după 1927, 30 de stații sinoptice, 180 de stații climatologice și 1100
puncte pluviometrice își reiau activitatea. După cel de -al doilea război mondial, pe masivele
montane Rarău, Toaca, Lacauti, Vl ădeasa și Tarcu se înființează stații meteorologice.

Figura 2. Stația meteo de la Vlădeasa

În anul 1951, România asist ă ca membru fondator la primul Congres al Organizației
Meteorologice Mondiale, organizație specializat ă a ONU6.
Astăzi, in structura rețelei avem:

5 Utilizate pentru dete rminarea cantității de precipitații atmosferice scăzute
6 Orgranizația Națiunilor Unite

7
– 125 de stații cu program sinoptic;
– 123 stații cu program climatic ;
– 3 stații de radiosondaj7 (București – Baneasa, Constanta, Cluj -Napoca) ;
– 7 stații radar ( București , Constanta, Iași, Cluj -Napo ca, Oradea, Craiova, Timișoara);
– 23 de stații cu platforme pe ntru sondajul cu balonul pilot;
– 6 stați i cu program de radi oactivitate;
– 55 de stații cu program agrometeorologic ;
– 8 stații cu program actinometric ;
– stație pentru analiza datelor transmise de sateliții meteorologici si una pentru
măsurarea electricit ății (București – Afumați). (Pop)

Stațiile meteorologice

O stație meteorologică reprezintă un ansamblu de clădiri și instalații aparținând
rețelei hidrometeorologice în care se fac observații directe asupra fenomenelor
meteorologice, climatice și hidrologice de bază și o prelucrare primar ă a datelor.[ 2]

Figura 3. Exemplu de stație meteorologica
Stația meteorologică de la Băneasa

7 Explorare a păturilor superioare ale atmosferei cu ajutorul unei sonde

8

Figura 4. Adăpost meteorologic

Adăpostul meteorologic este o construcție specială din lemn, menită să protejeze
instrumentele și aparatele meteorologice din interior împotriva radiațiilor solare, a
precipitaților atmosferice, a vântului, etc.
Constuctiv, acoperișul acestuia este dublu, pereții laterali sunt de f orma unor jaluzele
inclinate la un unghi de 45ș, înclinație ce permite aerului din interior să fie ventilat, podeaua
acestuia este compusă din două scânduri dispuse în cruce, peste care se așează o bucată de
plasă de sârmă.
Adăpostul este vopsit în alb la exterior pentru a reflecta radiația solară, și în negru la interior
pentru a atrage radiația solară.
Ca regulă, poziționarea acestuia trebuie să fie pe un teren drept, la distanță de clădiri sau alte
surse ce pot influența datele achiziționate de senzori.

Instrumente meteorologice

– Termometrul – Este utilizat pentru măsurarea temperaturii aerului atmosferic;
– Barometrul – Se folosește la măsurarea presiunii atmosferice;
– Higrometrul – se folosește la masurarea umidității;
– Anemometrul – măsurarea vitezei vân tului;
– Giureta – se determină direcția și intensitatea vântului;
– Pluviometrul și pluviograf – pentru măsurarea precipitațiilor lichide, pe o anumită
perioadă de timp.

9
Modul de efectuare a observațiilor meteorologice si a masuratorilor la stații:

Pentru ca valorile măsurate din observațiile meteorologice să poată fi comparate între
ele, platformele meteorologice și instrumentația utilizată trebuie să corespundă unor cerințe
universal recunoscute. Astfel, O.M.M. a implantat o serie de măsuri pentru standardizarea
instrumentelor și metodelor de observații în toate țările care au aderat la această organizație.
Aparatura trebuie instalată în așa fel încât să nu se influențeze reciproc, să fie etalonată, astfel
încât precizia valorilor să fie cât mai mar e.
Observațiile meteorologice la stații asupra elementelor și fenomenelor meteorologice
se efectuează pe cale vizuală și pe cale instrumentală.

Nr.crt Categoria Interval de achiziție și transmitere a
datelor Tipuri de mărurători
efectuate
1. Sinoptică Din 2 in 2 ore sau din 3 in 3 ore (ora
locală)
Măsurători asupra tuturor
elementelor meteorologice
2. Climati că Din 6 in 6 ore (1,7,13,19, ora locală)
3. Actinometric ă Ora 0, 6, 9, 12, 15, 18 (ora local ă) Măsurători pentru
determinarea componentelor
fluxului radiativ solar
4. Agrometeorologică Din 6 in 6 ore (1,7,13,19, ora locală) Măsurători asupra
temperaturii aerului si
solului, umezelii aerului, a
rezervei de apa accesibile
plantelor, fenometriei8,
fenologiei9, etc.
5. Radar Din oră in oră Măsoară evolutia vremii și
are ca scop avertizarea
producerii unor fenomene
periculoase
6. ATP10 La 6 sau la 12 ore Primesc informații
7. Cu program speci al La amiază, radioactivitatea și
electricitatea. Ozonul – interval de 3
ore (9, 12, 15, ora locală) iar noxele
de la o jumătate de oră la o lună Se fac determinări asupra
electricității aerului, solului,
vegetației, concentrației de
ozon si noxe11

Tabelul 1: Categorii de observații meteorologice și programul lor

8 Înălțimea și densitatea plantelor, grosimea tulpinii, lungimea, diametrul frunzelor etc.
9 Succesiunea fazelor de vegeta ție
10 Receptoare ale datelor transmise de catre sateliții meteorologici
11 Impurități si gaze nocive ce au un impact negativ asupra oamenilor și asupra

10

CAPITOLUL II
MONITORIZAREA CLIMEI
2.1. Clima. Fen omene fizice

Clima poate fi definită ca fiind dinamica tuturor fenomenelor meteorologice din
atmo sferă dintr -un anumită locație sau regiune de pe glob, într -un interval riguro s de timp . În
funcție de repartiția diferită pe glob a radiației solare, a uscatului și a apei, precum și a
mișcărilor maselor de aer, există: clima ecuatorială, clima subecuatorială, clima tropicală,
clima subtropicală, clima temperată, clima subpolară și clima polară.
Poziția relativă a Pământului față de soare împreu nă cu variația constituenților gazoși și a
aerosolilor din atmosferă determină schimbări în intensitatea și distrubutia căldurii la
suprafata terestră. Albedoul planetar definește masura în care energia solară primită este
reflectată în spațiu. O mare part e din albedoul planetar se datorează norilor.

Componentele geosistemului ce prin interactiune definesc starea climatică sunt:

– atmosfera;
– oceanul planetar;
– criosfera (zăpada, gheaț a marină și ghețarii continentali);
– litosfera (continentele);
– biosfera

Atmosfera are în compoziția sa gaze precum:
– azot – 78%
– oxigen – 21%
– dioxid de carbon, heliu, argon și neon – 1%

Amestecul de gaze formează patru straturi principale: troposfera, stratosfera, mezosfera și
termosfera.
Troposfera este cel mai subțire și mai cald strat, acest lucru se datorează razelelor solare
ce se reflectă în suprafața Pământului și încălzesc aerul. Acest strat se termină la distanta de
aproximativ 12 km deasupra Pământului.
Pe măsură ce ne îndepărtăm de Pământ, temperatura aerului sca de treptat, la limita
troposferei fiind în jur de -55 de . Următorul strat ce se întinde până la inaltimea de 50 de
km deasupra Pamantului este stratosfera. La limita superioară a acesteia se află o concentrare

11
crescută de ozon, numită scut de ozon. Aici temperatura este mai ridicată decât în troposfera
fiindcă razelor ultraviolete sunt absorbite într -o mare parte de către ozon.
Mezosfera se întinde la 50 -70 km de Pământ, deasupra stratosferei. Deasupra acesteia este
mezopauza, stratul cel mai rece al atmo sferei (tempeatura este de aproximativ -90 ). În
acest strat se formează norii de gheață.
Termosfera se află la limita spațiului cosmic, acesta se află la o distanță de aproximativ
100
km de Pământ, fiind compusă din ionosferă și magnetosfera. În ionosferă radiațiile solare
produc o încărcare electrică a particulelor. Atunci când aceste particule încărcate se lovesc de
atmosferă, se poate forma un fenomen numit aurora boreală12. Ionosfera reflectă undele radio
folosite în telecomunicații. Deasupra i onosferei se află magnetosfera. Aceasta este limita
exterioară a câmpului magnetic al Pământului. Se comportă ca un magnet uriaș deoarece
reține particulele cu energie ridicată, ferind Pământul de ele. Termosfera are cea mai scăzută
densitate decât toate s traturile. Densitatea exprimă de fapt distanta dintre particulele aflate
într-o materie. Cu cât ne îndepărtăm de Pământ, densitatea va fi tot mai mică, adică distanta
dintre moleculele de gaz va fi din ce în ce mai mare. La suprafața Pământului moleculele sunt
foarte apropriate, iar la marginea termosferei , foarte îndepărtate. Exosfera se afla la limita
superioară a atmosferei, aici, aerul are o densitate atât de mică, încât se trece în spațiul
interplanetar fără o limită evidentă.

Soarele joacă un rol important în sistemul climatic, emițând radiația solară care
încălzește Pământul. Energia solară în regiunile ecuatoriale este foarte puternică, intensitatea
radiațiilor solare începe să scadă către poli. Faptul acesta determina tipurile de circulație a
vânturilor și curenților oceanici, fapt pentru care dezvoltarea sistemelor climatice este
influențată.

Atmosfera are ca rol să mențină temperatura favorabilă vieții pe Pământ prin
ecranarea razelor dăunătoare ale Soarelui. Atmosfera acționează ca o "magazie" pentru
diferite gaze și particule datorită straturilor multiple din care aceasta este compusă . Atât
modul în care aerul circula dar și structura atmosferei au un efect considerabil asupra climei
și a sistemelor climatice, dar și asupra regimului de precip itații. Atmosfera Pământului are în
componen ța sa 78% azot, 21% oxigen și 1% gaze .

Apa, indiferent de formă, are un rol complex asupra proceselor climatice. Cantitatea
medie de precipitații (zăpadă sau ploaie) pe care o zonă o primește este o componentă
climatică foarte importantă. Prin evaporare, a pa ajută la s căderea temperaturii suprafat ei,
reflectă energia solară (apă sub formă de nori sau straturi de gheață) și menține Pământul cald

12 Lumina polară

12
(prin vapori de apă).Pădurile, deșerturile și munții pot influența atât clima globală cât și pe
cea regională. Solul se încălzește și se răcește mai repede decât apa, fapt ce afectează cursul
curenților de aer și formarea sistemelor climatice. Tipul de suprafață terestră influențează
cantitatea de energie solară care este reflectată sau absorbită de Pământ. Zonele albe, precum
cele înzăpezite, reflectă razele solare, în timp ce zonele întunecate absorb mai multă căldură.

Oceanele au ca acoperire aproximativ trei sferturi din suprafața Terrei. Apa se
încălzește și se răcește mai încet decât aerul, fapt ce reduce climatul din zonele de coastă.
Curenții oceanici joacă un rol important în distrubiurea căldurii pe glob prin punerea în
mișcare a apelor reci către ecuator și a celor tropicale către poli, astfel, oceanele influențează
considerabil climatele regionale. Oceanele sunt și un depozit important de carbon și joacă un
rol important în absorbția unei părți a dioxidului de carbon antropogenic.

Efectul de seră este un proces natural prin care atmosfera terestră reține o parte din
energia trimisă de Soare către Terra. Efectul de sera este produs de gazele ce perm it radiației
solare să treacă prin atmosferă și să atingă Pământul dar captează o parte din radiația
infraroșie emisă de suprafața Pământului și de straturile inferioare ale atmosferei și o reemite
în atmosferă. Efectul se numește efect natural de seră și contribuie la creșterea temperaturii
planetei cu aproximativ 330 față de temperatura care ar fi înregistrată în absența gazelor cu
efect de seră. Aceasta face posibilă viața și existența organismelor vii în forma în care o
cunoaștem noi azi.

Gazele cu e fect de seră : există cinci gaze care apar în mod natural ce provoacă
efectul de seră: metanul, protoxidul de azot și ozonul, dioxidul de carbon, vaporii de apă.
Concentrația acestor gaze în atmoferă este influențată de activitatea umană .

Vaporii de apă contribui e cel mai mult la efectul natural de seră. Cantitatea de vapori
de apă din atmosferă crește proportional cu temperaturile de la suprafața Terrei , dar fiind că
temperaturi mai ridicate măresc atât evaporarea cât și capacitatea aerului de a îngloba vapori
de apă (vaporii de apă execută un ciclu complet prin atmosferă destul de repede, aproximativ
o dată la opt zile în medie). Astfel, chiar dacă oamenii nu influențează direct și semnificativ
cantitatea de vapori de apă din atmosferă, temperaturile în creștere (datorate și activităților
umane) vor determina mărirea concentrației vaporilor de apă în atmosferă. Pe de altă parte,
trebuie ținut cont și de faptul că suprafata norilor reflectă radiația solară înapoi în spațiu. În
acest sens, albedoul – reflectarea radiațiilor solare de către sistemul Pământ plus atmosfera sa
– creează dificultăți în efectuarea unor calcule exacte. Dacă, spre exemplu, calotă glaciară s -ar
topi, albedoul s -ar reduce semnificativ. Întinderile de apă și vaporii de apă absorb cald ura, în
timp ce gheața și zapada o reflectă.

13
Bioxidul de carbon este degajat în atmosferă prin arderea combustibililor fosili și a
altor materiale. Datorită plantelor, el este parțial îndepărtat din atmosferă prin procesul de
fotosinteză și prin absorbția în oceane. Creșterea concentrației de dioxid de carbon din
atmosferă este considerată determinantă pentru tendința actuală de încălzire.

Metanul este mai eficient în procesul de reținere a căldurii, ceea ce îl face un GES13
foarte puternic. Este degajat atunci când materia organică putrezește într -un mediu lipsit de
oxigen. Principalele surse de metan sunt mlaștinile, câmpurile de orez, procesele digestive
animale, extracția de combustibili fosili și deșeurile putrezite. Protoxidul de azot provine în
principal din soluri și oceane. O parte este degajată de arderea combustibililor fosili și a
materialului organic. Cultivarea terenurilor și utilizarea îngrășămintelor contribuie la
creșterea cantității de protoxid de azot din atmosferă. Este un gaz cu efect d e seră puternic,
prezent însă în concentrații foarte mici.

Ozonul are un rol important în protejarea Pământului de razele ultraviolete ale
Soarelui, el se găsește în stare naturală în stratosferă14. O mai mare parte a ozonului din
troposferă15 este rezultatul unor reacții chimice ce implică agenți poluanți. Rolul său în
schimbările climatice este semnificativ, complex și dificil de cuantificat.

Halocarburile (sau cloroflorocarburile) reprezintă u n grup de substanțe chimice ce
sunt produse d e oameni , acestea conțin halogeni și carbon , majoritatea având la bază clorul.
CFC16-urile sunt substanțe folosite la spray -uri, agenți de răcire și solvenți. Halocarburile au
un impact dăunător asupra stratului de ozon stratosferic. [3]

2.2. Senzori și sisteme senzoriale utilizare în monitorizarea climei

Traductoarele sunt dispozitive capabile să capteze variația unui parametru din tr-un
sistem prin emiterea unui semnal specific ce este corelat cu mărimea parametrului respectiv.
Traductoarele au rolul de a transforma anumiți parametri ai sistemului in marimi de alta
natura. Parametrul de transformat formeaz ă semnalul de intrare al traductorului, iar cel
transformat semnal de ieșire.
Pentru a alege un sensor potrivit, trebuie să ținem cont de o multitudine de parametrii
precum: greutatea, dimensiunea, natura semnalului de ieșire, complexitatea lanțului de
prelucrare a acestuia, domeniul de măsurare, costul, gradul de protecție electrică, rezoluția,

13 Gaze cu efect de seră
14 Atmosfera superioară a Terrei
15 Atmosfera inferioară a Terrei
16 Cloroflorocarburi

14
repetabilitatea, precizia, precu m și sensibilitatea. În unele situații, definirea anumitor
caracteristici (rezoluție, sensibilitate și precizie) poate reprezenta o problemă deoarece
senzorul poate avea unul sau mai multe traductoare, la care se pot adăuga circuite electronice
de achiziți e, prelucrare și evaluare a semnalelor.
Există și senzori care funcționează pe baza unor principii diferite având caracteristici
specifice grupei din care fac parte. [4]

Caracteristicile senzorilor:

a) Caracteristici ale mărimilor măsurate:

– intervalul de măsurare;
– domeniul de măsurare;
– timp de recuparare.
– capacitate de supraîncarcare;

b) Caracteristici electrice:
– natura semnalului (analogic sau digital);
– tensiuni de alimentare.
c) Caracteristici mecanice și constructive
d) Caracteris tici ale influenței factorilor de mediu:
– influența umidității;
– influența temperaturii;
– influența accelerațiilor.
– influența vibrațiilor și șocurilor;

e) Caracte ristici în regim static:
– rezoluție;
– sensibilitate;
– caracteristica statică histerezis;
– repetabilitate;
– prag de sensibilitate.
f) Caracteristici în regim dinamic:
– timp de răspuns;
– frecvența de rezonanță;
– caracteristica de frecvență.
g) Caracteristici funcționale (dimensiune, greutate și cost)
h) Caracteristici de flexibilitate și sigur anță în funcționa re:
– timp de funcționare;

15
– grad de protecție electrică;
– protecție la condiții de climă.

2.2.1. Monitorizarea temperaturii
Temperatura este o mărimea neelectrică ce caracterizează gradul de încălzire al
corpurilor. În automatizări există o varietate de senzori folosiți datorită gamei largi de
temperatură care se măsoară. Scalarea și indicarea se face în °C, °F, °K. Senzorii deduc
temperatura din schimbări într -o caracteristică fizică, de regulă neliniară.[ 5]
Eroarea de măsură se datorează în primul rând defectelor de schimb de căldură între
senzor și mediu. Evaluarea erorii de masurare se face prin calculul raspunsului senzorului,
această eroare fiind cu atât mai mică cu cât conducția termică senzor -corp este mai mare. O
altă sursă de eroa re poate să apară datorită curentului propriu care trece prin senzor (mai ales
în cazul traductoarelor parametrice) acesta ducând la încălzirea senzorului.[ 5]
Există și o varietate de fenomene care stau la baza funcționării senzorului.
Conversia temp eratură – mărime electrică se realizează pe baza efectelor produse de câmpul
termic asupra diferitelor materiale conductoare sau semiconductoare.
Modificarea temperaturii determină modificări ale unor proprietăți sau
caracteristici ale m aterialelor cum sunt: variația dimensiunilor geometrice, variația rezistenței
electrice, apariția unei tensiuni electromotoare de -a lungul joncțiunii a două metale, variația
intensității radiaței emise, variația frecvenței de rezonanță a unui cristal de cu arț etc.
Acuratețea procesului de măsurare a temperaturii este foarte importantă pentru cele mai multe
aplicații de control a diferitelor procese tehnologice.

Efectele produse de temperatură asupra diferitelor corpuri cu care vin în contact direct
sau indirect sunt: dilatarea corpurilor, creșterea presiunii unui gaz (la volum constant),
creșterea volumului (la presiune constantă), modificarea proprietăților magnetice în cazul
unor materiale magnetizabile, apariția și variația unei tensiuni electromotoar e (pentru senzori
activi), variația intensității și a spectrului radiației emise de corp, precum și modificarea
frecvenței de rezonanță a materialului.[ 6]

Există două metode de măsurare a temperaturii :

– măsurarea fară contact – se face cu un instrument o ptic prin care se vizează zona de
măsurat. Energia pe care obiectul vizat o radiază este captată de aparat.

16
– măsurare cu contact – se face cu ajutorul unui captator detector sau sondă. Acesta se
plasează în locul unde urmează să se măsoare temperatura.

Măsurarea temperaturii aerului se face cu ajutorul termometrului meteorologic sau cu
ajutorul unor senzori. Termometrul funcționează pe baza unor proprietăți ale corpurilor
lichide sau solide de a -și mări sau micșora volumul în raport cu variațiile temice.
Lichidele termometrice cele mai folosite în practică sunt: mercurul, alcoolul si toluenul.

Tip lichid Punct de îngheț Punct de firbere
Mercur -38,83 356,73
Alcoolul -117,3 78,5
Toluenul -95 110,56
Tabelul 2. Termometre uzuale cu lichid

Intervalul dintre cele doua puncte termice (temperatura de fierbere a apei distilate la
presiune normală și temperatura de topire a gheții) reprezintă scara termometrică , intervalul
împărțit într -un număr variabil de părți egale, fiecare dintre ele repreze ntând un grad de
temperatură.
Există o largă varietate de senzori de temperatură pe piață în zilele de astăzi , inclusiv
termocuple, detector rezistiv de temperatură (RTD – Resistance Temperature Detector),
termistori, infraroșu și senzori semiconductori.
Detectorul rezistiv de temperatură sau RTD este un dispozitiv de detectare a
temperaturii a cărei rezistență se schimbă cu temperatura. În mod obișnuit este construit din
platină, deși dispozitivele fabricate din nichel sau cupru sunt mai puțin frecvente, el poate
avea mai multe forme diferite. Pentru a măsura un RTD, se aplică un curent constant, se
măsoară tensiunea rezultată și se determină rezistența.

Figura 5. Resitance Temperature Detector (RTD)

17
Asemanător cu RTD, termistorul este un dispozitiv de detectare a temperaturii a cărei
rezistență se modifica odată cu temperatura , în funcție de tip (NTC17 sau PTC18). Cu toate
acestea, termistoarele sunt realizate din materiale semiconductoare. Rezistența se determin ă
în același mod ca și la RTD, dar termistorii produc o caracteristică de rezistență foarte
neliniară față de curba de temperatură. Astfel, după ani de funcționare a termistoru lui, în
domeniul său de lucru v om avea o schimbare mare de rezistență la o schim bare foarte mică a
temperaturii. Acest lucru face să fie un dispozitiv extrem de sensibil.

Utilizarea și construcția termocuplurilor se face pe baza unor legi:

– Legea circuitului omogen : într -un circuit omogen (conductoare de aceeași natură) nu
apare tensiune electromotoare, indiferent de diferența de temperatură dintre diferite
puncte. Aceasta permite utilizarea unor conductoare de legătură. [ 7]
– Legea metalelor intermediare: într-un circuit izoterm (T = ct) nu se generează
tensiune termoelectromotoar e indiferent de natura elementelor care formează
circuitul. Aceasta permite ca lipirea conductoarelor să se facă cu un alt material,
respectiv ca joncțiunea rece să fie formată și din circuitul de măsurare, cu condiția ca
elementele să fie la aceeași tempe ratură. [ 7]
– Legea metalelor succesive: tensiunea termoelectromotoare generată de un termocuplu
format din conductoarele A și B este egală cu diferența tensiunilor
termoelectromotoare generate de termocuplele formate din conductoarele A și C
respectiv C și B, cu condiția ca diferența de temperatură a joncțiunilor să fie aceeași.
Pe baza acestei legi se face etalonarea termocuplurilor.
– Legea temperaturilor intermediare: tensiunea termoelectromotoare obținută pentru
diferenta de temperatură T2 – T1 este egal ă cu suma tensiunilor termoelectromotoare
obținute pentru diferențele de temperatură T2 – T3 și T3 – T1. Aceasta permite
realizarea corecțiilor la schimbarea temperaturilor de referință. T2 – T1 = (T2 – T3) +
(T3 – T1). [ 7]

17 Negative Temperature coefficient
18 Positive Temperature coefficient

18
2.2.2. Monitorizarea presi unii atmosferice

Presiunea atmosferică reprezintă presiunea exercitată de aerul din atmosferă asupra
scoarței terestre. Atmosfera, care înconjoară globul pământesc, exercită o presiune anumită
asupra suprafeței pământului și asupra tuturor oamenilor, animalelor și obiectelor, care se află
pe el. Presiunea se măsoară cu barometrul și valoarea ei poate fi exprimată în mai multe
unități de măsură, cel mai adesea în milimetri coloană de mercur (torr), dar și
în kiloPascali sau atmosfere.[ 8]

Figura 6 . Grafic cu indice de confort presiune atmosferica

La măsurarea presiunii sunt întâlnite mai multe situații:

– măsurarea presiunii în raport cu vidul absolut din care rezultă presiunea absolută
– măsurarea diferenței de presiune față de cea atmosferică din care rezulta presiunea
relativă
– măsurarea diferenței de presiune față de o valoare de referință convențională aleasa de
utilizator, din care rezulta presiunea diferențială.

Traductoare de presi une integrate

Senzorul și adaptorul sunt integrate într -un singur ansamblu. Avantajele acestora sunt:
domenii de presiune mari, precizie sub 1%, sensibilitate sub 0,5%, eroare de neliniaritate
<0,1%, alimentare cu tensiune continua, bandă largă de frecve nțe, imunitate la șocuri și
vibrațîî mecanice, dimensiuni reduse, instalare și exploatare simplă, cuplare ușoară cu alte
sisteme de măsurare. [ 9]

Traductoare de presiune cu senzori elastici

Acestea conțin elemente elastice care convertesc presiunea în deformație elastică a
unor corpuri de formă specială. Senzorii utilizați sunt: tub simplu curbat, tubul spiral,
membrana simplă sau dublă și tip burduf.
Membranele sunt plăci elastice de grosim e mică, de formă circulară, încastrate la
extremitate pe un contur. Sub acțiunea presiunii aplicate pe o față se produc deformații

19
măsurabile. Membranele spot măsura presiuni de la cățiva mm de apă până la sute de
atmosfere. După forma constructivă, membra nele sunt plane și sferice.
2.2.3. Măsurarea umidității

Umezeala sau umiditatea aerului se caracterizată prin conțin utul de vapori de apă
existenți în atmosferă. Este o însușire relevantă a aerului atât din punct de vedere bioclimatic
cât și meteorologic.
Raportul de umiditate are o importanță deosebită din punct de vedre meteorologic
deoarece vaporii de apă influențează bilanțul radiativ -caloric al aerului, prin absorbția
radiațiilor de undă lungă iar prin condensare generează norii, ceața, precipitațiile lichide și
solide.
Cantitatea de vapori de apă din atmosferă se exprimă prin diferiți parametri sau
mărimi fizice, cum sunt:

– Tensiunea vaporilor de apă sau forța elastică reprezintă presiunea parțială ce revine
vaporilor de apă dintr -un volum de apă. Ea se exprimă în milimetri coloană de mercur
sau în milibari (hectopascali).

– Umezeala absolută reprezintă cantitatea de vapori de apă pe care o conține 1m³ de aer
la o anumită temperatură. Referindu -ne la unitatea de volum, umezeala absolută este
în realitate densitatea vaporilor.

– Umezeala specifică reprezintă cantitatea de vapori de apă pe care o conține 1 kg de
aer umed, exprimată în g/kg.

– Umezeala relativă este mărimea care reprezintă cel mai bine gradul de saturație a
aerului cu vapori de apă. Ea indică în procente, cât din cantitatea vaporilor de apă
necesară condensării există la un moment dat în atmosferă. În funcție de valoarea
umidității relative, aerul se caracterizează din punct de vedere higrometric astfel:

>100% – suprasatura t;
100% – saturat;
91-99% – foarte umed;
81-90% – umed;
51-80% – normal;
31-50% – uscat;
<30% – foarte uscat.

20

– Temperatura punctului de rouă reprezintă temperatura la care vaporii de apă
ajung să satureze aerul. După atingerea stării de saturație, orice scădere de
temperatură va fi însoțită de condensarea vaporilor de apă, care fiind în exces se
vor depune sub formă de rouă. Se exprimă în grad e Celsius.

– Deficitul de saturație reprezintă diferența dintre tensiunea maximă a vaporilor de apă
și tensiunea reală la un moment dat.

– Deficitul psihrometric reprezintă diferența dintre temperatura indicată de termometrul
uscat și cea indicată de termometrul umezit al unui psihrometru.

– Starea higrometrică reprezintă raportul dintre greutatea vaporilor de apă și greutatea
aerului uscat dintr -un metru cub de ae r.

Instrumente de măsurare a umidității aerului

a) Senzori capacitivi de umiditate

Acest tip de senzori au aplicabilitate mare în industrie și funcționează pe baza
modificării capacității unui condensator, care are ca dielectric materialul a cărei umiditate
este măsurată.
Senzorii capacitivi de umiditate se folosesc la măsurarea umidității relative, caract erizându -se
prin:
– stabilitate bună în timp;
– precizie bună;
– rezistență foarte bun ă la agenți chimici și la praf.

b) Senzorii de umiditate cu microunde

Senzorii de umiditate cu microunde funcționează pe baza variației gradului de
atenuare a microundelor aflate în materialele umede. Pe domeniul lungimilor de undă din
intervalul 1mm și 1m, fenomenul de absorbție a microundelor în materialele umede este mai
accentuat.
Senzorul conține un emițător de înaltă frecvență și un receptor. Între emițător si receptor se
pune materialul de măsurat iar receptorul determină gradul de atenuare a microundelor, iar
acesta depinde de gradul de umiditate al materialului stud iat.
Pentru măsurarea gradului de umiditate a gazelor se folosesc higrometre, care se realizează cu
traductoare rezistive și funcționează pe baza modificării rezistivității gazului.

21

c) Senzori rezistivi de umiditate

Senzorii rezistivi de umiditate sunt utilizati pentru măsurarea umidității relative.
Măsurarea acestor senzori se bazează pe micșorarea rezistenței materialului odata cu
creșterea de apă (umiditate) conținută. Acești senzori sunt formați din doi electrozi între care
se află rezistența de masurat.
Comportamentul senzorilor rezistivi este influențat de temperatura ambiantă și
necesită un factor de corecție. Aceștia au o stabilitate bună în timp și au un cost redus.
Senzorii de umiditate cu microunde funcțio nează pe baza variației gradului de atenuare a
microundelor aflate în materialele umede. Pe domeniul lungimilor de undă din intervalul
1mm și 1m, fenomenul de absorbție a microundelor în materialele umede este mai accentuat.
Senzorul conține un emițător d e înaltă frecvență și un receptor. Între emițător si
receptor se pune materialul de măsurat iar receptorul determină gradul de atenuare a
microundelor, iar acesta depinde de gradul de umiditate al materialului studiat.
Pentru măsurarea gradului de umidita te a gazelor se folosesc higrometre, care se
realizează cu traductoare rezistive și funcționează pe baza modificării rezistivității
gazului. [10]

2.2.5. Monitorizarea fenomenelor eoliene

Curenții de aer se pot defini ca fiind o componentă a mi șcării orizontale a aerului.
Pentru determinarea vitezei și direcției aerului , la stațiile meteorologice se folosește cel mai
frecvent girueta Vild.
Aceasta are trei componente principale:
– componentă pentru indicarea direcției vântului – este f ormată dintr -o tijă din metal,
orizontală , prevăzută la un capăt cu o sferă metalică, iar la celălalt cu două plăci, tot
metalice (pana de vânt), acest dispozitiv orientându -se cu contragreutatea în direcția
din care bate vântul;
– componentă pentru indicarea valor ii vitezei vântului – este construită dintr -o placă
metalică suspendată în partea superioară ( este orientată permanent perpendicular pe
direcția vântului ), ce se poate roti sub acțiunea vântului în fața unui arc ce este
prevăzut cu indicatori pentru valoa rea vitezei acestuia.
– componentă pentru indicarea punctelor cardinale – formată dintr -o multitudine de
tije metalice subțiri, plasate în plan orizontal, cu nordul marcat.

22
Pentru determinări locale ale vitezei aerului, sunt folosite anemometrele
Anemometr ele pot fi :
– termice
– mecanice
– magnetice

Anemometrele mecanice

Figura 7 . Anemometru mecanic

Acest tip de anemometru este unul dintre cele mai simple, asta fiindcă este alcătuit
dintr -un sistem de cupe ce sunt orientate cu fețele concave ale cupelor în aceeași direcție cu
vântul, putându -se roti sub acțiunea sa. Mișcară de rotație a sistemului este transmisă unui
instrument al cărui ac va indica deplasarea prin numărul de rotații efectuate pentru un interval
de timp al măsurătorii.

Anemometru mecanic modern

Figura 8. Anemometru mec anic modern

23

Sensorul de direcția vântului este în pefect balans cu o contragreutate de aluminiu
protejat ă cu polimeri. Anemometrul este construit dintr -un plastic special protejat de radiațiile
solare.Ansamblul este un ul standard de înaltă acuratețe. Se pot utiliza și în construcții de
clădiri înalte, poduri, se pot echipa macarale și alte utilaje sensibile la acțiunea vântului. Se
utilizează și în construcția și monitorizarea releelor de telefonie, televiziune, etc .

Anemometrele magnetice

Figura 9 . Anemometru mecanic

Funcționarea acestor anemometre se bazează pe fenomenul de inducție. Ele prezintă
în partea inferioară a sistemului de cupe un sistem de magneți permanenți , dispuși pe două
cercuri concentrice, cu pol ii diferiți față în față .
Prin rotirea sistemului de cupe, ce va antrena și sistemul de magneți, se creează un
câmp magnetic rotitor ce va acționa asupra unei piese metalice prevăzută cu un ac indicator.

Anemometrele termice

Anemometrele termice se b azează pe răcirea produsă de curenții de aer asupra unui fir
încălzit, fiind astfel stabilită o relație între căldura cedată de sistem sub acțiunea vântului și
valoarea vitezei acestuia.

Figura 10 . Anemometru termic

24
Anemografele

Pentru înregistrarea direcției vântului ș i a vitezei acestuia, sunt folosite anemografele.
Astfel de instrumente permit înregistrări ale valorii vitezei vântului, ale direcției, precum și și
a valorii medi e pentru un interval de timp .

Figura 11 . Anemograful Dines

Are în c omponența sa tuburi barometrice , denivelarea coloanei de lichid din acestea
fiind proporțională cu pătratul vitezei de curgere a aerului.

Părțile componente ale acestui tip de anemograf sunt:

– un sistem înregistrator – prevăzut cu un mecanism de ceas și un mecanism cu plutitor –
diagramele fiind fixate pe un tambur ce se poate roti.
– un sistem de cupe
– componentă pentru determinarea direcției vântului echivalentă celei a giruetei
– un sistem de transmisie

Viteza vântului este înregistrată pe diagrame în km/h . În partea superioară a diagramelor
este înregistrată, printr -un sistem cu două penițe, direcția vântului. Una dintre penițe
marchează direcțiile dinspre Sud și Nord, trecând prin Est, iar cea inferioară, direcțiile
cuprinse dinspre Nord și Sud trecând prin Vest.
Pe platformele meteorologice se regăsesc mijloacele clasice de măsurare a vitezei și
direcției vântului, datorită fiabiliății mari pe care acestea o au, chiar dacă soluțiile
computerizate sunt extrem de precise.

25
2.3. MICROCONTROLERE

Microcontrolerul este un microcircuit care incorporează o unitate centrală (CPU19) și
o memorie împreună cu resurse care -i permit interacțiunea cu mediul exterior. În zilele
noastre m icrocontrollerele au devenit indispensabile deoarece le întâlnim î n orice echipament
electronic ; acestea sunt utilizate în produse și dispozitive controlate automat cum ar fi :
sculele și uneltele electrice, jucăriile, sistemele integrate , mașini le de birou, sisteme de
control ale automobilelor , dispozitive medicale , etc. Dator ită costurilor si dimensiunilor
reduse în comparație cu un dispozitiv care utilizeaz ă un microprocesor cu memorie și
dispozitive de intrare / ieșire, microcontrollerele sunt dispozitivele cele mai bune din punct de
vedere și economic și digital.

Un mic rocontrole r conține:

– unitate central ă de procesare (CPU);
– memorie de tip ROM/PROM/EEPROM/FLASH și memorie RAM;
– porturi de intrare / ieșire;
– timere (numărătoare);
– sisteme de întreruperi;
– porturi seriale;
– ADC , etc.

Majoritate microcontrollerelor au la bază tehnologi a CMOS20. Prin această tehnologie
pot fi realizate structuri cu densitate mare de integrare, având un consum redus de material
prim.
Au o logică înterna statică ce permite micșorarea frecvenței de ceas. Aceasta
tehnologie CMOS are imuni tate la perturbații și se realizează pentru un domeniu mare de
temperatură (Microcontrollerele militare rezistă la sute de grade Celsius). [11]

19 Central Processing Unit – unitate principală de procesare
20 Complementary Metal -Oxide Semiconductor

26

Figura 12 . Schema bloc a arhitecturii AVR a microcontrolerului ATMEGA328P

2.3.1. Tipuri de arhitecturi

Arhitectura unui CPU este unul din cele mai importante elemente ce trebuie luate în
considerare în analiza unui sistem de calcul.
Arhitectura influențează performanțele globale, viteza de operare și structura
memoriei disponibile a microcontroler -ului.

Arhitectur a de tip von-Neumann :

– este folosită în majoritatea microcontrollerelor;
– CPU -ul are destinat un singur spațiu de memorie în care se memorează codul are o
singură magistrală internă pentru prelucrarea instrucțiunilor și a datelor
– instrucțiunilor și datele;

27
Arhitectur a de tip Harvard :

– conține spațiu separat de memorie pentru program și pentru date;
– are două magistrale, una pentru adrese și una de date;
– operațiile se pot executa cvasiparalel.

2.3.2. Unitatea de memorie

Memoria este o parte a microcontrolerului ce îndeplinește funcția de înmagazinare a
datelor.

Figura 13 . Model simplificat de unitate de memorie

Memoria constă din toate locațiile din memorie, și adresarea constă în selectarea
uneia din ele. Aceasta înseamnă că noi trebuie să selectăm locația de memorie la un capăt, și
la celălalt capăt trebuie să așteptăm conținutul acelei locații. În afară de citirea dintr -o locație
de memorie, memoria trebuie de asemenea să permită scrierea în ea. Aceasta se face p rin
asigurarea unei linii adiționale numită linie de control, linie numită R/W (citește /scrie).
Linia de control este folosită în felul următor: dacă R/W=1, se face citirea; dacă
opusul este adevărat, se face scrierea în locația de memorie.
2.3.3. Între ruperile
Întreruperea este un mecanism hardware oferit de platforma pe care se rulează
aplicația. Tipul acesta de mecanism permite întreruperea șirului curent de execuție și rulează
o altă bucată de cod, în funcție de anumiți stimuli veniți din exterior.
Întreruperile pot fi generate de: de timere, pinul de întrerupere INT, de porturile seriale,
porturile paralele etc.

28

2.3.4. Porturi de intrare / ieșire
Portul de intrare / ieșire (I/O) are rolul de a realiza legătura cu lumea exterioară
microcontrolle r-ului, putând să trimită și ș ă primească date și sunt accesate ca o locație de
memorie. Când starea unui pin se schimbă, o întrerupere poate fi generată.
Porturile I/O conțin un circuit open -drain destinat pinilor setați ca ieșire care poate sa se
active ze sau dezactiveze din soft și un circuit de pull -up destinat pinilor setați ca intrare, care
de asemenea poate fi activat sau dezactivat din soft.

2.3.5. Timer -ul
Timer -ul este un numărător ce numără de la 0 la o valoare numerică sau de la o
valoare setată din soft până la valoarea maximă a timer -ului respectiv. După ce se ajunge la
valoarea maximă, timer -ul se resetează și trimite un semnal spre sistemul de întreruperi.
Timerul are rolul și este folosit pentru a măsura intervale exacte de timp, pentru a genera
întreruperi cu ajutorul cărora aplicația poate fi optimizată.

2.3.6. Convertor Analog Digital (ADC)
Pentru că semnalele de la periferice sunt diferite de cele pe care le poate înțelege
microcontrolerul (zero și unu), ele trebuie convertite într -un mod înțeles de microcontroler.
Conversia este îndeplinită de un bloc analog – digital. Acest bloc este responsabil
pentru convertirea unei informații de o anumită valoa re analogică într -un număr binar.
Convertorul analog digital generează o valoare pe un anumit număr de biți (respectiv
pe cați biți este realizat ADC -ul) folosind metoda aproximării succesive. Convertorul conține
regiștrii în care este salvat rezultatul.
La intrarea convertorului analog digital este aplicat un semnal analogic din care rezultă la
ieșirea acestuia un semnal digital (șir de numere).

2.3.7. Watchdog -ul
Watchdog -ul este un cronometru electronic, care este utilizat pentru a detecta și de a
reveni din blocaje ale programului (erori, bucle infinite, etc.). În timpul funcționării normale,
microprocesorul repornește în mod regulat timer -ul watchdog pentru a preveni
desincronizarea.

29
2.3.8. Unitatea principală de procesare

Figura 14 . Unitate simplificată de procesare cu 3 regiștri

Regiștrii sunt locații de memorie ce au ca rol executarea de operații matematice sau a
unor operații de date. Avem două entități independente (memoria și CPU) interconectate, și
astfel orice schimb de informații este ascuns, ca și funcționalitatea sa. Dacă, de exemplu,
dorim să adăugăm conținutul a două locații de memorie și întoarcem rezultatul înapoi în
memorie, vom avea nevoie de o conexiune între memorie și CPU. Mai simplu formulat,
trebuie să avem o anumită "cale" prin care datele circulă de la un bloc la altul.

2.3.9. Magistrala de date (BUS -ul)

Fizic, BUS -ul este un grup constituit din 8, 16, sau mai multe fire. Există două tipuri
de bus -uri:

– BUS -ul de date – este format din atâtea linii cât este cantit atea de cifre binare ce dorim
sa o trimitem (16 biți = 16+1 fire, 1 fiind masa). Acesta servește la transmiterea
adreselor de la CPU la memorie.
– BUS -ul de adresă – Lățimea lui variază cu cantitatea de date pe care vrem sa le
trimitem. Servește la conectare a tuturor blocurilor din interiorul microcontrolerului.

30

2.4. Microcontroller CISC vs RISC

CISC:
– instrucțiunile sunt diferite între ele.
– este întâlnit în majoritatea microcontrollerelor;
– este avantajul programării în limbajul de asamblare prin folosirea unei instrucțiuni
complexe în locul unei instrucțiuni simple;
– conține multe instrucțiuni (peste 80 de instrucțiuni);

RISC:
– microcircuitul este de o complexitate mică;
– are o arhitectura de tip Harvard modificată sau von -Neumann modificată.
– se execută rapid și eficient;
– setul de instrucțiuni sunt simetrice;

2.4.1. Tipuri de memorii
ROM

Memoriile ROM (Read Only Memory) au informația stocată în timpul procesului de
fabricație și tocmai din motivul acesta utilizatorului nu ii este permis decat să citească date le..
Avantajul acestor memorii este că ele sunt nevolatile, programele și datele sunt în permanență
în memoria principală, și nu este necesară încărcarea lor de pe un suport extern. Dezavantajul
este că operația de înscriere a conținutului în timpul fabricației implică costuri fixe mari.

PROM

Memoriile PROM (Programmable Read Only Memory) sunt asemănătoare cu
memoriile ROM. Diferenta între cele doua memorii est e că la acest timp de memorie,
procesul de programare este electric, și poate fi realizat de un furnizor sau utilizator în funcție
de necesități, după încheierea procesului de fabricație.

31

EPROM

Memoriile EPROM (Erasable Programmable Read Only Memory) sunt citite și scrise
prin metode electrice. Spre deosebire de memorile PROM, acestea pot fi programate de mai
multe ori. Înaintea unei operații de scriere, celulele de memorie trebuie șterse prin expunerea
circuitului la o lumină ultravioletă.

EEPROM

Memoria EEPROM (E lectrically Erasable Programmable Read-Only Memory ), este
un tip de memorie folosită în calculatoare și alte echipamente electronice pentru a stoca date
ce trebuie să persiste și după întreruperea alimentării cu curent .
Fiindcă au un numă r limitat de programări/ștergeri, memoriile EEPROM sunt cel mai
des întâlnite ca memorii de stocare a datelor de configurație.

FLASH

Este un tip de memorie ce se aseamană cu memoria EEPROM, este adesea folosită în
stocarea informațiilor utilizatorului .[12]

2.5 Platforma Arduino UNO

Această platformă de procesare este open -source, si se bazează pe software și
hardware flexibil și simplu de folosit, cu microcontroler pe 8 biți, care face parte din familia
AVR – ATmega 328 P și care permite comunicație serială, comandă Pulse Width Modulation
(PWM), achiziție analogică și comunicații Input / Output digitale.[ 13]
Ardruino provine din limba latină și înseamna „bun prieten ”. Este folosit atât de începători
cât și de electroniștii profesioniști, pentru realizarea rapidă a prototipurilor electronice.[1 4]
Este o platformă de mici dimensiuni (6.8 cm / 5.3 cm – în cea mai des întâlnită
variantă) construită în jurul unui procesor de semnal și este capabilă de a prelua date din
mediul înconjurator printr -o serie de senzori și de a efectua acțiuni asupra mediului prin
intermediul luminilor, motoarelor, servomotoare, și alte tipuri de dispozitive mecanice.
Procesorul este capabil să ruleze cod scris într -un limbaj de p rogramare care este
foarte similar cu limbajul C++.[ 15]
Placa de bază Ardruino este alcatuită dintr -un microprocessor, un cristal sau un
oscilator (defapt este un ceas brut care trimite impulsuri catre microcontroler pentru a -i-
permite o vi teză de operare corectă) și un regulator liniar de 5 volți. În funcție de placa de

32
bază pe care o folosim aceasta mai poate avea și un conector USB care ne permite
conectarea la PC. Placa de asemenea, dispune de un anumit număr de pinii folosiți pentru
intrare (Input Pins) și pentru ieșire (Output Pins). Prin intermediul acestor pini pot fi
conectatate alte circuite cum sunt: senzori, LED -uri, motorase, etc.[1 6]
Plăcile de dezvoltare Ardruino pot fi folosite pentru a dezvolta obiecte de si ne
stătătoare interactive sau pot fi conectate la un calculator pentru a prelua sau pentru a trimite
date și apoi să acționeze pe baza acelor date .
Există o varietate de dispozitive create special pentru Ardruino. Exemple de
senzori dispo nibili: senzori de distanță (capabili să măsoare de la cațiva centimetri până la 7 -9
metri), senzori de sunet, senzori de câmp electromagnetic, senzori de fum, senzori de tip
GPS, senzori de tip giroscopic, senzori de flux lichid (ca cei folosiți la pompel e de
benzină), senzori de temperatură, senzori de monoxid de carbon, senzori de lumină, senzori
capabili să detecteze doar o anumită culoare, senzori de prezență, senzori de umiditate,
senzori de nivel pentru lichid, senzori capabili să măsoare concentrați a de alcool în aerul
expirat. Pentru a efectua acțiuni asupra mediului înconjurător, există o largă varietate de
motoare, servomotoare, motoare pas cu pas, led-uri, actuatoare.[1 7]
Există și o varietate de componente capabile să conecteze această platformă la
rețeaua Ethernet, componente pentru rețea wireless, componente capabile să realizeze
conectarea pe rețeaua de date GSM / 3G, sau componente de tip XBEE utile pentru a realiza
comunicații de tip personalizat.
Ardruino se găsește în multe variante de plăci de dezvoltare , o parte din ele fiind :
Mega, Diecimila, Duemilanove, Mini, Nano si chiar Bluetooth Ardruino, cele mai noi
produse fiind ARDUINO UNO si ARDUINO MEGA 2560 .

Figura 14 . Placă de dezvoltare Ardui no UNO

33
2.5.1.Comunicarea între microcontroler și periferice
Protocolul

Protocolul I2C este o comunicație serială apărută din necesitatea de a realiza sisteme
ieftine cu microcontrollere, destinate conducerii proceselor industriale. Pot fi conectate mai
multe dispozitive, fiecare dispozitiv având câte o adresă. Sunt dispozitive care au adresă fixă,
care nu poate fi modificată, și dispozitive a cărei adresa I2C poate fi aleas ă dintr -o listă de
adrese prestabilite.
Pentru ca un sistem sa comu nice prin I2C se conectează circuite integrate care au trei
linii; două linii de semnal , denumite SDA – serial data și SCL – serial clock , și una de masă.
Această structură este o structură multi -master, adică se pot conecta mai multe
circuite care pot av ea rolul de master. Un circuit master este un circuit care iniția lizează un
transfer de date și care generează semnale de tact pentru a permite realizarea unui transfer de
date. Circuitul adresat de către master se numește slave.
Protocolul de transfer al datelor pe magistrala I2C presupune inițierea transferului
prin aducerea magistralei într -o condiție de „start”, transferul propriu -zis și încheierea
transferului prin aducerea magistralei intr -o condiție de „stop”.
Conditia de „start” este definită prin trecerea liniei SDA din 1 logic în 0 logic, în timp
ce linia SCL este menținută la nivel ridicat, 1 logic.
Conditia de „stop” este definită prin trecerea liniei SDA din 0 logic în 1 logic, în timp
ce linia SCL este menținută la nivel ridicat, 1 logic.
Datele transmise trebuie să fie stabile pe durata impulsurilor de tact. Datele sunt transferate
pe magistrală sub forma unor grupuri de octeți (grupuri de 8 biți).

Figura 15. Definirea condițiilor de start si stop

34

Figura 16. Transferul de date pe magistrala I2C

Interfața serială SPI ( Serial Periperial Interface)

SPI este o interfață sincronă standard de mare viteză ce operează în mod full duplex..
Ea este folosită ca sistem de magistrală serială sincronă pentru transmiterea de date, unde
circui tele digitale pot să fie interconectate pe principiul master -slave, unde dispozitivul
master inițiază cuvântul de date. Dacă sunt mai multe dispozitive slave, atunci ele sunt
selectate individual cu pinul de – slave select; dacă valoarea din acest canal este ‚low’,
dispozitivul slave comunică cu master -ul, iar când valoarea din acest canal este „high”,
dispozitivul ignoră comunicarea.
SPI este utilizat pe scară largă pentru a comunica cu diverse periferice, cum ar fi
senzori, dispozitive de control, ca rduri de memorie, LCD -uri și multe altele. Interfața serială
SPI se caracterizează prin următoarele semnale:

– MISO (Master In Slave Out) – datele se transmit de la dispozitivele slave către
dispozitivul master;
– MOSI (Master Out Slave In) – dispozitivul master transmite date către dispozitivele
slave (periferice);
– SCK (Serial Clock) – firul prin care este transmis semnalul de tact (clock -ul);
– (Slave Select/ Chip Select) – firul de pe care fiecare dispozitiv este cont rolat de
master (activează sau dezactivează anumite dispozitive).

Figura 17. Comunicația master -slave SPI

35

SPI este un protocol de comunicație de tip bus, astfel, se pot conecta mai multe
dispozitive pe același bus de date, identificându -se fiecare prin can alul SS (Slave Select).
Când valoarea din acest canal este ‚low’, dispozitivul slave comunică cu master -ul, iar când
valoarea din acest canal este „high”, dispozitivul ignoră comunicarea.
În acest fel, se pot conecta mai multe dispozitive pe același canal SPI, dar cu condiția
ca fiecărui sdispozitiv să i se atașeze un canal pentru Slave Select.

Figura 18 .Model comunicare î ntre 3 device -uri pe un singur bus

CAPITOLUL III
PROIECTAREA UNEI STAȚII METEO
3.1. Structura hardware a stației meteo

În figura prezentată mai jos , avem următoarele blocuri funcționale:

– Microcontroler ul ATMega328P;
– Senzorul de temperatură și presiune atmosferică BMP180 ;
– Senzorul de umiditate DHT22 ;
– Regulatorul de tensiune LM317;
– Buto ane de selectie (Push buttons);
– Display 20×4 ( LCD 2004A);
– Baterie de backup pentru ceas CR2032.

36

Figura 19. Prezentarea parților componente

Blocul ATMega328P reprezintă blocul principal al sistemului . Putem spune că este cea
mai important ă componentă deoarece toate elementele din circuit sunt dependente de acesta
pentru a comunica. Putem observa că regulatorul de tensiune reprezintă in trarea pentru
circuitul stației meteo și are funcția de a-i furniza alimentarea necesară pentru o funcționare
optim ă. Ca și i ntrări, pe lângă LCD, mai avem un circuit integral RTC DS3231 , un EEPROM
AT24C32, senzorul de umiditate, senzorul de temperatură și senzorul de presiune
atmosferică.
Circuit ul integrat DS3231 este un IC ideal pentru a memora și a incrementa automat
data, anul, ziua săptămânii și ora. Chiar dacă circuitul nostru este scos de sub tensiune , acesta
trece în modul de backup, consumând maxim 500uA din bateria CR2032 . Circuit integrat
comunică pe interfață I 2C.
EEPROM -ul AT24C32 este util pentru a memora date. Putem folosi acest IC pentru a
memora ore la care se întamplă anumite evenimente (valorile ce depășesc limitele normale
ale temperaturii, ale umidități și ale presiunii atmosferice) .

37
3.1.1 Schema bloc a circuitului

Figura 20. Schema bloc a stație meteo
3.1.2. Regulatorul de tensiune LM317

Figura 21. Regulatorul de tensiune liniar LM317

LM317 este un regulator de tensine eficient care poate asigura o tensiune între 1,2 și
25V la o intensitate a curentului de 1,5A. Fiindcă este prevăzut cu protecție la scurt -circuit,
circuitului stației meteo nu necesită o măsură de protecție în acest sens . Fiindcă curentul
minim necesar la ieșire este de 5mA, producătorul regulatorului recomandă ca să aibe o
valoarea cuprinsă între 220 și 240 de Ω (Ohmi).
Pentru o funcționare optimă a circuitului, tensiunea de ieșire a regulatorului a fost stabilită la
5V. Tensiunea variază odată cu valoarea rezistorului .
Condensatorul cu valoarea de 0,1uF are ca scop să absoarbă riplurile mici de
tensiune iar cel de 1uF, riplurile mai mari.

38

Formula generală de calcul a tensiunii de ieșire este:

Astfel, alegerea valorii rezistorului pentru tensiunea de ieșire de 5V a fost
calculată conform relației :

3.1.2. Regulatorul de tensiune pentru BMP180
Fiindcă circuitul nostru fu rnizează o tensiune de 5V și specificațiile producătorului
BMP180 recomandă o tensiune maximă de 3,6V, am adăugat o diodă Zener pentru a limita
tensiunea la 3 ,3V.

Figura 22. Schema electrică a stabilizatorului de tensiune cu dioda Zener

Rezistorul are ca scop de a prelua diferenta de tensiune dintre tensiunea de alimentare
si tensiunea de pe dioda zener. Curentul maxim absorbit de sensor conform producatorului
BOSCH este de 1mA Astfel, avem:

Unde este curentul necesar senzorului nostru

39
Senzorul BMP180 poate fi folosit la prognoză meteo, la îmbunătațirea navigării prin
GPS, la navigare în interiorul și exteriorul clădirilor, la timp liber și sport, la m ăsurarea
vitezei de creștere sau scurgere a lichidelor , etc.
3.1.3. Display -ul 2004A

Figura 2 3. 20×4 Yellow -Green Backlight LCD Display

Nr.crt. Caracteristici LCD
1. Culoare Verde
2. Tip afișaj Galben cu cristale lichide
3. Tensiune de lucru DC 5 V
4. Ieșire 5 V
5. Dimensiune 805 x 35 x 20 mm
6. Greutate 40 g

Tabelul 3. Caracteristicile display -ului 2004A

3.1.4. Circuitul integrat PCF8574A
În mod obișnuit, LCD -ul necesită o conexiune de 6 pini (RS, EN, D7,D6, D5 și D4)
pentru a comunica cu microcontroller -ul.
IC-ul este special construit în vedearea conectării unui LCD 16×2 sau 20×4 caractere,
făcând astfel posibilă transmiterea de date către LCD prin interfața I2C, fapt ce mă
avantajează pentru că pot folosi, împreuna cu celelalte dispozitive, interfața I2C, fără a ocupa
pinii digitali ai microcontroller -ului.

40

Specificații:
– Tensiune de alimentare: 2.5V – 6V;
– Curent consumat: 25mA;
– Comunicație I2C la frecvență maximă de 100kHz;
– Adresa I2C poate fi selectată de 3 pini, astfel că se p ot lega până la 8 module pe
aceeași magistrală;
– Curent de standby de 10uA;

3.2.3. Realizarea cablajului

Pentru realizarea PCB -ului, am avut nevoie de urmatoarele echipamente și materiale:
– Imprimantă laser pentru imprimarea cablajului
– Foaie A4 transparentă pentru imprimantă laser
– Cablaj foto -rezistiv tip „dublu -strat”
– Clorură ferică pentru corodarea cablajului
– Soluție pentru developare (sodă caustică)
– Lumină ultravioletă
– Bormașină și burghie aferente

Ordinea de realizare a cablajului imprimat a fost respectată astfel:

– proiectarea schemei și a layout -ului in programul de proiectare D ipTrace;
– imprimarea desenului pe foaie transparentă;
– transferarea desenului pe cablaj prin expunere la UV;
– developarea cablajului;
– corodarea cablajului;
– efectuarea găurilor;
– lipirea pieselor și testarea cablajului.

Pe cablajul foto -rezistiv există o substanță specială sensibilă la lumină și la UV. Substanța
expusă la UV se va înlătura singură după introducerea cablajului într -o soluție de developare
(apă cu sodă cau stică de exemplu), iar partea ce nu a fost expusă razelor UV va rămâne pe

41

cablaj protejându -l ulterior de corodare. O primă etapă în realizarea PCB -ului a fost
proiectarea cablajului și printarea acestuia pe o coală transparentă.

Pasul I:

Figura 2 4. Imprimarea desenului pe foaie transparentă/calc cu imprimantă laser

Pasul II

Figura 2 5.Transferarea desenului pe cablaj și expunerea la UV;

42

Figura 2 6. Developarea și corodarea PCB -ului

3.2. Monitorizarea

3.2.1. Senzorul de temperatură și presiune atmosferică BMP180

Senzorul BMP180 este un senzor digital de presiune fabricat de firma B OSCH .
Acesta poate să măsoare temperatur a și presiune a atmosferică prin interfață I2C.
BMP180 este succesor ul senzorului BMP085, o nouă generație de senzori de presiune
digital i de înaltă precizie cu un consum foarte redus de energiee . Energia de consum redusă și
componentele de joasă tensiune a senzorului BMP180, îl fac optim pentru utilizarea sa în
telefoane mobile, dispozitive de naviga ție GPS și echipamente în aer liber. Cu un zgomot
redus și un timp de conversie rapid, senzorul BMP180 are performanțe superioare celorlalți
senzori din gama sa. Interfața I2C permite intergrarea ușoară a sistemului cu un
microcontroller.

Senzorul digita l de presiune BMP180 are următoarele specificații:
– gama tensiunii de ali mentare: 1,8 – 3,6V (Vdd) ; 1,62 – 3,6V (Vddio);
– gama de presiune: 300 – 1100hPa;
– putere scăzută: 5uA la 1 eșantion/secundă în modul standard;
– zgomot redus: – 0,06hPa în modul redu s de energie;
– 0,02hPa în modul avansat de rezoluție.

43

Figura 27. Senzorul de presiune BMP180

Configurația pinilor [ 18]:

– pinul 2 (VDD) – pinul de alimentare;
– pinul 5 (SCL) – semnalul Serial Clock de la interfața I2C;
– pinul 6 (SDA) – semnalul Serial Data de la interfața
– pinul 7 (GND) – pinul de masă.

Senzorul BMP180 este proiectat pentru a fi conectat direct la un microcontroller prin
intermediul interfaței I2C. Datele de presiune și temperatură trebuie sa fie compensate de
datele de calibrare din memoria EEPROM a senzorului BMP180.
În EEPROM sunt stocați 176 de biți de date de calibrare, acestea fiind utilizate pentru a
compensa dependența de temperatură și ceilalți parametrii ai senzorului.

44

Figura 28. Schemă bloc pentru o ap licație oarecare

Pentru a achiziționa valoarea temperaturii și a presiunii atmosferice, microcontroller –
ul trebuie să funcționeaze astfel: trimite o secvența de start pentru a porni o măsurătoare a
presiunii sau a temperaturii , iar după timpul de conversi e, valorea rezultatelor pot fi citite prin
interfața I2C. Pentru calcularea temperaturii în grade Celsius și presiunii în hectopascali,
datele de calibrare trebuie utilizate . Datele de calibrare sunt niște constante ce pot fi citite din
memoria EEPROM prin interfața I2C la inițializarea software -ului. Rata de eșantionare poate
fi crescută până la 128 eșantioane pe secundă.
Memoria EEPROM de 176 de biți este partiționată în 11 cuvinte de câte 16 biți
fiecare.
Cele 11 cuvinte conțin coeficienții de calibrare. Acești coeficienți de calibrare sunt
individuali fiecărui senzor. Înainte de primul calcul al temperaturii și presiunii atmosferice ,
master -ul citește datele din EEPROM. Comunicarea de date poate fi verificată prin
verificarea faptului că nici unul din cuvinte nu are valoarea 0 sau 0xFFFF. Coeficienții de
calibrare sunt reprezentați in figura de mai jos.

45

Algoritmul ce este utilizat pentru calculul temperaturii și presiunii atmosferice este
reprezentat în figura de mai jos unde este detaliat pas cu pas fiecare etapă ce trebuie realizată
pentru o achiziționare corectă a temperaturii și a presiunii atmosferice .

Figura 29. Algoritmul pentru măsurarea temperaturii și presiunii atmosferice [18]

46
3.2.2. Senzorul de umiditate DHT22

Modulul DHT -22 este succesorul lui DHT -11, produs de firma ,,Aosong
Electronics” . E ste un senzor capabil să măsoare umiditatea aerului dar și temperatura dintr –
un mediu ambient. Acesta utilizează un protocol personal de tip ,,One -Wire” și este compus
dintr -un termistor de tip NTC21 și un senzor capacitiv.

Figura 30. Modul DHT22

Specificații tehnic e [19]:

Interval de măsurare temperatură -40 – 125 /±0,5
Interval de măsurare umiditate 0 – 100% / ± 2-5 %
Rata de esantionare 0,5 Hz (o citire la fiecare două secunde)
Dimensiuni 15,1mm x 25mm x 7,7mm
Tensiune de operare 3-5 V
Curentul absorbit în momentul
măsurătorilor 2.5 mA
Tabelul 5. Specificații tehnice

Mod de funcționare

Implicit, senzorul DHT22 se află în stare de standby. În momentul în care
microcontroller -ul trimi te un semnal de start modulului, acesta iese din starea de stand by și
trece în modul de execuție, moment în care prelevează date. După două secunde de prelevare,
senzorul trimite un semnal de 5 octeți ce cuprind e umiditatea relativă și temperatura către
microcontroler, dar și un octet de Check -sum. În cazul în care modulul nu mai primește
semnal de start din partea microcontroller -ului, acesta intră din nou în stare de standby pentru
a economisi energie .

21 Negative Temperature coefficien t

47

Figura 31. Exemplu p roces de comunicație

Pentru a înțelege mai bine ce se întamplă, putem da ca exemplu următorul caz:
Microcontroller -ul recepționează următorii 40 de biți de la senzor, conform:

RH TEMP Check -Sum
0000 0010 1000 1100 0000 0001 0101 1111 1110 1110

În toate cele trei cazuri, interpretarea datelor c ătre un rezultat substanțial se face
făcând conversia din sist emul binar în sistemul zecimal. Astfel, obținem:

În cazul umidității :
Astfel,

În cazul temperaturii :
Astfel,

În cazul î n care temperatura coboară sub 0 , bitul cel mai semnificativ devine 1
Exemplu:

Senzorul se compune dintr -o componentă sensibilă la umiditate, un senzor de
temperatură (termistor) și un IC ce se află pe partea din spate a senzorului. Pentru a măsura
umiditatea, acesta se folosește de componenta sensibilă la umiditate, compusă din doi
electrozi cu material ce reține umezeala între ei. Astfel, pe măsură ce umiditatea se schimbă,
conductibilitatea materialului se schimbă, sau rezistența dintre cei doi electrozi se schimbă.
Această schimbare de rezistență este măsurată și procesată de către IC, urmând apoi s ă fie
citită de catre microcontroller. Pentru a măsura temperatura, acest modul folosește un senzor

48
de tip NTC. Un termistor este de fapt un rezistor va riabil care își schimbă rezistența o dată
cu schimbarea temperaturii.

Figura 32. Traductorul de umiditate al modulului DHT 22

3.3. Programarea microcontroller -ului

Pentru a programa microcontrolerul ui, modulul Arduino UNO trebuie setat să lucreze
ca programator. Pentru a putea să comunice cu microcontrolerul este necesar să instalăm de
pe site -ul producătorului Arduino câteva componente adiționale care urmează să ne pună la
dispoziție o gamă destul de largă de microcontrollere Atmel ce pot fi programate cu Arduino.
Microcontroller -ul a fost programat astfel încât să folosească frecvența oscilatorului
intern de 8 Mhz, cu B.O.D22-ul dezactivat.
B.O.D -ul resetează microcontrolerul daca tensiunea de alimentare scade sub un
anumit prag (1,8, 2,7 sau 4,3V).

22 Brown -out Detection

49

Legătura dintre Arduino și microcontroller a fost făc ută conform următoarei figuri :

Pin Arduino UNO Pin microcontroler
ATMega328P Denumire pin
10 1 RESET
11 17 MOSI
12 18 MISO
13 19 SCK

Tabelul 6. Schema de legătură cu Arduino UNO

Figura 33. Programarea stației meteo

50

Figura 34. Selectarea microcontrolerului și a variantei

Figura 34. Setările de programare ATMega328P

51

Figura 3 5. Instalarea bootloader -ului

Figura 3 6. Încărcarea sketch -ului în microcontroller

52

Figura 3 7. Maparea pinilor microcontrolerului ATMega 328P pentru programar ea în mediul
Arduino IDE

BootLoader -ul
În general, un bootloader este un program care rulează atunci când microcontrolerul
este pornit. Acest program conține instrucțiuni privind ceea ce trebuie să facă dispozitivul în
continuare.
Multe din microcontrolerele recente la care memoria de program este de tip FLASH
au și facilitatea de a putea și scrie în această memorie de program fără a utiliza un circuit de
programare extern. Astfel în microcontroler poate exista permanent (rezident) un cod de mici
dimensiuni (bootloader -ul) care de exemplu încarcă efectiv prin intermediul portului serial
codul utilizator sau constantele pe care acesta vrea eventual să le actualizeze. Bootloader -ul
este și cel care lansează în execuție programul utilizator după încărcarea acestuia.

53

CAPITOLUL IV
CONCLUZII FINALE ȘI DEZVOLTĂRI ULTERIOARE

Obiectivul propus la începutul lucrării a fost realizat. Am realizat o stație
meteorologică ce poate fi utilă în uz casnic. Ideea de a avea un ceas în permanență la vedere
și detalii precum temperatura, umiditatea și presiunea atmosferică sunt binevenite. Am
realizat acest montaj cu un cost redus, aproximativ 80 de lei, iar calitatea măsurătorilor în
opinia mea este destul de ridicată.
Primele probleme ce le -am întâmpinat au l a partea de proiectare, unde nu am avut toate
componente utilizate în librăria programului.Un rezultat satisfăcător a apărut după ce am
finalizat de construit pattern -urile și layout -ul. O altă problemă întâmpinată a fost la partea de
realizare practică a PCB -ului, unde am omis din neatenție câteva reguli și a trebuit să refac
PCB -ul. În viitorul apropiat mi -aș dori să implementez în proiect un data logger pentru a
memora valorile ridicate ale măsurătorilor, dar și posibilitatea de conectare a unui
anemome tru pentru a măsura viteza vântului.

54
BIBLIOGRAFIA

[1] Gheorghe Pop – „Introducere în meteorologie și climatologie „ (1988)
[2] https://ro.wikipedia.org/wiki/Sta%C8%9Bie_meteorologic%C4%83
[3] Roxana Bujariu, Marius Bîrsan, Roxana Cica, Liliana Velea, Sorin Bucea, (2015)
Schimbarile climatice – de la bazele fizice la riscuri si adaptare
[4] A. DUMITRU, Bazele sistemelor mecatronice, Universitatea „Transilvania” din
Brasov, 2006.
[5] http://www.scritub.com/tehnica -mecanica/Proiect -la-SenzoriTraductoareM8 3832.php
[6] Prof.Univ.Dr.Sabina Stefan – Fizica schimbărilor climatice
[7] Liliana Vornicu – Senzori și traductoare, Iasi, 2006
[8] https://ro.wikipedia.org/wiki/Presiune_atmosferic%C4%83
[9] Liliana Vornicu – Senzori și traductoare, Iasi, 2006
[10] Sterie Ciulache – Metrologie. Manual practic, București
[11] http://web.ulbsibiu.ro/laurean.bogdan/html/Microcontrolere%20introducere.pdf
[12] Mihai Romanca – Microprocesoare și microcontrolere
[13] https://ro.wikipedia.org/wiki/Arduino#cite_note -2
[14] https://www.smartnation.ro/cum -sa-iti-monitorizezi -temperatura -si-sistemul -de-
incalzire -in-casa/
[15] ROBOFUN – Arduino pentru îmcepători, 2014
[16] ROBOFUN – Arduino pentru începători, 2014
[17] ROBOFUN – Arduino pentru Toti, 2012
[18] BMP180 Data sheet
[19] DHT22 Datasheet

ANEXA 1 – Schema electrică

Schema electrică (1/2)

56

Schema electrică (2/2)

ANEXA2 – Codul sursă

// Librarii

#include <TimeLib.h>
#include <LiquidCrystal_I2C.h>
#include <Button.h>
#include <DS3232RTC.h>
#include <Time.h>
#include <Wire.h>
#include <EEPROM.h>
#include "DHT.h"
#include <SFE_BMP180.h>

// Senzori

SFE_BMP180 pressure;

// Altitudine Sibiu
#define ALTITUDE 431.0

#define DHTPIN 9
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define TEMPTYPE 0

LiquidCrystal_I2C lcd(0x3F, 20, 4);

#define BUTTON_PIN_UP 5
#define BUTTON_PIN_DOWN 6
#define BUTTON_PIN_MENU_SELECT 8
#define BUTTON_PIN_btnBACK 4
#define DEBOUNCE_MS 20
#define LONG_PRESS 1000 .
#define REPEAT_INCR 200
#define PULLUP true
#define INVERT true

58

unsigned long rpt = LONG_PRESS;
Button buttonUp(BUTTON_PIN_UP, PULLUP, INVERT, DEBOUNCE_M S);
Button buttonDown(BUTTON_PIN_DOWN, PULLUP, INVERT, DEBOUNCE_MS);
ButtonbuttonSelect(BUTTON_PIN_MENU_SELECT,PULLUP,INVERT, EBOUNCE_MS);
Button buttonbtnBACK(BUTTON_PIN_btnBACK, PULLUP, INVERT, DEBOUNCE_MS);

enum {btnMENU, btnBACK, btnUP, btnDOWN};

enum STATES
{
MAIN,
MENU_SET_TIME,
MENU_SET_DATE,
MENU_METEO,
DISPLAY_METEO,
SET_HOUR,
SET_MINUTE,
SET_DAY,
SET_MONTH,
SET_YEAR,

};
STATES state ;

int8_t button;
int8_t trigger;
int Second;
int Minute;
int Hour;
int Day;
int Month;
int Year;
int8_t DoW;
String day_of_week;
unsigned char address, data;
uint32_t blink_interval = 500;
uint32_t blink_previousMillis = 0;
boolean blink_state = false;

59
boolean RTC_error = true;
boolean long_press_button = false;

byte menu_RIGHT[8] = {
B10000,
B11000,
B11100,
B11110,
B11100,
B11000,
B10000,
B00000
};

byte menu_LEFT[8] = {
B00001,
B00011,
B00111,
B01111,
B00111,
B00011,
B00001,
B00000
};

byte umiditate[8] = {
0b00100,
0b00100,
0b01010,
0b10001,
0b10001,
0b10001,
0b01010,
0b01110
};

byte presiune[8] = {
0b00100,

60
0b01001,
0b10010,
0b10100,
0b10101,
0b10001,
0b01010,
0b00100

};

byte temperatura[8] = {
0b00100,
0b01010,
0b01010,
0b01110,
0b01110,
0b11111,
0b11111,
0b01110

};

void setup()
{
lcd.begin();
lcd.backlight();
pressure.begin();
Wire.begin();
setSyncProvider(RTC.get);
setSyncInterval(5);
lcd.createChar(5, menu_RIGHT);
lcd.createChar(6, menu_LEFT);
lcd.createChar(0, umidi tate);
lcd.createChar(1, presiune);
lcd.createChar(2, temperatura);

}
void loop()
{

61
change_states(); // change states of FSM
check_inputs(); // check inputs (buttons)
check_RTC(); // check connection RTC

}

void change_states()
{

switch (state)
{
case MAIN:
display_time();
display_date();

break;

case MENU_METEO:
menu_meteo();
break;

case DISPLAY_ METEO:
display_hum();
display_temp_presiune();

break;

case MENU_SET_TIME:
menu_set_time();
break;

case MENU_SET_DATE:
menu_set_date();
break;

case SET_HOUR:
display_set_time();
break;

62
case SET_MINUTE:
display_set_time();
break;

case SET_DAY:
display_set_date();
break;

case SET_MONTH:
display_set_date();
break;

case SET_YEAR:
display_set_date();
break;

break;
}
}

void check_inputs() // check state of buttons
{
buttonUp.read();
buttonDown.read();
buttonSelect.read();
buttonbtnBACK.read();

switch (buttonSelect.wasPressed()) // check MENU/SELECT button
{
case 1:
button = btnMENU;
transition(button);
break;

}
switch (buttonUp.wasPressed()) // check UP button
{
case 1:
button = btnUP;

63
transition(button);
break;
}

switch (buttonUp.wasReleased()) // check long press UP button
{
case 1:
long_press_button = false;
rpt = LONG_PRESS;
break;
}

switch (buttonUp.pressedFor(rpt))
{
case 1:
rpt += REPEAT_INCR; //increment the long press interval
long_press_button = true;
button = btnUP;
transition(button);
break;
}

switch (buttonDown.wasPressed()) // check DOWN button
{
case 1:
button = btnDOWN;
transition(button);
break;
}

switch (buttonDown.wasReleased()) // check long press DOWN button
{
case 1:
long_press_button = false;
rpt = LONG_PRESS;
break;
}

64
switch (buttonDown.pressedFor(rpt))
{
case 1:
rpt += REPEAT_INCR; //increment the long press interval
long_press_button = true;
button = btnDOWN;
transition(button);
break;
}

switch (buttonbtnBACK.wasPressed()) // check BACK button
{
case 1:
button = btnBACK;
transition(button);
break;
}
}

void transition(int trigger)
{
switch (state)
{
case MAIN:
if (trigger == btnMENU)
{
lcd.clear();
state = MENU_METEO;

}

break;
case MENU_METEO:
if (trigger == btnUP)
{
lcd.clear();
state = MENU_SET_TIME;
}
else if (trigger == btnUP)

65
{
lcd.clear();
state = MENU_SET_DATE;
}
if (trigger == btnMENU)
{
lcd.clear();

state = DISPLAY_METEO;

}
if (trigger == btnBACK)
{
lcd.clear();

state = MAIN;
}
break;

case DISPLAY_METEO:

if (trigger == btnBACK)
{
lcd.clear();

state = MAIN;

}
break;
case MENU_SET_TIME:
if (trigger == btnUP)
{
lcd.clear();
state = MENU_SET_DATE;
}

if (trigger == btnDOWN)
{

66
lcd.clear();
state = MENU_METEO;
}

if (trigger == btnMENU)
{
lcd.clear();

state = SET_HOUR;
}
if (trigger == btnBACK)
{
lcd.clear();
state = MAIN;
}
break;

case MENU_SET_DATE:

if (trigger == btnDOWN)
{
lcd.clear();
state = MENU_SET_TIME;
}
else if (trigger == btnDOWN)
{
lcd.clear();
state = MENU_METEO;
}

if (trigger == btnMENU)
{
lcd.clear();
state = SET_DAY;

}
if (trigger == btnBACK)
{
lcd.clear();

67
state = MAIN;
}
break;

case SET_HOUR:
if (trigger == btnBACK)
{
lcd.clear();
state = MAIN;
}
if (trigger == btnUP)
{
Hour++;
if (Hour > 23) Hour = 0;
}
else if (trigger == btnDOWN)
{
Hour –;
if (Hour < 0) Hour = 23;
}
if (trigger == btnMENU)
{
state = SET_MINUTE;
}
break;

case SE T_MINUTE:
if (trigger == btnBACK)
{
lcd.clear();
state = MAIN;
}
if (trigger == btnUP)
{
Minute++;
if (Minute > 59) Minute = 0;
}
else if (trigger == btnDOWN)
{

68
Minute –;
if (Minute < 0) Minute = 59;
}

if (trigger == btnBACK)
{

state = SET_HOUR;
}
if (trigger == btnMENU)
{

set_time();
lcd.clear();
state = MAIN;
}
break;

case SET_DAY:
if (trigger == btnBACK)
{
lcd.clear();
state = MAIN;
}
if (trigger == btnUP)
{
Day++;
if (Day > 31) Day = 1;
}
else if (trigger == btnDOWN)
{
Day–;
if (Day < 1) Day = 31;
}
if (trigger == btnMENU)
{
state = SET_MONTH;
}

69
break;
case SET_MONTH:
if (trigger == btnBACK)
{
lcd.clear();
state = MAIN;
}
if (trigger == btnUP)
{
Month++;
if (Month > 12) Month = 1;
}
else if (trigger == btnDOWN)
{
Month –;
if (Month < 1) Month = 12;
}
if (trigger == btnMENU)
{
state = SET_YEAR;
}
if (trigger == btnBACK)
{
state = SET_DAY;
}
break;
case SET_YEAR:
if (trigger == btnBACK)
{
lcd.clear();
state = MAIN;
}
if (trigger == btnUP)
{
Year++;
if (Year > 99) Year = 0;
}
else if (trigger == btnDOWN)
{

70
Year –;
if (Year < 0) Year = 99;
}
if (trigger == btnBACK)
{

state = SET_MONTH;
}
if (trigger == btnMENU)
{
set_date();
lcd.clear();
state = MAIN;
}
break;
break;
}
}

void menu_set_time() {
lcd.setCursor(7, 0);
lcd.print("MENIU");
lcd.setCursor(4, 2);
lcd.print("Seteaz \341 Ora");
lcd.setCursor(19, 2);
lcd.write(5);
lcd.setCursor(0, 2);
lcd.write(6);
}

void menu_set_date() {
lcd.setCursor(7, 0);
lcd.print("MENIU");
lcd.setCursor(4, 2);
lcd.print("Seteaz \341 Data");
lcd.setCursor(0, 2);
lcd.write(6);

}

71
void menu_meteo() {

lcd.setCursor(7, 0);
lcd.print("MENIU");
lcd.setCursor(3, 2);
lcd.print("Raport senzori");
lcd.setCursor(19, 2);
lcd.write(5);
}

void display_time()
{
get_time();
lcd.setCursor(2, 2);
display_position(Hour);
lcd.print(" : ");
displ ay_position(Minute);
lcd.print(" : ");
display_position(Second);
}

void display_date() {
get_date();
lcd.setCursor(2, 3);
display_position(Day);
lcd.print(" / ");
display_position(Month);
lcd.print(" / ");
display_position(Year);
DoW = weekday();
switch (DoW) {
case 1: day_of_week = "DUMINICA"; break;
case 2: day_of_week = "LUNI"; break;
case 3: day_of_week = "MARTI"; break;
case 4: day_of_week = "MIERCURI"; break;
case 5: day_of_week = "JOI"; break;
case 6: day_of_week = "VINERI"; break;
case 7: day_of_week = "SAMBATA"; break;
}

72
lcd.setCursor(7, 0);
lcd.print (day_of_week);
}

void display_hum() {

int8_t h = dht.readHumidity(); // read humidity
int16_t t = dht.readTemperature(TEMPTYP E); // read temperature
lcd.setCursor (3, 0);
lcd.print("Raport senzori :");
lcd.setCursor (1, 1);
lcd.write(byte(0));
lcd.setCursor(2, 1);
lcd.print(" HUM : ");
lcd.print(h); // Print humidity
lcd.setCursor(18, 1);
lcd.print(" % ");
}
void display_temp_presiune() {
lcd.setCursor (1, 3);
lcd.write(byte(1));
char status;
double T, P, p0;
status = pressure.startTemperature();
delay(status);
status = pressure.getTemperature(T);
status = pressure.startPressure(3);
delay( status);
status = pressure.getPressure(P, T);
lcd.setCursor (1, 2);
lcd.write(byte(2));
lcd.setCursor(3, 2);
lcd.print("TEMP : ");
lcd.print(T);
lcd.setCursor(18, 2);
lcd.print(" \337C");
p0 = pressure.sealevel(P, ALTITUDE);
p0 = (p0 / 1.333);
lcd.setCursor(2, 3);

73
lcd.print(" PRES :");
lcd.print(p0);//Print Pressure
lcd.print(" mmHG");
delay(2000);
}

void display_set_time() {
lcd.setCursor(4, 0);
lcd.print("Setare Or \341 :");
switch (state)
{
case SET_ HOUR:
lcd.setCursor(0, 1);
lcd.print("Ora :");
if (long_press_button == false) {
if (blink_state == 0) {
lcd.setCursor(5, 2);
display_position(Hour);
}
else {
lcd.setCursor(5, 2);
lcd.print(" ");
}
}
else {
lcd.setCursor(5, 2);
display_position(Hour);
}
lcd.print(" : ");
display_position(Minute);
break;
case SET_MINUTE:
lcd.setCursor(0, 1);
lcd.print("Min :");
lcd.setCursor(5, 2);
display_position(Hour);
lcd.print(" : ");
if (long_press_button == false) {
if (blink_state == 0) {

74
lcd.setCursor(12, 2);
display_position(Minute);
}
else {
lcd.setCursor(12, 2);
lcd.print(" ");
}
}
else {
lcd.setCursor(12, 2);
display_position(Minute);
}
break;
}
unsigned long blink_currentMillis = millis();
if (blink _currentMillis – blink_previousMillis > blink_interval) {
blink_previousMillis = blink_currentMillis;
if (blink_state == 0) {
blink_state = 1;
} else {
blink_state = 0;
}
}
}

void display_set_date() {
lcd.setCursor(4, 0);
lcd.print("Setare Dat \341 :");
switch (state)
{
case SET_DAY:
lcd.setCursor(0, 1);
lcd.print("Zi :");
if (long_press_button == false) {
if (blink_state == 0) {
lcd.setCursor(2, 2);
display_position(Da y);
}
else {

75
lcd.setCursor(2, 2);
lcd.print(" ");
}
}
else {
lcd.setCursor(2, 2);
display_position(Day);
}
lcd.print(" / ");
display_position(Month);
lcd.print(" / ");
display_position(Year);
break;

case SET_MONTH:
lcd.setCursor(0, 1);
lcd.print("Lun \341 :");
lcd.setCursor(2, 2);
display_position(Day);
lcd.print(" / ");
if (long_press_button == false) {
if (blink_state == 0) {
lcd.setCursor(9, 2);
display_position(Month);
}
else {
lcd.setCursor(9, 2);
lcd.print(" ");
}
} else {
lcd.setCursor(9, 2);
display_position(Month);
}

lcd.print(" / ");
display_position(Year);
break;
case SET_YEAR:
lcd.setCursor(0, 1);

76
lcd.print("An :");
lcd.setCursor(2, 2);
display_position(Day);
lcd.print(" / ");
display_position(Month);
lcd.print(" / ");
if (long_press_button == false) {
if (blink_state == 0) {
lcd.setCursor(16, 2);
display_position(Year);
}
else {
lcd.setCursor(16, 2);
lcd.print(" ");
}
}
else {
lcd.setCursor(16, 2);
display_position(Year);
}
break;
}
unsigned long blink_currentMillis = millis();
if (blink_currentMillis – blink_previousMillis > blink_interval) {
blink_previousMillis = blink_currentMillis;
if (blink_state == 0) {
blink_state = 1;
} else {
blink_state = 0;
}
}
}

void get_time() {
Wire.beginTransmission(0x68);
Wire.write(0); //set register to zero
Wire.endTransmission();
Wire.requestFrom(0x68, 3);// 3 bytes (sec, min, hour)
Second = bcdToDec(Wire.read() & 0x7f);

77
Minute = bcdToDec(Wire.read());
Hour = bcdToDec(Wire.read() & 0x3f);
}

void get_date() {
Wire.beginTransmission(0x68);
Wire. write(4);//set register to 3 (day)
Wire.endTransmission();
Wire.requestFrom(0x68, 3); // 3 bytes (day, month, year) – DOW get from Time.h library
Day = bcdToDec(Wire.read());
Month = bcdToDec(Wire.read());
Year = bcdToDec(Wire.read());
}
void s et_time() {
Wire.beginTransmission(0x68);
Wire.write(0x00);
Second = 0;
Wire.write(decToBcd(Second));
Wire.write(decToBcd(Minute));
Wire.write(decToBcd(Hour));
Wire.write(0x00);
Wire.endTransmission();
}

void set_date() {
Wire.beginTransmission(0x68);
Wire.write(4);
Wire.write(decToBcd(DoW));
Wire.write(decToBcd(Day));
Wire.write(decToBcd(Month));
Wire.write(decToBcd(Year));
Wire.endTransmission();
}

void check_RTC()
{
if (timeStatus() != timeSet)
RTC_e rror = true;
else

78
RTC_e rror = false;
}

byte decToBcd(byte val) {
return ( (val / 10 * 16) + (val % 10) );
}

byte bcdToDec(byte val) {
return ( (val / 16 * 10) + (val % 16) );
}

void display_position(int digits) {
if (digits < 10)
lcd.print("0");
lcd.print(digits);
}

Similar Posts