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


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

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

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

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

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

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

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

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

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

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

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

https://youtu.be/uxWQUuenxfU

Монтаж

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

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

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

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

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

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


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

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

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

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

Параметры автомата контроля уровня Евроавтоматика F&F PZ-818

Рассмотрим технические характеристики реле уровня, приведенные в инструкции по эксплуатации.

Инструкция будет приведена в конце статьи.

Технические характеристики

  • Напряжение питания, В – 50 – 264 АС/DС. Довольно широкий диапазон напряжения, это может быть полезным при питании в промышленных цепях управления напряжением 110 В.
  • Макс. коммутируемый ток, А – 8 АС1. Это ток для идеальной (активной) нагрузки, типа ТЭНа. Если подключать контактор или более мощное реле, выходной ток должен быть в 3-5 раз меньше, для сохранения коммутационной износостойкости (иначе – для сохранения ресурса работы).
  • Контакт: Тип – 1Р (1 переключающий). Выходное реле, используемое внутри нашего прибора, имеет один переключающий контакт, выводы которого подключены на три выходные клеммы.
  • Количество контролируемых уровней – 2. Это означает, что переключение (смена состояния внутреннего реле) может происходить на двух уровнях, в зависимости от положения двух соответствующих датчиков.
  • Напряжение питания датчика, не более, В – 6. Это говорит о безопасности. Важно, что датчики гальванически полностью развязаны от питающей сети. И можно спокойно их касаться и настраивать, когда устройство подключено к сети.
  • Ток потребления датчика, не более, мА – 2. Понятно, что ток датчика маленький. Не понятно, зачем этот параметр здесь? Ведь не для выбора сечения провода?
  • Регулировка времени задержки вкл/откл, с – 0,5 -10. Это важный параметр, который влияет на время реакции автомата уровня, а значит на частоту запуска насоса. От него зависит такой важный параметр, как гистерезис. Например, при почти нулевом гистерезисе, высокой производительности насоса и скорости подачи воды насос может включаться/выключаться по нескольку раз в минуту. Это нехорошо и вредно и для гидравлической системы, и для насоса, и для питающей сети. Если же увеличить параметр времени задержки, гистерезис по уровню может достигать нескольких десятков сантиметров, что может быть вполне приемлемым для некоторых применений.
  • Чувствительность по нижнему и верхнему уровням, регулируемая, кОм – 5-150. А этот параметр влияет на широту спектра применений данного автомата контроля уровня. Недаром в инструкции сказано – «Автоматы не используются для контроля дистиллированной воды, бензина, масла, керосина, этиленгликоля, сжиженного газа». Дело в том, что сопротивление этих жидкостей очень высоко (некоторые с натяжкой можно назвать изоляторами). И чувствительности нашего PZ-818 не хватит, чтобы применить, например, на котельной, где используется химически очищенная вода. Её сопротивление может достигать 500 кОм. Практически сопротивление очень зависит от того, какая часть электрода (датчика) погружена в жидкость. Бесспорно, что датчики, опущенные в воду на 1 мм и на 10 см, будут давать значительно различающиеся показания сопротивления.
  • Диапазон рабочих температур, °С – – 25 – +50. При отрицательной температуре я бы не рекомендовал использовать никакое оборудование.
  • Степень защиты IР20. Открыто устанавливать наш регулятор уровня нельзя, нужна установка только в электрощит.
  • Коммутационная износостойкость – >105 циклов. Как я писал выше, этот параметр сильно зависит от тока через контакты реле. Однако, даже если ток будет в 10 раз меньше максимального, при неправильной настройке задержки данный ресурс может закончиться через год!
  • Потребляемая мощность, Вт – 1. Пренебрежимо мало, по сравнению с потреблением всей системы контроля уровня. Подключение – винтовые зажимы 2,5 мм2. Больше и не надо. Оптимально – от 0,75 до 1,5 мм2
  • Габариты (ШхВхГ), мм – 18 х 90 х 65. Тип корпуса – 1S. Реле контроля уровня PZ-818 занимает место одного однополюсного автомата, что очень удобно при монтаже.

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

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


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

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

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

— (GND) – земля.

Налаживание

При налаживании может потребоваться подбор сопротивления резисторов R1 и R3. Вообще, желательно выбрать сопротивления этих резисторов минимальными, плюс 20-30% к той величине, при которой схема уверенно работает.

Сопротивление этих резисторов зависит от удельного сопротивления конкретной воды. Конкретной, потому что в различных источниках, колодцах, скважинах может отличаться солевой состав воды, а от этого как раз и зависит удельное сопротивление воды в конкретном случае. Так как в течение года этот состав может меняться, нужно сделать некоторый запас по сопротивлению резисторов R1 и R3 на эти самые 20-30%.

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

Сысоев М. РК-06-16.

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

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

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

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

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

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

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

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


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

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

После того, как схема будет собрана, загрузите в 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; // Вернуть текущее показание }

↑ Датчик

Датчик представляет из себя печатную плату. На которой установлены передающий и приёмные пьезоэлементы. На плате собрана схема формирования зондирующей пачки импульсов с частотой 40кГц, которая подается на драйвер, выполненный на преобразователе уровня TTL в RS232. Да-да, вот такое необычное применение. Не совсем правильное, но дешевое и работоспособное решение позволяющее обойтись без дополнительного высокого напряжения для раскачки излучающего пьезоэелемента. Также плата содержит усилитель для приемного пьезоэлемента и небольшой управляющий микроконтроллер. У датчика четыре ножки управления: питание +5 Вольт (VCC), вход запуска (Trig), выход (Echo), и земля (GND).
На вход Trig мы подаем импульс 10 мкС, на выходе Echo, при получении датчиком эхо-сигнала (отражения), будет сформирован импульс длительностью пропорциональной времени прохождения звука от датчика до отражателя и обратно. Это время мы делим на два и умножаем на скорость звука в воздухе, среднее значение 340 м/с – получаем расстояние до отражателя (объекта). Ниже диаграмма работы датчика.

Калибровка

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

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

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

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

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

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


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

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

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

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

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

Подключите три светодиода к цифровым выводам 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

Электрическая схема сигнализатора уровня

Куда деваться? Сам сделал самый простой (у нас же «СамЭлектрик»!). Два контакта в виде оголенных концов телефонного провода (видно на фото «Вид сверху» и красный провод на фото «Пищалка и адаптер»), идущего к электронной пищалке.

Со схемой сигнализатора тоже заморачиваться не стал – взял самое простое: звуковой генератор – два транзистора, три резистора, конденсатор и светодиод (индикатор включения/вольтажа) плюс звукоизлучатель – пьезоэлемент (зеленые проводки на фото «Монтаж»).

Схема сигнализатора уровня воды системы фильтрации

Резисторы R1, R2 образуют делитель напряжения, с помощью которого можно регулировать чувствительность схемы. Когда положительное напряжение на базе транзистора Т1 достигает нужного уровня, он открывается и открывает транзистор Т2. Нагрузкой транзистора Т2 является пьезоэлемент, при подаче напряжения на который он издает звуковой сигнал. Вместо пьезоэлемента может быть другая нагрузка, например, реле. А контакты реле могут включать что угодно – например, любая нагрузка на 220В. Так сделано, например, в реле освещенности.

Обновление! На самом деле, я заблуждаюсь! Дочитайте статью до конца!

Пищалку я смонтировал в корпусе телефонной розетки (что под рукой оказалось). Питание от адаптера =2,5 вольта (добавлю, я «усовершенствовал» адаптер, вмонтировав в корпус маленький выключатель, видный на фото «Пищалка и адаптер», чтоб каждый раз из сети 220в не выдергивать и вставлять, впрочем, до этого мог догадаться и создатель адаптера.).

Пищалка располагается в 2..3 метрах от меня и я ее хорошо слышу, да, ее слышно по всей квартире!

Пищалка и адаптер питания

Монтаж сигнализатора

У пищалки звук, конечно, визгливый и неприятный уху, но для сигнализатора это и лучше!

Теперь, имея пищалку, я не знаю забот с фильтром уже с января 2017! Согласитесь, для пенсионера Время дорого. Да и для всех, бренных, тоже.

Список источников приводить не стану. У кого вопросы – через блогера/ведущего сайта Александра или в обсуждениях.

PS. По 5-литровым бутылям веду учет фильтрации на наработку ресурса 8000 л. В один сеанс обычно заправляю 2-3 емкости. Протокол/запись имеется. Мой, девиз Simplicity – по-русски вообще проще некуда.

Вариант схемы, собранной читателем.

(обновление от 4 окт. 2017)

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

Схема сигнализатора. Рабочий вариант

Описание в нескольких комментариях, см. по ссылке.

Голосование

Проголосовать за статью, если она понравилась, можно здесь. Там же рассказано, как можно получить деньги, участвуя в Конкурсе репостов!

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