Перейти к содержимому

Датчики температуры и влажности для Arduino

Добрый день, уважаемый читатель!

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

В данной статье рассмотрены только цифровые датчики воздуха, то есть NTC, термопары и т.д. здесь не описаны. Если Вам необходимо вначале определиться с типом датчика (NTC, термопара, терморезистор, цифровой и т.д.) для своего проекта, то рекомендую вначале ознакомиться с другой статьей: Датчики температуры (и влажности) для DIY-устройств: руководство по выбору

Если вы ищете датчик влажности почвы, рекомендую другую статью: Датчики влажности почвы

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

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

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


Основные характеристики

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

Пояснения к таблице:

  • Пожалуйста, не путайте разрешение (или шаг) измерения и погрешность измерения. Это разные характеристики. Шаг измерения зависит от разрядности АЦП датчика и показывает, на какую минимальную величину может изменяться выходное значение. Погрешность – отклонение измеренного значения величины от её истинного (действительного) значения (попросту говоря – на сколько “врёт” датчик) и c разрешением связана только косвенно. Погрешность измерения является характеристикой точности измерения, поэтому в таблице так и указано – точность (так как слово короче).
  • Многие датчики умеют программно изменить разрядность внутреннего АЦП, а следовательно изменять шаг измерения. В этом случае в таблице указан минимально возможный шаг измерения. Но за всё нужно платить – как правило, чем выше разрядность (меньше шаг), тем дольше выполняется измерение и оцифровка, и тем выше потребляемый сенсором ток.
  • Многие датчики склонны к саморазогреву. То есть их показания температуры будут расти, если опрашивать их слишком часто. Там, где мне удалось найти такую информацию, я указал это в описании датчика. В любом случае в своих проектах я стараюсь не опрашивать датчик чаще чем один за в 20-30 секунд, обычно этого достаточно. Если Вам необходимы показания чаще, потребуется более тщательный выбор датчика.
  • Практически у всех датчиков погрешность измерения растет к краям диапазона. Поэтому в таблице она может быть указана как “±0.5~1.0”, то есть “±в середине диапазона ~ на краях диапазона”. Для более детальной информации смотрите графики погрешности, они обычно приведены в datasheet-ах. Ссылки на источники информации приведены в описании, но со временем они могут перестать работать.
  • Если рассматривать комбинированные сенсоры “температура + относительная влажность воздуха”, то температурные сенсоры всегда обладают более высокой точностью, чем влажностные. Температуру измерять научились довольно давно и с высокой точностью, а вот с влажностью всё обстоит гораздо хуже. Тем более, что на измерение влажности могут влиять много посторонних факторов типа скорости воздушного потока. Но цифровые сенсоры влажности как правило всё равно намного превосходят бытовые психометрические гигрометры по точности измерения.
  • Большинство сенсоров разных производителей при длительном пребывании в сильно влажной атмосфере (более 90% ОВВ) дают дрейф показаний влажности в сторону увеличения (вплоть до 100%). Это и понятно – сенсор влажности (как правило это полимерный конденсатор) перенасыщается влагой. Некоторые сенсоры могут при этом полностью выйти из строя, а некоторые способны самовосстановиться спустя какое-то время после пребывания в условиях нормальной влажности. Некоторые датчики имеют встроенный нагреватель для удаления конденсата с сенсора после длительного пребывания в условиях повышенной влажности. Такие модули выделены красным цветом в столбце “Измерение влажности”.
  • Если датчик измеряет одновременно температуру и влажность, и при этом допустимый диапазон температур, при которых еще работает измерение влажности, меньше, чем диапазон измерения собственно температуры, то в таблице указан диапазон, при котором работают оба сегмента. Например: диапазон измерения температуры в datasheet-e указан как “от -40° до +125°С”, но при этом измерение влажности возможно лишь при “от -20° до +70°С”, то в таблице будет указан более узкий диапазон и помечен символом *. Сделано это для того, чтобы не загромождать таблицу. Смотрите подробное описание для получения более подробных сведений.
  • Температуру мало изменить и оцифровать, её еще нужно и как-то передать в микроконтроллер. Все цифровые сенсоры (NTC сенсоры я никогда не использовал и не рассматривал) можно условно поделить на несколько групп по типу подключения: 1-Wire, Single-bus, I2С, SPI и RS485. Описание шин расположено непосредственно под таблицей.
  • Большинство сенсоров-чипов “с завода” имеют напряжение питания не выше +3,6В, что делает затруднительным их подключение к Arduino-подобным платам с питанием +5,0В. Но почти все из описываемых сенсоров можно приобрести уже в виде готовых модулей (шилдов), что для самодельщиков гораздо удобнее, и на которых могут быть распаяны стабилизатор 3,3В и конверторы логических уровней – такие сенсоры-модули можно без проблем подключать и к Adruino и к ESP32 / 8266. В этом случае в таблице указан диапазон питающих напряжений с учетом стабилизатора и помечен символом *. Соответственно для ESP и других контроллеров с напряжением питания 3,3В лучше выбирать шилды с прямым питанием, хотя обычно прекрасно работают и пятивольтовые экземпляры.
  • Если вы будете искать сенсоров на Ali, то наверняка заметите, что большинство современных сенсоров выпускается сериями, например: HTU20D/HTU21D/HTU25D. Или SHT20/21/25. Или SHT30/31/35. Связано это, на мой взгляд, с особенностями производства. Конечно же, никто не запускает в производство отдельные виды датчиков. Просто на этапе калибровки лучшие экземпляры маркируются как SHT35; явные середнячки – попадут в SHT31; ну а “третий сорт не брак” – это SHT30. Ну и цена у них соответствующая. Когда будете выбирать себе сенсор для проекта, вы вполне можете ориентироваться на этот принцип. Как я уже упомянул здесь, температуру все сенсоры измеряют довольно точно, важна ли вам точность при измерении влажности? Для какой-нибудь автоматической сушилки, возможно, это и важно. А вот для управления котлом – вряд ли это будет иметь существенное значение.
  • Цена указана только справочно – это минимальная цена с первой страницы выдачи Aliexpress при поиске по названию датчика на момент написания статьи. Цена может быть не точной, и тем более, измениться со временем.
Датчик Фото Шина Питание Измерение
температуры
Измерение
влажности
Измерение
давления
Цена
Dallas Semiconductor / Maxim Integrated
DS18B20 DS18B20 1WIRE 3.0-5.5V
1.0-1.5mA
от -55° до +125°С
c шагом до 0.0625°С
точность ±0,5~2.0°С
отсутствует отсутствует ~ 0,3 $
Aosong Electronics Co.,Ltd / ASAIR
DHT11 DHT11 1BUS 3.0-5.5V
0.2-1.0mA
от 0° до +50°С
c шагом 1.0°С
точность ±2.0°С
от 20% до 90% RH
c шагом 1.0% RH
точность ±5.0% RH
отсутствует ~ 0,7 $
Mw33 Mw33 1BUS 3.3-5.5V от -20° до +60°С
c шагом 0.1°С
точность ±2.0°С
от 5% до 95% RH
c шагом 0.1% RH
точность ±5.0% RH
отсутствует ~ 0,7 $
DHT21 AM2301 AM2301 1BUS 3.0-5.5V
0.05-2.1mA
от -40° до +80°С
c шагом 0.1°С
точность ±0.5~1.0°С
от 0% до 99.9% RH
c шагом 0.1% RH
точность ±3.0~5.0%
отсутствует ~ 2,2 $
DHT22 AM2302 AM2302 1BUS 3.0-5.5V
0.05-1.5mA
от -40° до +80°С
c шагом 0.1°С
точность ±0.5~1.0°С
от 0% до 99.9% RH
c шагом 0.1% RH
точность ±2.0~5.0%
отсутствует ~ 2,5 $
AM2320 AM2321 AM2320 1BUS, I2C 0x5С 3.1-5.5V
0.01-1.0mA
от -40° до +80°С
c шагом 0.1°С
точность ±0.2~0.5°С
от 0% до 99.9% RH
c шагом 0.1% RH
точность ±2.0~3.0%
отсутствует ~ 1,4 $
AHT10 AHT10 I2C 0x38 0x39 1.8-6.0V *
0.25-23µA
от -40° до +85°С
c шагом 0.01°С
точность ±0.3~0.8°С
от 0% до 100% RH *
c шагом 0.024% RH
точность ±2.0~3.0%
отсутствует ~ 0,8 $
AHT15 AHT15 I2C 0x38 1.8-3.6V
0.25-230µA
от -40° до +85°С
c шагом 0.01°С
точность ±0.3~0.8°С
от 0% до 100% RH *
c шагом 0.024% RH
точность ±2.0~3.0%
отсутствует ~ 1,6 $
AHT20 AHT20 I2C 0x38 2.0-5.5V *
0.25-320µA
от -40° до +85°С
c шагом 0.01°С
точность ±0.3~1.0°С
от 0% до 100% RH *
c шагом 0.024% RH
точность ±2.0~3.0%
отсутствует ~ 0,8 $
AHT21 AHT21 I2C 0x38 2.0-5.5V
0.25-980µA
от -40° до +85°С
c шагом 0.01°С
точность ±0.3~2.0°С
от 0% до 100% RH *
c шагом 0.024% RH
точность ±2.0~3.5%
отсутствует ~ 0,8 $
Bosch Sensortec
BMP180 BMP180 I2C 0x77 1.8-5.5V *
0.1µA-1mA
от -40° до +85°С
c шагом 0.1°С
точность ±0.5~2.0°С
отсутствует от 300 до 1100 hPa
c шагом 0.01 hPa
точность ±1.0~6.0 hPa
~ 0.3$
BMP280 BMP280 SPI, I2C 0x76 1.8-5.5V *
0.1µA-1mA
от -40° до +85°С
c шагом 0.01°С
точность ±0.5~1.0°С
отсутствует от 300 до 1100 hPa
c шагом 0.0016 hPa
точность ±1.0~1.7 hPa
~ 0.4$
BME280 BME280 SPI, I2C 0x76 1.8-5.5V *
0.1µA-1mA
от -40° до +85°С **
c шагом 0.01°С
точность ±0.5~1.5°С
от 0% до 100% RH
c шагом 0.008% RH
точность ±3.0% RH
от 300 до 1100 hPa
c шагом 0.0016 hPa
точность ±1.0~1.7 hPa
~ 2.7$
BME680 BME680 SPI, I2C 0x76 1.8-5.5V *
0.1µA-1mA
от -40° до +85°С **
c шагом 0.01°С
точность ±0.5~1.0°С
от 0% до 100% RH
c шагом 0.008% RH
точность ±3.0% RH
от 300 до 1100 hPa
c шагом 0.0018 hPa
точность ±0.6 hPa
~ 7.4$
Texas Instruments
HDC1080 HDC1080 I2C 0x40 2.7-5.5V
0.1-1.3µA
от -20° до +85°С *
c шагом 0.01°С
точность ±0.2~0.5°С
от 0% до 100% RH
c шагом 0.04% RH
точность ±2.0~4.0%
отсутствует ~ 1,5 $
HDC2080 HDC2080 I2C 0x40 0x41 1.62-3.6V
0.05-0.5µA
от -40° до +85°С *
c шагом 0.01°С
точность ±0.2~0.4°С
от 0% до 100% RH
c шагом 0.04% RH
точность ±2.0~3.0%
отсутствует ~ 3,1 $
Measurement Specialties / MEAS
HTU20D HTU20D I2C 0x40 1.5-3.6V
0.02-500µA
от -40° до +125°С
c шагом 0.01°С
точность ±0.3~0.7°С
от 0% до 100% RH
c шагом 0.04% RH
точность ±3.0~5.0%
отсутствует ~ 1,2 $
HTU21D HTU21D I2C 0x40 1.5-5.5V *
0.02-500µA
от -40° до +125°С
c шагом 0.01°С
точность ±0.3~0.7°С
от 0% до 100% RH
c шагом 0.04% RH
точность ±3.0~5.0%
отсутствует ~ 1,2 $
Silicon Laboratories
Si7021 SI7021 I2C 0x40 1.9-5.5V *
0.06-180µA
от -40° до +125°С
c шагом 0.01°С
точность ±0.3~0.8°С
от 0% до 100% RH
c шагом 0.025% RH
точность ±2.0~3.0%
отсутствует ~ 1,8 $
Sensirion
SHT20 SHT20 I2C 0x40 2.1-5.5V *
0.15-300µA
от -40° до +125°С
c шагом 0.01°С
точность ±0.5~2.5°С
от 0% до 100% RH
c шагом 0.04% RH
точность ±3.0~5.0%
отсутствует ~ 1,6 $
SHT21 SHT21 I2C 0x40 2.1-5.5V *
0.15-300µA
от -40° до +125°С
c шагом 0.01°С
точность ±0.3~0.8°С
от 0% до 100% RH
c шагом 0.04% RH
точность ±2.0~3.0%
отсутствует ~ 1,8 $
SHT25 SHT25 I2C 0x40 2.1-5.5V *
0.15-300µA
от -40° до +125°С
c шагом 0.01°С
точность ±0.2~0.7°С
от 0% до 100% RH
c шагом 0.04% RH
точность ±1.8~3.0%
отсутствует ~ 10 $
SHT30 SHT30 I2C 0x44 0x45 2.15-5.5V
0.15-600µA
от -40° до +125°С
c шагом 0.01°С
точность ±0.2~0.6°С
от 0% до 100% RH
c шагом 0.01% RH
точность ±2.0~4.0%
отсутствует ~ 2 $
SHT31 SHT31 I2C 0x44 0x45 2.15-5.5V
0.15-600µA
от -40° до +125°С
c шагом 0.01°С
точность ±0.2~0.5°С
от 0% до 100% RH
c шагом 0.01% RH
точность ±2.0% RH
отсутствует ~ 2,8 $
SHT35 SHT35 I2C 0x44 0x45 2.15-5.5V
0.15-600µA
от -40° до +125°С
c шагом 0.01°С
точность ±0.1~0.4°С
от 0% до 100% RH
c шагом 0.01% RH
точность ±1.5~2.0%
отсутствует ~ 10 $
SHT40 SHT40 I2C 0x44 0x45* 1.08-5.5V *
0.08-500µA
от -40° до +125°С
c шагом 0.01°С
точность ±0.2~0.6°С
от -6% до 110% RH
c шагом 0.01% RH
точность ±1.8~3.0%
отсутствует ~ 2 $
SHT41 SHT41 I2C 0x44 0x45* 1.08-5.5V *
0.08-500µA
от -40° до +125°С
c шагом 0.01°С
точность ±0.2~0.5°С
от -6% до 110% RH
c шагом 0.01% RH
точность ±1.8~2.0%
отсутствует ~ 2 $
SHT45 SHT45 I2C 0x44 0x45* 1.08-5.5V *
0.08-500µA
от -40° до +125°С
c шагом 0.01°С
точность ±0.1~0.4°С
от -6% до 110% RH
c шагом 0.01% RH
точность ±1.0~1.8%
отсутствует ~ 5 $

В конце данной статьи Вы можете найти небольшое сравнение датчиков, выполненное мной на тестовом проекте.


Интерфейсы подключения (шины)

Прежде чем перейти к подробному рассмотрению собственно датчиков, стоит определиться со способами их подключения к микроконтроллеру. Я не буду вдаваться здесь в технические подробности и протоколы, в интернете масса информации по этом поводу, в том числе и в datasheet-ах. Итак, если кратко, существуют следующие варианты подключения (для рассмотренных датчиков):

1WIRE ( 1-Wire, OneWire )

1WIRE – протокол передачи данных в обе стороны по одному проводу. Разработан фирмой Dallas Semiconductor (сейчас Maxim Integrated) в далёких 90-х, но активно используется и сейчас. На шине должно быть одно master-устройство (Ваш микроконтроллер) и одно или несколько адресуемых slave-устройств. Для подключения датчика к контроллеру потребуется всего один свободный GPIO вывод, но на один вывод можно подключить несколько датчиков с разными адресами.

Адреса у разных экземпляров датчиков различаются, поэтому их можно подключить много. По некоторым данным, длина провода при нормальном питании (то есть трехпроводном включении) может достигать 100 м, однако лично я не проверял. На пятиметровом кабеле датчики работают вполне стабильно.

1BUS ( Single-bus, иногда встречается как Aosong 1-Wire )

Однопроводная шина Single-bus разработана компанией Aosong Electronics Co., при этом она отличается от однопроводной шины Maxim / Dallas, поэтому несовместима с 1-Wire шиной Dallas / Maxim, хотя “электрически” выглядит одинаково. Управление шиной Single-bus происходит «прижиманием к земле» (подачей логического «0») и «отпусканием» шины, тогда в шине появляется логическая «1» через подтягивающий резистор. На этой шине может быть только один датчик, то есть для подключения каждого отдельного датчика потребуется свой отдельный GPIO.

Зато длина кабеля датчика при отсутствии помех может достигать нескольких десятков метров. При этом «подтягивающий» резистор лучше располагать не около контроллера, а на стороне датчика. А заодно около самого датчика и помехогасящий конденсатор 100нФ на выводы питания не помешает – если на этой шине датчик из-за помехи “вываливается в ошибку”, то вернуть его в работу можно только кратковременным сбросом по питанию, перезагрузка MCU не помогает.

I2C ( Inter-Integrated Circuit )

Последовательная асимметричная шина для связи между интегральными схемами внутри электронных приборов. Разработана фирмой Philips Semiconductors в начале 1980-х как простая 8-битная шина внутренней связи для создания управляющей электроники. Поэтому физическая “дальность” такой шины не превышает нескольких метров. Зато при сбое датчика из-за помех, он, как правило самостоятельно возвращается в работу через некоторое время (в отличие от Aosong 1-Wire). Самый распространенный интерфейс у производителей сенсоров. Шина использует две двунаправленные линии связи: SDA – (DAta) “данные” и SCL (CLock) – “тактовый сигнал”.

Типовая схема подключения I2C датчиков

Для различных плат MCU обычно используются выводы, используемые в таблице (источник: enjoyneering):

Плата SDA SCL Питание
Arduino Uno, Mini, Pro, ATmega168, ATmega328 A4 A5
Arduino Mega2560 20 21
Arduino Due, SAM3X8E 20 21 3.3в
Arduino Leonardo, Micro, ATmega32U4 2 3
Digistump, Trinket, ATtiny85 PB0 PB2
Blue Pill, STM32F103xxxx boards PB9/PB7 (1) PB8/PB6 (1) 3.3в / 5в
ESP8266 ESP-01 GPIO0 (2) GPIO2 (2) 3.3в / 5в
ESP8266 NodeMCU 1.0, ESP8266 WeMos D1 Mini GPIO4/D2 GPIO5/D1 3.3в
ESP32 (Arduino framework) GPIO21/D21 (3) GPIO22/D22 (3) 3.3в

Примечания:

  1. Аппаратный I2C Wire, сопоставленный с 1-Wire в stm32duino, см. https://github.com/stm32duino/wiki/wiki/API#i2c
  2. Большинство плат имеют подтягивающий резистор 10 кОм … 12 кОм на GPIO0/D3, GPIO2/D4/LED и подтягивающий резистор на GPIO15/D8 для прошивки и загрузки
  3. Только для Arduino. Для ESP-IDF выводы GPIO могут быть любыми, кроме того, можно использовать одновременно сразу две отдельные программные шины (#0 и #1).

На одну шину можно “повесить” целую гирлянду датчиков и тем самым можно освободить кучу драгоценных GPIO. Адрес сенсора на шине 7-битный (восьмой бит используется для указания направления передачи данных). Однако проблема в том, что адрес датчика задается производителем и разные датчики часто имеют одинаковый адрес – который изменить либо нельзя, либо с путем танцев бубном (перепаиванием “адресного” резистора на шилде датчика). Поэтому и выходит, что к одному контроллеру больше одного-двух одинаковых датчиков (с одним и тем же адресом) не подключить. Как выход можно использовать датчики разных производителей – у них адреса будут разные и можно использовать их одновременно. Либо использовать различные мультиплексоры.

Более подробно познакомиться с шиной I2C вы можете из следующей статьи: Шина I2C – принципы функционирования или зачем нужны подтягивающие резисторы

SPI ( Serial Peripheral Interface )

Последовательный периферийный интерфейс иногда называемый 4-х проводным интерфейсом, является последовательным синхронным интерфейсом передачи данных. На Arduino – совместимых устройствах используется не часто, ввиду того, что для нее требуется четыре GPIO, а их всегда не хватает (особенно на ESP8266). Лично я не пользуюсь, поэтому описания здесь не будет.

RS485 ( Recommended Standard 485 )

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

Типовая схема подключения RS485 устройств к МК

Но стоимость сенсоров с интерфейсом RS485 существенно выше аналогов с шиной I2C. Кроме того, для подключения к микроконтроллеру понадобится плата-адаптер. Хотите длинный провод – раскошеливайтесь на RS485 версию. Дополнительно вы получите широкий диапазон питания – от 5 до 24 (или даже 36В).


DALLAS DS18B20

DS18B20 цифровой термометр с программируемым разрешением от 9 до 12–bit, которое может сохраняться в EEPROM памяти прибора. DS18B20 обменивается данными по 1-Wire шине и при этом может быть как единственным устройством на линии так и работать в группе. Все процессы на шине управляются центральным микропроцессором. Каждый DS18B20 имеет уникальный 64-битный адрес, который позволяет общаться с множеством датчиков DS18B20 установленных на одной шине. Такой принцип позволяет использовать всего один вывод микропроцессора, чтобы контролировать множество датчиков DS18B20, распределенных по большому участку. В дополнение, DS18B20 может питаться напряжением линии данных (“parasite power”), при отсутствии внешнего источника напряжения.

Производитель: Dallas Semiconductor, ныне Maxim Integrated
Интерфейс: 1-Wire
Напряжение питания: от +3.0 В до +5.5 В, без нареканий напрямую работает с платами 3.3 В и 5.0 В.
Потребляемый ток: от ~1.0 µA в режиме ожидания до 1~1.5 mA в режиме измерения и передачи данных
Диапазон измерения температуры: от -55 до +125 °C
Шаг измерения температуры (разрешение): 0.5°C (9bit), 0.25°C (10bit), 0.125°C (11bit), 0.0625°C (12bit)
Погрешность измерения температуры (точность):
– в диапазоне от -10 до +85 °C : ±0.5°C (см. график)
– в диапазоне от -30 до +110°C : ±1.0°C
– в диапазоне от -55 до +125°C : ±2.0°C
Возможность измерения влажности: отсутствует
Возможность измерения давления: отсутствует
Библиотека для Arduino: DallasTemperature
Библиотека для ESP32 + ESP-IDF: kotyara12/reDS18x20
Источники информации: Datasheet EN, Datasheet RU

Кривая погрешности измерения

Шина 1-Wire позволяет подключать несколько устройств или датчиков одновременно, при этом обращение к датчику может быть по его порядковому индексу на шине и по его физическому адресу. При использовании адреса, необходимо его как-то предварительно определить. Как это сделать можно узнать из статьи: “поиск адресов датчиков DS18B20s на шине“. Впрочем, если датчик на шине один, вполне можно обойтись и без этого. Типовая схема включения нескольких датчиков при нормальном питании приведена на схеме ниже:

Типовая схема включения нескольких датчиков при нормальном питании. Вывод GPIO взят условно

Относительно дешевый, достаточно точный и беспроблемный датчик температуры. Этот датчик легко может использоваться в достаточно агрессивных помещениях – погребах, саунах, в емкостях с водой в герметичном исполнении. Подходит для большинства устройств домашней автоматизации. Может работать в трехпроводном включении (нормальном питании) и двухпроводном (паразитном питании). При использовании в системах управления отоплением и самогонных аппаратах учтите, что на высокой температуре точность несколько падает.

На Aliexpress можно найти много различных вариантов этого датчика, в том числе на платах и в герметичном исполнении:

В корпусе TO-92
В герметичном корпусе
В герметичном корпусе

 

Следует однако учитывать, что не все йогурты одинаково полезны большинство датчиков DS18B20, которые можно заказать на Aliexpress, являются клонами или попросту говоря, подделками. Причем Chris Petrich удалось классифицировать даже несколько семейств клонов, обладающих чрезвычайно разными техническими характеристиками. Более подробно об этом можно почитать из перевода оригинальной статьи на сайте “РадиоЛоцман”. На сайте ЧИП&ДИП можно найти несколько вариантов датчика, в том числе и оригинальные производства Maxim, причем оригинальные датчики в несколько раз дороже шанхайских аналогов. Если Вам требуется калиброванная точность измерений, то лучше разориться на оригинальную версию.


Линейка сенсоров от Aosong Electronics

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

Внимание! Устройство и принцип работы относится к оригинальной линейке сенсоров Aosong! В последнее время на китайских площадках становится все больше и больше “подделок”, которые, впрочем, как минимум не хуже оригинала за счет применения современных версий сенсоров.

Устройство датчика влажности оригинальной версии

Внутреннее устройство оригинального DHT22: слева – конденсатор измерения влажности, справа – терморезистор

Условия использования

Не стоит использовать эти сенсоры и в помещениях с высокой влажностью (погреба, сауны и т.д.), так как после достаточно длительного пребывания (несколько недель и более) в таких условиях конденсатор измерения влажности насыщается влагой и выходит из строя. Необратимо! Измерение температуры при этом продолжает функционировать как обычно, а вот показания влажности будут всегда будут 99,9%.

DHT22 работал раньше у меня в погребе и зимой при повышении влажности гарантированно выходил из строя (я имею в виду измерение влажности). Но зимой показания влажности не так уж и важны – главное не допустить промерзания; а летом для управления вентиляцией приходилось каждый год его менять (PS: cейчас установлен SHT30 с “самопрогревом” – пару лет полет нормальный). Впрочем, судя по отзывам на форумах, этот датчик и в нормальных условиях служит относительно недолго.

Питание и подключение к MCU

Данные выдаются в цифровой форме по шине Single-bus (“типа 1-wire”, но это не 1-wire!). Однопроводная шина Single-bus разработана компанией Aosong Electronics Co. она отличается от 1-проводной шины Maxim / Dallas, поэтому несовместима с 1-Wire шиной Dallas. Производитель обещает передачу данных на расстояние до 20 метров, что делает его привлекательным выбором для различных приложений. При необходимости одновременного использования нескольких датчиков необходимо задействовать разные выводы микроконтроллера:

Сенсоры (оригинальные) допускают питание от +3.0 В до +5.5 В, то есть его напрямую можно подключать к любым микроконтроллерам: и Arduino и ESP. Но при питании 5,0В сенсоры “ведут себя лучше”, поэтому для трехвольтовых контроллеров я бы порекомендовал использовать следующую схему:

Если необходимо подключить одновременно несколько датчиков, используйте такую схему:

В предлагаемом варианте сенсор питается от 5В, а шина данных подтянута к 3,3В – в итоге все счастливы. Но это касается только оригинальных версий датчиков серии DHT. Для подделок ситуация может быть разной – например подделки под DHT22 существуют и только в 3V3-версиях – см.ниже.

Сенсоры этой серии (оригинальные) склонны изредка уходить в “глухую несознанку” (иногда один-два раза в месяц, иногда реже, иногда чаще). Выглядит это так – датчик подтягивает линию данных к земле и наглухо зависает, никак не реагируя на внешние сигналы. Вернуть его в рабочее состояние можно только кратковременным отключением питания датчика, сброс MCU в этом случае никак не поможет. Поэтому сразу стоит предусмотреть в вашей конструкции кнопку или реле для сброса датчика без перезагрузки MCU. Для предотвращения подобных ситуаций на форумах рекомендуют устанавливать подтягивающий резистор на шину данных и фильтрующий конденсатор на вывод питания около датчика, а не около микроконтроллера (но, увы, это не всегда помогает). Поэтому имеет смысл купить их уже распаянными на минишилдах, где уже установлены и резистор и конденсатор. Это так же упростит их замену в случае выхода из строя. Но будьте внимательны – не все шилды содержат указанные компоненты.

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

Осторожно – подделки!

В последнее время на небезызвестных площадках появляется все больше и больше сенсоров (особенно DHT21 и DHT22), которые на самом деле не являются оригинальными версиями и сильно отличаются по внутреннему устройству (причем, по моему личному мнению, иногда даже в лучшую сторону). Более подробно об этом будет рассказано ниже в разделах про DHT21 и DHT22 / АМ2302.

Нажмите на картинку для увеличения

Здесь бы пока хотелось бы отметить одно – вместо устаревших чувствительных элементов вроде терморезистора, в “альтернативных” вариантах чаще всего используются современные цифровые TH-сенсоры для шины I2c, к которым сбоку присобачена микросхема преобразования интерфейса в SingleBus. Исходя из этого, некоторые подделки способны обеспечить лучшее качество измерений, чем оригинал. И вроде бы подделки используют тот же самый протокол обмена данными по шине, то есть вам ничего не придется переделывать в вашей прошивке или библиотеке. Но качество имитации протокола передачи данных иногда оставляет желать лучшего (например изменены длительности импульсов) и такой сенсор может не отзываться на стандартной библиотеке.

 


DHT11

Mw33DHT11 самый недорогой (~0.7$) цифровой датчик температуры и влажности серии. Как и следовало ожидать его точность измерений относительно невелика. DHT11 – это не калиброванный датчик, это означает что его показания требуется скорректировать по “образцовому” сенсору. Не предназначен для работы на улице!

 

Производитель: Aosong Electronics Co.,Ltd (сейчас датчики маркируются как ASAIR)
Интерфейс: Single-bus
Напряжение питания: от +3.0 В до +5.5 В, без нареканий напрямую работает с платами 3.3 В и 5.0 В.
Потребляемый ток: от ~1.0 µA в режиме ожидания до 1~1.5 mA в режиме измерения и передачи данных
Диапазон измерения температуры: от 0 до +50 °C
Шаг измерения температуры (разрешение): 1.0°C (8bit)
Погрешность измерения температуры (точность): ±2.0°C
Диапазон измерения влажности: от 20 до 90% RH
Шаг измерения влажности (разрешение): 1.0%RH (8bit)
Погрешность измерения влажности (точность): ±5.0%RH
Возможность измерения давления: отсутствует
Библиотека для Arduino: DHT Sensor Library
Библиотека для ESP32 + ESP-IDF: kotyara12/reDHTxx
Источники информации: Datasheet

Этот датчик можно использовать только в отапливаемых помещениях, из-за его узкого температурного диапазона. По некоторым сведениям, найденным в “этих ваших интырнетах”, DHT11 не калибруется производителем на заводе. Это означает, что Вам потребуется скорректировать его данные по “образцовому” сенсору. Учитывая, что точность DHT11 невелика, сделать это несложно.

Датчик DHT11 на плате


Mw33

Mw33Еще один недорогой цифровой датчик температуры и влажности. Китайцы позиционируют его как “улучшенный DHT11”. Диапазон измеряемой температуры стал шире, начинаясь уже от -20°C, шаг измерения стал 0.1, точность не повысилась. Диапазон измеряемой влажности и шаг измерения также стал немного шире. Даташита на него найти не удалось, производитель не известен, возможно тот же Aosong. Используется тот же протокол передачи данных, что и у DHT11.

 

Производитель: неизвестен, возможно тот же AOSONG / ASAIR
Интерфейс: Single-bus
Напряжение питания: от +3.3 В до +5.5 В.
Потребляемый ток: ?
Диапазон измерения температуры: от -20 до +60 °C
Шаг измерения температуры (разрешение): 0.1°C
Погрешность измерения температуры (точность): ±2.0°C
Диапазон измерения влажности: от 5 до 95% RH (предположительно)
Шаг измерения влажности (разрешение): 0.1%RH
Погрешность измерения влажности (точность): ±5.0%RH (предположительно)
Возможность измерения давления: отсутствует
Библиотека для Arduino: DHT Sensor Library
Библиотека для ESP32 + ESP-IDF: kotyara12/reDHTxx
Источники информации: AliExpress

У меня этот датчик прекрасно отозвался на той же библиотеке, что и все DHT. Опытным путем выяснил, что ему больше подходит режим DHT12 (чем DHT11), потому что шаг измерения у него оказалась не единица, а 0.1. Датчик показал себя гораздо более точным при измерении влажности, чем DHT11, и чуть лучше при измерении температуры. Так что могу смело рекомендовать его в качестве дешевого аналога. Отлично подойдет, например, для оценки температуры в емкостном измерителе влажности почвы (так как его данные требуется скорректировать в зависимости от температуры). Про выносливость в тяжелых условиях ничего не известно, так как лично я использовал его только в тестовом проекте. Судя по отклонениям показаний от других датчиков, этот датчик, как и DHT11, так же не калибруется заводом-изготовителем, Вам потребуется скорректировать его данные самостоятельно.


DHT21 / AM2301

AM2301DHT21, он же Гога, он же Жора, он же AM2301 – это более продвинутый вариант датчика от Aosong с лучшими характеристиками. Предназначен для работы в условиях отрицательных температур, но при высокой влажности сенсор может замерзнуть и выдавать только 99,9% влажности. Разумеется, это касается оригинальной версии, так как сейчас на рынке множество альтернативных вариантов.

 

Производитель: Aosong Electronics Co.,Ltd (сейчас датчики маркируются как ASAIR)
Интерфейс: Single-bus
Напряжение питания: от +3.0 В до +5.5 В, без нареканий напрямую работает с платами 3.3 В и 5.0 В.
Потребляемый ток: от ~40 µA в режиме ожидания до 1.5~2.1 mA в режиме измерения и передачи данных
Диапазон измерения температуры: от -40 до +80 °C
Шаг измерения температуры (разрешение): 0.1°C
Погрешность измерения температуры (точность): ±0.5°C (max ±1.0°C)
Диапазон измерения влажности: от 0 до 99.9% RH
Шаг измерения влажности (разрешение): 0.1%RH
Погрешность измерения влажности (точность): ±3.0%RH (max ±5.0%RH)
Возможность измерения давления: отсутствует
Библиотека для Arduino: DHT Sensor Library
Библиотека для ESP32 + ESP-IDF: kotyara12/reDHTxx
Источники информации: Datasheet EN

Сенсор в дикой природе на AliExpress можно найти в черном корпусе с выводами – проводами.

Датчик AM2301А в оригинальном исполнении

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

Первый, как и “положено”, собран на терморезисторе и влаго-конденсаторе, остальные – на вполне себе современных сенсорах с преобразователем интерфейса. Но имитация протокола передачи может не совсем соответствовать оригиналу.

 


DHT22 / AM2302

AM2302DHT22, он же Гога, он же Жора, он же AM2302 – это еще один вариант датчика от Aosong. Немного точнее, чем DHT21. Предназначен для работы в условиях отрицательных температур, но при высокой влажности сенсор может замерзнуть и выдавать только 99,9% влажности. Впрочем, это случается не очень часто (и справедливо для оригинальной версии, о чем ниже). Насколько я понимаю, этот датчик уже снят с производства, но запасов на складах AliExpress еще достаточно.

 

Производитель: Aosong Electronics Co.,Ltd (сейчас датчики маркируются как ASAIR)
Интерфейс: Single-bus
Напряжение питания: от +3.0 В до +5.5 В, без нареканий напрямую работает с платами 3.3 В и 5.0 В.
Потребляемый ток: от ~40 µA в режиме ожидания до 1~1.5 mA в режиме измерения и передачи данных
Диапазон измерения температуры: от -40 до +80 °C
Шаг измерения температуры (разрешение): 0.1°C
Погрешность измерения температуры (точность): ±0.5°C (max ±1.0°C)
Диапазон измерения влажности: от 0 до 99.9% RH (этот датчик не выдает значение 100%, максимум 99.9%)
Шаг измерения влажности (разрешение): 0.1%RH
Погрешность измерения влажности (точность): ±2.0%RH (max ±5.0%RH)
Возможность измерения давления: отсутствует
Библиотека для Arduino: DHT Sensor Library
Библиотека для ESP32 + ESP-IDF: kotyara12/reDHTxx
Источники информации: Datasheet EN

Кривые погрешности измерения

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

Датчик AM2302

Не стоит использовать этот датчик и в помещениях с высокой влажностью (погреба, сауны и т.д.), так как после достаточно длительного пребывания (несколько недель и более) в таких условиях конденсатор измерения влажности насыщается влагой и выходит из строя. Измерение температуры при этом продолжает функционировать как обычно, а вот показания влажности будут всегда максимальные. Такой датчик постоянно работает у меня в погребе и зимой при повышении влажности гарантированно выходит из строя (я имею в виду измерение влажности). Но зимой показания влажности не так уж и важны; а летом для управления вентиляцией приходится менять. Впрочем, судя по отзывам на форумах, этот датчик и в нормальных условиях служит относительно недолго.

Альтернативные варианты / подделки

В настоящее время на китайских площадках всё чаще и чаще под видом оригинальных AM2302 продают подделки. Отличить их можно даже по фотографиям продавца, если он выложил “честные” фото – по отсутствию заводской маркировки и некоей аляповатости корпуса. Сравните, например, два “альтернативных” варианта, которые по