No Image

Расходомер воды на ардуино

СОДЕРЖАНИЕ
373 просмотров
08 ноября 2020

В этом уроке мы свяжем микроконтроллер Arduino Uno с датчиком расхода жидкости для измерения расхода воды.

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

Как работает датчик расхода жидкости?

Датчик расхода жидкости работает по принципу эффекта Холла. Эффект Холла — явление возникновения поперечной разности потенциалов (называемой также холловским напряжением) при помещении проводника с постоянным током в магнитное поле.

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

Жидкость толкает ребра ротора, заставляя его вращаться. Вал ротора соединен с датчиком Холла. Это расположение токопроводящей катушки и магнита, соединенного с валом ротора, поэтому напряжение / импульс индуцируется при вращении этого ротора. В этом расходомере на каждый литр жидкости, проходящей через него в минуту, он выдает около 4,5 импульсов. Это связано с изменяющимся магнитным полем, вызванным магнитом, прикрепленным к валу ротора, как показано на рисунке ниже. Мы измеряем количество импульсов, используя Arduino, а затем рассчитываем скорость потока в литрах в час (л/час), используя простую формулу преобразования, объясненную в шаге 2.

Датчик расхода жидкости

Подключение Arduino к датчику

Соединения, необходимые для этого датчика расхода воды относительно Arduino, очень минимальны. От датчика расхода идет только три провода. Линия 5 В VCC (красный провод), GND (черный провод) и линия сигнал/импульс (signal/pulse, обычно желтый). Подключите VCC и GND расходомера к VCC и GND Arduino. Импульсная линия датчика расхода соединена с цифровым выводом Arduino 2. Цифровой вывод 2 Arduino служит внешним выводом прерывания (вывод прерывания 0). И это всё, вы подключили свой расходомер к Arduino!

Читайте также:  Винилит минусы пленки для пруда

Загрузка кода расходомера в Arduino и измерение расхода воды

Ниже вы можете скачать или скопировать код Ардуино датчика расхода воды:

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

В этом датчике расхода Arduino на каждый литр жидкости, проходящей через него в минуту, он выдает около 4,5 импульсов. Разделив общее число импульсов на 4,5, вы получите общее количество жидкости, проходящей через него, в литрах в минуту. Умножив это на 60, вы получите скорость потока в литрах в час, которая даст нам общее количество или количество воды/жидкости, прошедшей через него. Датчик с точностью до 3%.

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

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

Сердцем устройства является датчик потока воды. Данные датчики имеют очень большой разброс цен. Мы остановились на относительно недорогом (в России около 2000 руб) датчике потока воды INS-FM17N от фирмы Кооlance. Датчик имеет высокую точность, небольшие размеры, выдачу RPM сигнала, который легко можно считать и обработать любым контроллером (к примеру Arduino).

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

Читайте также:  Каркасный дом без чердака

Т.к. мы хотели выводить все данные о расходе воды в интернет, то мы использовали контроллер YellowJacket Arduino с встроенным Wi-Fi модулем. Когда контроллер обнаруживает поток воды, то данные периодически (от 1 до 15 сек — зависит от настроек беспроводного соединения) посылаются на сервер. Используя GET запрос, с указанием ID и данными, скрипт на сервере сохраняет информацию, а в дальнейшем формирует HTML-страничку для отображения данных.

За пару часов мы собрали 4 рабочих устройства, каждый их которых содержал: Wi-Fi Arduino, датчик температуры, расходомер и два фитинга для его подсоединения к крану. Все четыре устройства расположили в различных местах нашей лаборатории.

Для отображения данных мы использовали графические инструменты HTML5. Используя модульную верстку и динамическое отображения слоев, мы сделали возможность просматривать данные на самых различных устройствах с любыми разрешениями: начиная от телефона и iPad’а и заканчивая стационарными компьютерами и проекторами.

Скачать архив с проектом под Arduino и кодом для PHP и HTML5 вы можете ниже

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

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

Программа для подсчета расхода воды состоит из нескольких частей:

  • Снятие данных расхода воды с импульсного выхода счетчика.
  • Индикация снятых показаний.
  • Передача телеметрической информации на сервер.

Снятие данных с импульсного выхода водосчетчика

Геркон, по сути — это механическая кнопка, управляемая магнитом. Поэтому может быть использована схема коммутации для обычной кнопки. Это медленное механическое устройство. Бытовой счетчик воды после коммутации геркона в течении нескольких секунд «держит» геркон в замкнутом состоянии.

В некоторых схемах в Интернет для подключения кнопки/геркона используют дополнительный «подвешивающий» резистор. Смысла в этом нет, поскольку в самом чипе есть резистр соединенный с +5V. Он активируется кодом: pinMode(PULSE_PIN, INPUT_PULLUP).

Читайте также:  Smart watch инструкция по применению русском

Однако геркон нужно подключить через резистор на 1 кОм к входу GPIO. Он нужен, чтобы не «спалить» порт микроконтроллера если прошивка случайно выставит единицу на пине, а геркон в этот момент закоротит эту линию на землю. При наличии резистора через микроконтроллер потечет ток I = 3.3В/1000 Ом = 3.3 мА при том, что ток выхода из строя GPIO ESP8266 — 12 мА, а ESP32 — 20 мА.

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

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

Код Arduino для подсчета расхода воды:

Код был оттестирован на счетчике расхода воды Valtec VLF-U-I. Схема импульсного выхода водосчетчика:

  • PIN 2 Arduino подключен к 1 выходу водосчетчика.
  • GND Arduino подключен к 4 выходу водосчетчика.
  • В случае с герконом контакты 1 и 4 можно менять местами. 🙂

Другой вариант реализации кода — с использованием прерываний.

Если сравнивать два варианта кода, то с прерываниями выглядит более технологичным, но и более капризным. Для варианта с прерыванием я рекомендую использовать аппаратное подавление дребезга RC цепочкой или триггером Шмитта (Шмидта).

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

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

Литература

Информации по разработке счетчиков воды в Интернет множество. Вот некоторые из статей:

Комментировать
373 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Строительство
0 комментариев
No Image Строительство
0 комментариев
No Image Строительство
0 комментариев
Своими руками
0 комментариев
Adblock
detector