Подключение датчика температуры DHT11

Системы «умного дома», теплицы и инкубаторы нуждаются в приборах, позволяющих контролировать температурный режим и сухость воздуха. Благодаря им можно автоматизировать систему и запрограммировать ее на определенные действия, если показатели соответствуют заданным. Для микроконтроллера Ардуино часто применяются температурные датчики DHT11 и DHT22. Модели характеризуются одинаковой распиновкой, но имеют и отличия:

  • одиннадцатая версия определяет температуру от нуля до пятидесяти градусов, влажность от 20 до 80 процентов, проводя измерения каждую секунду;
  • двадцать вторая версия отличается расширенным диапазоном температур от −40 до 125 градусов и влажности от нуля до стопроцентной. Измерения проводятся каждые две секунды.

Конструкционно оба прибора представляют собой сочетания термистора и датчика влажности воздуха. У каждой версии четыре выхода, один из которых не задействован, а остальные — питание, земля и вывод сигнала. Несмотря на невысокую точность, датчик температуры и влажности DHT11 выигрывает за счет простоты эксплуатации.

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

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

Обе версии устройств хорошо подходят для получения показаний в помещениях.

Характеристики DHT11 к Arduino

Прибор DHT11 обладает следующими техническими характеристиками:

  • максимальное значение силы тока 2.5 мА;
  • напряжение от 3 до 5 В;
  • для подключения к Ардуино нуждается в резисторе;
  • точность ± 2 градуса;
  • размеры 15.5×12×5.5 мм;
  • частота 1 Гц;
  • однопроводный протокол обмена;
  • не работает в «паразитном» режиме;
  • использует один цифровой пин;
  • библиотека DHT.h.

Датчик DHT22 и одиннадцатая версия часто применяются в проектировании систем «умного» дома и при создании метеостанций. Внутренний чип устройств выполняет преобразование данных, поступающих с датчиков, и передает сигнал микроконтроллеру.

Данные представляют собой сорок бит информации, где:

  • восемь бит отводится на интегральное значение RH;
  • восемь — на десятичное значение RH;
  • восемь для интегрального значения показателя температуры;
  • и оставшиеся восемь для создания контрольной суммы.

Датчик DHT22

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

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

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

DHT11 на Ардуино Уно

Помимо самой платы и датчика, чтобы подключить к Ардуино DHT11 в версии без обвязки, требуется предварительно подготовить следующие комплектующие:

  • макетную плату;
  • резистор — подойдет номиналом в десять кОм;
  • светодиоды.

Ардуино Уно

Нумерация контактов происходит справа, если само устройство располагается «ножками» вниз:

  1. Питание (VCC).
  2. Вывод (DATA).
  3. Контакт, который не используется (NC).
  4. Заземление (GND).

Чтобы на Arduino датчик влажности корректно работал, резистор впаивается между первым и вторым контактом.

Когда речь идет о уже готовом модуле для Ардуино, подключается  он значительно проще:

  • VCC присоединяется к +5 В. Рекомендуется использовать питание именно в 5 В, так как в этом случае датчик можно расположить на расстоянии в двадцать метров от источника. Если питание минимально — то есть равно 3.3 В, длина кабеля не может превышать метра или же измерения окажутся некорректными;
  • отмеченный GND — к земле;
  • третий присоединяется к свободному пину, имеющемуся на плате, а номер пина указывается в скетче. Он необходим для обеспечения связи с микроконтроллером.

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

Предпочтительным вариантом подключения одиннадцатой версии или DHT22 к Arduino является второй пин — в этом случае программирование будет осуществляться по приведенному скетчу. Изменение пина требует внесения определенных правок в код.

подключение через второй пин

Программирование

Перед тем, как начать кодирование, требуется проверить наличие библиотеки, которая позволяет работать с датчиками температуры и влажности. Если таковой нет, рекомендуется сначала загрузить ее. Папка должна иметь наименование «DHT», корректное расположение — в корневой «Arduino IDE», в папке «libraries».

Устройства отличаются однопроводным протоколом, которому не нужна точная синхронизация.

Скетч для датчиков влажности и температуры DHT11 приведен далее:

#include "DHT.h"
#define DHTPIN 2 // Тот самый номер пина, о котором упоминалось выше
// Одна из следующих строк закоментирована. Снимите комментарий, если подключаете датчик DHT11 к arduino
DHT dht(DHTPIN, DHT22); //Инициация датчика
//DHT dht(DHTPIN, DHT11);
void setup() {
begin(9600);
begin();
}
void loop() {
delay(2000); // 2 секунды задержки
float h = dht.readHumidity(); //Измеряем влажность
float t = dht.readTemperature(); //Измеряем температуру
if (isnan(h) || isnan(t)) { // Проверка. Если не удается считать показания, выводится «Ошибка считывания», и программа завершает работу
println("Ошибка считывания");
return;
}
print("Влажность: ");
print(h);
print(" %\t");
print("Температура: ");
print(t);
println(" *C "); //Вывод показателей на экран
}

Для начала включается установленная библиотека и прописывается пин вывода, куда включен датчик. Создаваемый объект помогает обеспечить доступ к функциям.

Setup () помогает инициализировать интерфейс — это необходимо, потому что показатели выводятся на экран последовательного порта.

Loop () подключает функцию read11(), принимающую вывод  полученных данных. Если применяется 22-я версия, то функция соответствующим образом меняется — на read22().

Доступ к показателям обеспечивается параметрами:

  • t = DHT.temperature;
  • h = DHT.humidity.

Этот тип данных подходит для хранения чисел, имеющих десятичный разделитель.

Serial.print () позволяет вывести показания без переноса строчек, а Serial.println () учитывает перенос.

Когда скетч будет загружен и удалось подключить датчик влажности и температуры результаты проводимых измерений отображаются на дисплее порта. Именно там можно будет уточнить значения показателей.

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

проверить соединения и правильность подключения устройства

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

Возможно применение DHT11 для контроля показателей в инкубаторе. В такой ситуации датчик должен подключаться к LCD-дисплею, а не экрану последовательного порта. Подходят версии 16×2 символов. В код требуется внести соответствующие изменения — данные должны выводиться на LCD. Для этого требуется инициализировать дисплей через LCD.init () и обеспечить вывод данных через  LCD.setCursor () и LCD.print ().

Используется также команда LCD.clear (), которая подготавливает экран для вывода новых показателей.

схема подключения

Проблемы, возникающие при подключении

Существует ряд ошибок и проблем, которые могут появиться после сборки схемы и программирования:

  • Нет светодиодной индикации. В этом случае необходимо проверить корректность подключения светодиода и показания, появляющиеся на экране последовательного порта.
  • При считывании данных возникает сбой. Ошибка может появляться при неверном подключении устройства.
  • При использовании RGB-светодиода световая индикация некорректная. Такая ситуация возникает при некорректной цоколевке светодиода по даташиту.

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

Понимая, как подключить DHT 11, легко справиться и со «старшей» версией. Особенно ценно то, что оба варианта датчика прекрасно заменяют друг друга.

Видео по теме

Хорошая реклама
 

Ссылка на основную публикацию