Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

DHT11- en DHT22-sensoren Temperatuur- en vochtigheidshandleiding met Arduino

In deze Arduino-zelfstudie leren we hoe we de DHT11- of de DHT22-sensor kunnen gebruiken voor het meten van temperatuur en vochtigheid met het Arduino-bord. Je kunt de volgende video bekijken of de schriftelijke tutorial hieronder lezen voor meer details.

Overzicht

Deze sensoren zijn erg populair bij elektronicahobbyisten omdat ze erg goedkoop zijn maar toch geweldige prestaties leveren. Hier zijn de belangrijkste specificaties en verschillen tussen deze twee sensoren:

De DHT22 is de duurdere versie die uiteraard betere specificaties heeft. Het temperatuurmeetbereik is van -40 tot +125 graden Celsius met een nauwkeurigheid van +-0,5 graden, terwijl het DHT11-temperatuurbereik van 0 tot 50 graden Celsius is met een nauwkeurigheid van +-2 graden. Ook heeft de DHT22-sensor een beter meetbereik voor vochtigheid, van 0 tot 100% met een nauwkeurigheid van 2-5%, terwijl het DHT11-vochtigheidsbereik van 20 tot 80% is met een nauwkeurigheid van 5%.

Er zijn twee specificaties waarbij de DHT11 beter is dan de DHT22. Dat is de bemonsteringsfrequentie die voor de DHT11 1 Hz of één meting per seconde is, terwijl de DHT22-bemonsteringsfrequentie 0,5 Hz of één meting per twee seconden is en ook de DHT11 heeft een kleinere lichaamsgrootte. De bedrijfsspanning van beide sensoren is van 3 tot 5 volt, terwijl de maximale stroom die wordt gebruikt bij het meten 2,5 mA is.

U kunt deze componenten op een van de onderstaande sites krijgen:

  • DHT11-sensor…………………………..
  • DHT22-sensor……………………………….
  • Arduino-bord …………………………
  • Broodplank en springdraden ……… 

DHT11 / DHT22-werkprincipe

Oké, laten we nu eens kijken hoe deze sensoren echt werken. Ze bestaan ​​uit een vochtigheidsgevoelig onderdeel, een NTC-temperatuursensor (of thermistor) en een IC aan de achterkant van de sensor.

Voor het meten van de vochtigheid gebruiken ze de vochtigheidsgevoelige component die twee elektroden heeft met een vochthoudend substraat ertussen. Dus als de vochtigheid verandert, verandert de geleidbaarheid van het substraat of verandert de weerstand tussen deze elektroden. Deze verandering in weerstand wordt gemeten en verwerkt door het IC, waardoor het klaar is om te worden gelezen door een microcontroller.

Aan de andere kant gebruiken deze sensoren voor het meten van temperatuur een NTC-temperatuursensor of een thermistor.

Een thermistor is eigenlijk een variabele weerstand die zijn weerstand verandert bij verandering van de temperatuur. Deze sensoren zijn gemaakt door halfgeleidende materialen zoals keramiek of polymeren te sinteren om grotere veranderingen in de weerstand te bieden met slechts kleine veranderingen in temperatuur.

De term “NTC” betekent “Negatieve Temperatuur Coëfficiënt”, wat betekent dat de weerstand afneemt met toenemende temperatuur.

Circuitschema's

De DHTxx-sensoren hebben vier pinnen, VCC, GND, datapin en een niet-verbonden pin die niet wordt gebruikt. Een pull-up weerstand van 5K tot 10K Ohm is nodig om de datalijn hoog te houden en om de communicatie tussen de sensor en het Arduino Board mogelijk te maken. Er zijn enkele versies van deze sensoren die worden geleverd met breakout-kaarten met ingebouwde pull-up-weerstand en ze hebben slechts 3 pinnen.

De DHTXX-sensoren hebben hun eigen single-wire-protocol dat wordt gebruikt voor het overbrengen van de gegevens. Dit protocol vereist nauwkeurige timing en de timingdiagrammen voor het verkrijgen van de gegevens van de sensoren zijn te vinden in de datasheets van de sensoren. We hoeven ons echter niet veel zorgen te maken over deze timingdiagrammen omdat we de DHT-bibliotheek zullen gebruiken die voor alles zorgt.

Gerelateerde tutorial:leer hoe u een op Arduino gebaseerd draadloos weerstation kunt bouwen

Broncode

Eerst moeten we de DHT-bibliotheek opnemen die te vinden is op de officiële Arduino-website, vervolgens het pinnummer definiëren waarmee onze sensor is verbonden en een DHT-object maken. In de setup-sectie moeten we de seriële communicatie starten omdat we de seriële monitor zullen gebruiken om de resultaten af ​​te drukken. Met behulp van de functie read22() zullen we de gegevens van de sensor lezen en de waarden van de temperatuur en de vochtigheid in de t- en h-variabelen plaatsen. Als u de DHT11-sensor gebruikt, heeft u de functie read11() nodig. Aan het einde zullen we de temperatuur- en vochtigheidswaarden op de seriële monitor afdrukken.

/*  DHT11/ DHT22 Sensor Temperature and Humidity Tutorial
 *  Program made by Dejan Nedelkovski,
 *  www.HowToMechatronics.com 
 */
/*
 * You can find the DHT Library from Arduino official website
 * https://playground.arduino.cc/Main/DHTLib
 */
 
#include <dht.h>

#define dataPin 8 // Defines pin number to which the sensor is connected
dht DHT; // Creats a DHT object

void setup() {
  Serial.begin(9600);
}
void loop() {
  int readData = DHT.read22(dataPin); // Reads the data from the sensor
  float t = DHT.temperature; // Gets the values of the temperature
  float h = DHT.humidity; // Gets the values of the humidity
  
  // Printing the results on the serial monitor
  Serial.print("Temperature = ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print("    Humidity = ");
  Serial.print(h);
  Serial.println(" % ");
  
  delay(2000); // Delays 2 secods, as the DHT22 sampling rate is 0.5Hz
}Code language: Arduino (arduino)

Nadat we deze code naar het Arduino-bord hebben geüpload, zijn de temperatuur- en vochtigheidsresultaten van de sensor te zien op de seriële monitor.

Ik heb ook een voorbeeld gemaakt waarbij ik de resultaten op een LCD weergeef. Hier is de broncode van dat voorbeeld:

/*  DHT11/ DHT22 Sensor Temperature and Humidity Tutorial
 *  Program made by Dejan Nedelkovski,
 *  www.HowToMechatronics.com 
 */
/*
 * You can find the DHT Library from Arduino official website
 * https://playground.arduino.cc/Main/DHTLib
 */

#include <LiquidCrystal.h> // includes the LiquidCrystal Library
#include <dht.h>


#define dataPin 8
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
dht DHT;

void setup() {
  lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display
}

void loop() {
  int readData = DHT.read22(dataPin);
  float t = DHT.temperature;
  float h = DHT.humidity;
  lcd.setCursor(0,0); // Sets the location at which subsequent text written to the LCD will be displayed
  lcd.print("Temp.: "); // Prints string "Temp." on the LCD
  lcd.print(t); // Prints the temperature value from the sensor
  lcd.print(" C");
  lcd.setCursor(0,1);
  lcd.print("Humi.: ");
  lcd.print(h);
  lcd.print(" %");
  delay(2000);
}Code language: Arduino (arduino)

Stel gerust een vraag in de opmerkingen hieronder.


Productieproces

  1. Python- en Raspberry Pi-temperatuursensor
  2. Eenvoudige temperatuur en vochtigheid op Raspberry Pi
  3. Analoge sensoren op de Raspberry Pi met een MCP3008
  4. Universele afstandsbediening met Arduino, 1Sheeld en Android
  5. DIY voltmeter met Arduino en smartphone
  6. Temperatuur- en vochtigheidsdatalogger
  7. Frequentie- en werkcyclusmeting met Arduino
  8. BME280 temperatuur, vochtigheid en druk op Nextion-display
  9. LED-helderheid regelen met Bolt en Arduino
  10. De temperatuur en vochtigheid op Blynk aflezen met DHT11
  11. Eenvoudige en slimme robotarm met Arduino