- Характеристики и подключение датчиков DHT11 и DHT22
- Датчик DHT11
- Датчик DHT22
- Схема подключения DHT12 к Arduino
- Пример скетча
- Результат
- 3. LM35DZ, LM335, LM34
- 6. LM75
- Распиновка DHT11 и DHT22/AM2302
- 5. TMP36
- 7. BME280
- Требования к комплектующим
- Где купить датчики по низким ценам
- Подключение DHT11 к Arduino Uno
- Описание контактов DHT11:
- Схема соединения
- Программа
- Подключение DHT12 к Arduino и вывод на LCD1602
- Схема подключения LCD1602 и DHT12 к Arduino
- Результат
- 4. BMP180
- Модуль KY-015 с датчиком DHT11
- Обзор аппаратного обеспечения
- Датчик температуры и влажности DHT11
- Технические характеристики
- Делаем термостат
Характеристики и подключение датчиков DHT11 и DHT22
Датчик состоит из двух частей: емкостного датчика температуры и гигрометра. Первый используется для измерения температуры, второй — для влажности воздуха. Микросхема внутри может выполнять аналого-цифровое преобразование и выводить цифровой сигнал, который считывается микроконтроллером.
В большинстве случаев DHT11 или DHT22 доступен в двух вариантах: как отдельный датчик в виде пластикового корпуса с металлическими контактами или как готовый модуль с датчиком и приваренными элементами трубопроводов. Второй вариант намного проще использовать в реальных проектах и настоятельно рекомендуется новичкам.
Датчик DHT11
- Потребляемый ток — 2,5 мА (максимальное значение при преобразовании данных);
- Измеряет влажность в диапазоне от 20% до 80%. Погрешность может составлять до 5%;
- Используется при измерении температуры в диапазоне от 0 до 50 градусов (точность — 2%)
- Габаритные размеры: длина 15,5 мм; ширина 12 мм; высота 5,5 мм;
- Электропитание — от 3 до 5 вольт;
- Мера за единицу времени (секунда). То есть частота 1 Гц;
- 4 разъема. Расстояние между соседними — 0,1 ”.
Датчик DHT22
- Электропитание — от 3 до 5 вольт;
- Максимальный ток при преобразовании — 2,5 мА;
- Возможность измерения влажности в диапазоне от 0% до 100%. Точность измерения колеблется от 2% до 5%;
- Минимальная измеряемая температура — минус 40, максимальная — 125 градусов Цельсия (точность измерения 0,5);
- Устройство способно проводить измерения за 2 секунды. Частота — до 0,5 Гц;
- Габаритные размеры: длина 15,1 мм; ширина 25 мм; высота 5,5 мм;
- Есть 4 разъема. Расстояние между соседними — 0,1 ‘;
Очевидно, что при использовании датчика температуры и влажности DHT11 в Arduino устройство будет давать менее точные значения, чем DHT22. Аналог имеет более широкий диапазон измеряемых величин, но цена соответствующая. Датчик температуры и влажности DHT22, как и его аналог, имеет цифровой выход, поэтому снимать показания можно не чаще одного раза в 1-2 секунды.
Схема подключения DHT12 к Arduino
Подключить датчик температуры и влажности DHT12 к Arduino довольно просто. Схема подключения представлена на рисунке.
Не забудьте подтягивающие резисторы 10 кОм на линиях SDA и SCL.
Ардуино DHT12
VCC | VCC |
A4 | ПДД |
GND | GND |
A5 | SCL |
Пример скетча
В следующем эскизе мы будем измерять и отправлять данные о состоянии температуры и влажности на компьютер через последовательный порт.
Результат
Откройте дверной монитор. Он будет отображать значения влажности и температуры.
3. LM35DZ, LM335, LM34
LM35DZ — это линейный датчик температуры, откалиброванный непосредственно в градусах Цельсия. Аналоговый выход прямо пропорционален температуре в градусах Цельсия: 10 мВ на градус Цельсия.
Этот датчик очень похож на LM335 (калиброванный по Кельвину) и LM34 (калиброванный по Фаренгейту).
Ниже перечислены наиболее важные особенности датчика температуры LM35:
- Протокол связи: аналоговый выход
- Диапазон питания: от 4 до 30 В
- Диапазон температур: от -55 до 150 ° C
- Точность: +/- 0,5ºC (при 25ºC)
- Интерфейс Arduino: analogRead ()
6. LM75
Датчик LM75 — еще один полезный датчик температуры. Он работает по шине I2C, т.е этот датчик подключен к Arduino по линиям SDA и SCL.
Взгляните на следующую таблицу, где приведены сводные технические характеристики датчика LM75:
- Протокол связи: I2C
- Диапазон мощности: от 3,0 до 5,5 В
- Диапазон температур: от -55 до 125 ° C
- Точность: +/- 2,0 ° C (диапазон от -55 до 125 ° C))
- Библиотеки Arduino: Temperature_LM75_Derived
Распиновка DHT11 и DHT22/AM2302
Датчики DHT11 и DHT22 / AM2302 подключить довольно просто. У них есть четыре вывода:
Рисунок 5 — Распиновка датчиков температуры и влажности DHT11 и DHT22 / AM2302
- Вывод VCC подает питание на датчик. Хотя напряжение питания допускается в диапазоне от 3,3 до 5,5 В, рекомендуется питание 5 В. В случае питания 5 В датчик можно держать на расстоянии до 20 метров от источника питания. Однако при питании от источника питания 3,3 В длина кабеля не должна превышать 1 метр. В противном случае падение напряжения в сети приведет к ошибкам измерения.
- Вывод данных используется для связи между датчиком и микроконтроллером.
- NC не подключен
- GND должен быть подключен к земле Arduino.
5. TMP36
TMP36 — аналоговый датчик температуры. Он выводит аналоговое значение, пропорциональное температуре окружающей среды. Он очень похож на датчик температуры LM35.
Вот его основные особенности:
- Протокол связи: аналоговый выход
- Диапазон мощности: от 2,7 В до 5,5 В
- Диапазон температур: от -40 ° C до + 125 ° C
- Точность: +/- 1ºC (при 25ºC)
- Интерфейс Arduino: analogRead ()
7. BME280
BME280 — это барометрический датчик, который также измеряет температуру и влажность. Он может связываться с микроконтроллером по шине I2C или SPI. BME280 питается от 3,3 В или 5 В.
В таблице ниже приведены технические характеристики BME280 в отношении датчиков температуры:
- Протокол связи: I2C или SPI
- Диапазон мощности: от 1,7 до 3,6 В (для IC) от 3,3 до 5 В на плату
- Диапазон температур: от -40 до 85 ° C
- Точность: +/- 0,5ºC (при 25ºC)
- Библиотеки Arduino: библиотека Adafruit BME280, библиотека Unified Sensor Adafruit
Требования к комплектующим
Требования к оборудованию для вашего градусника вполне стандартные, они нам понадобятся:
- Arduino UNO
- ЖК-дисплей 16×2
- Датчик температуры DS18B20
- Джемперы
- Резистор 1 кОм
- Блюдо для хлеба
Где купить датчики по низким ценам
Традиционно самые низкие цены предлагают продавцы Алиэкспресс. Вот самые интересные варианты:
Цифровые датчики температуры и влажности DHT11 DHT22 | DHT22 как модуль, совместимый с Arduino Uno R3 | Беспроводная связь DHT22 для метеостанций на базе WeMos — как бутерброд |
Модуль беспроводного датчика DHT22 (с ESP8266) | Недорогой вариант датчика температуры и влажности DHT11 дешевле на 70 рублей! | Хорошо выполненный датчик DHT11 от RobotDyn |
Подключение DHT11 к Arduino Uno
Если у вас на руках только датчик (синий пластиковый ящик «решетка» с 4 металлическими контактами), то для подключения DHT11 вам потребуются следующие детали:
- Плата Arduino (или другой микроконтроллер, поддерживающий тайминг в микросекундах);
- Сборка (разделочная доска);
- Подтягивающий резистор 10 кОм;
- ВЕЛ.
Описание контактов DHT11:
- Питание;
- Вывод данных;
- Не используется;
- Земля (GND).
Штыри пронумерованы слева направо, если корпус датчика обращен к вам сбоку от решетки, а «ножки» находятся внизу. Для правильной работы датчика необходимо припаять резистор 10 кОм между сигнальными выходами и источником питания.
Если у вас в руках готовый сенсорный модуль, подключить его к Arduino предельно просто: подключите VCC к + 5V, GND к земле, третий контакт к любому свободному контакту на плате Arduino. Затем на эскизе необходимо указать номер штифта. Поэтому вы можете подключать датчик к разным платам Arduino: Uno, Arduino Mega, Arduino Nano, Pro Mini и другим.
Модуль датчика подключается следующим образом:
Датчик DHT22 / DHT11 | Ардуино |
+ | + 5В |
из | например 2 |
– | GND |
Внимание! Обязательно соблюдайте полярность подключения. При неправильном подключении датчик почти неизбежно выйдет из строя. Кроме того, при неправильном подключении пластиковый корпус датчика может сильно нагреться и обжечь руки. Будьте осторожны, не торопитесь! Чтобы схема соответствовала приведенному ниже примеру чертежа, рекомендуется подключить сигнал от датчика влажности DHT11 / DHT22 ко второму выводу. Если у вас другой эскиз, вы можете внести соответствующие изменения в код и изменить штифт (пример ниже). Также подключаются дополнительные резисторы (этот шаг можно пропустить, так как резистор уже установлен в плате).
Схема соединения
Выполните подключения в соответствии со схемой ниже.
Подключаем датчик и Ардуино
- VCC -> Arduino 5V, плюс резистор 4,7 кОм в диапазоне от VCC до Data
- Данные -> Pin 7 Arduino
- GND -> GND Arduino
Подключения для ЖК-дисплея и Arduino UNO
- Контакт 1 -> GND
- Контакт 2 -> VCC
- Контакт 3 -> Контакт 3 Arduino
- Контакт 4 -> Контакт 33 Arduino
- Контакт 5 -> GND
- Контакт 6 -> Контакт 31 Arduino
- Контакт 7-10 -> GND
- Контакт 11 -> Контакт 22 Arduino
- Контакт 12 -> Контакт 24 Arduino
- Вывод 13 -> Вывод 26 Arduino
- Контакт 14 -> Контакт 28 Arduino
- Контакт 15 -> VCC через резистор 220 Ом
- Контакт 16 -> GND
Подключите потенциометр, как показано выше, к контакту 3 на ЖК-дисплее, чтобы проверить контраст.
Этот проект работает при температурах до 125 ° C.Если есть какой-либо диссонанс в показанной температуре, дважды проверьте соединения с резистором, подключенным к DS18B20. После подключения всего вышеперечисленного можно переходить к программированию.
Программа
Как только датчик температуры подключен к Arduino, мы начинаем писать программу. Первое, что мы сделаем, это отправим необработанный сигнал с аналогового входа на последовательный порт, просто чтобы понять, как изменяется значение на входе A0. Нам понадобится простая программа:
raw int = 0; температура поплавка = 0; void setup () {Serial.begin (9600); pinMode (A0, ВХОД); } void loop () {raw = analogRead (A0); temp = (raw / 1023.0) * 5.0 * 1000/10; Serial.println (темп); задержка (1000); }
Внимание математика! В программе вы можете увидеть выражение:
temp = (raw / 1023.0) * 5.0 * 1000/10;
это необходимо для преобразования сигнала аналогового датчика в градусы Цельсия. Вот в чем суть. У всех аналоговых датчиков есть одна важная особенность — отношение количества вольт к единице измеряемой величины. Например, в спецификации нашего датчика tmp35 сказано, что каждый градус измеренной температуры соответствует 10 милливольтам выходного напряжения. Исходя из этих соображений, давайте сначала преобразуем значение, считываемое через analogRead, в количество Вольт:
вольт = (значение АЦП / 1023) * 5
Эта процедура называется нормализацией. Здесь 1023 — максимальное значение, которое 10-битный АЦП, встроенный в Arduino Uno, может вернуть нам.
5 — Рабочее напряжение АЦП.
Итак, давайте переведем эти вольты в градусы Цельсия:
градусы = (вольт * 1000) / 10
Преобразуем вольты в милливольты (* 1000) и делим на 10 (то же число, что и в спецификации!).
В общем, даже если ничего не понятно, загружаем программу на Ардуино и наблюдаем за температурой окружающей среды. Например, в нашей лаборатории датчик оценивал температуру следующим образом:
это довольно верное значение. Теперь поднесем прибор к открытому окну (на улице зимой -10 ° C):
Работа! Датчик сразу определяет падение температуры.
Подключение DHT12 к Arduino и вывод на LCD1602
Чтобы сделать устройство автономным, мы будем отображать данные на ЖК-дисплее, в моем случае это LCD1602 (две строки по 16 символов), который управляется через интерфейс I2C (PCF8574). Для подключения этого ЖК-модуля необходимы всего 4 линии: источник питания (Vcc), земля (GND), линия последовательных данных SDA (последовательные данные) и линия синхронизации SCL (последовательный CLock). Более подробная информация в статье Подключение LCD1602 к Arduino через I2C (HD44780 / PCF8574).
Схема подключения LCD1602 и DHT12 к Arduino
Схема подключения LCD, DHT12 и Arduino Pro Mini выглядит следующим образом:
В этом случае нет необходимости использовать дополнительные подтягивающие резисторы, так как они присутствуют в модуле PCF8574.
Результат
4. BMP180
Хотя BMP180 является датчиком атмосферного давления, он также может измерять температуру. Это очень полезно при создании проекта метеостанции.
Ниже приведены наиболее важные характеристики BMP180, когда речь идет о показаниях температуры.
- Протокол связи: I2C
- Диапазон мощности (на чип): от 1,8 до 3,6 В
- Диапазон мощности (на модуль): от 3,3 до 5 В
- Диапазон температур: от 0 до 65 ° C
- Точность: +/- 0,5ºC (при 25ºC)
- Библиотеки Arduino: Adafruit BME085, Унифицированная библиотека датчиков Adafruit
Модуль KY-015 с датчиком DHT11
Хороший вариант — готовая плата с резистором и конденсатором. Он имеет три контакта, которые можно подключить к макетной плате.
DHT11 довольно медленно преобразует измеренные значения, считывает показания не чаще одного раза в секунду.
Модуль должен быть защищен от солнечного света и другого излучения с ультрафиолетовой частью в спектре. Газы, содержащие диоксид серы и пары соляной кислоты, могут вызвать повреждение. Высокая концентрация паров этанола полностью повредит чувствительный сенсорный слой.
Обзор аппаратного обеспечения
А теперь перейдем к более интересным вещам. Давайте взглянем на датчики DHT11 и DHT22 / AM2302 и посмотрим, что внутри.
Корпус состоит из двух частей, поэтому для его открытия нужно просто вынуть острый нож и разделить корпус на части. Внутри корпуса рядом с датчиками находится датчик влажности и датчик температуры NTC (термистор).
Рисунок 2 — Внутри датчика температуры и влажности DHT11 DHT22 / AM2302
Чувствительный к влаге компонент, который, очевидно, используется для измерения влажности, имеет два электрода с водоудерживающей подложкой (обычно солью или проводящим пластиковым полимером), зажатой между ними. Когда водяной пар поглощается, подложка выделяет ионы, которые, в свою очередь, увеличивают проводимость между электродами. Изменение сопротивления между двумя электродами пропорционально относительной влажности. Более высокая относительная влажность снижает сопротивление между электродами, а более низкая относительная влажность увеличивает это сопротивление.
Рисунок 3 — Внутренняя структура датчика влажности в DHT11 и DHT22
Кроме того, эти датчики имеют датчик температуры NTC (термистор) для измерения температуры. Термистор — это термистор — резистор, который меняет свое сопротивление в зависимости от температуры. Все резисторы технически являются термисторами — их сопротивление незначительно меняется в зависимости от температуры, но это изменение обычно очень мало и его трудно измерить.
Термисторы сделаны так, что их сопротивление резко меняется при изменении температуры, а изменение на один градус может составлять 100 Ом и более! Термин «NTC» означает «отрицательный температурный коэффициент», что означает, что при повышении температуры сопротивление уменьшается.
Рисунок 4 — График зависимости сопротивления термистора NTC от температуры
Зато в корпусе SOIC-14 есть небольшая печатная плата с 8-битным чипом. Эта микросхема измеряет и обрабатывает аналоговый сигнал с сохраненными калибровочными коэффициентами, выполняет аналого-цифровое преобразование и выдает цифровой сигнал с данными о температуре и влажности.
Датчик температуры и влажности DHT11
Существует семейство датчиков влажности и температуры DHT (DHT11, DHT22 и т.д.), Которые используются для создания домашней метеостанции. Представляется разумным измерять температуру и относительную влажность одновременно, поскольку последняя напрямую зависит от первой. Таким образом, повышение температуры батарей центрального отопления приводит к снижению относительной влажности воздуха.
Считается, что оптимальное содержание влаги составляет около 50% — именно при таком содержании влаги в растении люди и животные чувствуют себя комфортно.
Датчик температуры и влажности DHT11 — недорогой датчик, который удобно использовать дома в образовательных целях. Он не дает точных показаний и имеет ограниченный диапазон измерения. Однако он очень популярен благодаря своей простоте. Есть более дорогие аналоги, в частности, старший брат DHT22.
Датчики DHT состоят из двух основных частей: емкостного датчика влажности и термистора. Кроме того, в корпусе установлена простая микросхема для преобразования аналогового сигнала в цифровой. Считывание цифрового выходного сигнала довольно просто, вы можете использовать любой контроллер, а не только Arduino.
Технические характеристики
- Электропитание от 3 до 5В
- Максимальный ток потребления — 2,5 мА при преобразовании (при запросе данных)
- Предназначен для измерения уровня влажности в диапазоне от 20% до 80%. Точность измерения в диапазоне 5%
- Измеряет температуру в диапазоне от 0 до +50 градусов с точностью ± 2 ° C
- Частота измерения не более 1 Гц (одно измерение в секунду)
- Размер корпуса: 15,5 мм x 12 мм x 5,5 мм
Сам датчик представляет собой синий прямоугольник с сеткой. У него четыре ножки, одна из которых (третья) не используется. Расстояние между ножками стандартное, устройство легко устанавливается на макетную плату.
- VCC — питание от 3 до 5 В
- DATA (OUTPUT) — Вывод данных
- NC — не подключается
- GND — Земля
При подключении используйте подтягивающий резистор к VCC; рекомендуется использовать конденсатор (фильтр питания между VCC и GND).
Делаем термостат
Теперь добавим в программу какое-то действие, которое будет выполняться, если температура упадет ниже установленного нами порога. Пусть этот порог составляет 15 ° C. Самое простое, что мы можем сделать, — это включить штатный светодиод № 13 на Arduino. Оказывается это программа:
raw int = 0; температура поплавка = 0; void setup () {pinMode (A0, INPUT); } void loop () {raw = analogRead (A0); temp = (raw / 1023.0) * 5.0 * 1000/10; если (темп <15) digitalWrite (13, HIGH); в противном случае digitalWrite (13, LOW); задержка (1000); }
Кто-то забыл закрыть окно — температура резко упала ниже 15 — загорается светодиод. Закрываем окно, активно дышим — светодиод гаснет. А теперь представьте, что вы не включаете светодиод, а подаете сигнал на реле, которое включает обогреватель в комнате. Получается готовый термостат!
Немного изменив программу, можно отследить не снижение, а превышение определенного уровня. Например, будет удобно следить за температурой внутри, например, серверной, а при повышении температуры до 40 градусов включать вытяжку!