Как работает датчик уровня воды и его взаимодействие с Arduino

Добавлено 5 марта 2022 в 22:15

Сохранить или поделиться

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

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


Как работает датчик уровня воды и его взаимодействие с Arduino

Обзор аппаратного обеспечения

Данный датчик содержит ряд из десяти открытых медных дорожек, пять из которых являются питающими, а пять – чувствительными.

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

Обычно эти дорожки не соединены между собой, но при погружении они соединяются водой.

Рисунок 1 – Датчик уровня воды

На плате расположен индикатор питания, который загорается при подаче на плату напряжения питания.

Виды гидростатических уровнемеров

Датчики уровня гидравлического типа выполняются в двух конструкционных вариантах.

Первый вариант исполнения – погружные преобразователи давления, что представляют собой 2 блока, объединенных компенсационным кабелем. Измерительный блок – это погружной зонд. Они используются для скважин, колодцев, открытых резервуаров, водоемов. Также подходят для безнапорных баков. Устройства изготавливаются из разных материалов. Корпус может быть нержавеющим стальным или полимерным, а чувствительная мембрана – стальной или керамической. В оболочке компенсационного кабеля проходит трубка опорного давления, и она может быть тефлоновой, полиуретановой или из ПВХ.

Второй вариант – врезной преобразователь, подходящий для горизонтальной установки в стенку резервуара. В них предусмотрена открытая торцевая мембрана. Также модели могут быть контактными и бесконтактными.

Также модели классифицируются по:

  • Способу присоединения: погружные, врезные, фланцевые;
  • Типу измеряемой среды: неагрессивная или агрессивная, густая, абразивная и так далее;
  • Способу связи с атмосферой: для закрытых и открытых резервуаров.

Как работает датчик уровня воды?

Работа датчика уровня воды довольно проста.

Ряд открытых параллельных проводников вместе действует как переменный резистор (потенциометр), сопротивление которого изменяется в зависимости от уровня воды.

Изменение сопротивления соответствует расстоянию от верхушки датчика до поверхности воды.


Рисунок 2 – Демонстрация работы датчика уровня воды

Сопротивление обратно пропорционально высоте воды:

  • чем больше воды, в которую погружен датчик, тем лучше проводимость, и тем ниже сопротивление;
  • чем меньше воды, в которую погружен датчик, тем хуже проводимость, и тем выше сопротивление.

Датчик в соответствии с сопротивлением выдает выходное напряжение, измеряя которое мы можем определить уровень воды.

Электромеханические решения

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

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

В некоторых из наиболее современных конструкций для непрерывных измерений с использованием поплавка применяется магнитострикционная сенсорная технология. Поплавок имеет форму тороида и перемещается снаружи трубчатого волновода. Длина волноводов может достигать 50 футов (15 м), поэтому они используются в очень крупных резервуарах. В поплавке содержится постоянный магнит, который вызывает прерывание электрического импульса, направляемого вниз по волноводу. Точка прерывания регистрируется приборами с высокой воспроизводимостью и исключительной точностью, достигающей ±< 0,001 дюйма. После установки и настройки устройств дополнительная калибровка не требуется.

«Магнитострикционная технология прекрасно сочетается с беспроводной передачей данных», говорит Mike Geis, специалист компании Ametek Automation & Process Technologies по освоению рынка. «Отклик на импульс происходит немедленно, поэтому потребление тока минимально».

На волноводе можно разместить два поплавка, благодаря чему магнитострикциционные измерения являются одной из немногих методик, способных обеспечить непрерывное измерение уровня слоев жидкости (например, масла поверх воды) при помощи одного прибора. «Если удельный вес отличается хотя бы на 10%, мы сможем разработать специальные поплавки для определения уровня в многослойных жидкостях «, добавляет Geis.

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

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

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

Распиновка датчика уровня воды

Данный датчик уровня воды очень прост в использовании и имеет только 3 контакта для подключения.


Рисунок 3 – Распиновка датчика уровня воды

Вывод S (Signal) – это аналоговый выход, который будет подключен к одному из аналоговых входов вашей платы Arduino.

Вывод + (VCC) обеспечивает питание датчика. Датчик рекомендуется питать напряжением от 3,3 до 5 В. Обратите внимание, что напряжение на аналоговом выходе будет зависеть от того, какое напряжение питания подается на датчик.

— (GND) – земля.

Выбор методики

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

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

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

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

Подключение датчика уровня воды с Arduino

Давайте подключим датчик уровня воды к Arduino.

Сначала вам нужно подать питание на датчик. Для этого вы можете подключить вывод +(VCC) на модуле к выводу 5V на Arduino, а вывод -(GND) модуля к выводу GND Arduino.

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

Чтобы преодолеть эту проблему, мы рекомендуем не подавать питание на датчик постоянно, а включать его только тогда, когда вы снимаете показания.

Самый простой способ сделать это – подключить вывод VCC к цифровому выводу Arduino и устанавливать на нем высокий или низкий логический уровень, когда это необходимо. Итак, давайте подключим вывод VCC модуля к цифровому выводу 7 Arduino.

Наконец, подключите вывод S (Signal) к выводу A0 аналого-цифрового преобразователя Arduino.

Схема соединений показана на следующем рисунке.


Рисунок 4 – Схема подключения датчика уровня воды к Arduino

Электрические отражательные методы

Преимуществом ультразвуковых и радиолокационных методов является возможность их использования в многочисленных областях применения без какого-либо контакта с материалом. Поскольку точка доступа в резервуар не требуется (за исключением сквозных точечных замеров), приборы располагаются наверху. Оба метода способны преодолевать внутренние помехи различного типа, и каждый из них имеет собственные ограничения по применимости.

Ультразвук — Эта технология может быть воплощена различными способами, что придает ей эксплуатационную гибкость. Звуковой импульс посылается в резервуар, и момент возврата эхо-сигнала регистрируется датчиком. С учетом влажности и температуры можно рассчитать расстояние до поверхности. Ультразвуковые измерения затрудняются при наличии пыли и пены; разнообразие этих проблем определяется областью применения. Кроме того, этот метод может использоваться в относительно ограниченном диапазоне давлений и температур по сравнению с радиолокатором.

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

Радиолокация — Эта технология известна уже более 25 лет, но ее популярность возросла совсем недавно по мере совершенствования возможностей и снижения затрат на эксплуатацию. В прошлом из-за чрезмерной стоимости, больших размеров и высокого потребления мощности радиолокационные датчики использовались только в наиболее ответственных областях; в настоящее время разнообразие способов применения этого метода непрерывно расширяется. Радиолокационные датчики аналогичны ультразвуковым, но имеют меньше ограничений к применению и отличаются большей точностью: микроволновый импульс обладает лучшей способностью проникновения сквозь пену и пыль, и в меньшей степени подвержен воздействию давления и температуры.

Радиолокационные датчики могут быть сконфигурированы для бесконтактной работы, или использовать волновод, углубленный в содержимое резервуара. Бесконтактная конструкция применяется чаще, но конфигурация с волноводом помогает в ситуациях, когда жидкость имеет очень низкую диэлектрическую постоянную и не способна к отражению микроволнового излучения в достаточной степени. «Конструкция с волноводом оснащена зондом для передачи энергии к поверхности жидкости и обратно», говорит Воусе Carsella, менеджер радиолокационной продукции .

Радиолокационные датчики особенно пригодны для использования в реакторах, работающих при высоких внутренних давлениях и температурах, а также в присутствии аэрозолей, паров, турбулентности и в других проблематичных условиях. «Крупнейшей проблемой является пена», говорит Carsella. «Мы спрашиваем — какова диэлектрическая постоянная жидкости, каковы размеры или плотность пузырьков, и какова толщина слоя пены?» Он рекомендует конструкции с волноводом, потому что они обладают лучшей проникающей способностью сквозь толстый слой пены.

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

Базовый пример определения уровня воды

После того, как схема будет собрана, загрузите в Arduino следующий скетч.

// Выводы, подключенные к датчику #define sensorPower 7 #define sensorPin A0 // Переменная для хранения значения уровня воды int val = 0; void setup() { // Настраиваем D7 на выход pinMode(sensorPower, OUTPUT); // Устанавливаем низкий уровень, чтобы на датчик не подавалось питание digitalWrite(sensorPower, LOW); Serial.begin(9600); } void loop() { // получить показания из функции ниже и напечатать его int level = readSensor(); Serial.print(«Water level: «); Serial.println(level); delay(1000); } // Данная функция используется для получения показаний int readSensor() { digitalWrite(sensorPower, HIGH); // Включить датчик delay(10); // Ждать 10 миллисекунд int val = analogRead(sensorPin); // Прочитать аналоговое значение от датчика digitalWrite(sensorPower, LOW); // Выключить датчик return val; // Вернуть текущее показание }

Как только скетч будет загружен, откройте окно монитора последовательного порта, чтобы увидеть вывод Arduino. Вы должны увидеть значение 0, когда датчик ничего не касается. Чтобы увидеть, как определяется вода, вы можете взять стакан воды и медленно погрузить в него датчик.


Рисунок 5 – Вывод показаний датчика уровня воды

Датчик не рассчитан на полное погружение, поэтому соблюдайте осторожность при эксперименте, чтобы с водой соприкасались только открытые дорожки на печатной плате.

Объяснение

Скетч начинается с объявления выводов Arduino, к которым подключены выводы датчика + (VCC) и S (сигнал).

#define sensorPower 7 #define sensorPin A0

Далее мы определяем переменную val, в которой хранится текущее значение уровня воды.

int val = 0;

Теперь в функции setup() мы сначала настраиваем вывод для питания датчика как выход, а затем устанавливаем на нем низкий логический уровень, чтобы изначально питание на датчик не подавалось. А также настраиваем последовательную связь с компьютером.

pinMode(sensorPower, OUTPUT); digitalWrite(sensorPower, LOW); Serial.begin(9600);

В функции loop() мы периодически вызываем функцию readSensor() с интервалом в одну секунду и выводим возвращаемое значение.

int level = readSensor(); Serial.print(«Water level: «); Serial.println(level); delay(1000);

Функция readSensor() используется для получения текущего уровня воды. Она включает датчик, ждет 10 миллисекунд, считывает аналоговое значение с датчика, выключает датчик и затем возвращает аналоговое значение.

int readSensor() { digitalWrite(sensorPower, HIGH); // Включить датчик delay(10); // Ждать 10 миллисекунд int val = analogRead(sensorPin); // Прочитать аналоговое значение от датчика digitalWrite(sensorPower, LOW); // Выключить датчик return val; // Вернуть текущее показание }

Ядерные (радиационные) датчики

Несмотря на высокую эффективность этого решения оно остается методом, к которому обращаются в последнюю очередь — из-за дороговизны и специализированных требований. Метод очень прост: радиоактивный источник гамма-излучения размещается с одной стороны резервуара. На другой стороне монтируются датчики, аналогичные счетчику Гейгера, для считывания показаний уровня. Содержимое резервуара, твердое или жидкое, поглощает гамма-лучи предсказуемым образом, что позволяет определить уровень при помощи электронной аппаратуры. Точность измерений определяется количеством датчиков, поэтому обычно этот метод используют для регистрации верхнего и нижнего пределов.

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

Калибровка

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

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

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

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

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

  • когда датчик сухой: 0;
  • когда он частично погружен в воду: ~420;
  • когда он полностью погружен: ~520.


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

Конструктивные особенности и принцип работы

Конструкция измерителей уровня жидкости в резервуаре определяется такими характеристиками:

  1. Функциональностью. По этому параметру все измерительные устройства этого класса классифицируют на уровнемеры и сигнализаторы уровня жидкости. Последние определяют конкретную точку наполненности емкости (максимальную и минимальную), а первые — постоянно контролируют уровень жидкости.
  2. Принципом работы. В основу этого параметра заложена акустика, оптика, магнетизм, электропроводность и так далее. От принципа действия устройства зависит область его применения.
  3. Методика измерения (бесконтактная или контактная).

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

Проект определения уровня воды

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

Схема соединений

Мы будем использовать схему из предыдущего примера. Но на этот раз нам нужно просто добавить несколько светодиодов.

Подключите три светодиода к цифровым выводам 2, 3 и 4 через токоограничивающие резисторы 220 Ом.

Соберите схему, как показано ниже:


Рисунок 7 – Индикация уровня воды с помощью светодиодов

Код Arduino

После того, как схема будет собрана, загрузите в Arduino следующий скетч.

В этом скетче объявлены две переменные, а именно lowerThreshold и upperThreshold. Эти переменные представляют наши пороговые уровни.

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

/* Измените эти значения, основываясь на своих значениях калибровки */ int lowerThreshold = 420; int upperThreshold = 520; // Выводы, подключенные к датчику #define sensorPower 7 #define sensorPin A0 // Переменная для хранения значения уровня воды int val = 0; // Объявляем выводы, к которым подключены светодиоды int redLED = 2; int yellowLED = 3; int greenLED = 4; void setup() { Serial.begin(9600); pinMode(sensorPower, OUTPUT); digitalWrite(sensorPower, LOW); // Настроить выводы светодиодов на выход pinMode(redLED, OUTPUT); pinMode(yellowLED, OUTPUT); pinMode(greenLED, OUTPUT); // Изначально выключить все светодиоды digitalWrite(redLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(greenLED, LOW); } void loop() { int level = readSensor(); if (level == 0) { Serial.println(«Water Level: Empty»); digitalWrite(redLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(greenLED, LOW); } else if (level > 0 && level <= lowerThreshold) { Serial.println(«Water Level: Low»); digitalWrite(redLED, HIGH); digitalWrite(yellowLED, LOW); digitalWrite(greenLED, LOW); } else if (level > lowerThreshold && level <= upperThreshold) { Serial.println(«Water Level: Medium»); digitalWrite(redLED, LOW); digitalWrite(yellowLED, HIGH); digitalWrite(greenLED, LOW); } else if (level > upperThreshold) { Serial.println(«Water Level: High»); digitalWrite(redLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(greenLED, HIGH); } delay(1000); } // Данная функция используется для получения показаний int readSensor() { digitalWrite(sensorPower, HIGH); delay(10); val = analogRead(sensorPin); digitalWrite(sensorPower, LOW); return val; }

Оригинал статьи:

  • How Water Level Sensor Works and Interface it with Arduino

Особенности применения

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

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

Процесс настройки сенсора достаточно трудоемок. Возможна ситуация, когда изменения газовой среды в резервуаре не связаны с изменением температуры. В данном случае придется повторно проводить калибровку прибора.

Рейтинг
( 2 оценки, среднее 4 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]
Для любых предложений по сайту: [email protected]