• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Что не так со всеми BME280?

nikolz

Well-known member
Итоговые рекомендации для вашего сценария (t° < 0°C)
  1. Для максимальной точности и бюджета:
    • SHT45 — новейший и лучший, если цена не критична.
    • SHT85 — проверенный промышленный эталон.
  2. Оптимальный выбор (лучшее соотношение):
    • SHT35 (версия AD1B или BD1B) — настоятельно рекомендуется. Имеет все необходимые функции (нагрев, гарантированная точность на всем диапазоне), стоит разумно.
  3. Бюджетный вариант, но с полным диапазоном:
    • SHT30 — если готовы к погрешности ±2%…±4% при -20°C, но нужен рабочий диапазон и функция нагрева.
  4. Категорически не подходят для устойчивых отрицательных температур:
    • Вся серия SHT4x (Standard): SHT40, SHT41, SHT43, SHT4xV. Их физически можно включить на холоде, но точность не гарантирована, они не защищены от инея и могут выйти из строя.
Ключевой вывод:
Для измерений при отрицательных температурах нужно выбирать только из линейки SHT3x (кроме SHT30-DIS) или флагманских SHT45/SHT85. Их объединяет:

  • Рабочий диапазон, включающий -40°C.
  • Многоточечная заводская калибровка с отрицательными температурами.
  • Наличие функционального нагревателя для борьбы с конденсатом/инеем.
  • Гарантированные в даташите показатели точности при t° < 0°C.
SHT35 в этом списке остается самым сбалансированным и популярным решением.
 

nikolz

Well-known member
GLM пишет:
1. Официальные данные из документации (спецификация)
Производитель (Bosch) очень осторожен в своих обещаниях.
  • Диапазон рабочих температур: от -40 °C до +85 °C.
    • Важно: это значит, что сам чип не выйдет из строя на морозе. Он будет «работать» и сможет передавать данные. Но это не гарантирует точность этих данных.
  • Точность измерения относительной влажности (ОВ):
    • «Типичная» (Typical) точность: ±3 % относительной влажности.
    • Условия для достижения такой точности: в документации указано, что такая точность достигается в диапазоне от 20 % до 80 % относительной влажности при температуре 25 °C.

Ключевой момент: В документации Bosch НЕ УКАЗЫВАЕТСЯ ГАРАНТИРОВАННАЯ ТОЧНОСТЬ измерения влажности во всем диапазоне отрицательных температур. Есть только графики «типичного» поведения, которые показывают значительное ухудшение характеристик.
  • Гистерезис влажности: ±1 % относительной влажности (типовое значение). Это разница в показаниях при достижении одного и того же значения влажности со стороны более влажного и более сухого воздуха. На морозе, после циклов заморозки и оттаивания, гистерезис может увеличиваться.
Вывод из документации: Официально компания Bosch не гарантирует высокую точность BME280 при измерении влажности при температуре ниже 0 °C. Вы можете использовать его, но на свой страх и риск.

2. Реальные проблемы и фактическая погрешность при работе на морозе
Здесь начинается самое интересное. Погрешность складывается из нескольких факторов, и один из них — критический.

Проблема №1 (критическая): образование инея (Frost)
Это основная причина, по которой BME280 (и любой другой емкостный датчик) начинает врать на морозе.

  • Как это происходит: При температуре ниже 0 °C и высокой влажности (близкой к 100 %) влага из воздуха оседает на чувствительном полимерном элементе датчика не в виде воды, а в виде микрокристаллов льда (инея).
  • Эффект: Диэлектрическая проницаемость льда (3,2) в десятки раз ниже, чем у воды (80). Для емкостного сенсора это означает, что он "думает", будто влаги на нем почти нет.
  • Показания влажности резко падают, часто до значений 5-20%, даже если реальная относительная влажность составляет 90-100%. Результат: Это не просто погрешность в 5-10%, это полная неработоспособность принципа измерения.
Проблема №2: снижение чувствительности и дрейф
Даже если иней не образовался (например, из-за очень сухого морозного воздуха), точность все равно снижается.

  • Замедленная реакция: Полимерный сенсор при низких температурах медленнее поглощает и отдает молекулы воды. Время отклика сильно увеличивается. Показания будут «запаздывать».
  • Дрейф нуля и шкалы: Характеристики сенсора меняются при низких температурах. Встроенная в чип калибровка, рассчитанная на «нормальные» условия, уже не так хорошо компенсирует эти изменения. Погрешность может достигать ±5–7% и более даже в идеальных условиях (без инея).
Проблема №3: конденсация при замерзании
Если датчик охлаждается и температура опускается ниже 0 °C, на нем сначала образуется конденсат, а затем он замерзает. Этот процесс может еще сильнее повлиять на точность измерений, чем образование инея.

Сводка по погрешности BME280 при < 0°C
УсловиеПримерная фактическая погрешностьПричина
Сухой мороз (ОВ < 30%)±5 - 10% ОВ (может быть и больше)Сниж
Влажный мороз (ОВ > 60%)Неизмеримо велика (до 90 % и более)На сенсоре образовался иней. Показания катастрофически занижены и не несут практической информации.
Циклы заморозки/оттаиванияПостоянно растущий дрейфПовреждение полимерной структуры сенсора, калибровка со временем сбивается.
Что делать? Как использовать BME280 на морозе?
Несмотря на все проблемы, BME280 можно заставить работать, но для этого потребуются доработки.
Решение: активный подогрев
Это единственный надежный способ борьбы с инеем.
  1. Принцип: Периодически нагревать датчик до температуры выше 0 °C, чтобы растопить лед и испарить влагу с чувствительного элемента. После этого он может провести одно или несколько точных измерений, прежде чем снова остынет до температуры окружающей среды.
  2. Как это реализовать:
    • Нагревательный элемент: Можно использовать обычный SMD-резистор (например, 10–100 Ом), наклеенный рядом с чипом BME280, или специальный нагревательный элемент.
    • Управление: Подключить нагреватель через MOSFET-транзистор к микроконтроллеру (Arduino, ESP32 и т. д.).
    • Алгоритм:
      • Включить нагрев на 5–15 секунд (время подбирается экспериментально).
      • Выключить нагрев.
      • Подождать 1–2 минуты, пока датчик стабилизируется.
      • Снять показания.
      • Повторять цикл каждые 5–15 минут.
Плюсы этого подхода:
  • Позволяет получать точные показания даже при сильном морозе и высокой влажности.
  • Сохраняет низкую стоимость самого решения.
Минусы:
  • Повышенное энергопотребление (проблема для устройств с батарейным питанием).
  • Показания не непрерывные, а дискретные (с паузами на нагрев и остывание).
  • Нужно написать дополнительный код для управления нагревом.

Итоги по BME280
  • «Из коробки» (без доработок) BME280 НЕДОСТОЧНО надежен для измерения влажности при отрицательных температурах, особенно при высокой влажности. Его показания в таких условиях можно считать случайными
  • при наличии активного подогрева он вполне может использоваться для проектов «сделай сам», домашних метеостанций и других некритичных задач.
  • Для профессиональных или научных задач лучше использовать датчики, изначально предназначенные для работы на морозе (со встроенным управляемым подогревом от E+E, Rotronic и т. д.), или оптические гигрометры.
 

nikolz

Well-known member
Вот ответ на вопрос темы:
Проблема №1 (критическая): образование инея (Frost)
Это основная причина, по которой BME280 (и любой другой емкостный датчик) начинает врать на морозе.

  • Как это происходит: При температуре ниже 0 °C и высокой влажности (близкой к 100 %) влага из воздуха оседает на чувствительном полимерном элементе датчика не в виде воды, а в виде микрокристаллов льда (инея).
  • Эффект: Диэлектрическая проницаемость льда (3,2) в десятки раз ниже, чем у воды (80). Для емкостного сенсора это означает, что он "думает", будто влаги на нем почти нет.
  • Показания влажности резко падают, часто до значений 5-20%, даже если реальная относительная влажность составляет 90-100%. Результат: Это не просто погрешность в 5-10%, это полная неработоспособность принципа измерения.
 

pvvx

Активный участник сообщества
Ваш ИИ опять ошибся.

Реальные измерения показывают, что и при +21..25С BME280 имеют отклонения измерения влажности к -5% уже при 30%.
Зависит от экземпляра, а проверил всего несколько штук, т.к. нет больше вариантов из разных партий производства – брал по одному из произведенных с интервалом в 1 год.

Описанная формулировка по “восстановлению”

  • Сухое запекание не выполнять
    2. Регидратация при комнатной температуре: ~25 °C при относительной влажности >40% в течение >5 дней


Тоже не выполняется. Только частично - через 12 часов уже ничего не меняется.
 

pvvx

Активный участник сообщества
ИИ начитался буржуйских газет и его теперь тянет к подогреву датчиков SHTxx.

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

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

А c BME280 по влажности уже всё и так ясно. Показания по влажности у BME280 не применимы даже в дешевой бытовухе для комнатных температур.
Т.е. никакого смысла брать BME280 вместо BMP280 нет.
 

pvvx

Активный участник сообщества
Датчики SHTxx уже клонированы Beijing Galaxy-CAS Technology Co., Ltd.
Типа GXHT45 - это более дешевая копия SHT45.
 

pvvx

Активный участник сообщества
Xiaomi в том году стала ставить GXHT40 (маркировка "G40") вместо SHT4x в модели MJWSD06MMC и LYWSD03MMC для удешевления (и ухудшения характеристик).
При этом GXHT имеют большее кол-во брака и отличаются по работе с I2С в плане фильтрации помех (скоростей нарастания или спада). Т.е. это не полная копия.
А скопированная с SHT документация отличается только диапазонами напряжения питания…
 

pvvx

Активный участник сообщества
Вот ответ на вопрос темы:
Проблема №1 (критическая): образование инея (Frost)
Это основная причина, по которой BME280 (и любой другой емкостный датчик) начинает врать на морозе.

  • Как это происходит: При температуре ниже 0 °C и высокой влажности (близкой к 100 %) влага из воздуха оседает на чувствительном полимерном элементе датчика не в виде воды, а в виде микрокристаллов льда (инея).
  • Эффект: Диэлектрическая проницаемость льда (3,2) в десятки раз ниже, чем у воды (80). Для емкостного сенсора это означает, что он "думает", будто влаги на нем почти нет.
  • Показания влажности резко падают, часто до значений 5-20%, даже если реальная относительная влажность составляет 90-100%. Результат: Это не просто погрешность в 5-10%, это полная неработоспособность принципа измерения.
Это глупый вывод ИИ, не имеющий никакой статистики реального применения, а основанный на сообщениях Ардуинщиков и далее его несет уже по описанной тематике из других областей.
 

pvvx

Активный участник сообщества
Пример:
Датчики BME280 имеют достаточно массивный железный корпус и часто установлены на массивную печатную плату.
При резком изменении температуры в отрицательную область датчик не успевает остыть до реальной температуры и с него всё испаряется, даже если влажность 99%.
Но при приближении к реальной температуре, он всё равно врет значения влажности более чем в два раза - вместо 80% будет показывать 40%.
И только при обратном изменении температуры, к примеру, из -20С в +20С на нем выпадет иней.
Но если датчик на -20С поместить в пакет или другую герметичную емкость, и из -20С поместить пусть на батарею с +60С, то никакого инея на нем не будет.
Но он всё равно будет дико врать несколько часов чтобы вы с ним не делали.
 
Периодичность замеров зависит от инертности измеряемой системы. Допуск на измеряемый параметр. Например, как быстро будет падать температура в вашем умном доме при отключении отопления. Диапазон комфортной температуры 21гр +/- 0,1 или 21 +/- 1.
 

pvvx

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

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

Но практика показывает, что при переносе датчика BME280 из +25C в -25С c влажностью менее 50% он адекватно показывает влажность. Но если в более 70% - начинает врать. Что соответствует графику из даташита и описанию, что нужно проделать для восстановления, если датчик побывал за границами этого графика.

По этим нескольким отличиям поведения BME280 причина неправильных показаний влажности не сходится с выдумкой ИИ. Что-то там ближе к адсорбции в элементе влажности и кривым коэффициентам для её расчета…
 

pvvx

Активный участник сообщества
Периодичность замеров зависит от инертности измеряемой системы. Допуск на измеряемый параметр. Например, как быстро будет падать температура в вашем умном доме при отключении отопления. Диапазон комфортной температуры 21гр +/- 0,1 или 21 +/- 1.
Считайте сами:
Датчик в прихожей.
Пусть её объем 3x2x2 метра, а температура воздуха +21..25С и влажность 50%.
Открываем типовую по размерам дверь на улицу. Там -25С и влажность пусть будет тоже 50%.
Вопрос:
Через сколько времени и на сколько изменится температура и RH при закрытии и открытии двери?
 

pvvx

Активный участник сообщества
Потом уже будете учитывать инертность готовых бытовых датчиков.

Типично там 1 час к приходу итоговой температуре к реальной с точностью +0.1С на разницу температур в 25С. В основном сказывается теплоемкость батарейки, печатной платы и корпуса.

На проводках, типичный модуль с али, размерами п.п. 15x15 мм вынесенный на проводах, при тех же параметрах придет к показаниям температуры с разницей в 0.1С через 20..30 минут (зависит от влажности) .

Более точно вычислять нет смысла, т.к. разброс достаточно большой из-за конструктивов датчиков.
 

pvvx

Активный участник сообщества
Но тут разговор о влажности. А она в показаниях датчика сказывается значительно быстрее.
И если пересчитывать значения T и RH в “точку росы”, то отклонения по скорости изменения от реального значения будут минимальны.
Но для BME и тут наблюдается значительный тормоз.
 

pvvx

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

pvvx

Активный участник сообщества
Периодичность замеров зависит от инертности измеряемой системы. Допуск на измеряемый параметр. Например, как быстро будет падать температура в вашем умном доме при отключении отопления. Диапазон комфортной температуры 21гр +/- 0,1 или 21 +/- 1.
И если вы хотите удерживать температуру в закрытом помещении без жителей в диапазоне +-1С, то вам уже потребуется период опроса датчика до пары десятков секунд и ПИД/ШИМ регулирование отеплителем любого типа (хоть грейте бетонную плиту). Иначе колебания температуры воздуха в помещении будут больше +-1С, хотя термометр покажет значительно меньшие колебания.

При +-0.1C потребуется дискретность показаний от датчика уже в 0.01C и интервал более 15 секунд с точным подбором мощности нагревательного элемента (или ШИМ с ПИД). Иначе даже малым (до 500Вт) масляным нагревателем и тупым реле вы не удержите температуру в пределах +-0.1С в малой комнате или кладовке.

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

А если инертность отопителя меньше, то частоту опроса цифрового датчика придется ещё повышать.

Пример – свалка тестируемых гигрометров рядом с обдувом кондиционера (раскиданы до 1 метра от выхода внутреннего блока кондиционера):
1770283889876.png
(Zigbee датчики вообще не справляются - одни квадраты)

И температура поступающего хладагента (замер на трубке выхода внешнего блока):
1770283899142.png
(падение в -30С - это авто-разморозка радиатора внешнего блока)

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

nikolz

Well-known member
И если вы хотите удерживать температуру в закрытом помещении без жителей в диапазоне +-1С, то вам уже потребуется период опроса датчика до пары десятков секунд и ПИД/ШИМ регулирование отеплителем любого типа (хоть грейте бетонную плиту). Иначе колебания температуры воздуха в помещении будут больше +-1С, хотя термометр покажет значительно меньшие колебания.

При +-0.1C потребуется дискретность показаний от датчика уже в 0.01C и интервал более 15 секунд с точным подбором мощности нагревательного элемента (или ШИМ с ПИД). Иначе даже малым (до 500Вт) масляным нагревателем и тупым реле вы не удержите температуру в пределах +-0.1С в малой комнате или кладовке.

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

А если инертность отопителя меньше, то частоту опроса цифрового датчика придется ещё повышать.

Пример – свалка тестируемых гигрометров рядом с обдувом кондиционера (раскиданы до 1 метра от выхода внутреннего блока кондиционера):
Посмотреть вложение 14940
(Zigbee датчики вообще не справляются - одни квадраты)

И температура поступающего хладагента (замер на трубке выхода внешнего блока):
Посмотреть вложение 14941
(падение в -30С - это авто-разморозка радиатора внешнего блока)

А в нескольких метрах от кондиционера колебания будут совсем малые и разница усредненных значений будет зависеть от температуры на улице.
Вообще-то на графиках у Вас детерминированный сигнал а не случайный . Причем параметры почти константа. Если в помещении никого нет, и надо +-1 гр то нет смысла измерять часто.
Возможно это ваш пид регулятор все баламутит . Т е Вы сами создаете эти колебания. Типа создали автогенератор. А ваши измерения это есть петля положительной обратной связи
 

pvvx

Активный участник сообщества
Вообще-то на графиках у Вас детерминированный сигнал а не случайный . Причем параметры почти константа. Если в помещении никого нет, и надо +-1 гр то нет смысла измерять часто.
Возможно это ваш пид регулятор все баламутит . Т е Вы сами создаете эти колебания. Типа создали автогенератор. А ваши измерения это есть петля положительной обратной связи
Это так работает кондиционер на нагрев :p
 

pvvx

Активный участник сообщества
Там всё тупо (его родной алго, вмешательств никаких нет) – инверторный компрессор нагнетает выход до фиксированной температуре хладагент R32. В авто режиме поддержания – это +36..38С. Внутренний блок продувает свой радиатор по своему алго (скорость дулки = авто ). Когда температура достигнута, внутренний блок говорит внешнему - всё, заканчивай. Внешний блок вырубается, а внутренний продолжает дуть с ещё горячего своего радиатора. Когда температура на датчике внутреннего блока падает, он говорит внешнему – давай тепло. И так повторяется около 4-х часов. Потом происходит размораживание – оттайка внешнего блока – переключение контура хладагента на обратку и останов всех кулеров. И во внутренний контур компрессор гонит до -33С, а во внешний радиатор +30С и растапливает иней/снег и сливает воду…
 

pvvx

Активный участник сообщества
Другого алго для инвенторного компрессора с максимальной мощностью за 1200 Вт не придумать. Т.к. он не может работать на менее 120 Вт. А свою мощность он выставляет плавно, до получения на выходе этих +36С. В турбо режиме может поднять до +40C и только тогда может работать постоянно, до момента цикла оттаивания. Но мне не надо от него 3..4кВт тепла в доме 6x6 – я сжарюсь...
 
Сверху Снизу