Ультразвуковой датчик уровня своими руками

Как сделать индикатор уровня воды с помощью Arduino

Используем плату Ардуино и ультразвуковой модуль для создания своими руками проекта по определению уровня воды в баке.

Когда может пригодиться?

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

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

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

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

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

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

Читайте также:  Строим домики для кошек своими руками

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

Этот проект может быть реализован на одной из плат Arduino, если микроконтроллером платы является непосредственно микроконтроллер ATmega 328.

Комплектующие

По традиции переходим к комплектующим, набор деталей довольно большой:

1 Микроконтроллер ATMega328P или плата Arduino
1 HC-SR04 ультразвуковой модуль (также известный как датчик PING)
1 10K резистор
1 Кристалл 16 МГц
2 22pf дисковые конденсаторы
Провода-перемычки
1 Регулятор LM7805 5V
1 9В батарея и разъем
1 Электролитический конденсатор 10uF
1 Макетная плата (или печатная плата)
1 Инструмент для зачистки проводов

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

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

Скетч для Ардуино

Скопируйте прилагаемый ниже скетч в Arduino IDE и найдите строку «int d = 18;» и измените «18» на глубину вашего резервуара в сантиметрах.

Загрузите код для индикатора уровня воды Arduino непосредственно на плату Arduino или в микроконтроллер ATMega328P.

Ультразвуковой датчик и водный резервуар

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

Теперь просто подключите аккумулятор (питание) и ваш индикатор уровня воды Ардуино готов к использованию.

Источник

Ультразвуковой контроль уровня воды на микроконтроллере 8051

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

Ультразвуковой модуль HC-SR04

HC-SR04 представляет собой ультразвуковой дальномерный модуль. HC-SR04 состоит из ультразвукового передатчика, приемника и необходимых электронных компонентов для создания автономной системы. Принцип работы устройства очень простой. Устройство посылает 8 импульсов звуковых волн с частотой 40 кГц и принимает отраженную волну. Далее измеряется временная задержка между отправленным и принятым сигналом, и происходит вычисление расстояния по формуле D=TS/2, где D – это расстояние, Т – временная задержка и S – скорость звукового сигнала. На выходе модуля HC-SR04 появляется импульс с шириной, пропорциональной расстоянию. Из даташита ясно, что ширина выходного сигнала составляет около 58 мкс для расстояния 1 см. Все, что нам нужно сделать, так это отправить сигнал срабатывания длительностью 10 мкс на вывод срабатывания модуля (trigger) и ожидать появление выходного сигнала на эхо выходе (echo) модуля. Временная диаграмма и сигналы на выходах модуля показаны ниже.

Вся необходимая информация по сопряжению ультразвукового модуля HC-SR04 и микроконтроллера 8051 указана в статье Использование ультразвукового модуля совместно с микроконтроллером 8051. Полная электрическая схема ультразвукового контроллера измерения уровня воды показана ниже.

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

Вывод Trigger ультразвукового модуля подключается к выводу P3.0 микроконтроллера. Вывод Echo к выводу P3.1 микроконтроллера. Линии данных LCD модуля подключаются к портам Port0 микроконтроллера. Линии управления «RS», «RW» и «E» LCD модуля подключаются к выводам P2.7, P2.6 и P2.5 соответственно. Работа насоса контролируется с помощью вывода Port 2.0 микроконтроллера. В проекте используется насос напряжением 12 В от омывателя лобового стекла автомобиля. В проекте может использоваться насос, работающий от стандартной электрической сети, однако при его использовании нужно соблюдать особую осторожность, чтобы избежать опасности электрического удара.

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

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

Описание программы

Вывод микроконтроллера P3.0 используется для активации ультразвукового модуля HC-SR04, а вывод P3.1 для получения ответного сигнала (echo). В проекте задействованы оба таймера микроконтроллера 8051. Timer1 работает в режиме MODE2 (автоперезагрузка 8 бит) и Timer0 (16 бит) работает в режиме MODE1. Сигнал длительностью 10мкс представлен на выводе trigger ультразвукового датчика, и микроконтроллер ожидает на эхо сигнал с вывода echo модуля. Вывод Echo и P3.1 микроконтроллера соединены вместе. Состояние данного вывода контролируется с использованием инструкции JNB. Когда будет получен действительный сигнал на данном выводе, то таймер Timer1 активируется. Таймер просчитывает с 200D до 255D (55 отсчетов) и далее перебрасывает свое состояние. После каждого перебрасывания состояния происходит повторная проверка вывода echo и таймер перезапускается, если присутствует любой сигнал echo. При каждом перебрасывании состояния аккумулятор инкрементируется, и данный цикл повторяется, пока сигнал echo не пропадет.

Из даташита модуля HC-SR04 известно, что эхо импульс шириной 58 мкс обозначает 1 см. Поэтому мы фактически считаем блоки шириной 58 мкс в эхо сигнале и подсчитанный сигнал будет означать найденное расстояние в сантиметрах. Поскольку микроконтроллер тактируется кварцевым генератором частотой 12 МГц, то 55 отсчетов будет означать 55 мкс. Другие инструкции выполняются во время каждого цикла таймера, что занимает 3 мкс и в итоге мы получаем, что при каждом цикле таймера проходит 58 мкс. Результат счета в аккумуляторе указывает расстояние в сантиметрах.

Далее необходимые операции выполняются над значением аккумулятора, и оно отображается на LCD дисплее. При выполнении программного кода происходит включение насоса, когда уровень воды падает на 20 см (низкий уровень) ниже верхней метки и отключение насоса, когда уровень поднимает на 5 см от верхней метки (высокий уровень). Условия включение идентифицируется путем вычитания значения 20D от значения аккумулятора. Если флаг переноса не установлен, тогда это означает, что уровень воды ниже 20 см от верхней метки и двигатель насоса включается.

Если флаг переноса не установлен, тогда происходит вызов подпрограммы OFF (ОТКЛЮЧЕНИЕ). В данной подпрограмме значение 5D вычитается из сохраненного значения в аккумуляторе, и состояние флага переноса проверяется с использованием инструкции JNC. Если флаг переноса не установлен, то это означает, что уровень ниже от верхней метки на 5 см и насос остается включенным. Если флаг переноса установлен, то это означает, что уровень выше на 5 см от верхней метки и насос отключается.

Работа насоса контролируется через вывод P2.0 микроконтроллера. Состояние данного вывода проверяется с помощью инструкции JB. Если на выводе P2.0 присутствует высокий потенциал, то это означает, что насос включен и на дисплее отображается сообщение «Motor ON» (Двигатель включен). Если на выводе P2.0 присутствует низкий потенциал, то это означает, что насос выключен и на дисплее отображается сообщение «Motor OFF» (Двигатель выключен).

Источник

Схема сборки своими руками датчика-измерителя уровня воды в емкостях, баках и резервуарах

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

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

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

Измеритель уровня жидкости я сделал на базе микроконтроллера Arduino Mega2560 (можно взять любой контроллер Arduino).

За любые повреждения, полученные в процессе сборки автор статьи ответственности не несет.

Шаг 1: Материалы

Материалы для датчика уровня воды в резервуаре:

  • Arduino (Uno, Mega 2560,…)
  • ультразвуковой датчик измерения расстояния HC SR04
  • провода для подключения датчика к контроллеру
  • оргстекло для корпуса (опционально)

Шаг 2: Немного теории

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

У ультразвукового метода измерения есть свои минусы:

  1. Из-за длины импульса остается маленькое окно для приема отраженного сигнала, потому что трансивер продолжает испускать сигнал. Проблема решается достаточно просто: сенсор размещается на несколько сантиметров выше максимального уровня жидкости, позволяя приемнику начать прием сигнала.
  2. Из-за ширины луча имеются ограничения в диаметре используемой емкости. Если диаметр будет слишком мал, отраженный от поверхности жидкости сигнал будет отражаться и от стенок емкости, тогда данные могут быть ложными.
  3. Прежде чем установить счетчик в бак на постоянное место, его протестировали на эти два момента. Стабильные данные получены на расстоянии минимум 5 см от сенсора. Это значит, что сенсор нужно установить не ниже 5 см над уровнем жидкости. Также не было отраженных от стен бака сигналов при диаметре сосуда 7,5 см (высота 0,5 м). Эти результаты были учтены при установке сенсора в бак.

Шаг 3: Водяной бак

Вода в систему полива будет поступать самотеком. Поэтому бак должен быть установлен выше уровня пола. Бак сделан из метровой канализационной трубы диаметром 16 см. Труба разделена на две секции. В нижней секции располагаются клапана, верхняя будет собственно резервуаром с водой. В качестве крышки резервуара используется заглушка. К заглушке крепится ультразвуковой датчик измерения расстояния. Для устойчивости бак установлен в деревянный короб, в котором установлена электроника и аккумулятор.

Высоту столба жидкости кодируем в процентах, точкой отсчета будут показания счетчика от 6 см (100%), и до 56 см (0%), 6 см – удаление от поверхности воды.

Бак сделан из трубы для простоты вычислений объема (цилиндиреская форма без изменений диаметра).

Шаг 4: Схема соединения ультразвукового датчика и контроллера

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

Следуя приложенной схеме, подключите датчик к контроллеру.

Шаг 5: Программа

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

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

Шаг 6: Проверка

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

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

Чтобы проверить точность работы нашего измерителя уровня воды наполните резервуар водой до максимального уровня. Затем откройте клапан, чтобы вся вода вытекла. Бак опустел до 2% из-за того, что конструкция сделана таким образом, чтобы предотвратить вытекание остатков. На картинке приложена диаграмма ступенчатой функции, по этой диаграмме мы можем приблизительно оценить на каком уровне воды происходит изменение (с помощью Excel, Matlab или другой вычислительной программы).

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

Шаг 7: Применение в проектах

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

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

Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.

Источник

Оцените статью