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.

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

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.

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.

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:


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.

I detta fall anges B i formen:

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.

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.

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:

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.

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


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

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:

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.

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

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

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.

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:

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
: