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

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

Измерение терморезистором

Самым простым способом определения температуры является использование терморезистора. Это вид резистора сопротивление которого зависит от температуры окружающей среды. Выделяют терморезисторы с положительным и отрицательным температурным коэффициентом сопротивления PTC (еще называют позисторы) и NTC-терморезисторы соответственно.

На графике ниже вы видите зависимости сопротивления от температуры. Штриховой линией изображена зависимость для терморезистора с отрицательным ТКС (NTC), а жирной сплошной линией для термистора с положительным ТКС (PTC).

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

Что мы здесь видим? Первое что бросается в глаза это то, что у PTC-терморезистора график ломанный и измерять ряд значений температуры будет затруднительно или невозможно, а вот у NTC терморезистора график более-менее равномерный, хоть и явно нелинейный. Что это значит? С помощью NTC терморезистора легче измерять температуру, потому что легче выяснить, функцию по которой изменяются его значения.

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

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

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

Для описания этого изменение существует уравнение Штейнхарта-харта.

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

где A, B и C это константы термистора определяемые по измерениям трёх температур с разницей не менее 10 градусов Цельсия. При этом разные и указывают, что для типичного 10 кОм NTC-термистора они равны:

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

Примечание:

Кто хорошо понимает технический текст на английском языке и любит вычисления может ознакомиться со следующим документом: https://www.bipm.org/utils/common/pdf/ITS-90/Guide-SecTh-Thermistor-Thermometry.pdf

Это брошюра об измерениях температуры с помощью термистора выпущенная Консультативным комитетом по термометрии (ККТ).

Однако использование такого уравнение трудоёмко и в любительских проектах неоправданно, поэтому можно воспользоваться beta-уравнением для термистора.

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

B бета-коэффициент, он рассчитывается на основе измерения сопротивления для двух различных температур. Указывается либо в даташите (что проиллюстрировано ниже), либо вычисляется самостоятельно.

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

При этом B указывается в виде:

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

Это значит, что коэффициент высчитывался исходя из данных полученных при измерении сопротивления при температурах 25 и 100 градусов Цельсия, именно такой вариант распространён более всего. Тогда его высчитывают по формуле:

B = (ln(R1) ln(R2)) / (1/T1 — 1/T2)

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

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

ремонт электроники в Костроме

Здесь R1 это постоянный резистор, термистор подключается к у питания, а данные снимаются со средней точки между ними, на схеме условно указано, что сигнал подаётся к выводу A0 это аналоговый вход Ардуино.

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

Для расчета сопротивления термистора можно использовать следующую формулу:

Rтермистора=R1⋅((Vсс/Vвыход)−1)

Чтобы перевести в понятный для ардуино язык нужно вспомнить о том, что у ардуино 10-битный АЦП, значит максимальное цифровое значение входного сигнала (напряжением 5В) будет равно 1023. Тогда условно:

  • Dmax = 1023;

  • D фактическое значение сигнала.

Тогда:

Rтермистора=R1⋅((Dmax /D)−1)

Теперь используем это для вычисления сопротивления и последующего вычисления температуры термистора с помощью бета-уравнения на языке программирования для Ардуино. Скетч будет таким:

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

DS18B20

Еще большую популярность для измерения температуры с помощью. Ардуино нашёл цифровой датчик DS18B20. Он связывается с микроконтроллером по интерфейсу 1-wire, вы можете подсоединить несколько датчиков (до 127) на один провод, а для обращения к ним вам придётся узнать ID каждого из датчиков.

Примечание: ID вы должны знать даже если используете всего 1 датчик.

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

Ремонт ноутбуков в костроме

Схема подключения датчика ds18b20 к Ардуино выглядит так:

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20
Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

Также есть режим паразитного питания его схема подключения выглядит так (нужно два провода вместо трёх):

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

В таком режиме не гарантируется корректная работа при измерении температуры выше 100 градусов Цельсия.

Цифровой датчик температуры DS18B20 состоит из целого набора узлов, как и любая другая ЦИМС. Её внутреннее устройство вы можете наблюдать ниже:

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

Для работы с ним нужно скачать библиотеку Onewire для Ардуино, а для самого датчика рекомендуется использовать библиотеку DallasTemperature.

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

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

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

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

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

DHT11 DHT22
Определение влажности в диапазоне 20-80% 0-100%
Точность измерений 5% 2-5%
Определение температуры от 0C до +50C от -40C до +125C
Точность измерений 2,5% плюс-минус 0,5 Градусов Цельсия
Частота опроса 1 раз в секунду 1 раз в 2 секунды
Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

Схема подключения довольно проста:

  • 1 вывод питание;

  • 2 вывод данные;

  • 3 вывод не используется;

  • 4 вывод общий провод.

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

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

Для работы нам нужна библиотека dht.h её нет в стандартном наборе, поэтому её нужно скачать и установить в папке libraries в папке с arduino IDE. Она поддерживает все датчики этого семейства:

  • DHT 11;

  • DHT 21 (AM2301);

  • DHT 22 (AM2302, AM2321).

Пример использования библиотеки:

Измерение температуры и влажности с Ардуино: терморезистор, DHT11, DHT22 и 18b20

Заключение

В наше время создать свою станцию для измерения температуры и влажности очень просто благодаря платформе Arduino. Стоимость таких проектов составляет 3-4 сотни рублей. Для автономной работы, а не вывода данных на компьютер, может использоваться символьный дисплей (их мы описывали в недавней статье), тогда можно построить портативный прибор для использования как дома, так и в машине. Пишите в комментариях что еще вы хотели бы узнать о простых самоделках на ардуино!

Смотрите также по этой теме:Популярные датчики для Arduino — подключение, схемы, скетчи

Алексей Бартош

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *