Электротехнический интернет-журнал Electrik.info

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

Сайт электрика

Новые статьи

Схемы на микроконтроллерах

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

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

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

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

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

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

График зависимости сопротивления от температуры

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

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

Даташит TC-терморезисторов от компании 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 – бета-коэффициент из даташита

При этом 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

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

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

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

Схема подключения датчика к ардуино

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

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

Цифровой датчик температуры DS18B20

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

Скетч

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

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

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 сотни рублей. Для автономной работы, а не вывода данных на компьютер, может использоваться символьный дисплей (их мы описывали в недавней статье), тогда можно построить портативный прибор для использования как дома, так и в машине. Пишите в комментариях что еще вы хотели бы узнать о простых самоделках на ардуино!

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

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



Поделитесь этой статьей с друзьями:

Вступайте в наши группы в социальных сетях:

ВКонтакте Facebook Одноклассники

Смотрите также на Электрик Инфо:

  • Самые популярные датчики для Arduino
  • Подключение аналоговых датчиков к Ардуино, считывание показаний датчиков
  • Датчики температуры. Часть вторая. Терморезисторы
  • Датчики влажности - как устроены и работают
  • Промышленные датчики температуры

  •  
    Добавление комментария
    Имя:*
    Комментарий:
    Введите код: *


    Электрика дома  | Электрообзоры  | Энергосбережение
    Секреты электрика | Источники света | Делимся опытом
    Домашняя автоматика | Электрика для начинающих
    Практическая электроника | Электротехнические новинки

    Copyright © 2009-2019 electrik.info Андрей Повный (об авторе)
    Вся информация на сайте предоставлена в ознакомительных и познавательных целях. За применение этой информации администрация сайта ответственности не несет.
    Перепечатка материалов сайта запрещена.