kategorier: Mikrokontrollkretser
Antall visninger: 9996
Kommentarer til artikkelen: 0

Måling av temperatur og fuktighet på Arduino - et utvalg av metoder

 

For å lage en hjemmeværende værstasjon eller et termometer, må du lære hvordan du kobler Arduino-brettet og en enhet for måling av temperatur og fuktighet. Temperaturmåling kan håndteres ved hjelp av en termistor eller en digital sensor DS18B20, men for måling av fuktighet bruk mer komplekse enheter - sensorer DHT11 eller DHT22. I denne artikkelen viser vi deg hvordan du måler temperatur og fuktighet ved hjelp av Arduino og disse sensorene.

Måling av temperatur og fuktighet på Arduino - et utvalg av metoder

Termistormåling

Den enkleste måten å bestemme temperaturen på er å bruke termistor. Dette er en type motstand hvis motstand avhenger av omgivelsestemperaturen. Det er termistorer med en positiv og negativ temperaturmotstandskoeffisient - henholdsvis PTC (også kalt posistorer) og NTC-termistorer.

I grafen under ser du temperaturavhengigheten av motstand. Den stiplede linjen viser avhengighet for en negativ TCS-termistor (NTC), og den faste linjen for en positiv TCS-termistor (PTC).

Temperaturavhengighet av motstand

Hva ser vi her? Det første som fanger blikket ditt er at tidsplanen for PTC-termistoren er brutt og det vil være vanskelig eller umulig å måle et antall temperaturverdier, men tidsplanen for NTC-termistoren er mer eller mindre ensartet, selv om den tydeligvis er ikke-lineær. Hva betyr dette? Å bruke en NTC-termistor er enklere å måle temperatur, fordi det er lettere å finne ut hvilken funksjon dens verdier endres på.

For å konvertere temperaturen til motstand kan du ta verdiene manuelt, men dette er vanskelig å gjøre hjemme, og du trenger et termometer for å bestemme de virkelige verdiene på temperaturen til mediet. I databladene til noen komponenter er en slik tabell gitt for eksempel for en serie NTC-termistorer fra Vishay.

Datashit Vishay TC termistorer

Da kan du organisere oversettelsen gjennom grenene ved å bruke funksjonen hvis ... annet eller bytte. Imidlertid, hvis det ikke er slike tabeller i databladene, må du beregne funksjonen som motstanden endrer seg med økende temperatur.

For å beskrive denne endringen eksisterer Steinhart-Hart-ligningen.

Steinhart-hart-ligningen

hvor A, B og C er termistorkonstantene bestemt ved å måle tre temperaturer med en forskjell på minst 10 grader Celsius. Samtidig indikerer forskjellige kilder at for en typisk 10 kΩ NTC-termistor er de lik:

Termistorkonstanter

B - beta-koeffisient, det er beregnet basert på måling av motstand for to forskjellige temperaturer. Det er indikert enten i databladet (som illustrert nedenfor), eller beregnet uavhengig.

B - beta-koeffisient fra databladet

I dette tilfellet er B angitt på skjemaet:

beta-forhold

Dette betyr at koeffisienten ble beregnet basert på dataene som ble oppnådd ved måling av motstand ved temperaturer på 25 og 100 grader Celsius, og dette er det vanligste alternativet. Deretter beregnes det ved formelen:

B = (ln (R1) - ln (R2)) / (1 / T1 - 1 / T2)

Et typisk koblingsskjema over en termistor til en mikrokontroller er vist nedenfor.

Tilkoblingsskjema for termistoren til mikrokontrolleren

Her er R1 en konstant motstand, termistoren er koblet til strømkilden, og dataene blir hentet fra midtpunktet mellom dem, diagrammet indikerer betinget at signalet leveres til pinne A0 - dette analog inngang Arduino.

Tilkoblingsskjema for termistoren til mikrokontrolleren

For å beregne motstanden til en termistor, kan du bruke følgende formel:

R for termistor = R1⋅ ((Vcc / Voutput) −1)

For å oversette til et språk som er forståelig for arduino, må du huske at arduino har en 10-bit ADC, så den maksimale digitale verdien for inngangssignalet (spenning 5V) vil være 1023. Deretter betinget:

  • Dmax = 1023;

  • D er signalets faktiske verdi.

deretter:

R for termistor = R1⋅ ((Dmax / D) −1)

Nå bruker vi dette til å beregne motstanden og deretter beregne temperaturen på termistoren ved å bruke beta-ligningen på et programmeringsspråk for Arduino. Skissen blir slik:

skisse

DS18B20

Enda mer populært for å måle temperatur med.Arduino fant en digital sensor DS18B20. Den kommuniserer med mikrokontrolleren via 1-ledergrensesnittet, du kan koble flere sensorer (opptil 127) til en ledning, og for å få tilgang til dem trenger du å finne ut IDen til hver av sensorene.

Merk: du bør kjenne til ID-en selv om du bare bruker en sensor.

DS18B20 digital sensor

Koblingsskjemaet til ds18b20-sensoren til Arduino ser slik ut:

Tilkoblingsskjema for ds18b20-sensoren til Arduino
Tilkoblingsskjema for ds18b20-sensoren til Arduino

Det er også en parasittisk strømmodus - tilkoblingsskjemaet ser slik ut (du trenger to ledninger i stedet for tre):

Arduino-sensortilkoblingsskjema

I denne modusen garanteres ikke riktig drift når du måler temperaturer over 100 grader.

Den digitale temperatursensoren DS18B20 består av et helt sett med noder, som alle andre SIMS. Du kan se den interne enheten nedenfor:

Digital temperatursensor DS18B20

For å jobbe med det, må du laste ned Onewire-biblioteket til Arduino, og for selve sensoren anbefales det å bruke DallasTemperature-biblioteket.

skisse

Dette kodeeksemplet demonstrerer det grunnleggende om å jobbe med en temperatursensor, resultatet i grader Celsius sendes ut gjennom serieporten etter hver avlesning.


DHT11 og DHT22 - fuktighets- og temperatursensorer

DHT11 og DHT22 - fuktighets- og temperatursensorer

Disse sensorene er populære og brukes ofte til å måle fuktighet og omgivelsestemperatur. I tabellen nedenfor indikerte vi deres viktigste forskjeller.

 
DHT11
DHT22
Fuktbestemmelse i området
20-80%
0-100%
Måle nøyaktighet
5%
2-5%
Temperaturbestemmelse
0 ° C til + 50 ° C
-40 ° C til + 125 ° C
Måle nøyaktighet
2,5%
pluss eller minus 0,5 grader celsius
Polling frekvens
1 gang per sekund
1 gang på 2 sekunder
Tilkoblingsskjema for fuktighetssensor til arduino

Tilkoblingsskjemaet er ganske enkelt:

  • 1 konklusjon - ernæring;

  • 2 konklusjon - data;

  • 3 konklusjon - ikke brukt;

  • 4 konklusjon - den generelle ledningen.

Hvis sensoren din er laget i form av en modul, vil den ha tre utganger, men ingen motstand er nødvendig - den er allerede loddet til brettet.

Tilkoblingsskjema over fuktighetssensoren i form av en modul til arduino

For arbeid trenger vi dht.h-biblioteket, det er ikke i standardsettet, så det må lastes ned og installeres i bibliotekmappen i mappen med arduino IDE. Den støtter alle sensorer i denne familien:

  • DHT 11;

  • DHT 21 (AM2301);

  • DHT 22 (AM2302, AM2321).

Eksempel på bibliotekbruk:

Eksempel på bruk av bibliotek

konklusjon

I dag er det veldig enkelt å lage din egen stasjon for å måle temperatur og fuktighet takket være Arduino-plattformen. Kostnaden for slike prosjekter er 3-4 hundre rubler. For batterilevetid, og ikke ut til en datamaskin, kan brukes tegnvisning (vi beskrev dem i en fersk artikkel), så kan du bygge en bærbar enhet til bruk både hjemme og i bilen. Skriv i kommentarene hva annet du vil lære om enkle hjemmelagde håndverk på arduino!

Se også om dette emnet:Populære sensorer for Arduino - tilkobling, diagrammer, skisser

Se også på elektrohomepro.com:

  • Mest populære sensorer for Arduino
  • Koble analoge sensorer til Arduino, lese sensorer
  • Bruken av Wheatstone Bridge for måling av ikke-elektriske mengder
  • Temperatursensorer. Del to termistorer
  • Fuktighetssensorer - hvordan de er ordnet og fungerer

  •