Die DHT17 temperatuur- en humiditeitsensor is 'n gewilde en goedkoop sensor wat gebruik kan word oor 'n taamlike wye verskeidenheid temperature en relatiewe humiditeit. Kom ons kyk hoe om dit aan die Arduino te koppel en hoe u data daaruit kan lees.
Nodig
- - Arduino;
- - DHT17 temperatuur- en humiditeitsensor.
Instruksies
Stap 1
Dus, die DHT11-sensor het die volgende eienskappe:
- bereik van gemete relatiewe humiditeit - 20..90% met 'n fout van tot 5%, - bereik van gemete temperature - 0..50 grade Celsius met 'n fout van tot 2 grade;
- reaksietyd op veranderinge in humiditeit - tot 15 sekondes, temperatuur - tot 30 sekondes;
- die minimum verkiesingstydperk is 1 sekonde.
Soos u kan sien, is die DHT11-sensor nie baie akkuraat nie, en die temperatuurbereik dek nie negatiewe waardes nie, wat skaars geskik is vir buitelugmetings in die koue seisoen in ons klimaat. Die lae koste, klein grootte en gebruiksgemak kompenseer hierdie nadele egter gedeeltelik.
Die figuur toon die voorkoms van die sensor en die afmetings daarvan in millimeter.
Stap 2
Beskou die verbindingsdiagram van die DHT11 temperatuur- en humiditeitsensor aan die mikrobeheerder, veral die Arduino. Op die afbeelding:
- MCU - mikrobeheerder (byvoorbeeld Arduino of soortgelyk) of enkelbordrekenaar (Raspberry Pi of soortgelyk);
- DHT11 - temperatuur- en humiditeitsensor;
- DATA - databus; as die lengte van die verbindingskabel van die sensor na die mikrobeheerder nie 20 meter oorskry nie, word dit aanbeveel om hierdie bus na die kragbron te trek met 'n weerstand van 5, 1 kOhm; as dit meer as 20 meter is, dan is 'n ander geskikte waarde (kleiner).
- VDD - sensorkragtoevoer; toelaatbare spanning van ~ 3.0 tot ~ 5.5 volt DC; as kragvoorsiening ~ 3,3 V gebruik word, is dit raadsaam om 'n toevoerdraad nie langer as 20 cm te gebruik nie.
Een van die sensorkabels - die derde - is aan niks gekoppel nie.
Die DHT11-sensor word dikwels verkoop as 'n volledige samestelling met die nodige pype - optrekweerstand en filterkondensator.
Stap 3
Kom ons stel die oorweegse skema saam. Ek sal ook 'n logiese ontleder aan die stroombaan koppel sodat ek die tyddiagram van die kommunikasie met die sensor kan bestudeer.
Stap 4
Kom ons gaan die eenvoudige manier: laai die biblioteek vir die DHT11-sensor af (skakel in die afdeling "Bronne"), installeer dit op die standaard manier (pak dit uit in die / biblioteke / gids van die Arduino-ontwikkelingsomgewing).
Kom ons skryf so 'n eenvoudige skets. Kom ons laai dit in Arduino. Hierdie skets gee die RH- en temperatuurboodskappe wat gelees word vanaf die DHT11-sensor elke 2 sekondes na die rekenaar se seriële poort.
Stap 5
Laat ons nou, met behulp van die tyddiagram wat van die logiese ontleder verkry is, uitvind hoe die uitruil van inligting uitgevoer word.
Die DHT11 temperatuur- en humiditeitsensor gebruik 'n seriële koppelvlak met een draad om met die mikrobeheerder te kommunikeer. Een data-uitruil duur ongeveer 40 ms en bevat: 1 versoekbit van die mikrobeheerder, 1 bit van die sensorrespons en 40 data-bits van die sensor. Die gegewens bevat: 16 stukkies inligting oor humiditeit, 26 stukkies temperatuurinligting en 8 stukkies.
Kom ons kyk noukeuriger na die tyddiagram van die Arduino-kommunikasie met die DHT11-sensor.
Daar kan aan die figuur gesien word dat daar twee soorte impulse is: kort en lank. Kort pulse in hierdie uitruilprotokol dui nulle, lang pulse - een aan.
Die eerste twee pulse is dus die versoek van die Arduino aan DHT11 en gevolglik die reaksie van die sensor. Volgende kom 16 stukkies humiditeit. Boonop is hulle verdeel in grepe, hoog en laag, hoog aan die linkerkant. Dit is, volgens ons figuur, die vogdata soos volg:
0001000000000000 = 00000000 00010000 = 0x10 = 16% RH.
Temperatuurdata soortgelyk aan:
0001011100000000 = 00000000 00010111 = 0x17 = 23 grade Celsius.
Kontroleer stukkies - die kontrolesom is net die opsomming van 4 data-bytes wat ontvang is:
00000000 +
00010000 +
00000000 +
00010111 =
00100111 in binêre of 16 + 23 = 39 in desimaal.