Последние статьи из блога
- MegaD-485-TTL - изолированный конвертер индустриального класса
- MegaD-4VC - подключаем сигналы 0-10В и 4-20мА к контроллеру
- MegaD-4CM - высокоточный 4-х канальный измеритель тока
- MegaD-4US - 4-х канальный датчик напряжения на DIN-рейку
- Как я боролся с собаками с помощью нейросети
- Интеграция ультразвукового датчика скорости и направления ветра
- Установка WiFi-камеры на робота-газонокосилку
- Твердотельный датчик направления и скорости ветра. Эксперимент
- iPhone на стене в качестве панели управления домом
- MegaD-16M-XT - подсветка выключателей и не только
- Переделка выключателей в кнопки и мини-обзор текущего рынка
- RadSens - модульный счетчик Гейгера с интерфейсом I2C
- "U" - значит универсальный. Обзор модуля MegaD-16U-XT
- SCD4x - современная альтернатива для измерения концентрации CO2
- HTU31D - новый датчик температуры и влажности с нагревательным элементом
- Измерение коэффициента пульсации ламп с помощью MegaD-2561
Датчик давления воды с цифровым интерфейсом I2C
21/05/2020 11:20:47
Датчики давления воды и прочих жидкостей часто находят различное применение в домашней автоматизации. Они устанавливаются в системах автополива для контроля давления в магистральном водопроводе и для расчета продолжительности полива. Они используются в системах отопления в качестве элемента безопасности, указывающего на возможные протечки или необходимость подпитки. Их можно встретить в системах водоснабжения. Датчики могут отслеживать процесс наполнения накопительных емкостей, работу насосного оборудования и систем водоподготовки.
Однако в текущий момент на рынке представлены в основном датчики давления с аналоговым выходом типа "ток" или "напряжение". Подключение подобных сенсоров к контроллеру сопряжено с определенными сложностями. Необходимо использовать внешнюю навесную обвязку для согласования с контроллером. А кроме того, подключать такие датчики можно только к портам с функцией АЦП. Но что больше всего расстраивает пользователей, так это необходимость пересчета показаний напряжения, которое измеряет АЦП контроллера, в необходимые единицы - в данном случае в бары. И универсальной формулы не существует. Для каждой модели датчика требуется программирование собственного алгоритма в соответствии с графиками и таблицами в документации производителя, а также с учетом номиналов внешней обвязки согласования. Не просто...

Цифровой датчик давления для шины 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 случайных датчика из последней партии и подключил их к своей системе водоснабжения.

Резльтат, честно говоря, порадовал. Максимальный разброс значений (красный и зеленый график) - 0.04 бара. Относительно среднего: +- 0.02 бара. При этом разница в показаниях оставалась одинаковой во всем протестированном диапазоне 3.9 - 5 бар.
Update от 2025.07.25
Некоторые пользователи сообщают, что данные датчики недолго работают в системах отопления с температурой теплоносителя 70-85 градусов. Выходят из строя. А потому не рекомендуется использовать их в системах отопления. При этом в системах холодного водоснабжения датчики работаю без нареканий.
Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.
Добавить комментарий:
Сортировка комментариев: Последние сверху | Первые сверху
2024-02-05 10:27:28 | Алексей
Есть возможность связать его с ESPHome? Все таки наттивная интеграция в Homee assistant добавит популярности этому датчику
2024-02-03 00:29:17 | Павел
А где бы посмотреть datashit этого девайса? И какие библиотеки он требует?
2023-08-02 13:04:06 | Andrey_B
Александр, 10 Бар.
2023-08-02 11:52:36 | Александр
На сколько максимальных бар рассчитан этот датчик?
2021-01-03 21:05:31 | Andrey_B
Антон, влиять может качество кабеля и способ подключения к жилам, наличие рядом силовых линий и/или электромагнитных помех и прочее.
Например, у меня по шине I2C подключен датчик освещенности MAX44009. Точно не помню, какая там общая длина линии, но что-то вроде 20-25 метров. Ни одного сбоя за много лет.
2021-01-03 20:16:20 | Антон
например каких? у меня от дома до колодца расстояние метров 15, + глубина метров 10. и что-то мне не очень хочется ставить отдельный контроллер возле колодца. по этому и возникает этот вопрос.
2021-01-03 13:51:10 | Andrey_B
Антон, в данном случае на качество связи может влиять множество различных факторов. Но теоретически должно работать.
2021-01-03 13:11:47 | Антон
добрый день. а какая максимально возможная длинна кабеля от контроллера до самого датчика? если устанавливать на конце витой пары длинной ~25м будет работать?
2020-12-25 20:12:40 | Andrey_B
Сергей, в данный момент эти датчики есть в наличии.
2020-12-25 13:30:05 | Сергей
Андрей, добрый день! Когда ожидается поступление этого датчика? Написано ожидается 14.12.2020, вроде как уже... а заказ недоступен. Скажите пожалуйста, когда можно будет его заказать и получить?
2020-10-27 11:30:48 | Andrey_B
Сергей, можно. Вопрос только в том, кто именно будет осуществлять контроль показаний датчика. Сейчас это возможно только при наличии "сервера".
2020-10-26 11:56:44 | Сергей
А можно ли на его базе сделать аналог реле давления, используемое в системах с гидроаккумулятором?
2020-09-14 20:06:00 | Andrey_B
Евгений, диаметр резьбы 1/4 дюйма.
По поводу температуры производитель точных данных не дает, но по косвенным признакам из протокола обмена можно сделать вывод, что в бытовых системах отопления должен работать.
2020-09-14 13:39:36 | Евгений
Какой диаметр резьбы?
Какой диапазон рабочих температур?
2020-06-19 11:16:35 | Andrey_B
Ruslan, 1 бар - это 10,12 метра водного столба.
Разрешение датчика, очень грубо говоря - 0.01 бар или ~10 см водного столба.
Не могу ручаться за точность в диапазоне 0.01-0.1, но мне кажется какую-то более-менее правдивую картину он потенциально способен показывать. Можно попробовать.
2020-06-19 09:43:37 | Ruslan
Интересно, можно ли эти датчики применить для слежения за уровнем воды в емкости (скажем, в емкости с водой на 2, 3, 4 м2, используемой для полива)? Если смонтировать датчик в районе дна емкости, хватит ли его чувствительности в "околонулевой" зоне, чтобы более-менее точно определять уровень жидкости?
2020-05-24 10:13:15 | Andrey_B
Описанные датчики есть у нас в наличии.
2020-05-21 11:46:19 | Алексей
А как его найти на просторах Китая?
2020-05-21 10:55:03 | Ruslan
Большое спасибо за очередную полезную статью и добавление нужного функционала в прошивку!
А можно как-то намекнуть на ссылку для поиска данного изделия наших китайских товарищей? Хотя бы ключевые слова для поиска или модель, чтобы можно было по картинке идентифицировать "аппарат"...