Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Учебное пособие по датчикам температуры и влажности DHT11 и DHT22 с использованием Arduino

<основной класс="главный сайт" id="главный">

В этом учебном пособии по Arduino мы узнаем, как использовать датчик DHT11 или DHT22 для измерения температуры и влажности с платой Arduino. Вы можете посмотреть следующее видео или прочитать письменное руководство ниже для получения более подробной информации.

Обзор

Эти датчики очень популярны среди любителей электроники, потому что они очень дешевы, но при этом обеспечивают отличную производительность. Вот основные характеристики и различия между этими двумя датчиками:

DHT22 — более дорогая версия с лучшими характеристиками. Его диапазон измерения температуры составляет от -40 до +125 градусов Цельсия с точностью +-0,5 градуса, а диапазон температуры DHT11 составляет от 0 до 50 градусов Цельсия с точностью +-2 градуса. Кроме того, датчик DHT22 имеет лучший диапазон измерения влажности:от 0 до 100 % с точностью 2–5 %, тогда как диапазон влажности DHT11 составляет от 20 до 80 % с точностью 5 %.

Есть две спецификации, в которых DHT11 лучше, чем DHT22. Это частота дискретизации, которая для DHT11 составляет 1 Гц или одно чтение в секунду, а частота дискретизации DHT22 составляет 0,5 Гц или одно чтение каждые две секунды, а также DHT11 имеет меньший размер корпуса. Рабочее напряжение обоих датчиков составляет от 3 до 5 вольт, а максимальный ток, используемый при измерении, составляет 2,5 мА.

Вы можете получить эти компоненты на любом из следующих сайтов:

Принцип работы DHT11/DHT22

Хорошо, теперь давайте посмотрим, как на самом деле работают эти датчики. Они состоят из датчика влажности, датчика температуры NTC (или термистора) и микросхемы на задней стороне датчика.

Для измерения влажности они используют датчик влажности, который имеет два электрода с влагоудерживающей подложкой между ними. Таким образом, при изменении влажности изменяется проводимость подложки или изменяется сопротивление между этими электродами. Это изменение сопротивления измеряется и обрабатывается ИС, что делает его готовым к считыванию микроконтроллером.

С другой стороны, для измерения температуры в этих датчиках используется датчик температуры NTC или термистор.

Термистор на самом деле представляет собой переменный резистор, который меняет свое сопротивление при изменении температуры. Эти датчики изготавливаются путем спекания полупроводниковых материалов, таких как керамика или полимеры, чтобы обеспечить большие изменения сопротивления при небольших изменениях температуры.

Термин «NTC» означает «отрицательный температурный коэффициент», что означает, что сопротивление уменьшается с повышением температуры.

Схемы схем

Датчики DHTxx имеют четыре контакта:VCC, GND, контакт данных и неподключенный контакт, который не используется. Подтягивающий резистор от 5 кОм до 10 кОм требуется для поддержания высокого уровня линии данных и для обеспечения связи между датчиком и платой Arduino. Некоторые версии этих датчиков поставляются с коммутационными платами со встроенным подтягивающим резистором и имеют всего 3 контакта.

Датчики DHTXX имеют собственный однопроводной протокол, используемый для передачи данных. Этот протокол требует точной синхронизации, а временные диаграммы для получения данных от датчиков можно найти в таблицах данных датчиков. Однако нам не нужно сильно беспокоиться об этих временных диаграммах, потому что мы будем использовать библиотеку DHT, которая позаботится обо всем.

Связанное руководство:узнайте, как построить беспроводную метеостанцию ​​на базе Arduino

Исходный код

Сначала нам нужно включить библиотеку DHT, которую можно найти на официальном сайте Arduino, затем определить номер контакта, к которому подключен наш датчик, и создать объект DHT. В разделе настройки нам нужно инициировать последовательную связь, потому что мы будем использовать последовательный монитор для печати результатов. С помощью функции read22() мы будем считывать данные с датчика и помещать значения температуры и влажности в переменные t и h. Если вы используете датчик DHT11, вам понадобится функция read11(). В конце мы распечатаем значения температуры и влажности на последовательном мониторе.

/*  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)

После того, как мы загрузим этот код на плату Arduino, результаты датчика температуры и влажности можно будет увидеть на последовательном мониторе.

Я также сделал пример, где я отображаю результаты на ЖК-дисплее. Вот исходный код этого примера:

/*  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)

Не стесняйтесь задавать любые вопросы в разделе комментариев ниже.


Производственный процесс

  1. Датчик температуры Python и Raspberry Pi
  2. Простая температура и влажность на Raspberry Pi
  3. Аналоговые датчики на Raspberry Pi с использованием MCP3008
  4. Универсальный пульт дистанционного управления с использованием Arduino, 1Sheeld и Android
  5. Вольтметр своими руками с использованием Arduino и смартфона
  6. Регистратор данных температуры и влажности
  7. Измерение частоты и рабочего цикла с использованием Arduino
  8. BME280 Температура, влажность и давление на дисплее Nextion
  9. Управление яркостью светодиода с помощью Bolt и Arduino
  10. Как читать температуру и влажность на Blynk с DHT11