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

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

Питание и подключение к 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 продают подделки. Отличить их можно даже по фотографиям продавца, если он выложил “честные” фото – по отсутствию заводской маркировки и некоей аляповатости корпуса. Сравните, например, два “альтернативных” варианта, которые попали мне в лапы:

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

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

Далее, оригинальный датчик вскрыть без разрушения не получится – обратная сторона залита белым компаундом, на подделках установлена обычная пластиковая крышечка, которая довольно легко снимается, после чего мы получаем доступ ко внутренностям датчика:

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

Перевернем платы:

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

  • На оригинальном сенсоре использован конденсатор в пластиковом корпусе и терморезистор в качестве датчика температуры. Чип залит компаундом с обратной стороны платы.
  • На первой подделке (белая плата) установлен неизвестный чип-сенсор с пыле-влагозащитной крышечкой. Снимать мне её было жаль, поэтому я так и не узнал, что это за сенсор. Для связи с мастером используется какой-то микроконтроллер с затертой маркировкой. Стабилизатора на плате нет, такую версию можно подключать напрямую только к трехвольтовым контроллерам, о чем, собственно и говорят надписи.
  • На второй подделке (синяя плата) установлен I2C-сенсор AHT30 того же производителя, микроконтроллер установлен на обратной стороне платы, там же имеется и стабилизатор для возможности питания от 5В. По результатам сравнения с “образцовым” SHT31 эта версия мной была признана самой точной.

Какие можно сделать выводы? Исходя из того, что в подделках применены современные чувствительные элементы, выходные данные могут быть даже более точными, чем у оригинала. И скорее всего, не так подвержены залипанию на 99,9%. Благодаря другой микросхеме преобразователя интерфейса подделки наверняка перестанут зависать время от времени. То есть получаются однозначно лучше оригинала, несмотря на неряшливый внешний вид. Да еще и стоят зачастую заметно дешевле оригинала.

Два этих варианта сразу же отозвались и нормально заработали на моей библиотеке для ESP32 и ESP-IDF. Температуру все три варианта выдают примерно одинаковую, а вот данные влажности различаются существенно:

Графики в помещении. Буквой O отмечен оригинал, W – белая плата, B – синяя плата

По результатам сравнения с “образцовым” SHT31 самой точно оказалась версия DHT22B. Впрочем, это может быть только на моих экземплярах. Более подробно эти отличия будут разобраны в отдельной статье, если вам интересны именно DHT22.

 


AM2320 & AM2321

AM2320AM2320 и AM2321 – современный вариант DHT22 от Aosong. AM2321 отличается от AM2320 только другим корпусом и расположением выводов (насколько я понял). Принцип работы, разумеется, не изменился – в них используется все тот же полимерный конденсатор. Зато данные теперь с них можно получать в двух режимах – по шине I2C или Aosong 1-Wire. В случае использования шины I2C можно освободить один вывод на микроконтроллере (так как выводы под I2C обычно в любом случае используются), но можно подключить только один датчик, так как адрес датчика один и тот же. В случае использования шины Aosong 1-Wire можно подключить несколько датчиков, но каждому необходимо выделить свой вывод GPIO. В последнем случае на датчике вывод SCL необходимо соединить с выводом GND. Диапазоны измерений не отличаются от DHT22, зато точность измерения стала несколько выше. Кроме того, новый датчик заметно дешевле, что так же является его несомненным плюсом. Кроме этого, датчик стал немного экономичнее в плане потребляемого тока. В итоге более нет смысла заказывать AM2302. Оптимальный выбор для использования с шиной Aosong 1-Wire. На мой взгляд AM2320 – это чуть лучший AM2302 с наспех приделанной шиной I2C (почему наспех – поясню чуть ниже).

Производитель: Aosong Electronics Co.,Ltd (сейчас датчики маркируются как ASAIR)
Интерфейс: Single-bus или I2C, адрес на шине: 0x5С
Напряжение питания: от +3.1 В до +5.5 В
Потребляемый ток: от ~10 µA в режиме ожидания до 950 µA (500 µA для AM2321) в режиме измерения и передачи данных
Диапазон измерения температуры: от -40 до +80 °C
Шаг измерения температуры (разрешение): 0.1°C (16bit)
Погрешность измерения температуры (точность): ±0.2°C (max ±0.5°C)
Диапазон измерения влажности: от 0 до 99.9% RH
Шаг измерения влажности (разрешение): 0.1%RH
Погрешность измерения влажности (точность): ±2.0%RH (max ±3.0%RH)
Возможность измерения давления: отсутствует
Библиотека для Arduino: AM2320
Библиотека для ESP32 + ESP-IDF: kotyara12/reDHTxx
Источники информации: AM2320 Datasheet EN, AM2321 Datasheet EN, Подключение к Arduino

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

Вообще датчик оставляет устойчивое ощущение сделанного наспех китайскими студентами троечниками в качестве дипломной работы. Во-первых datasheet содержит просто огромное количество ошибок, которые никто не собирается исправлять. Ну например: в datasheet-е указан адрес датчика 0xB8, а во всех библиотеках используется адрес 0x5C. Ошибка? И да и нет. Дело в том, что на шине I2C адрес устройства не может быть больше 0x7F. Адрес 0xB8 это сдвинутый на 1 бит влево адрес 0x5C, то есть адрес плюс бит записи в датчик. Для чтения адрес будет уже другой – 0xB9. Во-вторых, если подключать датчик по I2C, то почти все дополнительные регистры (кроме температуры и влажности) не выдают никакой информации, например запрос статуса, модели, версии и серийного номера вместо ожидаемых данных вернет только нули. В третьих процесс считывания данных с датчика по шине I2C реализован, хм, весьма кривовато. Для этого датчика стандартная функция запроса данных по шине, с которой прекрасно работают все I2C датчики других производителей, оказывается не подходит! Китайцы выпендрились и требуют двойной команды записи команды через паузу, пришлось писать другую реализацию. Дорабатывать датчик никто, видимо, не собирается.

Однако можно использовать этот датчик вместо AM2302 по однопроводному интерфейсу. Для предотвращения зависания на форумах рекомендуют устанавливать подтягивающий резистор на шину данных и фильтрующий конденсатор на вывод питания около датчика, а не около микроконтроллера. Поэтому если Вы планируете подключить эти датчики посредством длинных проводов, то имеет смысл купить их уже распаянными на минишилдах, где уже установлены и резистор и конденсатор. Это так же упростит их замену в случае выхода из строя. Но будьте внимательны – не все шилды содержат указанные компоненты.

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


AHT10

AHT10Новый (ну как новый, относительно серии DHT новый… datasheet от 2018 года) сенсор от ASAIR / AOSONG для измерения температуры и влажности. Младшая модель из серии I2C датчиков AHT10/AHT15/AHT2x. Судя по результатам вскрытия, проведенного уважаемым elchupanibrei, принцип работы датчика влажности не сильно отличается от серии DHTxx/AMxxxx – в нем используется все тот же конденсатор. Это же подтверждает и datasheet: “AHT10 оснащен недавно разработанными улучшенным полупроводниковым MEMS емкостным датчиком влажности и стандартным датчиком температуры на кристалле. Его производительность была значительно улучшена по сравнению с уровнем надежности датчиков предыдущего поколения, в том числе чтобы сделать их более устойчивыми в суровых условиях“. На практике, увы, не все так красиво: лично на мой взгляд AHT10 – один из самых плохих цифровых сенсоров на рынке для шины I2C. Сенсор работает с шиной I2C и имеет два адреса, которые можно переключать с помощью перемычке на плате. Таким образом можно подключить к одной шине сразу два датчика одновременно, но это “в теории”.

Производитель: ASAIR (он же AOSONG)
Интерфейс: I2C, адрес на шине: 0x38 или 0x39 (изменить можно с помощью перемычки на плате)
Напряжение питания: от +1.8 до +6.0 В
Потребляемый ток: от ~0.25 µA в режиме ожидания до 23 µA в режиме измерения
Диапазон измерения температуры: от -40 до +85 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность): ±0.3°C (max ~ ±0.8°C)
Диапазон измерения влажности: от 0 до 100% RH (рекомендуемый диапазон от 0 до 80% RH)
Шаг измерения влажности (разрешение): 0.024% RH
Погрешность измерения влажности (точность): ±2.0% RH (max ±3.0% RH)
Возможность измерения давления: отсутствует
Библиотека для Arduino: enjoyneering AHTxx Library
Библиотека для ESP32 + ESP-IDF: kotyara12/reAHT1x
Источники информации: Datasheet EN, Обзор от elchupanibrei

Погрешности измерения AHT10

Из недостатков в первую очередь стоит отметить отсутствие CRC (контрольной суммы) при передаче данных по шине. Из-за этого никак невозможно определить, правильные ли данные получены с датчика при помехах / проблемах на шине. В следствие чего показания температуры могут скакать аки тыгдымские кони – от +20 до -50 и до +150 за несколько соседних измерений. Можно только ориентироваться на последнее “правильное” значение – если новое значение отклоняется от последнего больше чем на 5 градусов, считаем его “плохим”. Но это далеко не оптимальный метод.

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

Как я уже отметил выше, сенсор AHT10 поддерживает два адреса и можно подключить сразу два сенсора на одну шину (для этого придется перепаять адресный резистор на одном из модулей). Но на практике оказывается, что такое включение работает крайне нестабильно – сенсоры могут несколько часов проработать совершенно нормально, а затем на несколько часов начать выдавать совершенно кошмарные данные (зимой на улице +49.55 °C например). Либо либо вообще перестают отвечать (оба или поодиночке). Еще было замечено, что на адресе 0x39 сенсор работает гораздо хуже, даже один или в паре с модулями других производителей. Производитель, очевидно, знает об этом, поэтому в новых модулях (AHT20, АНТ21 и т.д.) поддержку второго адреса вообще убрали.

AHT10 обладают невысокой “повторяемостью” выходных данных. Данные о температуре у меня совпадают на нескольких разных датчиках, раcположенных в одной и той же точке, но купленных в разное время. А вот показания о влажности при этом могут значительно различаться – аж до 15%. Приходится корректировать данные по более точным сенсорам, например SHT31. Длительное воздействие на сенсор в течение 60 часов при влажности > 80% может привести к временному дрейфу относительной влажности на +3%RH. Датчик медленно вернется к паспортной точности ±2%RH при нормальных условиях эксплуатации. Рекомендуемая частота опроса не менее 8 секунд (а ещё лучше до 30 секунд), так как датчик склонен к саморазогреву при выполнении измерений. Кроме того, следует учитывать, что этот сенсор имеет некоторую инерционность по сравнению с STU21D / Si7021, то есть гораздо медленнее реагирует на быстрые изменения влажности и температуры. Это может быть и хорошо (своеобразный встроенный фильтр от резких “скачков”), и плохо – когда требуется быстрая реакция на изменения. Вывод: “дешево и сердито”. Можно брать в условиях ограниченного бюджета, но не без недостатков. Когда требуется точность – лучше рассмотреть другие варианты.

На AliExpress датчик в основном продается уже распаянным на плате. На плате модуля установлен стабилизатор напряжения питания и конвертер уровней для шины I2C, поэтому модуль можно смело подключать как к 5-, так и к 3,3-х вольтовой логике. Но нагрев стабилизатора при работе может вносить дополнительную погрешность при измерении температуры.


AHT15

AHT15Средняя модель в I2C линейке сенсоров от ASAIR / AOSONG для измерения температуры и влажности. Он имеет те же самые характеристики, что и AHT10, но значительно отличается устройством корпуса. Во-первых, датчик поставляется на заводской плате с разъемом, которая призвана уменьшить паразитный нагрев сенсоров от близкорасположенных элементов. Во-вторых AHT15 имеет защитную водонепроницаемую и пыленепроницаемую мембрану из ПТФЭ, которая не влияет на время отклика при измерении относительной влажности. Это позволяет использовать датчик в суровых условиях окружающей среды (например, к контакте с брызгами воды и сильное запыленность), обеспечивая при этом максимальную точность, что делает AHT15 лучшим выбором в самых сложных условиях эксплуатации.

Производитель: ASAIR (он же AOSONG)
Интерфейс: I2C, адрес на шине: 0x38
Напряжение питания: от +1.8 до +3.6 В
Потребляемый ток: от ~0.25 µA в режиме ожидания до 23 µA в режиме измерения
Диапазон измерения температуры: от -40 до +85 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность): ±0.3°C (max ~ ±0.8°C)
Диапазон измерения влажности: от 0 до 100% RH (рекомендуемый диапазон от 0 до 80% RH)
Шаг измерения влажности (разрешение): 0.024% RH
Погрешность измерения влажности (точность): ±2.0% RH (max ±3.0% RH)
Возможность измерения давления: отсутствует
Особенности: защитный фильтр от пыли и капель
Библиотека для Arduino: enjoyneering AHTxx Library
Библиотека для ESP32 + ESP-IDF: kotyara12/reAHT1x
Источники информации: Datasheet EN, Обзор от elchupanibrei

Погрешности измерения AHT15

Длительное воздействие на сенсор в течение 60 часов при влажности > 80% может привести к временному дрейфу относительной влажности на +3%. Датчик медленно вернется к паспортной точности ± 2 при нормальных условиях эксплуатации. Рекомендуемая частота опроса не менее 8 секунд (а ещё лучше до 30 секунд), так как датчик склонен к саморазогреву при выполнении измерений.

Плата с датчиком AHT15 не имеет встроенного стабилизатора, поэтому датчик напрямую можно подключать только к 3.3-вольтовым контроллерам. К недостаткам датчика можно отнести высокую цену – стоит он почти в два раза дороже AHT10. На AliExpress встречается только в оригинальном исполнении, минишилдов мной не найдено.


AHT20

AHT20Старшая модель в I2C линейке сенсоров от ASAIR / AOSONG для измерения температуры и влажности. По точности показаний AHT20 не намного лучше AHT10. Из отличий поддержка CRC8 при передаче данных, более широкий диапазон питающих напряжений (без стабилизатора) и немного худшая погрешность измерения температуры на краях диапазона. Даташит можно скачать на домашней странице продукта, ссылка есть ниже. Это не “последняя” версия, сейчас можно найти уже и AHT21 и даже AHT25. Так как по цене он сейчас не отличается от AHT10, то и смысла заказывать AHT10 более нет.

Производитель: ASAIR (он же AOSONG)
Интерфейс: I2C, адрес на шине: 0x38
Напряжение питания: от +2.0 до +5.5 В
Потребляемый ток: от ~0.25 µA в режиме ожидания до 320 µA в режиме измерения
Диапазон измерения температуры: от -40 до +85 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность): ±0.3°C (max ~ ±1.0°C)
Диапазон измерения влажности: от 0 до 100% RH (рекомендуемый диапазон от 0 до 80% RH)
Шаг измерения влажности (разрешение): 0.024% RH
Погрешность измерения влажности (точность): ±2.0% RH (max ±3.0% RH)
Возможность измерения давления: отсутствует
Библиотека для Arduino: enjoyneering AHTxx Library
Библиотека для ESP32 + ESP-IDF: kotyara12/reAHT1x
Источники информации: Homepage EN, Обзор от elchupanibrei

Погрешности измерения AHT20

Длительное воздействие на сенсор в течение 60 часов при влажности > 80% может привести к временному дрейфу относительной влажности на +3%. Датчик медленно вернется к паспортной точности ± 2 при нормальных условиях эксплуатации. Рекомендуемая частота опроса не менее 5 секунд (а ещё лучше до 30 секунд), так как датчик склонен к саморазогреву при выполнении измерений.

На AliExpress этот датчик можно найти не только в гордом одиночестве, но и в паре с BMP280, что позволяет компенсировать отсутствие у BMP280 гигрометра (так как без гигрометра он мало кому нужен):

Сенсор AHT20 + BMP280


AHT21

AHT20Полностью кремниевая модель в I2C линейке сенсоров от ASAIR / AOSONG для измерения температуры и влажности со встроенным в чип стабилизатором. Поэтому на шилдах с этим сенсором стабилизатор не требуется. Но китайцы умудряются паять этот чип на плату от AHT10/20, получая двойную стабилизацию (впрочем – в этом есть некий смысл – меньше нагрев внутреннего стабилизатора чипа, меньше смещение температуры. Потребление тока достигает почти 1 мА в момент изменения, что в несколько раз выше, чем у предыдущих датчиков. Как и в случае с AHT20, этот сенсор умеет в CRC.

 

Производитель: ASAIR (он же AOSONG)
Интерфейс: I2C, адрес на шине: 0x38
Напряжение питания: от +2.0 до +5.5 В
Потребляемый ток: от ~0.25 µA в режиме ожидания до 980 µA в режиме измерения
Диапазон измерения температуры: от -40 до +120 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность): ±0.3°C (max ~ ±2.0°C)
Диапазон измерения влажности: от 0 до 100% RH (рекомендуемый диапазон от 0 до 80% RH)
Шаг измерения влажности (разрешение): 0.024% RH
Погрешность измерения влажности (точность): ±2% RH при 25℃ (max ±3.5% RH)
Возможность измерения давления: отсутствует
Библиотека для Arduino: enjoyneering AHTxx Library
Библиотека для ESP32 + ESP-IDF: kotyara12/reAHT1x
Источники информации: Datasheet EN

Погрешности измерения AHT21

Длительное воздействие на сенсор в течение 60 часов при влажности > 80% может привести к временному дрейфу относительной влажности на +3%. Датчик медленно вернется к паспортной точности ± 2%RH при нормальных условиях эксплуатации. 

Судя по отзывам, этот датчик вышел не очень удачным. Во первых встроенный стабилизатор много кушает и греет кристалл, что приводит к дрейфу показаний температуры. Во вторых, судя по тестам, AHT21 склонен занижать данные относительной влажности примерно на 10% RH. Сенсор достаточно быстро нагревается при повышении температуры (например при касании руками), а вот остывает гораздо медленнее.

 


Линейка сенсоров от Bosch Sensortec

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

Если говорить строго, сенсоры от Bosch – это не про температуру и влажность. Это про давление. В первую очередь эти сенсоры предназначены для изменения давления воздуха, и, как следствие, высоты над уровнем моря. И только во вторую очередь – всё остальное. Сенсор температуры нужен самому датчику для внутренних расчётов (давление зависит в том числе и от температуры воздуха), поэтому он так же присутствует во всех моделях сенсоров от Bosch. Ну а сенсоры для изменения относительной влажности воздуха и IAQ добавили “сбоку-припеку” постольку-поскольку они очень популярны в настоящее время.

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

В-третьих в этих сенсорах есть встроенные функции для повышения точности изменения:

  • Oversampling – когда для выдачи результатов требуется от 1 до 16 предыдущих изменений (по сути это фильтр “по среднему значению”)
  • Медианный фильтр, с помощью которого можно “гасить” резкие выпады значений, которые часто могут быть ошибочными.

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

Питание и интерфейсы подключения

Собственно сам датчик очень небольшого размера. В устройствах на Arduino почти всегда используется датчики, уже припаянные на платы (шилды), так их гораздо проще использовать.

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

На плате также распаяны резисторы подтяжки линий SDA и SCL. Если Вы хотите использовать на шине I2C несколько датчиков одновременно (даже разных производителей), то эти резисторы можно выпаять. И чем больше датчиков Вы будете подключать, тем желательнее это сделать. 

На некоторых платах дополнительно установлен стабилизатор 3.3 В для возможности подключения датчика к Arduino, которые имеют напряжение питания 5.0 В. Если же Вы планируете использовать данный датчик с ESP8266 или ESP32, то Вам следует использовать версию без стабилизатора. Или используйте схемы согласования уровней по схемам ниже:

Подключение сенсоров на 3,3В к пяти-вольтовым платам Arduino

Подключение сенсоров на 5В к трех-вольтовым платам ESP8266 и ESP32

Почти все современные сенсоры Bosch имеют два интерфейса: SPI и I2C. Но SPI доступен только на трехвольтовых платах. Адрес на шине I2C: 0x76 или 0x77 (изменить можно с помощью перемычки на некоторых шилдах).

При измерении давления всегда берите во внимание высоту установки сенсора.

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

График изменения давления не линеен, но для небольших высот можно приблизительно считать, что каждые 12 м подъёма уменьшают атмосферное давление на 1 мм рт. ст. без учета температуры. То есть на 1 метр высоты разница составит около 0,083333333 мм рт.ст.

Теперь открываем карту высот, сравниваем и пересчитываем. Оказывается, что сенсоры очень даже точные. Но как только вы подняли устройство с первого этажа на пятый, и всё – показания заметно изменились. На этом же принципе основано измерение высоты прибора.

Поэтому не стоит доверять показаниям метеостанций, установленных на верхних этажах высотных зданий. Весьма наглядно это можно увидеть на карте Народного мониторинга.


BMP180

BMP180BMP180 – дешёвый сенсор от Bosch Sensortec. Этот датчик позволяет измерить атмосферное давление и температуру окружающей среды. Используют данный датчик для определения высоты (чем выше, тем меньше давление), а так же в самодельных метеостанциях. Собственно датчик (металлический прямоугольный модуль с отверстием) включает в себя: пьезо-резистивный датчик (для определения атмосферного давления), термодатчик (для определения температуры), АЦП (аналого-цифровой преобразователь), EEPROM (энергонезависимая электрически стираемая перепрограммируемая память), RAM (энергозависимая память, другими словами ОЗУ), микроконтроллер. Не допускайте попадания на датчик влаги и прямых солнечных лучей.

Производитель: Bosch Sensortec
Интерфейс: I2C, адрес на шине: 0x77
Напряжение питания: без стабилизатора от +1.8 В до 3.6 В, со стабилизатором от +3.3 до +5.5 В
Потребляемый ток: от ~0.1 µA в режиме ожидания до 32 µA в режиме измерения, в пике может достигать 1 mA
Диапазон измерения температуры: от -40 до +85 °C
Шаг измерения температуры (разрешение): 0.1°C
Погрешность измерения температуры (точность):
– при 25°C: ±0.5°C (max ±1.5°C)
– от 0 до +65°C: ±1.0°C (max ±2.0°C)
Возможность измерения влажности: отсутствует
Диапазон измерения давления: от 300 до 1100 hPa (+9000…-500 метров относительно уровня моря)
Шаг измерения давления (разрешение): 0.01 hPa
Погрешность измерения давления (точность):
– от 0 до +65°C: ±1.0 hPa (max -4.0 hPa/+2.0 hPa)
– от -20 до 0°C: ±1.0 hPa (max -6.0 hPa/+4.5 hPa)
Библиотека для Arduino: BMP180 Breakout Arduino Library
Источники информации: Datasheet EN, Datasheet RU, Обзор и подключение к Arduino

Собственно сам датчик очень небольшого размера. В устройствах на Arduino почти всегда используется датчики, уже припаянные на платы (шилды), так их гораздо проще использовать. Как правило, на плате дополнительно распаян стабилизатор с 5.5 В до 3.3В, так как почти у всех плат Arduino напряжение питания составляет 5В. Но существует шилды, на которых есть отдельный вывод 3.3В, такие платы подойдут для ESPx. BMP180 без стабилизатора лично я не встречал, хотя они и могут существовать в природе.

Разновидности плат с BMP180

На плате также распаяны резисторы подтяжки линий SDA и SCL. Если Вы хотите использовать на шине I2C несколько датчиков одновременно (даже разных производителей), то эти резисторы можно выпаять. И чем больше датчиков Вы будете подключать, тем желательнее это сделать. Как это сделать, наглядно это продемонстрировано в статье: обзор и подключение к Arduino


BMP280

BMP280Модуль BMP280 был разработан фирмой Bosch Sensortec как более технологичная модель своего предшественника BMP180. Датчик представляет собой высокоточный цифровой измеритель атмосферного давления и температуры окружающей среды. Его малые размеры, низкое энергопотребление и высокая измерительная способность позволили завоевать популярность среди множества разработчиков Arduino-проектов. Данная модификация, в отличие от своего младшего брата, предоставляет пользователю 3 режима работы:

  • SLEEP – режим максимально пониженного энергопотребления;
  • NORMAL – в данном режиме модуль просыпается с определённой периодичностью, выполняет необходимые измерения и снова засыпает. Частота измерений задаётся программным путём, а результат считывается при необходимости;
  • FORCED – этот режим позволяет будить модуль подачей внешнего управляющего сигнала. После выполнения измерений, модуль автоматически переходит в режим пониженного энергопотребления.

Производитель: Bosch Sensortec
Интерфейс: SPI или I2C, адрес на шине: 0x76 или 0x77 (изменить можно с помощью перемычки на плате)
Напряжение питания: без стабилизатора от +1.71 В до 3.6 В, со стабилизатором от +3.3 до +5.5 В
Потребляемый ток: от ~0.1 µA в режиме ожидания до 720 µA в режиме измерения, в пике может достигать 1.12 mA
Диапазон измерения температуры: от -40 до +85 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность):
– при 25°C: ±0.5°C
– от 0 до +65°C: ±1.0°C
Возможность измерения влажности: отсутствует
Диапазон измерения давления: от 300 до 1100 hPa (+9000…-500 метров относительно уровня моря)
Шаг измерения давления (разрешение): 0.0016 hPa
Погрешность измерения давления (точность):
– от 0 до +65°C: ±1.0 hPa
– от -20 до 0°C: ±1.7 hPa
Особенности: автономная работа
Библиотека для Arduino: Adafruit BMP280 Library
Библиотека для ESP32 + ESP-IDF: kotyara12/reBMP280
Источники информации: Datasheet EN, Обзор и подключение к Arduino

По некоторым отзывам, при частом измерении возможен небольшой внутренний нагрев сенсора на 1-2 градуса. Лияно я пока подтвердить это не могу. Датчик имеет режим периодического автоматического изменения с заданным интервалом (в этом случае по запросу MCU сразу же выдаются последние измеренные данные), при этом саморазогрева я не заметил. Датчик поддерживает встроенную фильтрацию и усреднение измеренных данных (x0, x2, x4…x16).

Собственно сам датчик очень небольшого размера. В устройствах на Arduino почти всегда используется датчики, уже припаянные на платы (шилды), так их гораздо проще использовать. На некоторых платах дополнительно установлен стабилизатор 3.3 В для возможности подключения датчика к Arduino, которые имеют напряжение питания 5.0 В. Если же Вы планируете использовать данный датчик с ESP8266 или ESP32, то Вам следует использовать версию без стабилизатора. Интерфейс SPI доступен только на плате 3.3В. На плате также распаяны резисторы подтяжки линий SDA и SCL. Если Вы хотите использовать на шине I2C несколько датчиков одновременно (даже разных производителей), то эти резисторы можно выпаять. И чем больше датчиков Вы будете подключать, тем желательнее это сделать. Как это сделать, наглядно это продемонстрировано в статье: обзор и подключение к Arduino

Разновидности плат с BMP280

Не допускайте попадания на датчик влаги и прямых солнечных лучей.


BME280

BMP280Модуль BME280 предназначен для измерения атмосферного давления, температуры и влажности. Это очередной датчик давления фирмы Bosch Sensortec для измерения атмосферного давления и температуры. По сравнению с первыми датчиками серии (BMP085 и BMP180) он имеет лучшие характеристики и меньшие размеры. Отличие от датчика BMP280 – наличие гигрометра, что позволяет измерять относительную влажность воздуха и создать на его основе маленькую метеостанцию. Увы, но и стоит он заметно дороже BMP280. Этот датчик (так же как и BMP280) имеет 3 режима работы:

  • SLEEP – режим максимально пониженного энергопотребления, измерение не производится;
  • NORMAL – в данном режиме модуль просыпается с определённой периодичностью, выполняет необходимые измерения и снова засыпает. Частота измерений задаётся программным путём, а результат считывается при необходимости;
  • FORCED – этот режим позволяет будить модуль подачей внешнего управляющего сигнала. После выполнения измерений, модуль автоматически переходит в режим пониженного энергопотребления.

Производитель: Bosch Sensortec
Интерфейс: SPI или I2C, адрес на шине: 0x76 или 0x77 (изменить можно с помощью перемычки на плате)
Напряжение питания: без стабилизатора от +1.71 В до 3.6 В, со стабилизатором от +3.3 до +5.5 В
Потребляемый ток: от ~0.1 µA в режиме ожидания до 714 µA в режиме измерения
Диапазон измерения температуры: от -40 до +85 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность):
– при 25°C: ±0.5°C
– от 0 до +65°C: ±1.0°C
– от -20 до +0°C: ±1.25°C
– от -40 до -20°C: ±1.5°C
Диапазон измерения влажности: от 0 до 100% RH
Шаг измерения влажности (разрешение): 0.008% RH
Погрешность измерения влажности (точность): ±3.0% RH
Рабочий диапазон измерения влажности: смотри график ниже
Диапазон измерения давления: от 300 до 1100 hPa (+9000…-500 метров относительно уровня моря)
Шаг измерения давления (разрешение): 0.0016 hPa
Погрешность измерения давления (точность):
– от 0 до +65°C: ±1.0 hPa
– от -20 до 0°C: ±1.7 hPa
Особенности: автономная работа
Библиотека для Arduino: Adafruit BME280 Library
Библиотека для ESP32 + ESP-IDF: kotyara12/reBME280
Источники информации: Datasheet EN, Обзор и подключение к Arduino

Рабочий диапазон измерения влажности

Этот датчик стабильно проработал около 3 лет подряд в уличной метеостанции, после чего вышел из строя. Длина провода для шины I2C при этом составляла около 3 метров. В данном конкретном случае использован стандартный 4-х жильный плоский кабель, который обычно применяется для подключения стационарных телефонных аппаратов к телефонной сети. По моим наблюдениям за несколькими BME280 эти датчики немного завышают показания температуры и немного занижают показания влажности (по сравнению с Si7021 / SHT31). Но на улице гигрометр может замерзать и показывать максимальную влажность. Давление в целом соответствует данным нашей городской метеостанции, так что ему вполне можно доверять.

Некоторые ушлые продаваны на AliExpress пытаются продать более дешевые BMP280 по цене BME280. Распознать их достаточно просто по форме корпуса датчика – у BMP280 она более вытянутая (прямоугольная), а у BME280 – квадратная. Наглядно это продемонстрировано на рисунке:

Разновидности плат с BMЕ280

Не допускайте попадания на датчик влаги и прямых солнечных лучей.


BME680

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

Производитель: Bosch Sensortec
Интерфейс: SPI или I2C, адрес на шине: 0x76 или 0x77
Напряжение питания: без стабилизатора от +1.71 В до 3.6 В, со стабилизатором от +3.3 до +5.5 В
Потребляемый ток: от ~0.15 µA в режиме ожидания до 714 µA в режиме измерения
Диапазон измерения температуры: от -40 до +85 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность):
– при 25°C: ±0.5°C
– от 0 до +65°C: ±1.0°C
Диапазон измерения влажности: от 0 до 100% RH
Шаг измерения влажности (разрешение): 0.008% RH
Погрешность измерения влажности (точность): ±3.0% RH
Рабочий диапазон измерения влажности: смотри график ниже
Диапазон измерения давления: от 300 до 1100 hPa (+9000…-500 метров относительно уровня моря)
Шаг измерения давления (разрешение): 0.0018 hPa
Погрешность измерения давления (точность): абсолютная ±0.6 hPa, относительная ±0.12 hPa
Особенности: сенсор качества воздуха
Библиотека для Arduino: Adafruit BME680 Library
Библиотека для ESP32 + ESP-IDF: kotyara12/reBME680
Источники информации: Datasheet EN, Обзор

Датчик качества воздуха – главная «изюминка» в рассматриваемом датчике. BME680 имеет встроенный металло-оксидный датчик (Metal Oxide Semiconductor) органических летучих соединений (ЛОС). Это датчик резистивного типа, сопротивление поверхности которого зависит от содержания в воздухе ЛОС (этанол, ацетон, изопрен, угарный газ, продукты дыхания и т.д). Недостаток таких сенсоров заключается в необходимости дополнительного разогрева чувствительного элемента с помощью специального нагревателя, температура которого достигает нескольких сотен градусов. В частности в BME680 она составляет около 320 °С. Сопротивление датчика измеряется, оцифровывается 20-битным АЦП и фильтруется. Затем датчик преобразуют исходные данные в форму, удобную для дальнейшей обработки, а конкретно в баллы качества воздуха IAQ (Indoor air quality) BME680 работает с диапазоном IAQ 0…500 с разрешением 1. По предложенной таблице можно легко принять решение о необходимости проветривания, если речь идет о системе вентиляции, или просто предупредить пользователя, если микросхема BME680 установлена в умных часах.

Уровни качества воздуха

На самом деле с IAQ “гладко было на бумаге, да забыли про овраги”. API предоставляет нам только “сырое” значение качества воздуха – сопротивление резистора, который его (качества воздуха) собственно и измеряет. Алгоритм пересчета в сопротивление Bosch не предоставляет, а требует подключения к проекту закрытых скомпилированных файлов, что не всегда возможно. Для корректной работы может потребоваться подбор температуры и времени подогрева сенсора качества воздуха. Кроме того, следует учитывать что сенсор качества воздуха выдает нормальные показания только спустя примерно сутки непрерывной работы.

Подробнее про то, как я боролся с этим датчиком и BSEC2

Как вывод: если вам действительно необходимо изменение ЛОС в воздухе – купите лучше датчик CCS811, в нем микропрограмма для всех необходимых расчетов уже встроена в чип, и работать с ним проще и удобнее.

 


HDC1080

HDC1080Сенсор для измерения температуры и влажности от Texas Instruments. Данный датчик обладает не слишком высоким разрешением, зато может похвастаться низким энергопотреблением – в режиме измерения температуры и влажности потребляемый ток не превышает 1.3 µA, что делает его незаменимым для устройств сбора данных, работающих от батарей и аккумуляторов. А напряжение питания от 2.7 В до 5.5 В позволяет подключать датчик напрямую к большинству микроконтроллеров без использования стабилизаторов и преобразователей уровней. На плате с датчиком имеются перемычки, с помощью которых можно отключить резисторы подтяжки линий SCL и SDA при необходимости, что очень удобно при параллельном подключении нескольких датчиков. Погрешность измерений вполне соответствует современным требованиям.

Производитель: Texas Instruments
Интерфейс: I2C, адрес на шине: 0x40
Напряжение питания: от +2.0 до +5.5 В
Потребляемый ток: от ~0.1 µA в режиме ожидания до 1.3 µA в режиме измерения
Диапазон измерения температуры: от -40 до +125 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность): ±0.2°C (max ±0.5°C)
Диапазон измерения влажности: от 0 до 100% RH
Рабочий диапазон температур для сенсора влажности: от -20 до +85 °C
Шаг измерения влажности (разрешение): 0.04% RH
Погрешность измерения влажности (точность): ±2.0% RH (max ±4.0% RH)
Возможность измерения давления: отсутствует
Особенности: нагреватель
Библиотека для Arduino: HDC1080 Library, ClosedCube HDC1080 Arduino
Источники информации: Datasheet EN

Погрешности измерения HDC1080

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

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

 


HDC2080

HDC2080HDC2080 – это еще один датчик влажности и температуры от Texas Instruments, который обеспечивает высокоточные измерения с очень низким энергопотреблением в небольшом корпусе. По сравнению с предшественником, точность измерения осталась практически неизменной, но зато он обладает еще более низким энергопотреблением, что делает его идеальным для систем с батарейным питанием. Он так же, как и HDC1080, содержит встроенный нагревательный элемент для испарения конденсата и влаги, что позволяет использовать его в помещениях с повышенной влажностью. Но самое вкусное в этой модели не это, а встроенные функции для автоматического измерения без необходимости включения микроконтроллера на постоянный мониторинг и программируемые пороги прерывания для выдачи предупреждений и пробуждения микроконтроллера из глубокого сна.

Производитель: Texas Instruments
Интерфейс: I2C, адрес на шине: 0x40 или 0x41 (переключение с помощью вывода ADR)
Напряжение питания: от +1.62 до +3.6 В
Потребляемый ток: от 0.05 µA в режиме ожидания до 0.55 µA в режиме измерения (1 раз в секунду) или 0.105 µA (1 раз в 10 секунд)
Диапазон измерения температуры: от -40 до +125 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность): ±0.2°C (max ±0.4°C)
Диапазон измерения влажности: от 0 до 100% RH
Рабочий диапазон температур для сенсора влажности: от -40 до +85 °C
Шаг измерения влажности (разрешение): 0.04% RH
Погрешность измерения влажности (точность): ±2.0% RH (max ±3.0% RH)
Возможность измерения давления: отсутствует
Особенности: нагреватель, автономная работа, прерывания при выходе за указанные границы
Библиотека для Arduino: HDC2080 Breakout, HDC2080 Lime-labs
Источники информации: Homepage EN, Datasheet EN

Погрешности измерения HDC2080

На плате HDC2080 нет стабилизатора, поэтому использовать с пятивольтовыми платами Arduino запросто не получится. Да это и не имеет особого смысла – не для этого сегмента он предназначен. Его целевая ниша – экономичные автономные устройства с питанием от батарей. Если Вы все-таки решитесь подключить его к Arduino Uno, то придется приколхозить еще и преобразователи уровней – максимальное напряжение на SCL / SDA не должно превышать 3.9 В.

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

Этот датчик имеет вывод для изменения адреса на шине, что позволяет к одному контроллеру подключить параллельно два датчика. А вот резисторы подтяжки SCL /SDA отключить уже не получится (только выпаять полностью), видимо производитель (справедливо) решил, что другие датчики на шину подключаться не будут.

HDC2080 включает в себя встроенный нагревательный элемент, который можно включить на короткое время, чтобы предотвратить или удалить конденсат, который может накапливаться в среде с высокой влажностью. Для этого используются функции enableHeater() и disableHeater(). Это особенно актуально, если Вы собираетесь постоянно использовать датчик в помещениях с повышенной влажностью (банях, теплицах, погребах, подвалах и т.д.). Кроме того, нагреватель можно использовать для функциональной проверки встроенного датчика температуры. Рабочий диапазон нагревателя должен быть ограничен от –40 °C до 85 °C. При работе 3.3 В нагреватель будет потреблять ток 90 мА, а при работе 1.8 В – 55 мА. Измерения при этом, разумеется, придется на время приостановить.

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


HTU20D

HTU20DМладшая модель в линейке сенсоров от Measurement Specialties. В дикой природе (читай – AliExpress) практически не встречается, ибо смысла его продавать особого нет – стоит он ровно столько же, как и HTU21D. Плата с припаянным датчиком отличается от HTU21D более желтым цветом. Стабилизатора для питания от 5В и согласования уровней нет, только отключаемые резисторы подтяжки и конденсатор. Модификация с буковкой F на конце имеет PTFE-мембрану (фильтр) для защиты от пыли и капель воды.

Производитель: Measurement Specialties, Inc – MEAS France
Интерфейс: I2C, адрес на шине: 0x40
Напряжение питания: от +1.5 до +3.6 В
Потребляемый ток: от ~0.02 µA в режиме ожидания до 500 µA в режиме измерения
Диапазон измерения температуры: от -40 до +125 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность): ±0.3°C (max ~ ±0.8°C)
Диапазон измерения влажности: от 0 до 100% RH
Шаг измерения влажности (разрешение): 0.04% RH
Погрешность измерения влажности (точность): ±3.0% RH (max ±5.0% RH)
Возможность измерения давления: отсутствует
Особенности: встроенный нагреватель 1.5°C
Библиотека для Arduino: HTU20D
Библиотека для ESP32 + ESP-IDF: kotyara12/reHTU2x
Источники информации: Datasheet EN

Погрешности измерения HTU20D

Производитель обещает измерение влажности в диапазоне температур от -40 до +85 °C, а с некоторыми ограничениями и до +125 °C. В спецификации указано, что оптимальные условия измерения – от 5% до 95%RH, но измерения возможны от 0% до 100%, включая конденсацию капель воды. Для удаления конденсата в датчике предусмотрен нагреватель, который потребляет около 5,5 мВт и обеспечивает повышение температуры примерно на 0,5–1,5 °C.

При влажности более 90% выдает завышенные показания и упирается в постоянное значение 100%, которое не соответствует реальности. При длительной работе при повышенной влажности, умирает.

Из личного опыта могу заметить, что мой экземпляр HTU20 сильно занижал показания влажности. Например, все остальные датчики выдавали значение влажности около 25%, HTU20 при этом показывал 16%. Не могу с уверенностью сказать, что так работают все HTU20, но факт остается фактом. Сравнить мне не с чем – после первого неудачного опыта покупать я его больше не намерен. HTU21 при этом возвращает корректное значение. Вообще, насколько я понимаю производственные процессы, “младшие” модели – это своего рода “выбраковка”. То есть те чипы, которые попадают в заданные критерии точности, маркируются как HTU21. Те, что никуда не годятся – как HTU20. Ну а лучшие экземпляры можно промаркировать как HTU25 и продать подороже (прим. автора)

Рабочая область сенсора влажности HTU20D

Адрес на шине I2C совпадает с адресом HDC1080 / HDC2080 / Si7021 / SHT2x, а это означает что совместно их использовать не получится (без дополнительной коммутации). На плате с датчиком имеются запаянные перемычки, с помощью которых можно отключить резисторы подтяжки линий SCL и SDA при необходимости, что очень удобно при параллельном подключении нескольких датчиков.


HTU21D

HTU21DСледующая модель в линейке сенсоров от Measurement Specialties. По диапазонам, точности и времени измерения эта модель не отличается от предыдущей модели HTU20D. В продаже можно найти две модификации платы HTU21D – 3.3 В (красная) и 5.0 В (синяя). На синей плате имеется стабилизатор и модуль согласования логических уровней. В сенсоре имеется встроенный 5mW для удаления росы или после длительного воздействия влажности больше 80%. Модификация с буковкой F на конце имеет PTFE-мембрану (фильтр) для защиты от пыли и капель воды.

Производитель: Measurement Specialties, Inc – MEAS France
Интерфейс: I2C, адрес на шине: 0x40
Напряжение питания: от +1.5 до +3.6 В (красная плата) / 5.5 В (синяя плата)
Потребляемый ток: от ~0.02 µA в режиме ожидания до 500 µA в режиме измерения
Диапазон измерения температуры: от -40 до +125 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность): ±0.3°C (max ~ ±0.8°C)
Диапазон измерения влажности: от 0 до 100% RH
Шаг измерения влажности (разрешение): 0.04% RH
Погрешность измерения влажности (точность): ±3.0% RH (max ±5.0% RH)
Возможность измерения давления: отсутствует
Особенности: встроенный нагреватель 1.5°C
Библиотека для Arduino: Adafruit HTU21D, HTU21D enjoyneering
Библиотека для ESP32 + ESP-IDF: kotyara12/reHTU2x
Источники информации: Datasheet EN, Обзор от elchupanibrei

Погрешности измерения HTU21D

Производитель обещает измерение влажности в диапазоне температур от -40 до +85 °C, а с некоторыми ограничениями и до +125 °C. В спецификации указано, что оптимальные условия измерения влажности – от 5% до 95%RH, но измерения возможны от 0% до 100%, включая конденсацию капель воды. Для удаления конденсата с поверхности датчика в нем имеется нагреватель 5mW, datasheet рекомендует использовать его для удаления росы или после длительного воздействия влажности больше 80%.

Рабочая область сенсора влажности HTU21D

Адрес на шине I2C совпадает с адресом HDC1080 / HDC2080 / Si7021 / SHT2x, а это означает что совместно их использовать не получится (без дополнительной коммутации). На красной плате с датчиком имеются запаянные перемычки, с помощью которых можно отключить резисторы подтяжки линий SCL и SDA при необходимости, что очень удобно при параллельном подключении нескольких датчиков. На синей плате имеется стабилизатор и преобразователь уровней, но стабилизатор слишком близко расположен к самому датчику (хотя и на противоположной стороне), из-за чего происходит смещение температуры до 1°C после часа работы.

Синяя ( 5 В ) и красная плата ( 3.3 В )

Не рекомендуется опрашивать датчик слишком часто из-за его нагрева и низкой скорости реакции на изменения влажности. Минимальный рекомендуемый интервал между измерениями 10..18 секунд.


Si7021

SI7021Si7021 это более продвинутый аналог SHT21 и HTU21D от компании Silicon Labs. Из заметных внешних отличий имеет защитную пластинку от пыли. Если сравнить его с датчиками хх21 других производителей, то окажется, что все они имеют идентичные габариты (3×3 мм), примерно аналогичные параметры по точности, и совместимы по системе команд и выводам корпуса, на AliExpress они продаются на одних и тех же платах. Соответственно, можно применять одну и ту же библиотеку для считывания данных с датчика. Однако Si70XX имеют больше возможностей, чем собратья от других производителей, поэтому система команд более широкая, это следует учитывать. Серия Si70xx имеет в своем составе еще два датчика: Si7013 и Si7020, но они не сильно распространены, поэтому здесь не рассматриваются. Легко можно найти как 3.3-вольтовые варианты, так и 5-вольтовые со стабилизатором и преобразователем уровней.

Производитель: Silicon Laboratories
Интерфейс: I2C, адрес на шине: 0x40
Напряжение питания: от +1.9 до +3.6 В (фиолетовая плата) / 5.5 В (синяя плата)
Потребляемый ток: от ~0.06 µA в режиме ожидания до 180 µA в режиме измерения
Диапазон измерения температуры: от -40 до +125 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность): ±0.3°C (max ±0.8°C)
Диапазон измерения влажности: от 0 до 100% RH
Шаг измерения влажности (разрешение): 0.025% RH
Погрешность измерения влажности (точность): ±2.0% RH (max ±3.0% RH)
Возможность измерения давления: отсутствует
Особенности: встроенный нагреватель 1.5°C
Библиотека для Arduino: Adafruit Si7021, HTU21D enjoyneering
Библиотека для ESP32 + ESP-IDF: kotyara12/reHTU2x
Источники информации: Datasheet EN, Обзор от elchupanibrei

Погрешности измерения Si7021

Как и ближайшие конкуренты, этот датчик так же способен к длительной работе в условиях повышенной влажности, включая конденсацию капель воды. Si7021 содержит встроенный резистивный нагревательный элемент, который можно использовать для повышения температуры датчика на 1.5°C. Этот элемент можно использовать для тестирования датчика, для предотвращения конденсации или для измерения точки росы, когда Si7021 используется вместе с отдельным датчиком температуры. Ток нагревательного элемента можно регулировать от ~3 до ~95 mA, соответственно будет изменяться и рассеиваемая нагревателем мощность.

В отличии от собратьев (HTU21D / SHT2x) Si70XX измеряет температуру и влажность одновременно. То есть измерения происходят гораздо быстрее и экономичнее. Вначале отсылаем команду на измерение влажности, а после необходимой паузы получаем измерянные влажность и температуру. Кроме того, сам по себе датчик Si7021 гораздо быстрее выполняет измерения, что может быть важно в некоторых применениях. Во вторых, датчик выдает уже термокомпенсированное значение влажности, а на HTU21D скомпенсированное значение придется считать отдельно. В третьих, Si70XX позволяет регулировать мощность нагревателя.

К сожалению, на AliExpress часто попадаются поддельные Si7021, мне попались именно такие. Распознать их можно по серийному номеру: у поддельных датчиков он всегда будет 0X15FFFFFF, при этом китаезы даже не потрудились посчитать для него корректную контрольную сумму. В целом такие датчики работают, и даже выдают более-менее достоверные данные, вот только временные задержки на измерения не соответствуют заявленным.

00:00:01 [W] SI7021 :: Read serial B CRC error: CRC8(0x15, 0xFF) != 0xB5 or CRC8(0xFF, 0xFF) != 0xCB!
00:00:01 [I] SI7021 :: Detected sensor Si7021 FAKE on bus 1 at address 0x40, serial number: 0x15ffffff
00:00:01 [I] SI7021 :: Resolution 0x00 installed
00:00:01 [I] SI7021 :: Heater is OFF
00:00:01 [I] SI7021 :: Sensor [SI7021] initialization completed successfully
00:00:01 [I] SI7021 :: Built-in heater power is set to 15

Адрес на шине I2C совпадает с адресом HDC1080 / HDC2080 / HTU21D / SHT2x, а это означает что совместно их использовать на Arduino без танцев с бубном не получится. На ESP32 + ESP-IDF это возможно, так как ESP32 имеет две шины I2C. На фиолетовой плате с датчиком имеются запаянные перемычки, с помощью которых можно отключить резисторы подтяжки линий SCL и SDA при необходимости, что очень удобно при параллельном подключении нескольких датчиков. На синей плате (CY-21) имеется стабилизатор и преобразователь уровней.

Платы 5 В и 3.3 В

Не рекомендуется опрашивать датчик слишком часто из-за его нагрева и низкой скорости реакции на изменения влажности. Минимальный рекомендуемый интервал между измерениями 10..18 секунд.

 


SHT20

SHT20SHT20 – это младшая модель в серии датчиков SHT2x от Sensirion. Серия SHT2x состоит из недорогой версии с датчиком влажности SHT20, стандартной версии с датчиком влажности SHT21 и высококачественной версии с датчиком влажности SHT25. Серия датчиков влажности SHT2x содержит датчик влажности емкостного типа и датчик температуры с запрещенной зоной. Рассматриваемый сенсор можно найти как в виде микросхемы, распаянной на плате (как в случае с Si7021 / HDC1080 / HTU21D) с напряжением питания до 3.6 В, так и в виде микромодуля в пластиковом корпусе (чем-то похож на DHT22) с напряжением питания до 5.5 В.

Производитель: Sensirion
Интерфейс: I2C, адрес на шине: 0x40
Напряжение питания: от +2.1 до +3.6 В (фиолетовая плата) / 5.5 В (белый / черный модуль)
Потребляемый ток: от ~0.15 µA в режиме ожидания до 300 µA в режиме измерения
Диапазон измерения температуры: от -40 до +125 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность): ±0.5°C (max ±2.5°C)
Диапазон измерения влажности: от 0 до 100% RH
Шаг измерения влажности (разрешение): 0.04% RH
Погрешность измерения влажности (точность): ±3.0% RH (max ±5.0% RH)
Возможность измерения давления: отсутствует
Особенности: встроенный нагреватель 1.5°C
Библиотека для Arduino: DFRobot SHT20, uFire SHT20
Библиотека для ESP32 + ESP-IDF: kotyara12/reHTU2x
Источники информации: Datasheet EN

Погрешности измерения SHT20

Нормальный рабочий диапазон сенсора влажности: 0–80% относительной влажности, за пределами этого предела датчик может иметь обратимое смещение с медленной кинетикой (<3% относительной влажности через 200 часов при 90% относительной влажности). SHT20, так же как и конкуренты, содержит встроенный резистивный нагревательный элемент, который можно использовать для тестирования датчика (температура повышается на 1.5°C), для предотвращения конденсации или для измерения точки росы. Мощность нагревательного элемента не регулируется.

Рабочий диапазон измерения влажности SHT20

Адрес на шине I2C совпадает с адресом HDC1080 / HDC2080 / HTU21D / Si7021, а это означает что совместно их использовать без танцев с бубном не получится. На фиолетовой плате с датчиком имеются запаянные перемычки, с помощью которых можно отключить резисторы подтяжки линий SCL и SDA при необходимости, что очень удобно при параллельном подключении нескольких датчиков. В микромодуле имеется встроенный стабилизатор, поэтому его легко можно подключать к 5-вольтовым платам Arduino.

Датчик на плате ( 3.3 В ) и в виде модуля ( 5 В )

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

Можно также найти этот сенсор в промышленном исполнении с интерфейсом Modbus RS485, но стоит он заметно дороже:

Датчик с интерфейсом Modbus RS485

 


SHT21

SHT21SHT21 – это следующая модель в серии датчиков SHT2x от Sensirion. Серия SHT2x состоит из недорогой версии с датчиком влажности SHT20, стандартной версии с датчиком влажности SHT21 и высококачественной версии с датчиком влажности SHT25. Серия датчиков влажности SHT2x содержит датчик влажности емкостного типа и датчик температуры с запрещенной зоной. Как и в предыдущем случае, его легко можно найти в продаже как в 3.3-вольтовом исполнении, так и в пятивольтовом (ну разумеется я говорю о уже распаянных на платках датчиках). На мой взгляд, из серии SHT2x это оптимальный выбор – точность выше SHT20, а цена не намного больше.

Производитель: Sensirion
Интерфейс: I2C, адрес на шине: 0x40
Напряжение питания: от +2.1 до +3.6 В (фиолетовая плата) / 5.5 В (GY-21)
Потребляемый ток: от ~0.15 µA в режиме ожидания до 300 µA в режиме измерения
Диапазон измерения температуры: от -40 до +125 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность): ±0.3°C (max ±0.8°C)
Диапазон измерения влажности: от 0 до 100% RH
Шаг измерения влажности (разрешение): 0.04% RH
Погрешность измерения влажности (точность): ±2.0% RH (max ±3.0% RH)
Возможность измерения давления: отсутствует
Особенности: встроенный нагреватель 1.5°C
Библиотека для Arduino: SHT21 markbeee, SHT21 e-radionicacom
Библиотека для ESP32 + ESP-IDF: kotyara12/reHTU2x
Источники информации: Datasheet EN, Обзор от elchupanibrei

Погрешности измерения SHT21

Нормальный рабочий диапазон сенсора влажности: 0–80% относительной влажности, за пределами этого предела датчик может иметь обратимое смещение с медленной кинетикой (<3% относительной влажности через 200 часов при 90% относительной влажности). SHT21, так же как и конкуренты, содержит встроенный резистивный нагревательный элемент, который можно использовать для тестирования датчика, для предотвращения конденсации или для измерения точки росы. Мощность нагревательного элемента не регулируется.

Рабочий диапазон измерения влажности SHT21

Адрес на шине I2C совпадает с адресом HDC1080 / HDC2080 / HTU21D / Si7021, а это означает что совместно их использовать без танцев с бубном не получится. На фиолетовой плате с датчиком имеются запаянные перемычки, с помощью которых можно отключить резисторы подтяжки линий SCL и SDA при необходимости, что очень удобно при параллельном подключении нескольких датчиков. Фиолетовая плата отлично согласуется с ESP8266, ESP32 или другими 3.3 В микроконтроллерами. На GY-21 кроме собственно датчика смонтирован стабилизатор и преобразователи уровней, его удобнее использовать с Arduino.

Платы с SHT21

Не рекомендуется опрашивать датчик слишком часто из-за его нагрева и низкой скорости реакции на изменения влажности. Минимальный рекомендуемый интервал между измерениями 10..18 секунд.


SHT25

SHT25SHT25 – высококачественная модель в серии датчиков SHT2x от Sensirion. Серия SHT2x состоит из недорогой версии с датчиком влажности SHT20, стандартной версии с датчиком влажности SHT21 и высококачественной версии с датчиком влажности SHT25. Серия датчиков влажности SHT2x содержит датчик влажности емкостного типа и датчик температуры с запрещенной зоной. В дикой природе На AliExpress можно найти только в виде чипов по неадекватной цене, готовых модулей на момент написания статьи я не нашёл. Есть в продаже платы-подложки для распайки этих датчиков, но паять придется самому.

Производитель: Sensirion
Интерфейс: I2C, адрес на шине: 0x40
Напряжение питания: от +2.1 до +3.6 В
Потребляемый ток: от ~0.15 µA в режиме ожидания до 300 µA в режиме измерения
Диапазон измерения температуры: от -40 до +125 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность): ±0.2°C (max ±0.7°C)
Диапазон измерения влажности: от 0 до 100% RH
Шаг измерения влажности (разрешение): 0.04% RH
Погрешность измерения влажности (точность): ±1.8% RH (max ±3.0% RH)
Возможность измерения давления: отсутствует
Особенности: встроенный нагреватель 1.5°C
Библиотека для Arduino: SHT2x Arduino Library, SHT25 WickedDevice
Библиотека для ESP32 + ESP-IDF: kotyara12/reHTU2x
Источники информации: Datasheet EN

Погрешности измерения SHT25

Нормальный рабочий диапазон сенсора влажности: 0–80% относительной влажности, за пределами этого предела датчик может иметь обратимое смещение с медленной кинетикой (<3% относительной влажности через 200 часов при 90% относительной влажности). SHT25, так же как и конкуренты, содержит встроенный резистивный нагревательный элемент, который можно использовать для тестирования датчика, для предотвращения конденсации или для измерения точки росы.

Рабочий диапазон измерения влажности SHT25

Адрес на шине I2C совпадает с адресом HDC1080 / HDC2080 / HTU21D / Si7021, а это означает что совместно их использовать без танцев с бубном не получится. На AliExpress можно найти только в виде чипов по большой цене, готовых модулей на момент написания статьи я не нашёл. Но имеются в продаже пустые платы-подложки для распайки этих датчиков, паять модули придется самому, причем очень осторожно. Как вариант можно использовать готовую платку от любого SHTxx / HTUxx / HDCxx, аккуратно выпаяв более дешевый (ну или например поврежденный) чип, а затем аккуратно припаяв на нее новый. Пары спирта могут повредить датчик, поэтому следует использовать безспиртовые флюсы при пайке.


SHT30 / SHT31 / SHT35

SHT31SHT3x – это высокоточная и “продвинутая” серия датчиков SHT3x от Sensirion. Серия датчиков влажности SHT3x состоит из недорогой версии с датчиком SHT30, стандартной версии с датчиком SHT31 и высокопроизводительной версии с датчиком SHT35. В отличии от SHT2x и SHT4x, данная линейка сенсоров имеет более широкий диапазон питающих напряжений – от 2.15 до 5.5 В, поэтому не нуждается в дополнительном стабилизаторе для подключения к различным платам. Кроме этого, SHT3x предлагает ряд новых функций, таких как улучшенная обработка сигналов; два различных адреса I2C, выбираемых пользователем; режим оповещения с программируемыми пределами влажности и температуры; а также скорость передачи данных до 1 МГц.

Производитель: Sensirion
Интерфейс: I2C, адрес на шине: 0x44 или 0x45.
Напряжение питания: от +2.15 до +5.5 В
Потребляемый ток: от ~0.2 µA в режиме ожидания до 600~1500 µA в режиме измерения
Диапазон измерения температуры: от -40 до +125 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность) для SHT30: ±0.2°C (max ±0.6°C)
Погрешность измерения температуры (точность) для SHT31: ±0.2°C (max ±0.5°C)
Погрешность измерения температуры (точность) для SHT35: ±0.2°C (max ±0.4°C)
Диапазон измерения влажности: от 0 до 100% RH
Шаг измерения влажности (разрешение): 0.01% RH
Погрешность измерения влажности (точность) для SHT30: ±2.0% RH (max ±4.0% RH)
Погрешность измерения влажности (точность) для SHT31: ±2.0% RH
Погрешность измерения влажности (точность) для SHT35: ±1.5% RH (max ±2.0% RH)
Возможность измерения давления: отсутствует
Особенности: встроенный нагреватель 33mW
Библиотека для Arduino: SHT3x, ClosedCube SHT3xD
Библиотека для ESP32 + ESP-IDF: kotyara12/reSHT3x
Источники информации: Homepage EN, Datasheet EN, Небольшой обзор

Датчик показывает наилучшие характеристики при эксплуатации в рекомендованном диапазоне нормальной температуры и влажности от 5 до 60 °C и от 10% до 90% RH соответственно. Долгосрочное воздействие условий, выходящих за пределы нормы, особенно при высоких значениях влажности, может временно увеличивать погрешность измерения относительной влажности на +3% (например при воздействии относительной влажности >80% более 60 часов). После возвращения в нормальное состояние диапазон температуры и влажности, датчик сам медленно вернется в состояние калибровки. Длительное воздействие экстремальные условия могут ускорить старение.

Графики точности измерения температуры для различных моделей

Графики точности измерения влажности для различных моделей

Датчики оснащены небольшим внутренним нагревателем, который предназначен для проверки достоверности сенсора температуры и самопросушки сенсора влажности. Увеличение температуры, достигаемое нагревателем, зависит от различных параметров и лежит в диапазоне нескольких градусов по Цельсию. Его можно включать и выключать по команде. После сброса подогреватель отключается (состояние по умолчанию).

Наконец-то производитель изменил адрес датчика на шине, и теперь его можно комбинировать с другими аналогичными датчиками, например HTU или HDC. Если рассматривать платы только с этим датчиком “в одиночестве”, то можно найти как минимум три варианта: SHT3x-DIS без возможности изменения адреса (синяя), SHT3x с выводами ADDR (изменение адреса) и ALARM (сигнал появляется при выходе за настроенные диапазоны) (фиолетовая), и шилд для D1MINI как с возможностью изменения адреса, так и с возможностью отключения подтягивающих резисторов.

Разновидности плат с SHT3x

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


SHT40 / SHT41 / SHT 45

SHT4xSHT4x – это новая и во многом сильно упрощенная серия датчиков от Sensirion. Серия датчиков влажности SHT4x состоит из недорогой версии с датчиком SHT40, стандартной версии с датчиком SHT41, и высокоточной версии с датчиком SHT45. Кроме этого, в линейке имеется сертифицированная по стандарту ISO-17025 версия  SHT43, которая ничем особенным не выделяется (кроме собственно сертификации). В отличии от SHT3x, новая линейка сенсоров имеет меньшие габариты чипа, меньшее количество команд и отсутствие режима автономной работы. Кроме этого, на SHT4x теперь нет вывода выбора адреса на шине – его можно изменить только путем покупки чипа с другой маркировкой.

Производитель: Sensirion
Интерфейс: I2C, адрес на шине: 0x44 (для версии c маркировкой SHT4x-AD1B) или 0x45 (для маркировки SHT4x-BD1B).
Напряжение питания: от +1.08 до +3.6 В (до +5.5 В на шилдах со стабилизатором и схемой согласования уровней)
Потребляемый ток: от ~0.08 µA в режиме ожидания до 500 µA в режиме измерения
Диапазон измерения температуры: от -40 до +125 °C
Шаг измерения температуры (разрешение): 0.01°C
Погрешность измерения температуры (точность) для SHT40: ±0.2°C (max ±0.6°C )
Погрешность измерения температуры (точность) для SHT41: ±0.2°C (max ±0.5°C )
Погрешность измерения температуры (точность) для SHT45: ±0.1°C (max ±0.4°C )
Диапазон измерения влажности: от -6 до 110% RH
Шаг измерения влажности (разрешение): 0.01% RH
Погрешность измерения влажности (точность) для SHT40: ±1.8% RH (max ±3.0% RH)
Погрешность измерения влажности (точность) для SHT41: ±1.8% RH (max ±2.0% RH)
Погрешность измерения влажности (точность) для SHT45: ±1.0% RH (max ±1.8% RH)
Возможность измерения давления: отсутствует
Особенности: встроенный нагреватель 20 / 110 / 200 mW с таймером 1 с
Библиотека для Arduino: arduino_sht4x
Библиотека для ESP32 + ESP-IDF: kotyara12/reSHT4x
Источники информации: Homepage EN, Datasheet EN

Новая серия датчиков SHT4x от Sensirion, уже достаточно распространена на рынках дядюшки Ляо, и даже немного дешевле, чем SHT3x. Я так понимаю, что на производстве выпускается один и тот же датчик, а разделение на SHT40 / SHT41 / SHT45 происходит на этапе калибровки – самые точные датчики маркируют как SHT45, явные середнячки попадают в группу SHT41, ну а “третий сорт не брак” – SHT40.

Интересной особенностью данной серии является возможность выдавать расширенный диапазон значений относительной влажности: от  минус 6 до 110 % RH. Формула преобразования относительной влажности позволяет сообщать значения, выходящие за пределы диапазона 0~100 % RH. Значения относительной влажности менее 0 % и более 100 % являются нефизическими, однако эти «ненормальные» значения могут оказаться полезными в некоторых случаях (например, когда интерес представляет распределение датчиков на границах измерений). Для всех, кто не хочет заниматься оценкой этих неправильных величин, должен привести выходные данные к нормальному «физическому» диапазону 0~100 % RH.

Графики точности измерения температуры для различных моделей

Графики точности измерения влажности для различных моделей

Как и датчики предыдущей серии, рассматриваемая серия имеет встроенный нагреватель, причем более мощный, который можно задействовать с помощью определенного набора команд. При этом можно выбрать три мощности нагрева (20, 110 и 200 мВт) и две продолжительности нагрева (0,1 или 1с). То есть максимальное время непрерывной работы нагревателя ограничен 1 секундой, чтобы предотвратить перегрев датчика при непреднамеренном использовании нагревателя. Таким образом, у новой серии теперь нет специальной команды на выключение нагревателя. Возможные варианты использования обогревателя согласно документации производителя:
– Удаление конденсата/брызг воды на поверхности датчика. Хотя конденсат не является большой проблемой для надежности датчика, но, тем не менее, это делает датчик нечувствительным к изменениям относительной влажности воздуха, пока на поверхности присутствует жидкая вода.
– Уменьшение дрейфа в условиях повышенной влажности. Периодические импульсы нагрева позволяют проводить измерения при высокой влажности без дрейфа в течение длительного времени.
Как видим, производитель в данном случае явно указывает назначение встроенного нагревателя для удаления лишней влаги с поверхности сенсора.

Если сравнивать датчики новой серии SHT4x с предыдущей (SHT3x):

  • Габариты чипа сенсора уменьшены почти вдвое
  • Чуть-чуть увеличена точность измерений для “старших” моделей
  • Немного оптимизировано потребление энергии во время измерения
  • Значительно упрощен командный интерфейс
  • Увеличена мощность нагревателя, но время его активации ограничено 1 секундой по встроенному таймеру
  • Убрана возможность автономной работы с оповещением о выходе за заданные пределы по прерыванию
  • Чуть дешевле предыдущего (оно и понятно, функциональность беднее)

Так что, если вам нужна возможность автономной работы с оповещением микроконтроллера о выходе за заданные пределы по прерыванию – смотрите в сторону SHT30/31/35.

 


Сравнение датчиков

Делюсь опытом. Одно дело – копаться в даташитах, и совершенно другое – на деле сравнить датчики в деле. Конечно, сравнение датчиков делалось в сети не единожды (ниже в списке использованных источников Вы можете найти ссылки на подобные проекты), но мне хотелось сравнить датчики самому. Особенно меня интересует поведение датчиков в условиях экстремальной влажности (в частности в погребе, где температура около +5, а влажность >90% RH), но тестовые проект пока не позволяет этого сделать (но планирую). Проект собран на ESP32, написан полностью на ESP-IDF без использования Arduino, поэтому драйверы для датчиков пришлось написать самому, а заодно и разобраться в их возможностях и работе. Пока что не все драйверы написаны, поэтому и собирать вариант для улицы пока смысла нет. Если есть желание, можно посмотреть исходники на GitHub.

Конечно, следует учитывать и тот факт, что датчики могут различаться друг от друга в зависимости от партии и времени выпуска, поэтому приведенные данные не следует принимать как абсолютно точные.

Измерения внутри отапливаемого помещения

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

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

Изменение влажности в комнатных условиях

Как видим – DHT11 – это “нечто”. Мало того, что шаг измерения и точность никакая, так он еще и сильно занижает температуру, а влажность завышает. Показания скачут аки тыгыдымские кони. Годится только для экспериментов при освоении Arduino. Mw33 в этом плане выглядит немного лучше, особенно радуют данные для влажности, но все-таки он сильно занижает данные температуры. Остальные датчики идут довольно тесной группой, но все-таки можно заметить, что BME280 (как и BMP280) немного завышает данные температуры и занижает данные влажности – причем всегда, проверено на нескольких датчиках, купленных в разное время у разных продавцов. Можно смело скидывать примерно полградуса от его показаний. AM2302 наоборот, чуть занижает показания температуры. При измерении влажности AM2302 и AHT10 выдают примерно одинаковые данные, что не особо удивляет – ведь используется практически одна и та же технология изменения. Эксперимент показал, что применение достаточно дешевых AHT10 для изменения параметров климата внутри помещений вполне оправданно, и дает возможность использовать до 2-х датчиков на одной шине без применения мультиплексоров (или 4 датчика на ESP32).


Какой датчик выбрать для Вашего проекта?

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

Если требуется измерение только температуры (без учета влажности) – то смело можно брать DS18B20 и не задумываться о проблеме длинных проводов – этот датчик прекрасно работает на больших расстояниях при трехпроводном питании. При паразитном питании (2 провода) допустимая длина провода может быть ниже. Напомню еще раз, DS18B20 продается в вполне герметичной гильзе, что делает его прекрасным вариантом для различных “мокрых дел”. На мой взгляд этот датчик подходит для следующих проектов: измерения температуры теплоносителя на выходе из котла отопления, измерения температуры почвы в теплице, температуры воды в аквариуме, самогонного аппарата и т.д. и т.п. Ничто не мешает использовать его и для измерения температуры воздуха на улице или в помещении, но влажность измерять он “не могёт”. Если влажность не критичный параметр – смело используйте DS18B20. Как только требуется измерение влажности, начинаются проблемы. С проводами…

Если расстояние от MCU (микроконтроллера) до точки измерения невелико, то можно воспользоваться любым подходящим по цене и параметрам I2C датчиком. Предельная емкость шины I2C, равная 400 пФ, ограничивает практическое расстояние связи до нескольких метров. На практике лично у меня вполне стабильно работают датчики с кабелем 3 метра, но только если датчик на шине один (или они соединены “цепочкой”, если кабели датчиков соединены “веером” – помехи обеспечены). Следует учесть, что с увеличением длины провода количество “помех” на шине I2C резко возрастает, и датчики без передачи контрольной суммы (AHT10, например), могут выдавать неверные значения. В качестве альтернативы можно использовать специальные чипы – “удлинители” сигнала I2C, например P82B715, но и они не дают сильного эффекта. Цифровые сенсоры I2C (AHTxx, BM?x80, SHTxx, HTUxx и т.д.) прекрасно подойдут для домашней метеостанции, различных термостатов, управления отоплением и вентиляций, и прочими проектами управления климатом.

Если требуется высокая точность (особенно если предусмотрена работа на улице) и позволяет бюджет, рекомендую выбрать SHT31 – он обладает хорошими характеристиками и достаточной стабильностью. Кроме того, можно периодически “прогревать” датчик SHT31, чтобы избежать дрейфа показаний влажности. Но, ещё и ещё раз повторю – если длина провода относительно невелика.

Если требуется подключить датчик на более длинном проводе – то тут, увы, альтернативы DHTxx/AM2302 я особо не вижу (кроме RS485), при всех их недостатках (относительно невысокая точность, периодические зависания и быстрый выход емкостного сенсора при высокой влажности). Более-менее стабильно они способны работать на кабеле до 20м. На длинном кабеле (>10м) китайцы рекомендуют снизить резистор подтяжки до 1kOm. Как я не “крутился с I2С” в погребе, провод в 15 метров до MCU до сенсора не оставил мне выбора. Можно, конечно, запихнуть MCU непосредственно в погреб, подвести к нему питание, и подключить любой удобный сенсор, но WiFi там ловит “никак”, да и “городить огород” ради одного сенсора желание не возникает). Но это тогда проще купить RS485 версию и адаптер RS485 и организовать полноценную промышленную шину. В последнее время я иногда так и поступаю…

 

? Архив статей, упорядоченный по категориям ?


Продолжение следует…

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

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

Если Вам понравилась данная статья и (или) Вы желаете увидеть в ней краткий обзор других датчиков, то Вы можете поддержать автора любой приемлемой для Вас суммой. Полученные средства пойдут на покупку новых сенсоров и дополнение статьи. Спасибо.


Использованные источники


На этом пока всё, до встречи на сайте и на telegram-канале! 

💠 Полный архив статей вы найдете здесь


Пожалуйста, оцените статью:
[ 5 из 5, всего 5 оценок ]

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

  1. сейчас уже sht40, 41 массово появились. даже sht45 купить можно. но ценники негуманные совсем.

    траблой стало наоборот, старый добрый(по отзывам, вроде бы. особенно в условиях повышенной влажности на улице и тп si7021 годами работали у людей, когда остальные влагой напитывались и всё, непонятно что с ними делать. по отзывам даже с функцией подогрева дорогие топовые sht20+ 30+ серии у людей “умирали”. понятно в комментаах кто-то тут же посоветовал отогреть их. но это же не дело. я не понимаю почему так происходило? у них же тоже функция подогрева есть!? или автоматически это работает только на si7021, а в sensirion не работает/не настроено автоматически!? или si7021 больше повезло с библиотеками для ардуин и тп примерами готового кода?) кстати, видел готовые библиотеки, в которых даже силу подогрева/автоподогрева(!?) можно было регулировать. крч круть. https://mysku.club/blog/aliexpress/91754.html вот тут в первых же комментариях снизу обзора) si7021 купить. он стоит дороже, если и указан, то нифига не он, а какой-ниб sht20 21 установлен, надо внимательно смотреть описания и фотки. такие противные, блин, на али.

    еще можно купить готовый в уличном(?) корпусе на проводе, но вроде бы без влагоизоляции и пылеизоляции. непонятный корпус какой-то. больше для домашнего применения.

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

    1. блин, неправильно выразился. sht40 41 недорого. 100+ р с бесплатной доставкой. но вот sht45 от 500-600+. до несколько к.

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

  2. Добрый день!

    Про 4х серию знаю, но нет ни времени ни свободных грошей с ней экспериментировать. Мельком почитал даташит, вроде как это слегка урезанная третья серия (вроде как пороги с прерываниями выпилили, но могу ошибиться) с чуть большей точностью. Хотелось бы заказать, очень уж мне третья серия приглянулась. Но на sensirion можно на “вторичку” легко нарваться, то есть снятые с уже работавших приборов. Некоторые продавцы честно об этом признаются, некоторые делают вид, что не знают об этом.

    Si7021 хороших не встречал, все что есть у меня лично купленное в разное время – унылое г… Видимо так мне “повезло”. И чтобы там что-то автоматически прогревалось – первый раз слышу. Может в каком-то драйвере это просто программно реализовано? Поделитесь, ради интереса. Я то пользуюсь самописным, для esp32. И таки да, про регулировку мощности нагрева в нем я знаю, в моем драйвере для ESP-IDF это реализовано.

    Лично мне больше нравятся SHT31, в метеостанции стоит давно, каждую ночь включается нагреватель на 10 минут. За всё время ни разу в 100% влажности так и не уперся, хотя стоит в тени в “сыром углу”. Может занижает, конечно. Но все остальное, что было до этого – AM2302, BME280 – легко и непринужденно уходили “в запой” на длительное время (100% RH).

    Насчет корпуса. Вопрос сложный. На уличной метеостанции у меня сенсоры в специальном “тарельчатом” боксе, не помню как правильно называется. Но от прямого солнца он всё равно плохо защищает, поэтому стоит в тени, где прямого солнца никогда не бывает https://narodmon.ru/img/devs/D5473.jpg.
    В доме не парюсь и ставлю в обычные пластиковые монтажные коробочки TDM примерно 5*5*1 см, предварительно насверлив отверстий побольше в боковинках. И цвет подобрать можно.

    И сейчас я постепенно перехожу от I2C на RS485, потому что задолбался в каждой комнате тыкать ESP32, просто чтобы температуру для термостата измерить. Сейчас есть с встроенным дисплеем и с RS485, и в приличном корпусе, но ценник абсолютно не гуманный. И непонятно что за сенсор внутри. А что делать?

  3. Christal Gann

    Are you in search of a specific, shortage, or restricted IC? Or perhaps you have the ability to supply us with such components? If so, we invite you to consider Sourcing IC Ltd HK as your trusted partner in the world of semiconductors.

    Our team has years of experience in the industry, and we have established strong relationships with top manufacturers and suppliers worldwide. This allows us to offer competitive pricing and quick turnaround times, ensuring that our customers receive the components they need on time and within budget.

    Whether you are looking for a specific component or need help with a hard-to-find integrated circuit, we are here to help. We offer a range of services, including sourcing, logistics, and quality assurance, to ensure that you receive the best possible service.

    NO MOQ is required!

    If you’re interested in learning more about our services, please feel free to visit our website https://icsouring.com
    or contact us directly at

    Whatsapp : 852-61937363
    Email: sales@sellenow.com

    We would be more than happy to discuss your needs and we look forward to the opportunity to work with you.

    Payment Method:
    Paypal / Western Uniuon / TT

    See you!

    Best Regards,
    ICsourcing Ltd HK
    To supply every rare ICs

    If you wish to no longer receive emails from us you can Unsubscribe Here

  4. добрый день!

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

    Думал сделать опрос раз в минуту, но задумался с подогревом:
    Если его надо включать на 10 минут, то в таком режиме он не будет выключаться вообще…
    Скажите, как лучше поступить?

    1. Для чего пара – это понятно. Сам точно так поступаю ))). Ещё полезно пересчитать относительную влажность снаружи и внутри в зависимости от разницы температур, чтобы не гнать внутрь более влажный воздух.
      Я поступаю просто – каждые сутки в 00:00 включаю прогрев на 15 минут, измерения на это время прекращаю. На мой взгляд, этого вполне достаточно, график перестал упираться в “потолок” 100% влажности вообще. Подходит к 97-98%, но 100% с тех пор (как добавил прогрев) так ни разу и не было.

  5. Т.е. правильнее сравнивать не абсолютные, а относительные влажности?

    По включению нагрева раз в сутки – понял, только хватит этого в морозы?

    1. Правильнее сравнивать как раз абсолютные влажности. То есть грубо говоря количество молекул воды на единицу объема воздуха. Эти сенсоры выдают всегда относительную влажность, которая зависит от температуры. Чем выше температура, тем больше воды может “поместиться” в единице объема воздуха. Существуют формулы, по которым можно пересчитать относительную влажность в абсолютную. Есть так же и формулы, с помощью которых можно пересчитать влажность при изменении температуры. Так вот корректнее будет сравнивать “уличную” влажность, приведенную к внутренней температуре. Грубо говоря: на улице -10С 50%RH, в гараже +10 90%. Но если пересчитать влажность при повышении температуры на 20С, то получим запредельные 100% и у вас выпадет роса. А казалось бы влажность на улице ниже
      По поводу подогрева – у меня год на улице простоял с подогревом 1 раз в сутки, в том числе и в морозы – пока работает хорошо. Ему не морозы страшны, а высокая влажность + холод.

      1. Спасибо огромное!
        Почитал, вспомнил слова про идеальный газ ).
        Формулу перевода переписал.

        По подогреву – тоже понял, так и сделаю.

  6. Спасибо автору за столь серьезное исследование. Сам столкнулся с тем, что датчики АМ2302 безбожно врут – завышают показания влажности на 10-12% на краю диапазона! Заинтересовался датчиками SHT31. Про подогрев можно поподробнее? Насколько регулярно надо делать, сколько выдерживать, от чего зависит время прогрева, через сколько можно снимать показания?

    1. Параметры подогрева наверное нужно подбирать опытным путем. У меня так:
      В уличной метеостанции стоит SHT31. Каждые сутки, в 00:00 включается нагреватель на 10 минут, затем 10-15 минут “остывание”. Измерение на этот период прекращается (на сайт отдаются последние данные до прогрева).
      Пока все работает отлично – влажность почти никогда не упирается в 100%, только во время густого тумана.

  7. А команда на подогрев – sht31.heater(true)? Из библиотеки Adafruit_SHT31?
    Не замечали насколько меняются показания после прогрева?

    1. Я этой библиотекой не пользуюсь, у меня своя 😉 Но очень похоже
      Температура растет, влажность падает, но не сильно намного. Я уже не помню значения, а посмотреть негде, потому что на сервер графиков эти данные не отправляются.

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

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