ФОРУМ КУПИТЬ

Последние статьи из блога

ВСЕ СТАТЬИ

Датчик давления воды с цифровым интерфейсом I2C

21/05/2020 11:20:47

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

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

Датчик давления с цифровым интерфейсом I2C
Цифровой датчик давления для шины I2C (0-10 Bar)

Но туда, где есть проблема, на выручку часто приходят коллеги из Китая, предлагающие интересные и недорогие решения. В данной статье речь пойдет о датчике давления с интерфейсом I2C. Основное преимущество такого датчика заключается в том, что он выдает результат сразу в понятных нам барах. То есть, результат не требует пересчета. Никакой внешней обвязки или согласования с портами контроллера не требуется! Для работы с датчиком подойдут любые два порта (SCL/SDA) в режиме цифрового входа. А для питания используется напряжение 3.3В, что очень удобно. Диаметр резьбы также стандартный - 1/4".


PTsensor - поддержка датчика прошивкой MegaD-2561

Для того, чтобы начать работу с датчиком, необходимо настроить цифровые порты контроллера для работы в режиме I2C, выбрать для линии SDA группу "Misc" и устройство "PTsensor".
Подключение проводов: красный -> 3.3V; черный -> GND; белый -> SCL; желтый -> SDA
Требуется версия прошивки 4.44b8 и выше!

После настройки SDA-порта контроллер отобразит надпись "bar" и значение давления. Но есть один нюанс.
Как и многие другие цифровые датчики, такие как DS18B20, DHT22 и т.д., опрос датчика происходит в два этапа.

  • Отправка запроса на измерение давления
  • Получение данных

Если просто зайти на страницу SDA-порта, мы увидим результаты предыдущего измерения. Но одновременно с отображением сохраненного в памяти датчика предыдущего значения контроллер отправит команду на выполнение нового измерения. В практическом смысле получить текущее значение можно просто обновив страницу в браузере кнопкой F5. Но как следует опрашивать датчик программному обеспечению сервера? Есть несколько различных вариантов. Вот примеры.

1. Два раза запросить значение порта запросом "cmd=get" с минимальной задержкой

http://192.168.0.14/sec/?pt=31&cmd=get # получаем предыдущее значение
# пауза 1 секунда
http://192.168.0.14/sec/?pt=31&cmd=get # получаем актуальное значение

2. Используя специализированный параметр i2c_par

http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=ptsensor&i2c_par=1 # Отправка запроса на измерение
# пауза 1 секунда
http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=ptsensor&i2c_par=2 # Получение данных

Следует сказать, что в обоих случаях контроллер вернет значение давления в барах без текстового префикса "bar".
 

Лирическое отступление

Все мы хорошо знаем, что продукция китайских производителей характеризуется, скажем так, особенностями. Это и слабая документация конечно же на китайском языке, которая часто содержит массу ошибок и неточностей; и своеобразная, скажем так, поддержка; и примеры кода, которые противоречат тому, что описано в даташите. Все это в известной степени относится и к данному изделию. Однако в результате длительных экспериментов, наблюдений и проб в прошивку контроллера MegaD-2561 удалось заложить код, который должен давать максимально корректный результат. Я протестировал несколько датчиков в диапазоне от 0 до 5 бар и их показания совпадали с манометром Watts. Не берусь гарантировать, что данный датчик можно использовать в качестве эталонного контрольно-измерительного прибора, но его показания, по-видимому, очень близки к реальности.

Важно! Диапазон измерений 0-10 Бар. При давлении более 10 Бар датчик может выйти из строя.
 

Про температуру

Почему же девайс в прошивке обозначен как PTsensor? Да потому что PT нехитро расшифровывается как Pressure / Temperature.
Да, этот сенсор может отдавать какое-то значение температуры. Именно "какое-то", потому что в отличие от давления все датчики, которые были подключены к стенду, возвращали совершенно разную температуру в диапазоне плюс-минус полкилометра. Тестирование показало, что корреляция с показаниями оригинального DS18B20 прослеживается, но она не идеально линейная. В целом на серверном ПО можно заложить поправочные коэффициенты. Другими словами, в диапазоне бытовых температур датчик может давать некоторое представление в том числе и о температуре жидкости.

Получить значение температуры можно с помощью отдельного запроса

http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=ptsensor&i2c_par=3

Нужно также отметить, что как и в случае с другими I2C-устройствами, при использовании протокола MQTT контроллер раз в минуту будет публиковать информацию о показаниях датчика. MegaD-2561 будет отправлять оба значения: и давление и температуру. Но следует помнить, что в этом режиме показания давления будет минутной давности.
И последнее. Так как датчик не требует инициализации, он может "висеть" на одной шине с другими устройствами и опрашиваться по протоколу HTTP (i2c_dev=ptsensor).


Update от 2025.05.22

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

Тестирование датчиков давления с интерфейсом I2C

Резльтат, честно говоря, порадовал. Максимальный разброс значений (красный и зеленый график) - 0.04 бара. Относительно среднего: +- 0.02 бара. При этом разница в показаниях оставалась одинаковой во всем протестированном диапазоне 3.9 - 5 бар.


Update от 2025.07.25

Некоторые пользователи сообщают, что данные датчики недолго работают в системах отопления с температурой теплоносителя 70-85 градусов. Выходят из строя. А потому не рекомендуется использовать их в системах отопления. При этом в системах холодного водоснабжения датчики работаю без нареканий.

 

Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.



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

(необязательно, не отображается на сайте)


Сортировка комментариев: Последние сверху | Первые сверху

2020-05-21 10:55:03 | Ruslan
Большое спасибо за очередную полезную статью и добавление нужного функционала в прошивку!
А можно как-то намекнуть на ссылку для поиска данного изделия наших китайских товарищей? Хотя бы ключевые слова для поиска или модель, чтобы можно было по картинке идентифицировать "аппарат"...


2020-05-21 11:46:19 | Алексей
А как его найти на просторах Китая?


2020-05-24 10:13:15 | Andrey_B
Описанные датчики есть у нас в наличии.


2020-06-19 09:43:37 | Ruslan
Интересно, можно ли эти датчики применить для слежения за уровнем воды в емкости (скажем, в емкости с водой на 2, 3, 4 м2, используемой для полива)? Если смонтировать датчик в районе дна емкости, хватит ли его чувствительности в "околонулевой" зоне, чтобы более-менее точно определять уровень жидкости?


2020-06-19 11:16:35 | Andrey_B
Ruslan, 1 бар - это 10,12 метра водного столба.
Разрешение датчика, очень грубо говоря - 0.01 бар или ~10 см водного столба.
Не могу ручаться за точность в диапазоне 0.01-0.1, но мне кажется какую-то более-менее правдивую картину он потенциально способен показывать. Можно попробовать.


2020-09-14 13:39:36 | Евгений
Какой диаметр резьбы?
Какой диапазон рабочих температур?


2020-09-14 20:06:00 | Andrey_B
Евгений, диаметр резьбы 1/4 дюйма.
По поводу температуры производитель точных данных не дает, но по косвенным признакам из протокола обмена можно сделать вывод, что в бытовых системах отопления должен работать.


2020-10-26 11:56:44 | Сергей
А можно ли на его базе сделать аналог реле давления, используемое в системах с гидроаккумулятором?


2020-10-27 11:30:48 | Andrey_B
Сергей, можно. Вопрос только в том, кто именно будет осуществлять контроль показаний датчика. Сейчас это возможно только при наличии "сервера".


2020-12-25 13:30:05 | Сергей
Андрей, добрый день! Когда ожидается поступление этого датчика? Написано ожидается 14.12.2020, вроде как уже... а заказ недоступен. Скажите пожалуйста, когда можно будет его заказать и получить?


2020-12-25 20:12:40 | Andrey_B
Сергей, в данный момент эти датчики есть в наличии.


2021-01-03 13:11:47 | Антон
добрый день. а какая максимально возможная длинна кабеля от контроллера до самого датчика? если устанавливать на конце витой пары длинной ~25м будет работать?


2021-01-03 13:51:10 | Andrey_B
Антон, в данном случае на качество связи может влиять множество различных факторов. Но теоретически должно работать.


2021-01-03 20:16:20 | Антон
например каких? у меня от дома до колодца расстояние метров 15, + глубина метров 10. и что-то мне не очень хочется ставить отдельный контроллер возле колодца. по этому и возникает этот вопрос.


2021-01-03 21:05:31 | Andrey_B
Антон, влиять может качество кабеля и способ подключения к жилам, наличие рядом силовых линий и/или электромагнитных помех и прочее.
Например, у меня по шине I2C подключен датчик освещенности MAX44009. Точно не помню, какая там общая длина линии, но что-то вроде 20-25 метров. Ни одного сбоя за много лет.


2023-08-02 11:52:36 | Александр
На сколько максимальных бар рассчитан этот датчик?


2023-08-02 13:04:06 | Andrey_B
Александр, 10 Бар.


2024-02-03 00:29:17 | Павел
А где бы посмотреть datashit этого девайса? И какие библиотеки он требует?


2024-02-05 10:27:28 | Алексей
Есть возможность связать его с ESPHome? Все таки наттивная интеграция в Homee assistant добавит популярности этому датчику