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.

Măsurarea temperaturii și umidității pe Arduino - o selecție de moduri

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).

Dependența de temperatură a rezistenței

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.

Datashit Termistori Vishay TC

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.

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:

Constante termistore

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.

B - coeficientul beta din fișa tehnică

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

raport beta

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.

Schema de conectare a termistorului la microcontroler

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.

Schema de conectare a termistorului la microcontroler

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:

schiță

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.

Senzor digital DS18B20

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

Schema de conectare a senzorului ds18b20 la Arduino
Schema de conectare a senzorului ds18b20 la Arduino

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

Schema de conectare a senzorului Arduino

Î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:

Senzor digital de temperatură DS18B20

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.

schiță

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ă

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.

 
DHT11
DHT22
Determinarea umidității în interval
20-80%
0-100%
Precizia măsurătorii
5%
2-5%
Determinarea temperaturii
0 ° C până la + 50 ° C
-40 ° C până la + 125 ° C
Precizia măsurătorii
2,5%
plus sau minus 0,5 grade Celsius
Frecvența de votare
1 dată pe secundă
1 dată în 2 secunde
Schema de conectare pentru senzorul de umiditate la arduino

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ă.

Schema de conectare a senzorului de umiditate sub forma unui modul la arduino

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:

Exemplu de utilizare al 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 i.electricianexp.com:

  • Cele mai populare senzori pentru Arduino
  • Conectarea senzorilor analogici la Arduino, citirea senzorilor
  • Utilizarea podului Wheatstone pentru măsurarea cantităților neelectrice
  • Senzori de temperatură. Partea a doua termistori
  • Senzori de umiditate - modul în care sunt aranjați și funcționează

  •