Большое отклонение температуры с датчика BME280

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

Модератор: immortal

Ответить
Forth
Сообщения: 48
Зарегистрирован: Вс янв 13, 2019 4:37 pm
Благодарил (а): 39 раз
Поблагодарили: 0

Большое отклонение температуры с датчика BME280

Сообщение Forth » Вт мар 30, 2021 7:33 am

Помогите пожалуйста решить проблему с передачей не корректных данных с BME280.
Подключил 2 датчика BME280 по принципу описанному тут http://digitrode.ru/computing-devices/m ... s-i2c.html
В результате получаю периодические большие отклонения +150, -150 в разное время на обоих датчиках. Питание подаю 5В.
Скрины:
http://vfl.ru/fotos/895a32c433873945.html
http://vfl.ru/fotos/34c89f3d33873946.html
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Большое отклонение температуры с датчика BME280

Сообщение Chainik » Вт мар 30, 2021 8:52 am

Программно вопрос можно решить отбрасыванием явно нереальных значений + повторный опрос (перед записью полученных значений в свойство). Т.е. смотрим на полученное значение, если оно выходит за диапазон "нормальных", делаем повторный опрос датчика (можно несколько раз). Если даже после этого нормальное значение получить не удалось, пишем куда-нибудь сообщение, что "датчик врет" и думаем, что с этим делать дальше.
За это сообщение автора Chainik поблагодарил:
Forth (Вт мар 30, 2021 11:27 am)
Рейтинг: 1.16%
ZyaK
Сообщения: 407
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск
Благодарил (а): 45 раз
Поблагодарили: 69 раз

Re: Большое отклонение температуры с датчика BME280

Сообщение ZyaK » Вт мар 30, 2021 10:18 am

i2c шина предназначенная для использования внутри устройств и довольно критична к помехам и длине проводов.
резисторы подтягивающие есть? на сколько стоят? в идеале питание датчика должно быть таким же как питание процессора, иначе нужна схема согласования уровней. так же если это собрано на макетке "соплями" помех не избежать. еще можно попробовать понизить скорость
За это сообщение автора ZyaK поблагодарил:
Forth (Вт мар 30, 2021 11:27 am)
Рейтинг: 1.16%
PI2 + MQTT + 5 ESP8266 + Atmega16
Forth
Сообщения: 48
Зарегистрирован: Вс янв 13, 2019 4:37 pm
Благодарил (а): 39 раз
Поблагодарили: 0

Re: Большое отклонение температуры с датчика BME280

Сообщение Forth » Вт мар 30, 2021 11:27 am

ZyaK писал(а):
Вт мар 30, 2021 10:18 am
i2c шина предназначенная для использования внутри устройств и довольно критична к помехам и длине проводов.
резисторы подтягивающие есть? на сколько стоят? в идеале питание датчика должно быть таким же как питание процессора, иначе нужна схема согласования уровней. так же если это собрано на макетке "соплями" помех не избежать. еще можно попробовать понизить скорость
Подтягивающие подтягивающие не ставил, читал, что для EЫP32 они не требуются, могу поставить для эксперимента, какое значение рекомендуете?
Ранее подавал на датчик напряжение 3,3 В, тоже были помехи, добрые люди посоветовали питать от 5 В "помехи должны пропасть", но нет.
Все собрано и спаяно на "постаянку", на "верняка"
Что значит понизить скорость? Как? Есть ссылка на описание процесса?
TrDA
Сообщения: 147
Зарегистрирован: Ср сен 27, 2017 9:13 pm
Откуда: MSK
Благодарил (а): 235 раз
Поблагодарили: 38 раз

Re: Большое отклонение температуры с датчика BME280

Сообщение TrDA » Вт мар 30, 2021 1:08 pm

Forth писал(а):
Вт мар 30, 2021 11:27 am
Подтягивающие подтягивающие не ставил, читал, что для EЫP32 они не требуются, могу поставить для эксперимента, какое значение рекомендуете?
Ранее подавал на датчик напряжение 3,3 В, тоже были помехи, добрые люди посоветовали питать от 5 В "помехи должны пропасть", но нет.
Все собрано и спаяно на "постаянку", на "верняка"
Что значит понизить скорость? Как? Есть ссылка на описание процесса?
Всё очень просто:
1. Не слушайте псевдо специалистов по i2c шине (сразу см. п.5).
2. Подтягивающие резисторы:
- 10kOm (или реже 4.7kOm или ещё реже 12kOm), ничего не мешает поставить их на конечном устройстве (слейве) и/или на головном устройстве (мастере).
- и обычно они уже(!!!) установлены на конечном устройстве.
- и всегда они уже(!!!) установлены на головном, на специальных i2c пинах. Для esp32 это: GPIO 22 (SCL) and GPIO 21 (SDA).
- т.е. одновременно(!!!) они могут быть установлены и конечном устройстве и на головном.
- иными словами: их дополнительная установка в 95% случае не требуется.
3. Сенсор BME280 (как и большинство сенсоров i2c):
- всеяден, питание от 3.3V (на очень короткой линии) и до 5V (на длинной линии - до 2х метров по витой паре).
- требователен к чистоте(!) питания.
4. Броски значений до +/- 150С, это или:
- глюки используемой вам i2c библиотеки (чаще всего), используйте проверенные готовые прошивки, например Tasmota.
- скачки по питанию, поставьте электролитический алюминиевый конденсатор 10V 500mF (https://www.chipdip.ru/catalog/aluminum ... &x.359=2mK), или замените блок питания на заведомо более мощный и качественный.
- помехи в линии, уменьшите длину лини и/или используйте "компютерную" витую пару.
5. Для информации про i2c шину (обе ссылки написаны мной):
- кратко и на русском (https://4pda.ru/forum/index.php?showtop ... ry97913549).
- подробнее и английском (https://github.com/arendst/Tasmota/discussions/10827).
За это сообщение автора TrDA поблагодарили (всего 2):
Forth (Вт мар 30, 2021 1:53 pm) • AK1 (Вт мар 30, 2021 4:15 pm)
Рейтинг: 2.33%
Всем удачи.
Спрашивайте - не стесняйтесь.
Forth
Сообщения: 48
Зарегистрирован: Вс янв 13, 2019 4:37 pm
Благодарил (а): 39 раз
Поблагодарили: 0

Re: Большое отклонение температуры с датчика BME280

Сообщение Forth » Вт мар 30, 2021 2:23 pm

Chainik писал(а):
Вт мар 30, 2021 8:52 am
Программно вопрос можно решить отбрасыванием явно нереальных значений + повторный опрос (перед записью полученных значений в свойство). Т.е. смотрим на полученное значение, если оно выходит за диапазон "нормальных", делаем повторный опрос датчика (можно несколько раз). Если даже после этого нормальное значение получить не удалось, пишем куда-нибудь сообщение, что "датчик врет" и думаем, что с этим делать дальше.
Проверку на корректность данных лучше где сделать в МД или в ESP32 (скетч)?
noname_npc
Сообщения: 48
Зарегистрирован: Сб июл 21, 2018 9:08 pm
Откуда: Калининград
Благодарил (а): 10 раз
Поблагодарили: 5 раз

Re: Большое отклонение температуры с датчика BME280

Сообщение noname_npc » Сб апр 24, 2021 2:20 pm

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

if (($value < $this->getProperty('minValue')) || ($value > $this->getProperty('maxValue'))) {
$value=NULL;
}

Получилось что каждый сенсор можно настроить индивидуально.

P.s. У меня некорректные значения приходят только при работе частотного преобразователя скважинного насоса. И никакие фильтры , дорогие валютные БП и УПС не помогают.
Qdesnikmak
Сообщения: 34
Зарегистрирован: Ср июл 22, 2020 1:30 pm
Благодарил (а): 6 раз
Поблагодарили: 1 раз

Re: Большое отклонение температуры с датчика BME280

Сообщение Qdesnikmak » Сб май 29, 2021 3:47 pm

noname_npc писал(а):
Сб апр 24, 2021 2:20 pm
У меня все сенсоры на ПУ заведены и что бы отфильтровать некорректные значения я сделал так.
В ПУ есть minValue и maxValue свойства. И так я не использую оповещения о выходе показаний сенсора за границы то я использовал значения этих свойств для фильтрации. На каждом сенсоре выставил в этих свойствах пределы и в классовом свойстве Value включил проверку значений - расширенный (кодом) и там добавил этот код.

if (($value < $this->getProperty('minValue')) || ($value > $this->getProperty('maxValue'))) {
$value=NULL;
}

Получилось что каждый сенсор можно настроить индивидуально.

P.s. У меня некорректные значения приходят только при работе частотного преобразователя скважинного насоса. И никакие фильтры , дорогие валютные БП и УПС не помогают.
Возможно на частотном преобразователе (на каждой фазе) нужно ставить L-фильтр. Почитайте на него инструкцию. В основном такие фильтры ставят со стороны двигателей, но возможно и на входе могут устанавливаться.
Orange Pi Lite + Armbian + MJD Majordomo пока на стадии изучения...
Ответить