kategorier: Microcontroller kredsløb
Antal visninger: 9996
Kommentarer til artiklen: 0

Måling af temperatur og fugtighed på Arduino - et udvalg af metoder

 

For at oprette en hjemmeværende vejrstation eller termometer skal du lære at parre Arduino-tavlen og en enhed til måling af temperatur og fugtighed. Temperaturmåling kan håndteres ved hjælp af en termistor eller en digital sensor DS18B20, men til måling af fugtighed Brug mere komplekse enheder - sensorer DHT11 eller DHT22. I denne artikel viser vi dig, hvordan du måler temperatur og fugtighed ved hjælp af Arduino og disse sensorer.

Måling af temperatur og fugtighed på Arduino - et udvalg af metoder

Måling af termistor

Den nemmeste måde at bestemme temperaturen er at bruge termistor. Dette er en type modstand, hvis modstand afhænger af omgivelsestemperaturen. Der er termistorer med en positiv og negativ temperaturmodstandskoefficient - henholdsvis PTC (også kaldet posistorer) og NTC-termistorer.

I nedenstående graf ser du temperaturafhængigheden af ​​modstand. Den stiplede linje viser afhængigheden af ​​en negativ TCS-termistor (NTC) og den faste linje for en positiv TCS-termistor (PTC).

Temperaturafhængighed af modstand

Hvad ser vi her? Den første ting, der fanger øjet, er, at tidsplanen for PTC-termistor er brudt, og det vil være vanskeligt eller umuligt at måle et antal temperaturværdier, men tidsplanen for NTC-termistoren er mere eller mindre ensartet, selvom den helt klart er ikke-lineær. Hvad betyder dette? Brug af en NTC-termistor er lettere at måle temperatur, fordi det er lettere at finde ud af, hvilken funktion dens værdier ændrer sig med.

For at konvertere temperaturen til modstand kan du manuelt fjerne værdierne, men dette er vanskeligt at gøre derhjemme, og du har brug for et termometer for at bestemme de faktiske værdier for mediets temperatur. I databladene for nogle komponenter er en sådan tabel for eksempel angivet for en række NTC-termistorer fra Vishay.

Datashit Vishay TC termistorer

Derefter kan du organisere oversættelsen gennem grene ved hjælp af funktionen, hvis ... ellers eller switchcase. Hvis der ikke findes sådanne tabeller i databladene, skal du beregne den funktion, hvormed modstanden ændres med stigende temperatur.

For at beskrive denne ændring findes Steinhart-Hart-ligningen.

Steinhart-hart ligning

hvor A, B og C er termistorkonstanterne bestemt ved at måle tre temperaturer med en forskel på mindst 10 grader Celsius. Samtidig angiver forskellige kilder, at for en typisk 10 kΩ NTC-termistor er de lig med:

Termistorkonstanter

B - beta-koefficient, beregnes den ud fra måling af modstand i to forskellige temperaturer. Det er angivet enten i databladet (som illustreret nedenfor) eller beregnet uafhængigt.

B - beta-koefficient fra databladet

I dette tilfælde er B angivet i formen:

beta-forhold

Dette betyder, at koefficienten blev beregnet på grundlag af data opnået ved måling af modstand ved temperaturer på 25 og 100 grader Celsius, og dette er den mest almindelige variant. Derefter beregnes det ved formlen:

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

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

Forbindelsesdiagram over termistoren til mikrokontrolleren

Her er R1 en konstant modstand, termistoren er tilsluttet strømkilden, og dataene hentes fra midtpunktet mellem dem, diagrammet indikerer betinget, at signalet føres til terminal A0 - dette analog indgang Arduino.

Forbindelsesdiagram over termistoren til mikrokontrolleren

For at beregne en termistors modstand kan du bruge følgende formel:

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

For at oversætte til et sprog, der er forståeligt for arduino, skal du huske, at arduino har en 10-bit ADC, så den maksimale digitale værdi af indgangssignalet (spænding 5V) vil være 1023. Derefter betinget:

  • Dmax = 1023;

  • D er signalets faktiske værdi.

Derefter:

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

Nu bruger vi dette til at beregne modstanden og derefter beregne temperaturen på termistoren ved hjælp af beta-ligningen på et programmeringssprog for Arduino. Skitse vil være sådan:

skitse

DS18B20

Endnu mere populær til måling af temperatur med.Arduino fandt en digital sensor DS18B20. Den kommunikerer med mikrokontrolleren via 1-leder interface, du kan forbinde flere sensorer (op til 127) til en tråd, og for at få adgang til dem skal du finde ud af ID for hver af sensorer.

Bemærk: du skal kende ID'et, selvom du kun bruger 1 sensor.

DS18B20 digital sensor

Forbindelsesdiagrammet for ds18b20-sensoren til Arduino ser sådan ud:

Forbindelsesdiagram for ds18b20-sensoren til Arduino
Forbindelsesdiagram for ds18b20-sensoren til Arduino

Der er også en parasitisk strømtilstand - dets forbindelsesdiagram ser sådan ud (du har brug for to ledninger i stedet for tre):

Arduino-sensortilslutningsdiagram

I denne tilstand garanteres ikke korrekt drift, når man måler temperaturer over 100 grader Celsius.

DS18B20 digital temperatursensor består af et helt sæt knudepunkter, som enhver anden SIMS. Du kan se dens interne enhed nedenfor:

Digital temperatursensor DS18B20

For at arbejde med det skal du downloade Onewire-biblioteket til Arduino, og for selve sensoren anbefales det at bruge DallasTemperature-biblioteket.

skitse

Dette kodeeksempel viser det grundlæggende ved at arbejde med 1 temperatursensor, resultatet i grader Celsius udsendes gennem den serielle port efter hver aflæsning.


DHT11 og DHT22 - fugtigheds- og temperatursensorer

DHT11 og DHT22 - fugtigheds- og temperatursensorer

Disse sensorer er populære og bruges ofte til at måle fugtighed og omgivelsestemperatur. I nedenstående tabel angav vi deres største forskelle.

 
DHT11
DHT22
Fugtbestemmelse i området
20-80%
0-100%
Målepræcision
5%
2-5%
Temperaturbestemmelse
0 ° C til + 50 ° C
-40 ° C til + 125 ° C
Målepræcision
2,5%
plus eller minus 0,5 grader celsius
Polling frekvens
1 gang i sekundet
1 gang på 2 sekunder
Forbindelsesdiagram for fugtighedsføler til arduino

Forbindelsesdiagrammet er ganske enkelt:

  • 1 konklusion - ernæring;

  • 2 konklusion - data;

  • 3 konklusion - ikke brugt;

  • 4 konklusion - den generelle ledning.

Hvis din sensor er lavet i form af et modul, vil den have tre udgange, men ingen modstand er nødvendig - den er allerede loddet til tavlen.

Forbindelsesdiagram over fugtighedsføler i form af et modul til arduino

Til arbejde har vi brug for dht.h-biblioteket, det er ikke i standardsættet, så det skal downloades og installeres i biblioteksmappen i mappen med arduino IDE. Det understøtter alle sensorer i denne familie:

  • DHT 11;

  • DHT 21 (AM2301);

  • DHT 22 (AM2302, AM2321).

Eksempel på brug af bibliotek:

Eksempel på brug af bibliotek

konklusion

I dag er det meget simpelt at oprette din egen station til måling af temperatur og fugtighed takket være Arduino-platformen. Omkostningerne ved sådanne projekter er 3-4 hundrede rubler. Til batterilevetid og ikke til en computer kan bruges tegnvisning (vi beskrev dem i en nylig artikel), så kan du bygge en bærbar enhed til brug både hjemme og i bilen. Skriv i kommentarerne, hvad du ellers gerne vil lære om simpelt hjemmelavet håndværk på arduino!

Se også om dette emne:Populære sensorer til Arduino - forbindelse, diagrammer, skitser

Se også på elektrohomepro.com:

  • Mest populære sensorer til Arduino
  • Tilslutning af analoge sensorer til Arduino, læssensorer
  • Brugen af ​​Wheatstone-broen til måling af ikke-elektriske mængder
  • Temperatursensorer. Del to termistorer
  • Fugtighedsfølere - hvordan de er arrangeret og fungerer

  •