Фото с сайта market.yandex.ru

Индивидуальная калибровка ширпотребовских датчиков температуры-влажности, как показал многолетний опыт, — абсолютно необходимая операция. Для почти всех имеющихся в продаже типов разброс по температуре в ±2 градуса и ±5% влажности – не исключение, а норма. И очень некрасиво, когда уличный датчик показывает +2° при замерзших лужах, а поставленный рядом с комнатным собратом демонстрирует влажность на 10% выше. И это средняя норма — попадаются экземпляры с куда большим отклонением, как вы увидите, прочитав эту статью до конца. В принципе ±5% отклонения влажности — вполне допустимая величина (ГОСТ на измерения микроклимата в помещениях допускает такой разброс), но согласитесь, что два датчика рядом должны все-таки показывать близкие величины, а на практике случай, когда родственные датчики впадают в противоположные крайние отклонения — совсем не редкость.

Тема достоверности данных с массовых датчиков становится все острее — существует уже немало сервисов, предоставляющих общий доступ к частным измерительным системам параметров окружающей среды (вот самый, вероятно, известный). Даже звучный термин появился — «гражданская наука» (citizen science)!

Если температуру калибровать относительно несложно (достаточно точные лабораторные термометры не представляют дефицита), то влажность представляет проблему, почти непреодолимую в домашних условиях. В конце концов я решился на покупку дорогущего (в европейских каталогах более $100) датчика швейцарской фирмы iST под непроизносимым для русскоязычного пользователя названием HYT939. Швейцарцы декларирует «из коробки» отклонение ±0.2° по температуре (в диапазоне от 0 °C до +60 °C) и ±1.8 % по влажности (в диапазоне от 0% до 90%). Конечно, употреблять его при такой дороговизне можно только в качестве образцового, но и это уже много: по крайней мере есть с чем сравнивать без боязни промахнуться «с точностью до наоборот».

О часах и метеостанциях


В соответствии с расхожим тезисом «что бы не делал любитель электроники, у него получаются либо часы, либо метеостанция» — по аналогии, видимо, с советской промышленностью, у которой из любого начинания получался автомат Калашникова. Но этот тезис неточен: практический смысл имеет объединение часов и метеостанции в одну конструкцию. Причем и часовые компоненты (в виде популярных модулей DS3231) и особенно основа метеостанции — датчики температуры-влажности в приемлемом ценовом диапазоне оказываются недостаточного качества.

Часы DS3231 быстро уходят (обычно отстают) и жрут резервную батарейку при отключении на зиму. Проблема с часовыми модулями капитально решается, как показал многолетний опыт, только решительным отказом от лотереи в виде покупных изделий и сооружением собственной платы на основе простейшего DS1307 по стандартной рекомендуемой схеме включения с тщательно подобранными параметрами внешнего навесного кварца (отклонение ±10 ppm).

Но часы таким образом соорудить несложно (и получаются они не дороже покупных даже в единичных экземплярах), а вот с метеодатчиками ситуация намного хуже. В общем-то единственный качественный ширпотребовский метеомодуль — датчик атмосферного давления на основе МЭМС-сенсора фирмы Bosh BMP180/280. Это получилось по понятным причинам: датчик вообще-то ориентирован на измерение высоты места для дельта-планеристов, то есть от природы должен иметь высокую стабильность и разрешение. С обычным статическим измерением атмосферного давления (плюс-минус 1 мм рт. ст.) он справляется играючи. Правда, некоторые восточные производители умудряются и его тоже испортить, но тут уж обычный вопрос выбора источника (который в большинстве случаев решается ориентировкой на цену выше среднего). А вот в качестве датчиков температуры и влажности семейство BME/BMP употреблять бессмысленно, о чем ниже.

Отдельные приличные датчики температуры приемлемого ценового уровня еще можно найти: к ним принадлежит, в частности, DS18b20 — по крайней мере, если он оригинального производства MAXIM. Но уже популярные TMP35/36/37 к категории «приличных» без дополнительной калибровки отнести, конечно, нельзя. Как показывает многолетний опыт конструирования метеодатчиков (начинал я еще в 1980-х) практически для всех разновидностей датчиков температуры-влажности (TH) никакой отбор и ценовой показатель не гарантирует вас от необходимости их калибровки «по месту». И не верьте даташитам даже поставщика решений для американского ВПК фирмы Honywell, не говоря уж о каких-нибудь Sensirion или Aosong.

Почему BMP/BME в качестве датчиков температуры не годятся даже для бытовых целей?
Ситуация с BME/BMP280 в режиме температурно-влажностых измерений хуже, чем с остальными семействами. Хуже потому, что из-за удобства применения BME280 стал необычайно популярен у программистов, ничего в метрологии не рубящих. Дошло до того, что BME280 помещают на платы разработчика (см. например, популярную Arduino Nano 33 BLE), а наивные пользователи просто вставляют эти платы в готовый прибор. А ведь фирма BOSH предупреждает (стр, 8 даташита BMP280): «Temperature measured by the internal temperature sensor. This temperature value depends on the PCB temperature, sensor element self-heating and ambient temperature and is typically above ambient temperature.» («Температура измеряется внутренним датчиком температуры. Это значение температуры зависит от температуры печатной платы, самонагрева чувствительного элемента и температуры окружающей среды и обычно превышает температуру окружающей среды.»). Есть аналогичные примечания и в описаниях других модификаций сенсора. Ясно, что температурному датчику, подогреваемому изнутри, не поможет никакая калибровка. Позиционирование BME280, как универсального датчика всего-на-свете — чисто маркетинговый прием, который его инициаторам блестяще удался: кто же читает примечания мелким шрифтом на восьмой странице?

От себя добавлю, что в 1980-90-х я лично принимал участие в конструировании датчиков давления (тогда фирменные импортные были еще недоступны), и могу сказать, что температурный сенсор в составе такого датчика никогда не рассматривался, как самостоятельная опция, только, как необходимая приблуда для компенсации температурной ошибки тензомоста (ознакомьтесь в даташите с алгоритмом обработки сырых данных BMP280). По всем этим причинам использовать семейство BME/BMP для измерения температуры-влажности нельзя: даже тщательно вынесенный за пределы платы и корпуса прибора BME280 покажет «погоду на Марсе».

О правильном конструктивном оформлении TH-датчиков


Понятно, почему плохо работают все (без известных мне исключений) фирменные метеостанции: датчик, помещенный в корпус прибора, показывает параметры среды внутри этого корпуса. А они могут существенно отличаться: по моим наблюдениям, элементы платы с потреблением 200-300 мВт (МК + линейный стабилизатор питания + радиомодули + часы + дисплей) подогревают среду градусов на пять минимум. Дополнительно корпус и теплый воздух в нем не дают выровняться внешней и внутренней влажности. Поставив внешний датчик рядом с самой метеостанцией, вы можете получить разницу показаний в 3-5 градусов и до 10% влажности.

Такие чувствительные элементы, как SHT75 (см. даташит), довольно качественные сами по себе, но с крайне неудачной конструкцией — в них вся нижняя сторона платы представляет металлический экран с отличной теплопроводностью, и их необходимо выносить из корпуса полностью, включая разъем.

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

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


Размещение модуля датчика DHT22 на корпусе настенной метеостанции

Как вы видите на фото, TH-датчик DHT22 на настенной конструкции размещается внизу корпуса, причем спереди он загорожен выступающей декоративной пластиной, но свободен с боков для лучшей циркуляции воздуха. Аналогичное размещение имеет датчик SHT20 на фото ниже, только ограждения с боков, а не спереди — так корпус более устойчив при размещении на столе:


Размещение модуля датчика SHT20 на настольно-настенной конструкции


Уличная метеостанция с датчиком SHT75, вид спереди и с тыльной стороны

У уличной метеостанции с датчиком SHT75 датчик спереди прикрыт пластиной из белого пластика (справа от корпуса), сзади частично кожухом из анодированного алюминия.
И, наконец, два выносных радиодатчика на основе модулей SHT31 разных производителей:


Размещение модулей SHT31 на выносных уличных радиодатчиках (слева — с батарейным питанием, справа — с питанием от внешнего источника)

Отметим, что модуль производства Grove на датчике справа значительно дороже (особенно в современных условиях), чем китайский нонейм модуль слева. Но опыт показал, что по метрологическим качествам они не различаются настолько заметно, чтобы имело смысл переплачивать (конечно, если отбросить откровенный брак в китайском варианте). То же самое можно сказать и про многочисленные другие фирменные модификации (от Амперки, от Adafruit), поскольку все они по идее производятся на основе одного и того же сенсора от компании Sensirion (со штаб-квартирой в Швейцарии). То же относится к продуктам на основе других сенсоров этой фирмы (SHT2x, SHT7x и т.д.), а также сенсоров китайской Aosong (серий DHTxx, AMxxxx, AHTxx и пр.).

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

Следует также строго соблюдать правила размещения метеорологических датчиков:
  • не размещать в местах воздействия прямых солнечных лучей («температура на солнце» — бессодержательное понятие!);
  • не размещать уличные датчики под козырьком на стене, обращенной к солнцу (поднимающийся теплый воздух скапливается под козырьком);
  • не размещать уличный датчик над оконным проемом (особенно зимой).

Наилучшие места размещения уличных датчиков: в городской квартире — с теневой стороны балкона снаружи под отливом, защищающим от дождя, и с отступом от стены дома не менее 20-30 см; в загородном доме — с теневой стороны дома под стрехой, вдали от оконных и дверных проемов.

Образцовый датчик на основе HYT939


Образцовый датчик сделан на основе швейцарского HYT939. Чувствительный элемент упакован в консервативный 4-выводной корпус с «through-hole» выводами (т.е. под монтаж в отверстия), см. картинку:

Корпус и разводка выводов HYT939

Для подключения этого датчика к контроллеру выпускают, например, вот такие модули:

Модуль HYT939

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


Образцовый датчик на основе HYT939 с аккумуляторным питанием

Датчик вместе с контроллером питается от литий-ионного аккумулятора типоразмера 18650 с номинальным напряжением 3,5-4,1 вольта. Так как и AVR-контроллеры и датчик HYT939 допускают питание менее, чем 3 вольта, то никаких стабилизаторов не предусмотрено, питание на схему поступает напрямую. В корпус встроена обычная китайская USB-подзарядка — плата на основе TP4056. Белая дырочка в правом нижнем углу при подключении USB-зарядника подсвечивается изнутри светодиодами с этой платы, меняющими цвет по окончании процесса зарядки.

Схема датчика (см. рис. ниже) включает контроллер ATmega8, работающий с кварцем на частоте 4 МГц. Дистанционной передачи данных здесь не предусмотрено, результаты отображаются на минималистичном текстовом OLED-дисплее 2 строки по 8 символов в каждой. Четыре полных/пустых квадратика в конце второй строки означают степень зарядки аккумулятора (как видите, на фото аккумулятор уже немного израсходован). Программа создавалась в среде Arduino, с выводом бинарного файла под Mega8/4 МГц и последующей загрузкой его через отдельный программатор.

Принципиальная схема образцового датчика HYT939

Аккумулятора, по оценкам, должно хватать дня на четыре непрерывной работы без подзарядки. Степень заряженности оценивается по напряжению питания, измеряемому с помощью входа ADC1 АЦП контроллера, подключенного к внутреннему ИОН (напомним, что у Mega8 его напряжение равно примерно 2,56 вольта, а не 1,1, как у Arduino, отсюда номиналы делителя R4/R5). Так как напряжение ИОН имеет разброс от экземпляра к экземпляру, то показания АЦП приходится калибровать, что можно сделать с помощью обычного тестера.

Проблем датчик HYT939 никаких не доставил — используется прямое воспроизведение алгоритма, указанного в даташите, без оформления в отдельную библиотеку. Пример кода применительно именно к ATmega можно посмотреть на Гитхабе по вот этому адресу (там же есть образчики для подключения HYT939 к другим контроллерам). А по этой ссылке можно скачать исходный Arduino-код и скомпилированный hex-файл для датчика, построенного согласно схеме выше.

Основы калибровки


Процесс калибровки сводится к получению таблицы соответствия показаний датчика (x) и «истинного» значения некоего исходного параметра (y), полученного с помощью образцового средства измерения во всем необходимом диапазоне.

Такая таблица называется градуировочной, и когда-то она и выступала в качестве результата процесса, который тогда именовался градуировкой. С развитием вычислительной техники градуировка быстро превратилась в калибровку: т.е. выведение на основе полученной таблицы аналитической зависимости показаний образцового измерителя от показаний датчика (иначе говоря, аппроксимацию зависимости y = f(x), обычно в форме полинома) и, соответственно, получение на выходе уже готовых пересчитанных значений.
Чем отличается калибровка от проведения измерений
Возможно у вас возникнет недоумение по части обозначений: по смыслу проводимых операций независимой переменной здесь явно выступают показания образцового средства, на которые мы никак влиять не можем. Почему же мы их обозначили за y, и в процессе калибровки выводим зависимость от «сырых» показаний некалиброванного датчика x? Потому что рассуждать тут приходится в терминах «входа/выхода», а не в относительных терминах «зависимости/независимости» переменных. Входом у нас будут показания датчика, а на выходе мы обязаны получить точные значения, которые нам предоставляет образцовое средство в процессе калибровки.

Не следует путать калибровку с проведением измерений. Вывешивая спиртовой термометр за окно, вы проводите обычный физический эксперимент: выводите значение температуры из положения границы окрашенного столбика жидкости на основе известных (исследованных ранее) зависимостей. В качестве измеряемой величины y здесь выступает температура, а независимой (входной) переменной x может выступить любая величина, связанная с объемом жидкости в капилляре. В результате измерительного эксперимента мы можем получить зависимость измеряемого параметра от какой-то фактически измеренной величины, то есть провести косвенные измерения. Кроме косвенных, бывают и прямые измерения (например, измерение длины непосредственным прикладыванием линейки или измерение влажности титрованием по Фишеру), но это не наш случай — все электронные датчики используют косвенные измерения.

Например, можно автоматизировать считывание положения границы жидкости, приставив какой-нибудь фотодатчик — тогда входной величиной будет напряжение на выходе этого фотодатчика. В качестве входного параметра также могут выступать необработанные (или обработанные, приведенные к нужному масштабу) «сырые» коды с чувствительного элемента датчика, коды АЦП контроллера (если датчик аналоговый) и т. д. — то есть не непосредственно значения нужного параметра, а другой величины, на основе которых нужный параметр вычисляется однозначно. Яркий пример докомпьютерного подхода к косвенным измерениям до сих пор можно встретить в старых музеях или складских помещениях, где психрометрические гигрометры еще не заменили на электронные — таблицу соответствия разность температур-влажность помещают прямо на таких гигрометрах. Кстати заметим, что даже при всех отмеченных недостатках ширпотребовских метеодатчиков, электронные гигрометры все равно точнее психрометрических и работают в большем диапазоне измеряемой величины.

Резюмируем: процесс калибровки отличается от процесса измерений тем, что в нем неважны никакие промежуточные этапы: в качестве входной переменной всегда выступают показания поверяемого датчика (уже пересчитанные в необходимые единицы измерения), а в качестве выходной — показания образцового средства в тех же единицах (см. далее раздел «Обработка результатов»).

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

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

Да, а сколько измерений проводить? Интуитивно понятно, что чем больше, тем лучше, но сколько это «чем больше»? Из элементарной математики известно, что прямую линию можно провести через две точки, параболу — через три и т.д. Но если вы ограничитесь этим теоретическим минимумом (двумя точками для линейного датчика), то не сможете проконтролировать статистический разброс показаний и оценить возможную ошибку аппроксимирующей кривой. Теория эксперимента говорит, что надежных статистических оценок можно достичь при 20-30 точках на диапазон (см., например, здесь). Но нас настоящие статистические оценки интересуют мало, так как мы не проводим критический эксперимент по выявлению глобальных жизненно важных закономерностей, и по минимуму вполне можно обойтись 5-7 точками, причем желательно равномерно распределенными по диапазону. Конечно, превышение этой величины только приветствуется — так, в практических примерах далее задействовано более десятка точек.

Проведение калибровки


В принципе для калибровки нужно соответствующее оборудование, и оно бывает весьма дорогим. Для профессиональной калибровки даже в относительно простом случае, который представляет измерение температуры, обычный лабораторный термостат вообще-то не годится. Но, конечно, в бытовых целях даже самодельный термостат, если он грамотно сконструирован, вкупе с измерителями температуры лабораторного уровня (ртутными термометрами или термометрами сопротивления) употреблять можно. Но уже в отношении влажности вы ничего и близкого по цене и доступности не подберете: самостоятельное изготовление климатической камеры — дело и малодоступное, и, мягкого говоря, нецелесообразное. Относительная влажность воздуха — один из самых сложных для измерения физических параметров, так что будьте снисходительны к производителям датчиков. Кстати, дороговизной и оборудования и самого процесса калибровки, объясняется такой большой разброс ширпотребовских датчиков — их просто нецелесообразно подвергать индивидуальной калибровке, сильно удорожающей конечный продукт.

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

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

Обработка результатов


В результате проведения измерений вы должны получить таблицу значений y и x. Повторим, что не следует путать градуировочную таблицу с таблицей зависимости y от x — это в процессе косвенных измерений есть независимая переменная (в качестве которой выступают, например, коды АЦП) и ее функция (например, показания на дисплее). В калибровке все наоборот — мы обязаны обеспечить показания, соответствующие «истинным» значениям (выход), в зависимости от величин сигналов датчика, в качестве которых выступают показания на дисплее (вход). Поэтому при калибровке «истинные» показания образцового средства у нас всегда y, а «сырые» показания, которые выдает некалиброванный датчик — x.

Далее вы можете воспользоваться любым пакетом статистики (или просто MathLab, или даже банальным Excel’ем), чтобы методом наименьших квадратов получить коэффициенты полиномиального уравнения y = A0 + A1·x. Я уже четверть века пользую собственную программу RegStat, заточенную именно под применения калибровки-градуировки (скачать отсюда, запускать единственный там exe-шник regrstat.exe; имеется справка в html-формате). Программа использует метод наименьших квадратов классическим аналитическим методом, и может выдавать полином любой разумной степени, хотя в метрологических приложениях даже с самодельными датчиками зависимости выше параболы мне ни разу не встречались.

Для нее нужно подготовить текстовый файл с колонками пар значений x и y в отдельных строках, именно в таком порядке, причем разделителем могут быть знаки пробела, табуляции или точки с запятой в любом количестве. Текстовые строки (напр. заголовки колонок) в файле игнорируются, размещать результаты по порядку (по возрастанию/убыванию) необязательно. Десятичный разделитель дробной части — точка или запятая, на ваше усмотрение, примерно так (еще раз — сначала идет показание калибруемого датчика x, потом «истинное» значение y):
3.4      2.0
13.1    11.5
.....
16.3    14.8
Загрузив этот файл в программу, оставив степень полинома равной 1 и нажав на «Рассчитать», получите вот такой результат:


Результаты температурной калибровки датчика SHT31

Как видите, в этом примере температурная калибровка проводилась в диапазоне от нуля до 21,5 градусов. По коэффициенту A0, представляющему оценку постоянного смещения показаний, можно оценить качество датчика. В данном случае можно оценить его, как невысокое — отклонение во всем диапазоне в среднем составляет почти 2 градуса. Далее в результатах представлены исходные Yo и расчетные (согласно полученному полиному) значения Yр, а также самое информативное — разница между ними в последней колонке. По этим данным вы можете оценить качество калибровки. Можно поверить, что средняя линия регрессии пройдет «как надо», и нивелирует разброс отклонений, который явно обусловлен «бытовыми» условиями проведения калибровки: среднее квадратическое отклонение результатов (СКО), как видите, всего около 0,4°, что для нашей наколеночной методики — очень хороший результат. Результирующее уравнение будет выглядеть, как T (на дисплее) = T (датчика) ×1.0235 – 1.75.

На скриншоте ниже представлены результаты калибровки того же датчика по влажности:


Результаты калибровки датчика SHT31 по влажности

Я намеренно выбрал не самый лучший экземпляр датчика, чтобы нагляднее продемонстрировать необходимость калибровки. С влажностью оказалось все еще хуже, чем с температурой — постоянное смещение относительно «истинных» значений оказалось сильно больше 10%. Величина разброса, которую отражает СКО, наоборот, оказалась совсем невелика (0,7% влажности), что говорит о его высокой линейности и стабильности. Этот датчик и до появления в моем распоряжении образцового HYT939 вызывал сомнения по части сдвига показаний, но тогда определить расхождения сколько-нибудь точно было невозможно, потому после сравнения с некоторыми другими датчиками, просто вычиталась постоянная величина 1,5° из показаний температуры, и 8% из влажности. Сейчас выяснилось, что этого было недостаточно. Результирующее уравнение будет выглядеть, как H (на дисплее) = H (датчика) ×1.12 – 13.9.

Любопытно, что единственный датчик из имеющихся в моем распоряжении, который не потребовал каких-то пересчетов и при тщательных сравнениях с образцовым HYT939 неизменно демонстрировал согласие и по температуре (в пределах ±0,5°) и по влажности (±2-3%) — это был довольно давно приобретенный SHT75, показанный на фото уличной метеостанции выше.

Комментарии (35)


  1. BARSRAB
    02.10.2023 09:50

    Часы DS3231 быстро уходят (обычно отстают) и жрут резервную батарейку при отключении на зиму. 

    Часы на данной микросхеме подвожу раз в пару лет (да и то, разбежка 2-3 минуты), батарейку не менял ни разу лет за 10, наверно. При том что как минимум раз в год часы остаются обесточенными на месяц. Что я делаю не так?)) А вот 1307 может убежать буквально за сутки, т.к. найти хороший кварц 32768 довольно сложно.

    А сама статья полезная, прочитал с большим интересом)


    1. YRevich Автор
      02.10.2023 09:50

      У меня тоже есть ОДИН экземпляр DS3231, который ведет себя относительно прилично. И еще с десяток прошли через мои руки, которые ни в какие ворота не лезут.

      А добыть кварцы +/- 10 ppm совсем несложно и они даже не принципиально дороже любых других.


      1. BARSRAB
        02.10.2023 09:50

        Ну у меня это не единичный случай)) Плюс 1307 вместе с кварцем умеют плыть от температуры...


      1. olartamonov
        02.10.2023 09:50

         И еще с десяток прошли через мои руки, которые ни в какие ворота не лезут

        Давайте угадаю: они с Али и местных ардуино-реселлеров?


        1. YRevich Автор
          02.10.2023 09:50

          "Чип-дип", iarduino.ru - я обращаюсь к самым раскрученным, в остальном они (почти) не подводили. Некоторые были куплены в robochip, tixer.ru, тоже не из последних. Все купленные ds3231 пришлось заменить, кроме одного - он тоже сажал батарейку за зиму (и весной показывал какой-нибудь "декабрь 2001"), но хотя бы имеет нормальный ход, потому я его оставил для городской квартиры у дочки, где станция из сети никогда не выключается.


          1. olartamonov
            02.10.2023 09:50

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


            1. YRevich Автор
              02.10.2023 09:50

              Могу рассказать полуторамесячную эпопею, как уличил "Чип-Дип" в некачественных BMP180. Затянули, конечно, но потом без слов заменили на качественные, а товары этого продавца исчезли из каталога.

              А у тех, что просто али-ресселеры, ничего не добьешься - дважды попадались некачественные Nano, так и лежат, ждут замены кристалла - жалко просто выбросить, все остальное-то в порядке.


            1. mlnw
              02.10.2023 09:50

              Какие, например? Только не надо пож-ста опять про DS18B20


              1. olartamonov
                02.10.2023 09:50

                Последнее открытие, например, INMP441. Оригинальных, судя по всему, не осталось вообще.


  1. Mitya78
    02.10.2023 09:50

    Уж с датчиками температуры кажется проблем быть вообще не должно. Ставим практически любые Pt100, Pt1000 - всё работает.

    Один раз только на моей памяти датчик температуры Овен никак не получалось подружить с модулем входов Сименс, даже подгонка не помогала, где-то да вылазило расхождение.

    А вообще для помещений сейчас используем комбинированные датчики S+S - влажность и температура (https://www.spluss.de/ru/vftf-u-p13394/). Небюджетно, но никаких нареканий.


    1. YRevich Автор
      02.10.2023 09:50

      Небюджетных за 466,54 € я сам вам могу наперечислять. У меня дома валяется Pt100, еще бы к нему были нарекания. Речь идет о том, что делают (и рекомендуют в своих книжках) малограмотные фанаты citizen science.


  1. mlnw
    02.10.2023 09:50

    Практически во всех доступных датчиках влажности итоговый результат измерения Rh% есть функция двух переменных: собственно, сырых данных с датчика влажности и данных текущей температуры (может быть, поэтому, by design, датчиков влажности без датчиков температуры не существует, по крайней мере я таких не знаю). Поэтому при разной температуре воздуха (и разной величине ошибки датчика температуры), величина ошибки влажности тоже будет разной (и это при одном и том же значении Rh%), и величину поправок поэтому нужно получать, строя не кривую по точкам, а строя поверхность по двумерному массиву температур и влажностей.

    PS А почему за эталон взяли не SHT85, он вроде поточнее будет?


    1. YRevich Автор
      02.10.2023 09:50

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

      2) SHT85 - это хорошая мысль, но он все-таки дороговат, а проверить его было нечем. Ранее использовавшиеся SHT75 и разбегались и халтурно сконструированы. К Sensirion у меня настороженное отношение, а компания-производитель HYT939 по крайней мере не делает ширпотреба.


  1. nikolz
    02.10.2023 09:50

    Датчики влажности калибруют используя растворы солей.

    Например, эти:
    Соль % Относительной влажности (при 25°C)
    Хлорид Лития 11.30
    Хлорид Магния 32.78
    Хлорид Натрия 75.29
    Хлорид Калия 84.34

    Вот что получаем для датчика DHT-22


    1. YRevich Автор
      02.10.2023 09:50

      Вообще-то идея верная. Но вот ее реализация... Литий хлористый - 2381.00 р (https://rushim.ru/product_info.php?products_id=4938). Плюс остальные реактивы, плюс длительность (согласно инструкции, оставлять над каждым раствором не менее 8 часов). Один датчик так поверить дома можно, но не больше.


      1. nikolz
        02.10.2023 09:50

        остальные можно по этому датчику.

        Можно подобрать еще что-нибудь из таблицы:


        1. YRevich Автор
          02.10.2023 09:50

          Повторю, идея здравая, но уж очень муторная в исполнении.


  1. nikolz
    02.10.2023 09:50

    Калибровку полупроводниковых датчиков температуры(например DS1820) надо делать минимум по трем точкам.

    Например, после калибровки DS1820 смещение между тремя датчиками составляет около 0.02–0.03°C на участке от 0 до 90 градусов.


    1. YRevich Автор
      02.10.2023 09:50
      -1

      Не по трем, а минимум по 5-7 точкам. В теории - по 20-30 точкам.

      Да, и кстати к ds18b20 никто ничего не имеет (если это родной maxim).


      1. nikolz
        02.10.2023 09:50

        Вот так "точно" измеряют цифровые датчики подобные DS1820

        Смотрим документацию на DS1820

        и видим, что разброс показаний датчиков даже maxim составляет +-0.5 гр в диапазоне 0-70 гр.

        Если Вас это устраивает, то можете не калибровать.

        Но как я указал ранее, калибровка позволяет уменьшить разброс в партии датчиков в 10 раз.

        -------------------

        Относительно числа точек. Достаточно трех точек, если Вы используете правильную аппроксимацию, т .е. учитываете, что это p-n переход.

        -------------------

        Относительно муторности, это субъективно. Оно того стоит, так как в результате точность дешевых датчиков соответствует точности очень дорогих.

        Но, бесспорно, можно ничего не калибровать, выбор за вами.


        1. YRevich Автор
          02.10.2023 09:50

          Кстати, есть еще ADT7420, судя по описанию, лучше ds18b20 (±0.25°). Но он в планарном корпусе, рассчитан для автоматического монтажа на плату, что неудобно для бытовых применений.


          1. nikolz
            02.10.2023 09:50

            ADT7420 в два раза точнее, но стоит (800 руб на Али) в 9 раз дороже DS18B20 ( 87 руб на али).

            Однако, калибровка DS18B20 делает его в 10 раз , точнее ADT7420.


        1. mlnw
          02.10.2023 09:50

          Ну вообще на вашем же графике ошибка DS18B20 составляет примерно +/-0.3°C, а не +/-0.5. Для измерения что температуры воздуха, что температуры электронных компонентов и других бытовых применений этого хватает за глаза.


          1. nikolz
            02.10.2023 09:50

            На графике 3сигмы если точно то +-0.45, а +0.25 - 0.2 - это средняя линия.

            Но так как мы покупаем случайным образом из партии датчиков, то с вероятностью три девятки интервал ошибки с округлением до 1 значащей десятичной цифры получается +-0.5. Я считаю именно так.

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


            1. mlnw
              02.10.2023 09:50

              Для такой точности в +/-0.1°С какова тогда должна быть точность (и модель) эталонного датчика?


              1. nikolz
                02.10.2023 09:50

                Не понял вопроса, поясните о каком эталонном датчике Вы говорите?

                Модель датчика - это p-n переход (полупроводниковый диод).


                1. mlnw
                  02.10.2023 09:50

                  Чтобы откалибровать какой-то датчик, скажем DS18B20, до точности 0,1°С, нужен датчик с еще большей точностью, чтобы фиксировать отклонения от фактической температуры рассматриваемого датчика в точках измерения, нет?


                  1. nikolz
                    02.10.2023 09:50

                    можно без такого датчика.

                    Для этого используются три источника значений точной температуры:

                    1) льда в чистой воде(0°C);

                    2) кипения воды(100°С) ;

                    3) жидкого Галлия(29.7646°С).


                    1. YRevich Автор
                      02.10.2023 09:50

                      Вы бездумно повторяете теоретические сведения, не подумав о практической реализации. Сами-то хоть раз пробовали такое провернуть? Я не говорю о таллии (его, во-первых, вам просто не продадут, так как относится к категории кумулятивных ядов, намного опаснее ртути; во вторых, хранить его не проще, чем металлический натрий или калий), просто по двум точкам кипения-замерзания воды? Я пробовал. И вы попробуйте, и поймете, что без высококлассного сертифицированного оборудования тут не обойтись.


                      1. nikolz
                        02.10.2023 09:50

                        Я тоже пробовал.

                        Вы не внимательно читаете : Галлий, а не Таллий.

                        Галлий можете купить свободно.

                        Когда я этим занимался, Галлий стоил в 3 раза дешевле.


                      1. YRevich Автор
                        02.10.2023 09:50

                        да, про галлий вы правы. Но это непринципиально меняет дело: без оборудования, идеально выравнивающего температурное поле в достаточном объеме, там делать нечего. Плюс зависимость точки кипения от атм. давления: при 730 мм. (нормальная непогода в Центральном округе, вот прям сейчас у меня тут 732) вода кипеть будет при 97,3 град.


                    1. mlnw
                      02.10.2023 09:50

                      Далеко не все датчики (исключительно засчет исполнения) выдержат испытание кипящей водой и погружение в галлий.

                      Плюс, температура закипания воды сильно зависит от высоты, и даже на незначительных высотах ощутимо ниже 100°С. Съездить на Балтику и производить замеры там на уровне моря довольно проблематично.


                      1. nikolz
                        02.10.2023 09:50

                        Ну Вы прям удивляете.

                        Объясняю. Берете например DS18B20 и калибруете его. В результате получаете эталонный датчик.

                        После этого все остальное по этому датчику калибруете.

                        ----------------

                        Еще для сведения. Вот такой разброс показаний можно получить:


  1. vesowoma
    02.10.2023 09:50
    +1

    И очень некрасиво, когда уличный датчик показывает +2° при замерзших лужах

    Вполне себе красиво, ведь температура воздуха и поверхности земли не одно и то же


  1. nikolz
    02.10.2023 09:50

    еще есть вот такой датчик:

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

    • ±0.1 °C от –20 °C до +50 °C,

    • ±0.15 °C от –40 °C до +50 °C,

    • ±0.2 °C от –40 °C до +100 °C,

    • ±0.25 °C от –55 °C до +125 °C,

    • ±0.3 °C от –55 °C до +150 °C;

    Но его паять сложно.