kategorier: Mikrokontrollkretsar
Antal visningar: 9996
Kommentarer till artikeln: 0

Mät temperatur och luftfuktighet på Arduino - ett urval av sätt

 

För att skapa en hemmaväderstation eller termometer måste du lära dig att para Arduino-kortet och en enhet för att mäta temperatur och luftfuktighet. Temperaturmätning kan hanteras med hjälp av en termistor eller en digital sensor DS18B20, men för att mäta fuktighet använd mer komplexa enheter - sensorer DHT11 eller DHT22. I den här artikeln visar vi dig hur du mäter temperatur och fuktighet med Arduino och dessa sensorer.

Mät temperatur och luftfuktighet på Arduino - ett urval av sätt

Termistormätning

Det enklaste sättet att bestämma temperaturen är att använda termistor. Detta är en typ av motstånd vars motstånd beror på omgivningstemperaturen. Det finns termistorer med en positiv och negativ temperaturmotståndskoefficient - PTC (även kallad posistorer) respektive NTC-termistorer.

I diagrammet nedan ser du temperaturberoende av motstånd. Den streckade linjen visar beroendet för en negativ TCS-termistor (NTC) och den heldragna linjen för en positiv TCS-termistor (PTC).

Temperaturberoende av motstånd

Vad ser vi här? Det första som fångar ditt öga är att schemat för PTC-termistorn är trasigt och det kommer att vara svårt eller omöjligt att mäta ett antal temperaturvärden, men schemat för NTC-termistorn är mer eller mindre enhetligt, även om det är uppenbart olinjärt. Vad betyder detta? Att använda en NTC-termistor är lättare att mäta temperatur, eftersom det är lättare att ta reda på vilken funktion dess värden förändras på.

För att konvertera temperaturen till motstånd kan du manuellt ta värdena, men det är svårt att göra hemma och du behöver en termometer för att bestämma de verkliga värdena på mediets temperatur. I datablad för vissa komponenter anges en sådan tabell, till exempel för en serie NTC-termistorer från Vishay.

Datashit Vishay TC-termistorer

Då kan du organisera översättningen genom grenarna med funktionen om ... annars eller växlar. Men om det inte finns några sådana tabeller i databladen, måste du beräkna vilken funktion motståndet ändrar med ökande temperatur.

För att beskriva denna förändring finns Steinhart-Hart-ekvationen.

Steinhart-hart-ekvationen

där A, B och C är termistorkonstanterna bestämda genom att mäta tre temperaturer med en skillnad på minst 10 grader Celsius. Samtidigt indikerar olika källor att för en typisk 10 kΩ NTC-termistor är de lika med:

Termistorkonstanter

B - beta-koefficient, beräknas det baserat på mätningen av motståndet för två olika temperaturer. Det anges antingen i databladet (som illustreras nedan) eller beräknas oberoende.

B - beta-koefficient från databladet

I detta fall anges B i formen:

beta-förhållande

Detta innebär att koefficienten beräknades baserat på de data som erhölls vid mätning av motstånd vid temperaturer på 25 och 100 grader Celsius, och detta är det vanligaste alternativet. Sedan beräknas den med formeln:

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

Ett typiskt anslutningsdiagram över en termistor till en mikrokontroller visas nedan.

Anslutningsdiagram för termistorn till mikrokontrollern

Här är R1 ett konstant motstånd, termistorn är ansluten till strömkällan, och data tas från mittpunkten mellan dem, diagrammet indikerar villkorligt att signalen levereras till stift A0 - detta analog ingång Arduino.

Anslutningsdiagram för termistorn till mikrokontrollern

För att beräkna en termistors motstånd kan du använda följande formel:

R för termistorn = R1⋅ ((Vcc / Voutput) −1)

För att översätta till ett språk som är förståeligt för arduino, måste du komma ihåg att arduino har en 10-bitars ADC, så det maximala digitala värdet för insignalen (spänning 5V) kommer att vara 1023. Sedan villkorligt:

  • Dmax = 1023;

  • D är signalens verkliga värde.

därefter:

R för termistorn = R1⋅ ((Dmax / D) −1)

Nu använder vi detta för att beräkna resistansen och sedan beräkna temperaturen på termistorn med beta-ekvationen på ett programmeringsspråk för Arduino. Skissen blir så här:

skiss

DS18B20

Ännu mer populärt att mäta temperatur med.Arduino hittade en digital sensor DS18B20. Den kommunicerar med mikrokontrollern via 1-trådgränssnittet, du kan ansluta flera sensorer (upp till 127) till en tråd, och för att komma åt dem måste du ta reda på ID för var och en av sensorerna.

Obs! Du bör känna till ID även om du bara använder en sensor.

DS18B20 digital sensor

Anslutningsdiagrammet för ds18b20-sensorn till Arduino ser ut så här:

Anslutningsdiagram för ds18b20-sensorn till Arduino
Anslutningsdiagram för ds18b20-sensorn till Arduino

Det finns också ett parasitiskt energiläge - anslutningsdiagrammet ser ut så här (du behöver två ledningar istället för tre):

Arduino-sensoranslutningsdiagram

I detta läge garanteras inte korrekt drift vid mätning av temperaturer över 100 grader Celsius.

DS18B20 digital temperatursensor består av en hel uppsättning noder, som alla andra SIMS. Du kan se dess interna enhet nedan:

Digital temperatursensor DS18B20

För att arbeta med det måste du ladda ner Onewire-biblioteket för Arduino, och för själva sensorn rekommenderas det att använda DallasTemperature-biblioteket.

skiss

Detta kodexempel visar grunderna för att arbeta med 1 temperatursensor, resultatet i grader Celsius matas ut genom serieporten efter varje läsning.


DHT11 och DHT22 - fuktighets- och temperatursensorer

DHT11 och DHT22 - fuktighets- och temperatursensorer

Dessa sensorer är populära och används ofta för att mäta fuktighet och omgivningstemperatur. I tabellen nedan angav vi deras huvudskillnader.

 
DHT11
DHT22
Fuktbestämning inom intervallet
20-80%
0-100%
Mätnoggrannhet
5%
2-5%
Temperaturbestämning
0 ° C till + 50 ° C
-40 ° C till + 125 ° C
Mätnoggrannhet
2,5%
plus eller minus 0,5 grader Celsius
Pollingfrekvens
1 gång per sekund
1 gång på 2 sekunder
Anslutningsdiagram för fuktighetssensor till arduino

Anslutningsdiagrammet är ganska enkelt:

  • En slutsats - näring;

  • 2 slutsats - data;

  • 3 slutsats - används inte;

  • 4 slutsats - den allmänna tråden.

Om din sensor är gjord i form av en modul kommer den att ha tre utgångar, men inget motstånd behövs - det är redan lödat på kortet.

Anslutningsdiagram för fuktighetssensorn i form av en modul till arduino

För att fungera behöver vi dht.h-biblioteket, det finns inte i standarduppsättningen, så det måste laddas ner och installeras i bibliotekmappen i mappen med arduino IDE. Den stöder alla sensorer i denna familj:

  • DHT 11;

  • DHT 21 (AM2301);

  • DHT 22 (AM2302, AM2321).

Exempel på biblioteksanvändning:

Exempel på användning av bibliotek

slutsats

Numera är det mycket enkelt att skapa din egen station för att mäta temperatur och luftfuktighet tack vare Arduino-plattformen. Kostnaden för sådana projekt är 3-4 hundra rubel. För batteritid och inte matas ut till en dator kan användas teckenvisning (vi beskrev dem i en ny artikel), då kan du bygga en bärbar enhet för användning både hemma och i bilen. Skriv i kommentarerna vad du vill lära dig mer om enkla hemmagjorda hantverk på arduino!

Se också om detta ämne:Populära sensorer för Arduino - anslutning, diagram, skisser

Se även på elektrohomepro.com:

  • Mest populära sensorer för Arduino
  • Ansluter analoga sensorer till Arduino, lässensorer
  • Användningen av Wheatstone Bridge för att mäta icke-elektriska mängder
  • Temperaturgivare. Del två termistorer
  • Fuktighetssensorer - hur de är ordnade och fungerar

  •