DHT17 temperatur- og fuktighetssensor er en populær og billig sensor som kan brukes over et ganske bredt spekter av temperaturer og relativ fuktighet. La oss se hvordan du kobler den til Arduino og hvordan du leser data fra den.
Nødvendig
- - Arduino;
- - DHT17 temperatur- og fuktighetssensor.
Bruksanvisning
Trinn 1
Så DHT11-sensoren har følgende egenskaper:
- område av målt relativ fuktighet - 20..90% med en feil på opptil 5%, - område av målte temperaturer - 0..50 grader Celsius med en feil på opptil 2 grader;
- responstid på fuktighetsendringer - opptil 15 sekunder, temperatur - opptil 30 sekunder;
- minimum valgperiode er 1 sekund.
Som du kan se, er DHT11-sensoren ikke veldig nøyaktig, og temperaturområdet dekker ikke negative verdier, noe som neppe er egnet for utendørsmålinger i den kalde årstiden i vårt klima. Imidlertid kompenserer den lave kostnadene, den lille størrelsen og brukervennligheten delvis disse ulempene.
Figuren viser utseendet til sensoren og dens dimensjoner i millimeter.
Steg 2
Tenk på tilkoblingsskjemaet for DHT11 temperatur- og fuktighetssensoren til mikrokontrolleren, spesielt til Arduino. På bildet:
- MCU - mikrokontroller (for eksempel Arduino eller lignende) eller en enkelt datamaskin (Raspberry Pi eller lignende);
- DHT11 - temperatur- og fuktighetssensor;
- DATA - databuss; hvis lengden på tilkoblingskabelen fra sensoren til mikrokontrolleren ikke overstiger 20 meter, anbefales det å trekke denne bussen til strømforsyningen med en 5, 1 kOhm motstand; hvis mer enn 20 meter, så en annen passende verdi (mindre).
- VDD - strømforsyning til sensoren; tillatte spenninger fra ~ 3,0 til ~ 5,5 volt DC; hvis det brukes strømforsyning ~ 3,3 V, anbefales det å bruke en ledning som ikke er lengre enn 20 cm.
En av sensorkablene - den tredje - er ikke koblet til noe.
DHT11-sensoren selges ofte som en komplett montering med den nødvendige rørledningen - opptrekksmotstand og filterkondensator.
Trinn 3
La oss sette sammen den vurderte ordningen. Jeg vil også koble en logisk analysator til kretsen slik at jeg kan studere tidsskjemaet for kommunikasjonen med sensoren.
Trinn 4
La oss gå den enkle veien: Last ned biblioteket for DHT11-sensoren (lenke i seksjonen "Kilder"), installer den på standard måte (pakk den ut i / biblioteker / katalogen i Arduino-utviklingsmiljøet).
La oss skrive en så enkel skisse. La oss laste den inn i Arduino. Denne skissen viser RH- og temperaturmeldingene som leses fra DHT11-sensoren til datamaskinens serielle port hvert 2. sekund.
Trinn 5
Nå, ved hjelp av tidsskjemaet hentet fra logikkanalysatoren, la oss finne ut hvordan informasjonsutvekslingen utføres.
DHT11 temperatur- og fuktighetssensoren bruker et serielt grensesnitt med en ledning for å kommunisere med mikrokontrolleren. Én datautveksling tar omtrent 40 ms og inneholder: 1 forespørselsbit fra mikrokontrolleren, 1 bit av sensorresponsen og 40 databiter fra sensoren. Dataene inkluderer: 16 biter fuktighetsinformasjon, 26 biter temperaturinformasjon og 8 sjekkbiter.
La oss se nærmere på tidsskjemaet for Arduino-kommunikasjonen med DHT11-sensoren.
Det kan sees fra figuren at det er to typer impulser: korte og lange. Korte pulser i denne utvekslingsprotokollen betegner nuller, lange pulser - en.
Så de to første pulser er Arduinos forespørsel til DHT11 og følgelig sensorens respons. Deretter kommer 16 biter fuktighet. Videre er de delt inn i byte, høyt og lavt, høyt til venstre. I vår figur er fuktighetsdataene som følger:
0001000000000000 = 00000000 00010000 = 0x10 = 16% RF.
Temperaturdata som ligner på:
0001011100000000 = 00000000 00010111 = 0x17 = 23 grader Celsius.
Sjekk biter - sjekksummen er bare summeringen av 4 mottatte databytes:
00000000 +
00010000 +
00000000 +
00010111 =
00100111 i binær eller 16 + 23 = 39 i desimal.