categorii: Circuite de micro-controler
Număr de vizualizări: 9996
Comentarii la articol: 0
Măsurarea temperaturii și umidității pe Arduino - o selecție de moduri
Pentru a crea o stație meteo de acasă sau un termometru, trebuie să învățați cum să asociați placa Arduino și un dispozitiv pentru măsurarea temperaturii și umidității. Măsurarea temperaturii poate fi tratată folosind un termistor sau un senzor digital DS18B20, dar pentru măsurarea umidității utilizați dispozitive mai complexe - senzori DHT11 sau DHT22. În acest articol, vă vom arăta cum puteți măsura temperatura și umiditatea folosind Arduino și acești senzori.

Masurarea termistorului
Cel mai simplu mod de a determina temperatura este de a utiliza termistor. Acesta este un tip de rezistență a cărui rezistență depinde de temperatura mediului ambiant. Există termistori cu un coeficient de rezistență pozitiv și negativ de temperatură - PTC (numiți și posistori) și, respectiv, termistori NTC.
În graficul de mai jos vedeți dependența de temperatură a rezistenței. Linia punctată arată dependența pentru un termistor TCS negativ (NTC), iar linia solidă pentru un termistor TCS pozitiv (PTC).

Ce vedem aici? Primul lucru care vă atrage atenția este că programul pentru termistorul PTC este rupt și va fi dificil sau imposibil să măsurați o serie de valori de temperatură, dar programul pentru termistorul NTC este mai mult sau mai puțin uniform, deși este clar neliniar. Ce înseamnă asta? Folosind un termistor NTC este mai ușor de măsurat temperatura, deoarece este mai ușor să aflați funcția prin care se schimbă valorile sale.
Pentru a converti temperatura la rezistență, puteți lua manual valorile, dar acest lucru este dificil de făcut acasă și aveți nevoie de un termometru pentru a determina valorile reale ale temperaturii mediului. În fișele tehnice ale unor componente, un astfel de tabel este dat, de exemplu, pentru o serie de termistori NTC de la Vishay.

Apoi puteți organiza traducerea prin ramuri folosind funcția dacă ... altceva sau casetă. Cu toate acestea, dacă nu există astfel de tabele în fișele tehnice, trebuie să calculați funcția prin care rezistența se schimbă odată cu creșterea temperaturii.
Pentru a descrie această schimbare, există ecuația Steinhart-Hart.

unde A, B și C sunt constante de termistor determinate prin măsurarea a trei temperaturi cu o diferență de cel puțin 10 grade Celsius. În același timp, surse diferite indică faptul că pentru un termistor tipic NTC de 10 kΩ sunt egale cu:


B - coeficientul beta, se calculează pe baza măsurării rezistenței pentru două temperaturi diferite. Este indicat fie în fișa tehnică (așa cum este ilustrat mai jos), fie calculat independent.

În acest caz, B este indicat în forma:

Aceasta înseamnă că coeficientul a fost calculat pe baza datelor obținute la măsurarea rezistenței la temperaturi de 25 și 100 de grade Celsius, iar aceasta este cea mai comună opțiune. Apoi se calculează după formula:
B = (ln (R1) - ln (R2)) / (1 / T1 - 1 / T2)
O diagramă de conexiune tipică a unui termistor la un microcontroler este prezentată mai jos.

Aici R1 este un rezistor constant, termistorul este conectat la sursa de alimentare, iar datele sunt preluate din punctul intermediar dintre ele, diagrama indică condiționat că semnalul este alimentat la borna A0 - aceasta intrare analogică Arduino.

Pentru a calcula rezistența unui termistor, puteți utiliza următoarea formulă:
R de termistor = R1⋅ ((Vcc / Voutput) −1)
Pentru a traduce într-un limbaj inteligibil pentru arduino, trebuie să vă amintiți că arduino are un ADC de 10 biți, deci valoarea digitală maximă a semnalului de intrare (tensiune 5V) va fi 1023. Apoi, condiționat:
-
Dmax = 1023;
-
D este valoarea reală a semnalului.
apoi:
R de termistor = R1⋅ ((Dmax / D) 1)
Acum folosim acest lucru pentru a calcula rezistența și apoi pentru a calcula temperatura termistorului folosind ecuația beta într-un limbaj de programare pentru Arduino. Schița va fi astfel:

DS18B20
Chiar mai popular pentru măsurarea temperaturii cu.Arduino a găsit un senzor digital DS18B20. Comunică cu microcontrolerul prin interfața cu 1 fir, puteți conecta mai mulți senzori (până la 127) la un singur fir, iar pentru a le accesa va trebui să aflați ID-ul fiecăruia dintre senzori.
Notă: ar trebui să știți ID-ul chiar dacă utilizați doar 1 senzor.

Diagrama de conexiune a senzorului ds18b20 la Arduino arată astfel:


Există, de asemenea, un mod de alimentare parazitară - diagrama sa de conexiune arată astfel (aveți nevoie de două fire în loc de trei):

În acest mod, funcționarea corectă nu este garantată atunci când se măsoară temperaturi peste 100 de grade Celsius.
Senzorul digital de temperatură DS18B20 este format dintr-un set întreg de noduri, ca orice alt SIMS. Puteți urmări dispozitivul său intern mai jos:

Pentru a lucra cu aceasta, trebuie să descărcați biblioteca Onewire pentru Arduino, iar pentru senzorul în sine este recomandat să utilizați biblioteca DallasTemperature.

Acest exemplu de cod demonstrează elementele de bază ale lucrării cu 1 senzor de temperatură, rezultatul în grade Celsius este emis prin portul serial după fiecare citire.
DHT11 și DHT22 - senzori de umiditate și temperatură

Acești senzori sunt populari și sunt adesea folosiți pentru a măsura umiditatea și temperatura ambiantă. În tabelul de mai jos am indicat diferențele lor principale.

Schema de conectare este destul de simplă:
-
1 concluzie - nutriție;
-
2 concluzie - date;
-
3 concluzie - nu este folosită;
-
4 concluzie - sârmă generală.
Dacă senzorul dvs. este realizat sub forma unui modul, acesta va avea trei ieșiri, dar nu este nevoie de rezistență - este deja soldat pe placă.

Pentru a funcționa, avem nevoie de biblioteca dht.h, nu este în setul standard, deci trebuie descărcat și instalat în folderul bibliotecilor din folderul cu IDE arduino. Acceptă toți senzorii din această familie:
-
DHT 11;
-
DHT 21 (AM2301);
-
DHT 22 (AM2302, AM2321).
Exemplu de utilizare a bibliotecii:

concluzie
În zilele noastre, crearea propriei stații pentru măsurarea temperaturii și umidității este foarte simplă datorită platformei Arduino. Costul unor astfel de proiecte este de 3-4 sute de ruble. Pentru durata de viață a bateriei și nu este transmisă pe un computer, poate fi utilizat afișarea personajelor (le-am descris într-un articol recent), apoi puteți construi un dispozitiv portabil pentru utilizare atât acasă, cât și în mașină. Scrie în comentarii ce altceva ai vrea să înveți despre meșteșugurile simple de casă pe arduino!
Vezi și pe acest subiect:Senzori populari pentru Arduino - conexiune, diagrame, schițe
Consultați și la electro-ro.tomathouse.com
: