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

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

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

Обзор

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

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

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

Есть два параметра, в которых DHT11 превосходит DHT22. Это частота дискретизации: у DHT11 она составляет 1 Гц (одно измерение в секунду), а у DHT22 — 0.5 Гц (одно измерение каждые две секунды). Также DHT11 имеет более компактные размеры. Рабочее напряжение обоих датчиков — от 3 до 5 вольт, а максимальный потребляемый ток при измерении — 2.5 мА.

Вы можете приобрести эти компоненты на любом из сайтов ниже:

  • Датчик DHT11……………………………..
  • Датчик DHT22…………………………….
  • Плата Arduino ……………………………
  • Макетная плата и перемычки ………

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

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

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

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

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

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

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

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

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

Схемы подключения

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

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

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

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

Исходный код

Сначала нам нужно подключить библиотеку DHT, которую можно найти на официальном сайте Arduino, затем определить номер вывода, к которому подключен наш датчик, и создать объект DHT. В разделе setup мы должны инициализировать последовательную коммуникацию, потому что мы будем использовать монитор последовательного порта для вывода результатов. Используя функцию 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 // Определяет номер пина, к которому подключен датчик
dht DHT; // Создает объект DHT

void setup() {
  Serial.begin(9600);
}

void loop() {
  int readData = DHT.read22(dataPin); // Считывает данные с датчика
  float t = DHT.temperature; // Получает значения температуры
  float h = DHT.humidity; // Получает значения влажности
  // Вывод результатов на монитор последовательного порта
  Serial.print("Temperature = ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(" Humidity = ");
  Serial.print(h);
  Serial.println(" % ");
  delay(2000); // Задержка 2 секунды, так как частота дискретизации DHT22 составляет 0.5 Гц
}Язык кода: Arduino (arduino)

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

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

/* 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> // подключает библиотеку LiquidCrystal
#include <dht.h>
#define dataPin 8
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Создает объект LCD. Параметры: (rs, enable, d4, d5, d6, d7)
dht DHT;

void setup() {
  lcd.begin(16,2); // Инициализирует интерфейс к LCD-экрану и указывает размеры (ширину и высоту) дисплея
}

void loop() {
  int readData = DHT.read22(dataPin);
  float t = DHT.temperature;
  float h = DHT.humidity;
  lcd.setCursor(0,0); // Устанавливает положение, в котором последующий текст будет выведен на LCD
  lcd.print("Temp.: "); // Выводит строку "Temp." на LCD
  lcd.print(t); // Выводит значение температуры с датчика
  lcd.print(" C");
  lcd.setCursor(0,1);
  lcd.print("Humi.: ");
  lcd.print(h);
  lcd.print(" %");
  delay(2000);
}Язык кода: Arduino (arduino)

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


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

  1. Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
  2. Бесшовный мониторинг температуры и влажности на Raspberry Pi с EzTemp
  3. Использование АЦП MCP3008 для чтения аналоговых датчиков с Raspberry Pi
  4. Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
  5. Умный вольтметр на Arduino и смартфоне — простое DIY-проект
  6. Логгер температуры и влажности на Arduino с DHT11 и Ethernet Shield
  7. Точное измерение частоты и коэффициента заполнения на Arduino UNO
  8. Вывод данных BME280 (температура, влажность, давление) на сенсорный экран Nextion
  9. Бесшовное управление яркостью светодиодов с помощью Bolt IoT и Arduino UNO
  10. Чтение температуры и влажности DHT11 через Blynk — пошаговый урок для Arduino