DHT17 temperatur- och luftfuktighetssensorn är en populär och billig sensor som kan användas över ett ganska brett temperaturintervall och relativ fuktighet. Låt oss se hur man ansluter den till Arduino och hur man läser data från den.
Nödvändig
- - Arduino;
- - DHT17 temperatur- och luftfuktighetssensor.
Instruktioner
Steg 1
Så DHT11-sensorn har följande egenskaper:
- uppmätt relativ luftfuktighet - 20..90% med ett fel på upp till 5%, - Område för uppmätta temperaturer - 0..50 grader Celsius med ett fel på upp till 2 grader.
- svarstid på fuktförändringar - upp till 15 sekunder, temperatur - upp till 30 sekunder;
- den minsta valperioden är 1 sekund.
Som du kan se är DHT11-sensorn inte särskilt exakt och temperaturområdet täcker inte negativa värden, vilket knappast är lämpligt för utomhusmätningar under den kalla årstiden i vårt klimat. Den låga kostnaden, den lilla storleken och användarvänligheten kompenserar emellertid delvis dessa nackdelar.
Bilden visar sensorns utseende och dess mått i millimeter.
Steg 2
Tänk på anslutningsdiagrammet för DHT11-temperatur- och luftfuktighetssensorn till mikrokontrollern, i synnerhet till Arduino. På bilden:
- MCU - mikrokontroller (till exempel Arduino eller liknande) eller en enkel kortdator (Raspberry Pi eller liknande);
- DHT11 - temperatur- och luftfuktighetssensor;
- DATA - databuss; om längden på anslutningskabeln från sensorn till mikrokontrollern inte överstiger 20 meter, rekommenderas att du drar den här bussen till strömförsörjningen med ett 5, 1 kOhm motstånd; om mer än 20 meter, då ett annat lämpligt värde (mindre).
- VDD - sensorns strömförsörjning; tillåtna spänningar från ~ 3,0 till ~ 5,5 volt DC; om strömförsörjning ~ 3,3 V används, är det tillrådligt att använda en försörjningskabel inte längre än 20 cm.
En av sensorkablarna - den tredje - är inte ansluten till någonting.
DHT11-sensorn säljs ofta som en komplett montering med nödvändiga rörledningar - dragmotstånd och filterkondensator.
Steg 3
Låt oss sätta ihop det övervägda schemat. Jag kommer också att ansluta en logisk analysator till kretsen så att jag kan studera tidsdiagrammet för kommunikationen med sensorn.
Steg 4
Låt oss gå det enkla sättet: ladda ner biblioteket för DHT11-sensorn (länk i avsnittet "Källor"), installera det på vanligt sätt (packa upp det i katalogen / bibliotek / i Arduino-utvecklingsmiljön).
Låt oss skriva en så enkel skiss. Låt oss ladda det i Arduino. Denna skiss matar ut RH- och temperaturmeddelanden som läses från DHT11-sensorn till datorns serieport varannan sekund.
Steg 5
Nu, med hjälp av tidsdiagrammet som erhållits från logikanalysatorn, låt oss ta reda på hur informationsutbytet utförs.
DHT11-temperatur- och luftfuktighetssensorn använder ett seriellt gränssnitt för en tråd för att kommunicera med mikrokontrollern. Ett datautbyte tar ungefär 40 ms och innehåller: 1 förfrågningsbit från mikrokontrollen, 1 bit av sensorns svar och 40 databitar från sensorn. Uppgifterna inkluderar: 16 bitar fuktighetsinformation, 26 bitar temperaturinformation och 8 kontrollbitar.
Låt oss titta närmare på tidsdiagrammet för Arduino-kommunikationen med DHT11-sensorn.
Det framgår av figuren att det finns två typer av impulser: korta och långa. Korta pulser i detta utbytesprotokoll betecknar nollor, långa pulser - sådana.
Så de första två pulserna är Arduinos begäran till DHT11 och följaktligen sensorns svar. Därefter kommer 16 bitar fuktighet. Dessutom är de uppdelade i byte, hög och låg, hög till vänster. Det vill säga i vår figur är fuktdata som följer:
0001000000000000 = 00000000 00010000 = 0x10 = 16% RH.
Temperaturdata som liknar:
0001011100000000 = 00000000 00010111 = 0x17 = 23 grader Celsius.
Kontrollbitar - kontrollsumman är bara summeringen av 4 mottagna databytes:
00000000 +
00010000 +
00000000 +
00010111 =
00100111 i binär eller 16 + 23 = 39 i decimal.