Het meten van temperatuur en vochtigheid is heel gebruikelijk in veel elektronische makerprojecten. Bij doe-het-zelvers is het gebruikelijk om deze parameters te meten om bepaalde systemen te besturen. Bijvoorbeeld om een koel-, plantverzorgings- of airconditioningsysteem te kunnen creëren dat opstart als de temperatuur of luchtvochtigheid een bepaalde waarde bereikt. Maar om dat mogelijk te maken heb je een sensor nodig zoals de DHT11.
Laat er zijn veel sensoren zeer verschillende temperatuurbereiken, met ondersteunde temperatuurbereiken of verschillende precisie. Een voorbeeld hiervan is de LM35, een van de meest populaire en gebruikte in elektronica. Er zijn ook andere vochtigheidssensoren die werken door variatie in geleidbaarheid, zoals de AD22103KTZ van Analog Devices. Maar als je beide parameters wilt meten, is het apparaat dat we vandaag in dit artikel bespreken misschien veel interessanter ...
Wat is DHT11?
El DHT11 is een eenvoudige sensor die temperatuur en vochtigheid meet, alles in een. A) Ja u hoeft geen twee sensoren te kopen afzonderlijk. De prijs is ongeveer € 2, dus het is vrij goedkoop, hoewel je het ook op een module kunt vinden (gemonteerd op een printplaat voor gebruiksgemak) zoals gebruikelijk is bij dit soort elektronische componenten voor Arduino. In het geval van het bord bevat het een pull-up-weerstand van 5 kilo ohm en een LED die ons waarschuwt voor de werking.
DHT11 heeft hoge betrouwbaarheid en stabiliteit dankzij het gekalibreerde digitale signaal. Als u ook naar de datasheet kijkt, zult u zien dat deze interessante functies heeft, zoals u in toekomstige secties zult zien.
Vergelijkbare producten
Er is een product vergelijkbaar met de DHT11 waarin u mogelijk geïnteresseerd bent. Het is de DHT22. Het is ook een geïntegreerde temperatuur- en vochtigheidssensor, maar in dit geval is de prijs iets hoger, ongeveer € 4, -. De nauwkeurigheid om de temperatuur te meten is 5% variatie, ook zoals DHT11, maar in tegenstelling hiermee meet het buiten het vochtigheidsbereik tussen 20 en 80%. Daarom ben je wellicht geïnteresseerd in de DHT22 voor projecten waarbij je de luchtvochtigheid van 0 tot 100% moet meten.
La frequentie van gegevensverzameling het is ook het dubbele van DHT11, in DHT22 worden 2 samples per seconde genomen in plaats van 1 sample per seconde van DHT11. Wat betreft de temperatuur, hij kan nauwkeuriger meten van -40ºC tot + 125ºC, aangezien hij fracties van graden kan meten, met name kan hij variaties van plus / minus 0,5 ° C waarderen.
Pinout, kenmerken en gegevensblad
U kunt nogal wat technische informatie vinden over het DHT11 in uw datasheets. Elke fabrikant van dit apparaat kan een aantal waarden leveren die kunnen variëren, dus ik raad altijd aan om de pdf te lezen van de specifieke fabrikant van het apparaat dat je hebt gekocht. Hoewel de meeste waarden er voor u hetzelfde uitzien, kan er een kleine variatie tussen de een zijn. De belangrijkste technische kenmerken zijn:
- Voeding van 3,5v tot 5v
- 2,5 mA stroomverbruik
- Digitaal uitgangssignaal
- Temperatuurbereik van 0ºC tot 50ºC
- Nauwkeurigheid om temperatuur te meten bij 25 ° C met een variatie van ongeveer 2 ° C
- De resolutie om temperatuur te meten is 8-bit, 1ºC
- De luchtvochtigheid kan variëren van 20% RV tot 90% RV
- Nauwkeurig voor luchtvochtigheid van 5% RH voor temperaturen tussen 0-50ºC
- De resolutie is 1% RV, daaronder kan het geen variaties vastleggen
- Mouser-gegevensblad
Met betrekking tot de gegevens, uitgezonden in digitaal. Daarom is het niet nodig om van analoog naar digitaal te gaan zoals bij andere sensoren. Dat maakte de code om in de Arduino IDE te schrijven ingewikkeld, maar in dit geval is het niet nodig en is het veel gemakkelijker. Hoewel de sensor zelf analoog is, bevat hij een systeem om de conversie uit te voeren en kan hij rechtstreeks op een digitale ingang van de Arduino worden aangesloten.
Het analoge signaal, dat een variatie is op de spanning, van de sensor wordt geconverteerd naar digitaal formaat om naar de Arduino-microcontroller te worden gestuurd. Het wordt verzonden in een 40-bits frame die overeenkomen met de vochtigheids- en temperatuurinformatie die is vastgelegd door de DHT11. De eerste twee groepen van 8 bits zijn voor vochtigheid, dat wil zeggen de meest significante 16 bits van dit frame. Dan de andere 2 overgebleven 8-bit groepen voor temperatuur. Dat wil zeggen, het heeft twee bytes voor vochtigheid en twee bytes voor temperatuur. Bijvoorbeeld:
0011 0101 0000 0010 0001 1000 0000 0000 0011 1001
In dit geval is 0011 0101 0000 0010 de vochtigheidswaarde en 0001 1000 0000 0000 is de temperatuur. Een eerste deel is voor het gehele deel en het tweede deel is voor decimalen. Wat betreft 0011 1001, dat wil zeggen, de laatste 8-bits zijn pariteit om fouten te voorkomen. Op die manier kunt u tijdens transmissies controleren of alles correct is. Het komt overeen met de som van de voorgaande bits, dus als de som gelijk is aan pariteit, zal deze correct zijn. In het voorbeeld dat ik heb gegeven, zou dat niet zo zijn, want zoals je kunt zien komt het niet overeen ... Dat zou duiden op een mislukking.
Zodra dit bekend is, zijn de pinnen het volgende technische niveau van de DHT11 dat moet worden opgemerkt. De contacten of pinout van dit apparaat is eenvoudig, aangezien het er maar 4 heeft. Een van de pinnen is voor voeding of Vcc, de andere voor I / O om gegevens te verzenden, een NC-pin die geen verbinding maakt en GND voor de aardverbinding.
Integratie met Arduino
Als je eenmaal de pinout van de DHT11 kent en ook het Arduino-bord, de verbinding is heel eenvoudig. Onthoud dat als u een DHT11-module hebt gekozen die in een printplaat is geïntegreerd, de pinnen drie zijn, aangezien de NC is verwijderd om het gemakkelijker te maken. Het enige dat u hoeft te doen, is de aardingspin aansluiten op een van de GND-aansluitingen van de Arduino, zoals weergegeven in het diagram in de vorige afbeelding.
Aan de andere kant moet de stroompin worden aangesloten op de 5v-verbinding van Arduino, dus de sensor wordt volledig gevoed met GND en Vcc, maar nu ontbreken de gegevens. Om de gegevens van de DHT11-sensor naar het Arduino-bord te verzenden, kun je een van de digitale ingangen gebruiken, zoals de 7 die in de afbeelding verschijnt ... Nu heb je alles klaar om het te gebruiken zodra je de benodigde code hebt gemaakt in Arduino IDE ...
Als de sensor ver weg is in je project en je gaat een kabel gebruiken die langer is dan 20 meter, gebruik dan een 5k pull-up weerstand, voor grotere kabels zou deze proportioneel groter moeten zijn. Merk op dat als u 3,5 V stroom gebruikt in plaats van 5 V, de kabel vanwege spanningsval niet langer mag zijn dan 20 cm.
Onthoud dat wat ze aanbevelen is meet elke 5 seconden, hoewel de bemonsteringsfrequentie waarmee de DHT11 kan werken hoger is, maar als het vaker wordt gedaan, is het mogelijk niet zo nauwkeurig.
Code in Arduino IDE
Ga direct naar de code, zeg dat in Arduino IDE u kunt een aantal bestaande bibliotheken gebruiken met functies die uw leven gemakkelijker zullen maken met de DHT11. Een van hen is bijvoorbeeld degene die biedt Adafruit. Onthoud dat we een beginnershandleiding hebben die begint met Arduino in PDF die u kunt download hier gratis en het kan je helpen.
Zodra u de bijbehorende bibliotheek heeft geïnstalleerd, kunt u reageren op voer de code in om de DHT11 temperatuur- en vochtigheidssensor voor uw project te regelen met Arduino. Bijvoorbeeld:
#include "DHT.h" const int DHTPin = 7; DHT dht(DHTPin, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("Midiendo..."); dht.begin(); } void loop() { delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Fallo en la lectura del sensor DHT11"); return; } Serial.print("Humedad relativa: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperatura: "); Serial.print(t); Serial.print(" ºC "); }