Module: DHT11, binnenklimaat sensor

(gepubliceerd op 20-03-2018)

Kennismaking
Voor iets meer dan een euro koopt u via internet een DHT11 van het Chinese Aosong, de goedkoopste temperatuur- en relatieve vochtigheidssensor die op dit moment wordt aangeboden. De DHT11 bevat twee sensoren en een microcontroller die de gegevens van de sensoren omzet in digitale signalen. Helaas hebt u wél een microcontroller nodig om de gegevens uit te lezen van de ene datalijn, analoge uitgangen zijn dus niet aanwezig.
Wij noemen deze sensor met opzet 'binnenklimaat sensor' omdat het meetbereik van zowel temperatuur als relatieve vochtigheid is beperkt tot de waarden de u in huis of kantoor kunt aantreffen: 0 °C tot 50 °C temperatuur en 20 % tot 80 % relatieve vochtigheid (RH).

DHT11-01 (© Aosong)
Het uiterlijk van de DHT11. (© Aosong)
Het innerlijke van de DHT11
Als u de sensor openbreekt, ontdekt u een klein printje met op de ene zijde de microcontroller en wat weerstanden en condensatoren en op de andere kant de twee sensoren. De DHT11 bevat een thermistor met een genormaliseerde weerstand van 100 kΩ voor het meten van de temperatuur en een resistieve vochtsensor van het type HR202. Dat is een sensor die gebruik maakt van een vrij nieuwe technologie. Op een basisplaatje van een organisch materiaal dat is samengesteld uit macro-moleculen zijn twee kamvormige elektroden aangebracht waarvan de tanden in elkaar grijpen. Het organisch materiaal neemt vanwege de grote moleculen de vochtigheid van de omgevingslucht vrij snel over. De weerstand van het materiaal is afhankelijk van de relatieve vochtigheid van deze lucht. Deze weerstand wordt gemeten door een wisselspanningssignaal over de twee elektroden aan te leggen. Hoewel wij nergens een schema van de interne elektronica konden vinden, ligt het voor de hand aan te nemen dat de microcontroller deze taak zonder extra elektronica op zich neemt. De gemeten weerstand van beide sensoren wordt één keer per twee seconden bemonsterd en omgezet in twee acht bit brede woorden. Deze vier bytes worden aangevuld met een checksum-byte. Deze vijf bytes worden, op commando, achter elkaar verzonden. Zonder microprocessor is het dus vrijwel onmogelijk de DHT11 uit te lezen.

DHT11-02 (© 2018 Jos Verstraten)
De twee zijden van het printje in een DHT11. (© 2018 Jos Verstraten)
Afmetingen en aansluitgegevens
In onderstaande afbeelding zijn de afmetingen en de aansluitgegevens van de DHT11 samengevat.
       - Pen 1: positieve voedingsspanning
       - Pen 2: seriële data-uitgang
       - Pen 3: niet verbonden
       - Pen 4: massa
DHT11-03 (© 2018 Jos Verstraten)
De afmetingen en de nummering van de pennen. (© 2018 Jos Verstraten)
Technische gegevens
       - Prijsindicatie: € 1,00
       - Fabrikant: Aosong
       - Voedingsspanning: 3,5 Vdc min, 5,5 Vdc max.
       - Voedingsstroom standby: 60 μA typisch
       - Voedingsstroom bij meting: 0,3 mA typisch
       - Samplingperiode: 2 s typisch
       - Meetbereik temperatuur: 0 °C tot +50 °C
       - Resolutie meting temperatuur: 16 bit
       - Nauwkeurigheid temperatuur: ±1 °C typisch
       - Insteltijd temperatuur: 6 s typisch
       - Meetbereik relatieve vochtigheid (RH): 20 % tot 80 %
       - Resolutie meting RH: 16 bit
       - Nauwkeurigheid RH: ±5 % typisch
       - Lange termijn stabiliteit RH: ±0,5 %
       - Insteltijd RH: 10 s typisch

Het uitlezen van de data
De seriële uitgang op pen 3 in een open-collector uitgang en moet via een weerstand van 5,1 kΩ tot 10 kΩ met de voedingsspanning worden verbonden en staat dus normaal op 'H'. Een meetcyclus start met een request van de microprocessor. Deze moet de datalijn gedurende minimaal 18 ms naar 'L' trekken. De DHT11 bevestigt de ontvangst van het request door de datalijn gedurende 80 μs 'L' te maken en dan weer 80 μs 'H'. Nadien begint de sensor met het verzenden van de data, met het MSB als eerste bit:
       - Eerste byte is het integrale getal van de RH-meting.
       - Tweede byte is het decimale cijfer van de RH-meting.
       - Derde byte is het integrale getal van de temperatuurmeting.
       - Vierde byte is het decimale cijfer van de temperatuurmeting.
       - Vijfde byte is een checksum-byte, ter controle van de vier vorige bytes.
Een 'H' databit is 54 μs 'L' en dan 70 μs 'H'.
Een 'L' databit is 54 μs 'L' en dan slechts 24 μs 'H'.
Na het laatste databit  stuurt de DHT11 de seriële lijn voor 54 μs 'L', nadien gaat de seriële datalijn weer naar een open-collector 'H'.
DHT11-04 (© 2018 Jos Verstraten)
De communicatie tussen de microprocessor en de DHT11. (© 2018 Jos Verstraten)
Een voorbeeld
Stel dat de DHT11 de onderstaande vijf bytes op de seriële datalijn zet:

00110111 - 00000000 - 00011010 - 00000000 - 01010001

Wat betekent dit? U moet de binaire waarden omzetten in decimale waarden en daarbij rekening houden met het gegeven dat het meest significante bit als eerste wordt uitgezonden:

55 - 0 - 26 - 0 - 81

Allereerst even de checksum controleren:
55 + 26 = 81
De inhoud van het checksum-byte is gelijk aan de som van de vier vorige bytes, dus de processor heeft de data goed ontvangen.
De twee eerste bytes geven het integere en decimale deel van de relatieve vochtigheid. Deze is dus gelijk aan 55,0 %. Het derde en vierde byte bevatten dezelfde informatie voor de temperatuur. De sensor meet dus een temperatuur van 26,0 °C.

Share

Voorbeeldschema
In onderstaande figuur wordt een door de fabrikant gegeven voorbeeldschema voor het toepassen van de DHT11 gegeven. De sensor is verbonden met de P3.1 van een 8051 microcontroller. De weerstand R8 is de noodzakelijke pull-up weerstand die de seriële lijn op 'H' houdt als er niets gebeurt.
Een relais wordt, via transistor Q1, gestuurd uit de processorlijn P2.0. De processor stuurt op een standaard manier een 2 x 16 karakter LCD-display. Met de geschikte firmware gebruikt de schakeling de twee regels van het display om zowel de temperatuur als de relatieve vochtigheid te melden.
DHT11-05 (© Aosong)
Een toepassingsvoorbeeld van de DHT11. (© Aosong)
Referentie

Datasheet van de DHT11


(Banggood sponsor advertentie)
2 stuks DHT11 temperatuur- en vochtigheidssensor