Измерение температуры и влажности на Arduino – подборка способов

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

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

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

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

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

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

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

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

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

Примечание:

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

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

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

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

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

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

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

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

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

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

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

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

  • Dmax = 1023;

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

Тогда:

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

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

DS18B20

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

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

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

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

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

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

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

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

Научитесь разрабатывать устройства на базе микроконтроллеров и станьте инженером умных устройств с нуля: Инженер умных устройств

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

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

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

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

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

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

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

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

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

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

  • DHT 11;

  • DHT 21 (AM2301);

  • DHT 22 (AM2302, AM2321).

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

Заключение

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

Смотрите также по этой теме:

10 причин, почему вы должны изучать электронику

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

7 учебных курсов по работе с Ардуино, онлайн обучение проектированию и конструированию электронной аппаратуры

Покупки в Aliexpress с кэшбэком

Информация, опубликованная на данном веб-сайте, представлена исключительно в ознакомительных целях, за применение этой информации администрация сайта ответственности не несет.

admin

Share
Published by
admin

Recent Posts

Apple: история логотипа

Как менялся логотип Apple на протяжении многих лет. Логотип Apple — это не просто символ,…

6 дней ago

Security Boot Fail при загрузке Acer — решение проблемы

Security Boot Fail при загрузке Acer — решение проблемы При загрузке ноутбука Acer с флешки,…

3 недели ago

Ноутбук не включается — варианты решения

Ноутбук не включается — варианты решения Если при попытке включить ноутбук вы обнаруживаете, что он…

3 недели ago

The AC power adapter wattage and type cannot be determined — причины и решение

The AC power adapter wattage and type cannot be determined — причины и решение При…

3 недели ago

Свистит или звенит блок питания компьютера — причины и решения

Свистит или звенит блок питания компьютера — причины и решения Некоторые владельцы ПК могут обратить…

3 недели ago

Мигает Caps Lock на ноутбуке HP — почему и что делать?

Мигает Caps Lock на ноутбуке HP — почему и что делать? При включении ноутбука HP…

3 недели ago