Меню

Arduino датчик давления воды в системе водоснабжения

Цифровой манометр на Ардуино

Как сделать цифровой манометр для измерения высокого давления с помощью которого можно измерять не только давление воздуха, но и жидкостей ? Большинство популярных и недорогих датчиков пригодны лишь для создания метеостанций и альтиметров. Они не могут работать в воде и не могут измерять большие значения давления — но выход есть — влагозащищенные датчики серии MS5803

MS5803-01BA
· Модуль высокого разрешения, 10см
· Рабочий диапазон: от 10 до 1300 мбар, от -40 до +85 ° C

MS5803-02BA
· Модуль высокого разрешения, 20см
· Рабочий диапазон: от 300 до 1100 мбар, от -40 до +85 ° C
· Расширенный диапазон давления: от 10 до 2000 мбар

MS5803-05BA
· Модуль высокого разрешения, 30см
· Рабочий диапазон: от 0 до 5 бар, от -40 до +85 ° C

MS5803-07BA
· Отличная точность как для высотомеров, так и для погружений до глубины 70 метров
· Рабочий диапазон: от 0 до 7 бар, от -20 до +85 ° C
· Модуль высокого разрешения, 0,4 м воздуха / 1 мм воды

MS5803 14BA
· Модуль высокого разрешения, 0,2 мбар
· Рабочий диапазон: от 0 до 14 бар, от -40 до +85 ° C
· Разрешение по глубине 1см

MS5803-30BA
· Модуль высокого разрешения, 0,5 мбар
· Рабочий диапазон: от 0 до 30 бар, от -40 до +85 ° C

Как мы видим используя данные датчики можно собрать манометр практически под любую задачу — от метеостанции и альтиметра до подводного компьютера для дайвинга. Я для своего проекта приобрел датчик MS5803-05BA который в конечно итоге планирую использовать для глубиномера на самодельной подводной лодке.

Кроме того все датчики обладают следующими характеристиками:
· Низкая мощность, 1 мкА (в режиме ожидания · Герметичный для наружных устройств

Датчик миниатюрный — высокопрочный корпус выполненный из нержавеющей стали имеет диаметр чуть меньше 6мм.
Для подключения к Ардуино (ESP8266) необходимо припаять 4 провода:
(я использовал МГТФ 0.07 кв.мм)

Монтажная схема тестового стенда для подключения датчика MS5803 и дисплея для отображения показаний.Схема тестового

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

Для работы с датчиком необходимо скачать и установить библиотеку которую можно найти по этой ссылке . Обратите внимание, что библиотека должна быть именно для вашей версии датчика.
Для работы с дисплеем от Амперки можно воспользоваться этой библиотекой
Код для Ардуино можно скачать здесь
Данным датчиком также можно измерять уровень жидкости в какой-нибудь емкости:

Подробности подключения, сборки и испытания манометра смотрите в видео:

Испытания манометра можно посмотреть в этом видео:

Источник

Arduino.ru

Контроллер давления воды в доме

Я, как и многие другие, живу в частном доме без центрального водоснабжения. В таком случае вода добывается ( разными способами ) и дом ей снабжается самостоятельно. Это может быть скважина, колодец, озеро или комбинации их. В любом случае присутствует насос и реле давления. Чаще всего используют самой простое механическое реле давление воды ( от 300 до 800 руб )

Механическая мембрана переходит из одного состояния в другое и переключает мощные контакты, пружинками можно регулировать давление по которому выключается/включается насос. Точность не высока, но для дома точно и не надо, гистерезис большой, до 0,8..1,2 атм. Например при давлении 4.0 атм насос выключается, а включиться при падении давления до 2,8..3,0 атм. Меня такой разброс не устраивал, почему опишу ниже. Можно было применить электронное реле давления выпускаемые как китайцами так и в России. У них гистерезис можно выставлять свой на усмотрение, но меня это также не устраивало. Основная причина описана ниже.

На РИС представлена схема снабжения водой моего дома. Вода берется из колодца глубиной 10 метров. Насос стоит на самом дне. Сам дом двухэтажный + подвал, гидроаккумуляторы стоят в подвале. Потребители воды есть как на каждом этаже, а также в подвале и на улице, и везде хочется иметь нормальную подачу воды.

Для снабжения 2 этажа дома насосу уже надо преодолеть 20 метров высоты и по горизонтали 20 метров, это уже минус 2,2 атм. от макс давления насоса. Обычные насосы создают давление максимум 6..7 атм. Иные и покупать не стоит, дороги и в нужный момент замены не найти. При 6 атм. ( 60 м высоты ) насос уже воду практически не подает, струйка как спичка в лучшем случае. Более менее объемная подача воды до 5 атм. ( 50 метр. высоты). Т.ч. обычно реле давления настраивают на 3,5 -4 атм. При этом на высоте второго этажа давление будет минус 1 атм = 2,5..3.0 атм в лучшем случае. А сантехника работает ( душ, автоматика унитаза и т.п. ) до 1,8..2 атм, ниже уже проблемы. Но кроме всего прочего есть еще в доме один элемент — ФИЛЬТР воды ( E) , у меня стоит 20 дюймовый — вот такой

И надо понять, что сквозь него продавить воду по объему в единицу времени сравнимую с тратой воды через открытый кран не получиться. Поэтому в доме стоят два гидроаккумулятора, один на входе фильтра, второй после него. Это существенно уменьшает нагрузку на насос, он запускается, поднимает давление в первом гидроаккумуляторе (С) до 3,5 атм. и выключается, затем фода продавливается через фильтр в во второй гидроаккумулятор ( G), давление падает на входе и насос включается снова. Итог, когда давление в гидроаккумуляторах выравнивается на уровне 3,5 атм. (рассматриваем работу с механическим реле давлением « B » ), процесс останавливается. Запаса воды в гидроаккумуляторе ( при их объеме по 100 литров) образуется в размере 50-60 литров, остальную воду использовать уже не удается, т.к. в них падает давление.

Читайте также:  Массаж повысить давление в домашних условиях

Рассмотрит самую критическую работу. Утро, все встали и пошли по туалетам, сливать воду из бочков, лить воду из кранов и принимать душ, на всех этажах, готовить завтрак, и много другое. Вода потекла рекой. И это длится не 1 минуту, а как обычно час.

Итог, вода из гидроаккумулятора ( G) быстро заканчивается, давление в доме начинает падать, вода медленно продавливается через фильтр и когда давление на входе в дом будет менее 2. 3 атм насос включиться, НО !! внутри дома после фильтра давление уже 2.0..2.2 атм, а на 2 этаже и того около 1..1,2 атм. Т.к. чтобы нормально вода шла через фильтр перепад давления должен быть более 0,5 атм. И включение насоса сильно не помогает, уже опоздали, на входе давление повышается до 3..3,5 атм, на выходе фильтра в лучшем случает 2,5..2,8 а на втором этаже 1,5..1,8 атм. Думать надо было раньше. Но механическое реле на это не способно. А если фильтр стоит уже более 2 недель, пропускная способность его падает ( постепенно засоряется ) и ситуация еще хуже.

Решение снабжения дома водой принято такое. Вместо механического реле давления установлен разработанный мною контроллер ( W ) с двумя электронными датчиками давления ( D и F ). Алгоритм работы состоит из нескольких задач. Прошу не забывать, потребление воды может быть и на улице ( баня, мытье авто и т.д.)

1. Поддержания давления в Гидроаккумуляторе (С) в пределах установленного гистерезиса, я ставлю мин 3,2 атм, макс 3,5 атм.

2. Поддержание давления в доме на втором гидроаккумуляторе ( G) я себе ставлю 3,4 атм.

3. Если давление в доме менее 3,4 атм и давление снаружи не более 3,5 атм — насос включить, При достижении давления снаружи более 3,5 атм, но не менее 5 сек работы, насос выключить.

4. Если давление снаружи менее 3,2 атм., насос включить, при достижении давления снаружи более 3,5 атм., насос выключить, но не менее 5 сек работы насоса.

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

6. Производить настройку порогов срабатываний контроллера по датчикам и их гистерезис.

Устройство выполнено на 2-х платах, для установки на ДИН рейку, корпус был изготовлен на 3D принтере. Индикатор может быть простым, т.к. информации мало, но морока со светодиодами и надписями больше чем с цветным TFT дисплеем. Выбор был Цветной TFT. На нижней плате — источник питания, разъемы для подключения датчиков выхода для управления реле SSR механизма. На верхней плате сам микроконтроллер, индикатор кнопка управления. Схема базы, нижней платы

Схема Индикатора, Верхней платы

Датчики давления купленные на Али Экспресс

Его параметры и описание с сайта

Он может измерять давление некоррозионного газа,

жидкости и линейного аналогового напряжения на выходе.

-Рабочее напряжение VCC: 5,0 В постоянного тока

-Выходное напряжение: 0,5-4,5 В постоянного тока, Vout = VCC * (1,6 * Давление + 0,1)

-Давление Масштаб: 0-0,5 МПа

-Самый большой Давление: 1,5 МПа

-Уничтожить Давление: 3,0 МПа

-Диапазон рабочих температур: 0-85 градусов по Цельсию

-Погрешность измерения: ± 1,5% FSO

-Температура погрешность в допустимом диапазоне: ± 3,5% FSO

-Время ответа по уровню поверхности:

-Интерфейс насоса с переменной скоростью: G1/4 (1/4 дюйма)

-Выходной разъем: XH2.54MM-3P

-Выходные разъемы: желтый (передача данных), красный (VCC), черный (GND)

-Длина рукава: 20 см

Вид контроллера в работе

Вид Шкафа с реле и автоматом

Вид установки датчика давления входного гидроаккомулятора. Обрамлен двумя вентилями, верхний для смены датчика, нижний для периодического слива отстоя скопившегося у датчика давления.

Источник

Как подключить датчик давления к Ардуино

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

Расширение функционала стало доступным за счет широкого использования микроконтроллеров. В своей основе — они представляют собой миниатюрные компьютеры, ориентированные на управление внешними устройствами в рамках своей программы и происходящих вокруг факторов. Информацию о последних логический модуль получает за счет специализированных датчиков.

Читайте также:  Системы увлажнения низкого давления merlin

Существует не так много моделей микроконтроллеров, служащих базой «умной» техники. Среди них определенной популярностью пользуется Arduino, в качестве достаточно универсальной основы создания интеллектуального оборудования. Своей известности микроконтроллер обязан не только быстродействием или удобством подключения внешних компонентов, но и широтой их моделей, представленной на рынке. Среди последних, богатый выбор сенсоров, устройств индикации, средств интерфейса и получения команд, сетевых и коммуникационных плат, а также управляющих внешней аппаратурой узлов.

Собственно, чувствительные элементы платформы и будут рассмотрены в теле статьи, а конкретно один из них — датчик давления Ардуино.

Что измеряет сенсор

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

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

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

Устройство

Суммарное количество чувствительных элементов датчика давления зависит от его модели. Главными остается пьезоэлементы, определяющие саму силу действия на свою плоскость. Физическая основа работы – возникновение электрического тока на внутренних кварцевых пластинах в результате их деформации при соприкосновении с влияющим фактором. В настоящем случае, о котором идет речь — газом или жидкостью.

Выработанное аналоговое напряжение идет в модуль АЦП преобразования, где его сила перекодируется в числовой вид и через интерфейсы датчика I2C и SPI отправляется на микроконтроллер. Библиотека функций, ориентированных на работу с конкретным сенсором, переводит полученные величины в понятный человеком вид, на основе единиц измерений давления в стандарте Си — Паскалях.

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

Представленные на рынке модели

Датчики Arduino, относящиеся к давлению, делятся согласно средам применения и конструктивным особенностям, непосредственно связанным с получением конечного результата. Есть модели, защищенные от влаги и предназначенные для применения в жидкостях, другие работают только в качестве анероидов атмосферы, иные устанавливаются в разрыв движения потока, четвертые в качестве определителей внутреннего давления наполняющего емкость газа. Их всех объединяет наличие общих интерфейсов подключения к микроконтроллеру и низкое, не более нескольких милливатт (реже Ватт), потребление энергии.

Наименование Питание (V) Точность Разрешение
(hPa)
Диапазон (hPa) Рабочая температура
(°C)
Интерфейсы Примечание
SPI I2C UEXT
Атмосферные
MOD-BMP085 1.8–3.6 0.03 hPa 0.01 300–1100 (от 500 м ниже уровня моря до 9 км. высоты –40..+85 + + Измерение температуры
GY-BMP280 3.3 0.12 hPa 0.0016 300–1100 –40..+85 + + Измерение температуры до +65, с точностью 0.01
MD-PS002 5V ±0.2% –100–+150 –40..+125 + Только не агрессивные среды
Жидкостные
MS5803-02BA 1.8–3.6 20 см жидкости 30–1100
(10–2000)
–40..+85 + +
MS5803-07BA 1.8–3.6 0–7 мбар
(70 м погружения)
–20..+85 + +
Open-Smart 5V G1/4 0-1.2 MPa Hydraulic Pressure Sensor for Non-Corrosive Water 5 1.5 % 1–2.4 мбар (max 3) 0..+85 Собственный коннектор, соединяемый к I2C через резистор, датчик оснащен термометром

Конечно, в приведенном списке числятся далеко не все существующие модели. В нем указаны только те, которые обладают определенной популярностью и затребованы пользователями.

Схемы подключения датчика давления жидкости

Среди множества схем, демонстрирующих работу Arduino с датчиком давления жидкости, была выбрана наиболее простая, использующая минимум радиодеталей. С ее помощью можно проводить измерение глубины погружения или уровня заполнения сосуда водой. Итак, понадобится:

Элемент Наименование/характеристики Количество
Микроконтроллер Arduino Nano/Uno или любой клон 1
Экран Display 2×16 ST7032 1
Датчик MS5803 1
Резистор 10 кОм 2
Конденсатор 0.1 мкФ 1
Кнопка Любая, без фиксации нажатия 1

Библиотека работы с датчиком давления берется здесь: https://github.com/millerlp/MS5803_05

С экраном тут: https://yadi.sk/d/KKJwJ1VtDx9PCw

Принципиальная схема

Кнопка нужна для выбора режима отображения — однократное нажатие переключает вывод абсолютных и относительных данных, с сохранением состояния на последующих опросах датчика.

Скетч

Достаточно простая программа для микроконтроллера, заливаемая в него при помощи Arduino IDE:

Читайте также:  Как рассчитать давление газа в сосуде формула

#DEFINE fButton_pin 2
#DEFINE LED_pin 13
#DEFINE DISPLAY_height 2
#DEFINE DISPLAY_width 16
#DEFINE DISPLAY_contrast 63
// Подключение библиотек и инициализация датчика вместе с дисплеем
#include
#include
// Wire.h подключать не нужно он уже вызван в TroykaTextLCD.h
MS_5803 S = MS_5803(512);
TroykaTextLCD DISPLAY;
// переменные программы
float mmWater = 0;
float TechAtmosphere = 0;
float dObtainedValue = 0;
float ObtainedValue = 0;
void setup() <
// параметры экрана
DISPLAY.setContrast(DISPLAY_contrast);
DISPLAY.begin(DISPLAY_width, DISPLAY_height);
// Установка датчика в 0, FALSE функции блокирует отправку технической информации в консоль
S.initializeMS_5803(FALSE);
delay(1000); // ждем, пока он выполнит инициализацию
// кнопка и светодиод показывающий режимы
pinMode(fButton_pin, INPUT_PULLUP);
pinMode(LED_pin, OUTPUT);
>
void loop() <
// Инициировать сенсор в режим взятия показаний
S.readSensor();
DISPLAY.setCursor(0, 0);
// получить и высветить значения в верхней строчке экрана
ObtainedValue = S.pressure();
DISPLAY.print(ObtainedValue);
DISPLAY.print(«mbar «);
DISPLAY.print(S.temperature());
DISPLAY.print(«C»);
// действия при нажатии кнопки
if (!digitalRead(fButton_pin)) <
// Изменение режима работы светодиода на противоположный
digitalWrite(LED_pin, !digitalRead(LED_pin));
dObtainedValue = ObtainedValue;
>
if (!digitalRead(LED_pin)) <
// абсолютные значения
mmWater = ObtainedValue * 1.019744288922 * 10;
TechAtmosphere = ObtainedValue * 0.001019716212978;
> else <
// относительные значения
mmWater = ((ObtainedValue — dObtainedValue) * 1.019744288922) * 10;
TechAtmosphere = (ObtainedValue — dObtainedValue) * 0.001019716212978;
>
// отображаем на экране значения в технических атмосферах и см воды
DISPLAY.setCursor(0, 1);
DISPLAY.print(TechAtmosphere,3);
DISPLAY.print(«TA «);
DISPLAY.print(mmWater,0);
DISPLAY.print(«mm»);
delay(1000);
DISPLAY.clear();
>

Схемы подключения датчика давления воздуха

Следующая конструкция построена на сенсоре-анероиде BMP180. Экран, в нее входящий, будет отображать текущее давление атмосферного воздуха и температуру окружающей среды. Для изготовления понадобятся:

Элемент Наименование/характеристика Количество
Микроконтроллер Arduino UNO/Nano 1
Датчик BMP180 1
Экран HD447080LCD-1602 1
Резистор 100 Ом 1
Регулируемый резистор До 10 кОм 1

Ну и конечно провода для связки всего названого в единую систему.

Библиотека, управляющая сенсором берется тут: https://github.com/adafruit/Adafruit-BMP085-Library

Принципиальная схема

Фотография итогового устройства:

Плата-шилд самодельная, для желающих повторить, она вблизи:

Датчик питается от 3.3V, соответственно и подключаются его контакты получения энергии (VCC и GND) к плате Arduino. Для передачи данных используются входы A5 (SCL) и A4(SDA). Дисплей с микроконтроллером соединяется согласно следующей таблицы:

Arduino Экран
D6 E и D4 вместе
D4 D5
D3 D6
D2 D7
GND GND
D7 RS

Скетч

Приведенная программа — всего лишь базис операций. Ее можно модифицировать по собственному разумению, добавляя функции отслеживания давления или температуры. Можно даже использовать конечное устройство, после необходимой модификации кода, в качестве своеобразного барометра, предупреждающего об идущей буре. Показания давления, в названом случае сильно упадут.

#define mPAUSE 2500
#include
#include
#include

Adafruit_BMP085 SENS;
LiquidCrystal DISPLAY(7, 6, 5, 4, 3, 2);
void setup() <
DISPLAY.clear();
>
void loop() <
float p = SENS.readSealevelPressure()/101.325 * 0.76;
DISPLAY.setCursor(1, 0);
DISPLAY.print(«T.= «);
if ( SENS.readTemperature()

Использование стороннего аналогового датчика давления

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

Примером послужит WABCO 4410400130 — сенсор указанного плана, используемый на большегрузных фурах. Единственное, требующее внимания в представленной схеме — питание у элемента раздельно с Arduino. В последнем, просто нет требуемых для запуска датчика +24 В. В связи с чем и приходится использовать дополнительный блок энергообеспечения, с правильными и достаточными характеристиками питания — 8–32 V постоянного тока, при минимуме 400 mА мощности.

Что касается соединения сенсора напрямую к плате микроконтроллера — в нем на выходе не более 5 В. И чем больше давление, тем меньший ток будет поступать на аналоговые контакты логического устройства. Вот только, на всякий случай, рекомендуется проверить изначальный выход мультиметром, с целью контроля варианта «пробития» сенсора, с возникновением обстоятельств беспрепятственного связывания OUT с минусом или плюсом питающей детектор линии.

Пример скетча получения информации с аналогового датчика:

#include

LiquidCrystal_I2C DISPLAY (0x27, 16, 2);
#define Detector_Pin 0
#include
void setup() <
DISPLAY.init();
DISPLAY.clear;
AnalogReference(DEFAULT);
DISPLAY.setCursor (0,0);
DISPLAY.print(«Data:»);
>
void loop() <
static int AVC = 0;
AVC = (AVC * 3 + AnalogRead(Detector_Pin))/4;
float v = AVC * 5.0 / 1024.0;
float ObtainedValue = (v — 0.5) * 10/4;
DISPLAY.setCursor(0,1);
DISPLAY.print(» «);
DISPLAY.setCursor(0,1);
DISPLAY.print (ObtainedValue);
>

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

И в окончании, технические характеристики WABCO 4410400130, для сравнения с похожими датчиками Arduino:

  • Тип: пьезоэлемент
  • Питание: 8–32 V
  • Рабочая температура: −40..+80 °С
  • Диапазон измерения: от 0 до 10 bar
  • Точность: 0.2–0.3 %
  • Предельное давление разрушения: 16 bar

Резюмируя

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

Видео по теме

Источник

Adblock
detector