Работа с датчиками температуры

Урок 7: Работа с датчиками температуры

Цели урока:

  1. Познакомиться с датчиками температуры и их использованием.
  2. Научиться подключать и считывать данные с датчиков.
  3. Закрепить знания на практике, создав проекты с использованием датчиков.

Теоретическая часть

Что такое датчики?

Датчики — это устройства, которые преобразуют физические величины (температуру, влажность, расстояние, освещенность и т.д.) в электрические сигналы, которые могут быть обработаны микроконтроллером, таким как Arduino.

Примеры датчиков:

  • Датчик температуры и влажности (DHT11/DHT22): Измеряет температуру и влажность окружающей среды.
  • Ультразвуковой датчик расстояния (HC-SR04): Измеряет расстояние до объекта с помощью ультразвуковых волн.
  • Фоторезистор (датчик освещенности): Измеряет уровень освещенности.

Почему это важно?

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

Подключение и использование датчиков

Датчик температуры и влажности (DHT11/DHT22)

Назначение:

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

Как подключить:

  1. Подключите пин VCC датчика к 5V на Arduino.
  2. Подключите пин GND датчика к GND на Arduino.
  3. Подключите пин данных датчика к цифровому пину на Arduino (например, 2).
Схема подключения датчика температуры DHT11/DHT22 к Arduino

Библиотека:

Для работы с DHT11/DHT22 используется библиотека DHT.

Для подключения библиотеки перейдите во вкладку "Library Manager" и через поиск добавьте библиотеку DHT sensor library

Пример кода:

#include "DHT.h"      // Подключение библиотеки DHT для работы с датчиками температуры/влажности
                      // Библиотека содержит необходимые функции для считывания данных с датчика

#define DHTPIN 2      // Определение пина Arduino, к которому подключен выход DATA датчика
                      // В данном случае используется цифровой пин 2

#define DHTTYPE DHT22 // Определение типа используемого датчика (DHT22/AM2302)
                      // DHT22 имеет более высокую точность по сравнению с DHT11

DHT dht(DHTPIN, DHTTYPE); // Создание объекта dht класса DHT с указанием параметров:
                          // - Пин подключения (DHTPIN = 2)
                          // - Тип датчика (DHTTYPE = DHT22)

void setup() {            // Функция инициализации, выполняется один раз при старте
  Serial.begin(9600);     // Инициализация последовательной связи с компьютером на скорости 9600 бод

  dht.begin();            // Инициализация датчика DHT22
                          // Настройка пина и подготовка к считыванию показаний
}

void loop() {                       // Основной цикл программы, выполняется постоянно

  float h = dht.readHumidity();     // Считывание показания влажности в процентах (%)
                                    // Результат сохраняется в переменную h типа float (дробное число)

  float t = dht.readTemperature();  // Считывание показания температуры в градусах Цельсия (°C)
                                    // Результат сохраняется в переменную t типа float

  Serial.print("Влажность, %: ");   // Вывод текстовой метки для влажности в последовательный порт

  Serial.println(h, 1);             // Вывод значения влажности с одним знаком после запятой

  Serial.print("Температура, °C: ");  // Вывод текстовой метки для температуры
  Serial.println(t, 1);               // Вывод значения температуры с одним знаком после запятой

  delay(3000);                        // Пауза 3000 миллисекунд (3 секунды) перед следующим измерением
}

Объяснение кода:

  1. #include "DHT.h: Подключаем библиотеку DHT, которая упрощает работу с датчиком.
  2. #define DHTPIN 2: Определяем пин, к которому подключен датчик.
  3. #define DHTTYPE DHT22: Указываем тип датчика (DHT11 или DHT22).
  4. DHT dht(DHTPIN, DHTTYPE);: Создаем объект dht для работы с датчиком.
  5. Serial.begin(9600);: Инициализируем монитор порта для вывода данных.
  6. dht.begin();: Инициализируем датчик.
  7. float h = dht.readHumidity();: Читаем значение влажности.
  8. float t = dht.readTemperature();: Читаем значение температуры.

Вот готовый проект на Wokwi, нажмите кнопку "Start the simulation", изменяйте значения температуры и влажности двигая соответствующими ползунками датчика.

Датчик температуры NTC (Analog temperature sensor: NTC)

Назначение:

Термистор NTC (Negative Temperature Coefficient) измеряет температуру за счет изменения сопротивления при нагреве/охлаждении. При повышении температуры сопротивление уменьшается.

Как подключить:

  1. Подключите один вывод термистора к пину 5V на Arduino
  2. Подключите второй вывод термистора к аналоговому пину A5
  3. Добавьте подтягивающий резистор 10 кОм между пином A5 и GND
Схема подключения датчика температуры Analog temperature sensor (NTC) к Arduino

Пример кода:

const float BETA = 3950;  // Константа с бета-коэффициентом термистора (уникальный параметр для каждого термистора)

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

void loop() {
  int analogValue = analogRead(A5); // Считывание аналогового значения с пина A5
  float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15; // Преобразование аналогового значения в температуру в °C:

  Serial.print("Температура: ");
  Serial.println(celsius);
  delay(3000);
}

Объяснение кода:

  1. const float BETA = 3950;: Установка бета-коэффициента для конкретного термистора (указывается в даташите).
  2. int analogValue = analogRead(A5);: Считывание аналогового значения с термистора (0-1023).
  3. float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;: Формула преобразования, основана на уравнении Стейнхарта-Харта для термисторов NTC.

Вот готовый проект на Wokwi, нажмите кнопку "Start the simulation", изменяйте значения температуры двигая соответствующими ползунками датчика.

Вопросы для закрепления:

  1. Какие датчики используются для измерения температуры и влажности?
  2. Как подключить датчики к Arduino?
  3. Какие библиотеки используются для работы с датчиками DHT11/DHT22?

Домашнее задание:

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

Что мы узнали:

Теперь вы знаете, как работать с датчиками температуры в Arduino! Вы научились подключать и считывать данные с датчиков 😊.