Контроллер сухого хода насоса на Ардуино
- Войдите на сайт для отправки комментариев
Привет всем. Выкладываю простенький проект, позволяющий в автоматическом режиме управлять насосом в колодцах и скважинах с маленьким дебетом воды.
Причина создания проекта:
В моем колодце совсем мало воды. За раз можно выкачать всего литров 250. Потом необходимо ждать пока он наполнится. За ночь колодец едва успевает наполниться. В системе стоит гидроаккумулятор (ГА), позволяющий создать давление в системе и сделать небольшой запас воды.
Для контроля уровня воды в колодце я сделал поплавок из пластиковой трубки с использованием магнита и геркона. Он стоял чуть выше уровня забора воды насоса и имел высокую чувствительность. Когда поплавок опускался, насос отключался. С его помощью я мог отследить поднятие уровня воды на 3 сантиметра и включить насос в ручном режиме, чтобы получить хоть немного воды. Но этот поплавок требовал четкого выставления и периодического обслуживания, т.к. забивался глиной. Классический поплавок с шариком мне не подошел, т.к для его работы нужен довольно большой перепад уровня воды. И получалось, что если поплавок упал, то ждать его поднятия можно было пол дня. И соответственно я не мог пользоваться той водой, которая уже есть в колодце.
Проведя обзор имеющихся готовых решений выяснил, что большинство контроллеров, имеющихся в продаже не умеют в автоматическом режиме запускать насос, после отключения его по сухому ходу (СХ). На них как правило стоит кнопка принудительного пуска насоса, что меня не устраивало.
Само-собой пришло решение запилить контроллер, который определит, что в колодце закончилась вода (насос перешел на СХ) и соответственно отключит насос. Выждет установленную пользователем паузу и включит снова насос. И так по кругу, пока не наполнится ГА.
Таким образом после полной выкачки колодца, можно с интервалом 1-200 минут (интервал задается пользователем) получать небольшую порцию воды в гидроаккумулятор не переживая, что насос сгорит. Полученного количества воды хватит для текущих нужд.
Контроллер учитывает требование включения насоса от ГА и включает насос только тогда, когда давление в ГА упало ниже установленного, а следовательно реле давления установленное на ГА замкнулось.
Определять наличие воды в колодце по значению тока СХ насоса очень удобно, т.к не требуется никаких механических устройств. Принцип определения наличие воды в колодце по значению тока СХ относительно прост. Приведу пример. Начальное условие – ГА наполнен до отметки верхнего давления (4 атмосферы), в колодце есть вода для его наполнения в достаточном объеме. По мере расхода воды из ГА, давление воды внутри ГА падает до нижней отметки (допустим до 2 атм.) и реле давления выдает команду включить насос (назовем это включением по требованию ГА). При включении насоса по требованию ГА, при давлении воды в ГА ток равен около 4,5А. Далее по мере наполнения ГА ток падает. В момент когда ГА снимает требование включить насос, значение тока составляет 3,5А. Если открыть все краны и не давать наполниться ГА, то вода в колодце со временем закончится и ток потребления насоса упадет до 2,5А. Это и есть значение тока на СХ. К этому значению можно добавить 5% и занести в память контроллера как ток СХ. В дальнейшем, контроллер мог-бы отключать насос при падении тока ниже сохраненного значения.
В моем случае я продолжил эксперимент. Дождался когда вода в колодце закончится и слил всю воду из ГА. Далее через каждые 10 минут включал принудительно насос. При включении насоса значение тока было 4,5А и через короткий промежуток времени, когда заканчивалась вода в колодце, ток СХ падал до 2,5А..2,6А…2,7А… и по мере наполнения ГА последнее значение тока СХ составило 3,0А. При следующем принудительном включении насоса, ГА оказался полным и снял требование включить насос. При этом значение тока составило 3,5А. Таким образом я принял значение СХ для себя величиною в 3.0А+5%=3,15А. На графиках хорошо просматривается зависимость тока потребления насосом от давления в ГА. По какой причине ток потребления насоса падает с повышением давления в ГА я так и не понял.
Ниже привожу график замеров тока в том случае, когда вода в колодце есть, и ее хватает для наполнения ГА. Также привожу график значений тока СХ насоса при постепенном наполнении ГА, от совсем пустого до почти полного. Второй график строился в режиме Calibration XX.
Управление режимами работы и настройка параметров контроллера осуществляется с помощью енкодера с кнопкой. Как управлять описывать не буду, тут все просто и интуитивно-понятно.
Описание меню
Ниже приведены фото меню во всех режимах работы контроллера
0 - рабочий режим, не отображается в структуре меню
1 - Work
2 - CalXX -- 4 PovOn (включить нагрузку)
5 POff (выключить нагрузку)
6 Save (сохранить значение холостого хода)
7 Exit (выйти в главное меню)
3 - Setup -- 8 DelayStart,s (задержка до начала контроля тока СХ, после включения нагрузки.
9 Wait,m (полная задержка отключения нагрузки для ожидания наполнения колодца)
10 Reserved ЗАРЕЗЕРВИРОВАНО!!!
11 DelMid,ms (период замера тока нагрузки для скользящего усреднения из 10 замеров)
12 ХХ, А(изменить/выставить значение СХ)
13 Exit (выход в главное меню)
Описание режимов работы контроллера:
Режим Work
Это основной режим работы. В режиме Work контроллер в автоматическом режиме управляет нагрузкой с учетом требований ГА. Если ГА требует включить насос (упало давление внутри ГА, замкнулись контакты реле-давления установленного на нем), то контроллер включит насос и отключит его в одном из двух случаев:
1 ) если ГА снял требование о включении насоса (значит он наполнился и давление внутри достигло верхнего значения);
2) если ток нагрузки упал до значения СХ, т.е в процессе наполнения ГА закончилась вода.
При наличии воды в колодце, контроллер будет работать в цикле, так как описано в 1 случае.
Когда вода в колодце закончится, ток потребления насоса упадет (насос перейдет на СХ) и контроллер отключит нагрузку. Далее контроллер выждет паузу Wait и включит нагрузку снова. Дождется когда насос перейдет на СХ и отключит нагрузку. И так в цикле до тех пор, пока ГА не снимет требование о включении насоса.
Режим Calibration XX
В этом режиме проводятся нагрузочные тесты с целью определить значение тока СХ нагрузки. Для определения тока СХ необходимо выбрать пункт меню «PowOn». При этом нагрузка принудительно включится. На дисплее будет отображаться текущее значение тока нагрузки. Необходимо дождаться, когда закончится вода в колодце (т.е. насос перейдет на СХ) и сохранить значение тока СХ в памяти контроллера, выбрав пункт меню «Save». Далее необходимо выбрать пункт меню «POff» чтобы выключить нагрузку. Так-же задать/изменить вручную значение тока СХ можно в меню Setup. Рекомендуется ознакомиться с приведенной выше методикой определения значения тока СХ.
При нахождении в режиме Calibration XX прекращается контроль нагрузки в автоматическом режиме на время нахождения в этом режиме.
Режим Setup
В этом режиме задаются следующие параметры:
1) Wait. Задержка включения насоса (в минутах), после отключения его по СХ. После отключения насоса по переходу на СХ, контроллер выждет паузу Wait и включит насос. Минимальное значение Wait =1минута.
2) DelayStart. Задержка (в секундах), в течение которой контроль тока нагрузки не осуществляется. Отсчет задержки начинается после включения нагрузки. Возможно у кого-то насос/нагрузка инерционно/медленно набирает ток до выхода на рабочий режим, и в таком случае необходимо начинать контролировать ток не сразу после включения нагрузки, а с задержкой чтобы ток нагрузки превысил ток ХХ.
3) TimeMid. Время (в миллисекундах), в течение которого высчитывается среднее-скользящее значение тока нагрузки. Это сделано на тот случай, если ток нагрузки меняется скачкообразно и позволяет сгладить значение тока, используемое для расчетов.
4) ХХ. Значение тока холостого хода нагрузки (а Амперах). Ток ХХ можно задать/скорректировать вручную в меню Setup, а можно получить экспериментальным путем в меню Calibration XX (смотри описание меню Calibration XX).
Внимание! Контроль нагрузки при нахождении в меню Setup не прекращается, контроллер работает так-же как в режиме Work. Все изменения, которые осуществляются в меню Setup, автоматически сохраняются в энергонезависимой памяти и применяются в работу.
Программная часть:
Ниже представлен алгоритм работы контроллера. Он точно не отражает ход выполнения команд, но достаточен для понимания принципа работы.
В контроллере программно реализована функция контроля зависания контроллера, которая при зависании автоматически перегружает контроллер. В связи с этим, перед заливкой скетча в контроллер Arduino Pro Mini, необходимо предварительно установить альтернативный загрузчик OptiBoot. Вот ссылка где все понятно рассказано. https://orycan.ru/blog/post/Arduino_bootloader Обращаю внимание, что на некоторых версиях контроллеров Arduino OptiBoot уже установлен с завода.
Для работы скетча использованы библиотеки:
ACS712.h – для работы с датчиком тока;
Adafruit_GFX.h, Adafruit_SSD1306.h – для работы с дисплеем;
GyverWDT.h – для автоматической перезагрузки контроллера в случае зависания.
Первое включение:
Перед включением контроллера отключите от него провода от ГА. После включения контроллера, необходимо зайти в раздел меню Setup, настроить и сохранить все параметры. Значение СХ можно выбрать произвольное, т.к следующим этапом будет проведение нагрузочных тестов насоса. Нагрузочные тесты проводятся в режиме Calibration XX. Далее необходимо подключить провода от ГА. При отсутствии в системе водоснабжения ГА, необходимо установить на входе контроллера перемычку между входом и выходом ГА.
Состав оборудования:
1) модуль питания DC-DC step-down на LM2596 - 1шт;
2) микроконтроллер Arduino PRO Mini 328Р 5В -1шт;
3) модуль датчика тока ACS712 10А -1шт;
4) OLED дисплей 0,96" 2,7х2,8см 128x64 монохром - 1шт;
5) Энкодер EC11CT-V1Y12-AF2AS кнопкой -1шт;
6) 2-х канальный релейный модуль с оптической развязкой по входу -1шт;
7) Макетная плата - 1шт
8) Резистор 220 Ом 0.25Вт -1шт;
9) Микросхема MC14490 -1шт;
10) Светодиод 3,2В -1шт;
11) Клемник прямой DG301-5.0-04P-12-00A(H) Degson - 2шт
12) Корпус на DIN-рейку 1-шт
13) провода МГТФ сечением 0,1 - 0,35мм2 и ПВ3 сечением 1,5мм2
Схема электрическая
Внешний вид
К сожалению нет времени покупать ручку для энкодера и искать кусок оргстекла. Пока выкладываю так как есть.
На последнем фото виден разьем, на который выведены RX, TX, Reset,Gnd для возможности перепрошить контроллер без разбирания.
Не критики ради, а избавления клубка проводов для...
Будет смотреться лучше, если для соединения плат использовать плоский кабель от IDE или Floppy дисков. Распускаете на полоски с нужным числом проводов и используете вместо "макарон". Отлично формуется, держит форму и легко паяется - сплошные профиты.
Пинаплазд с магнитиками не пробовал?
Ачё, так можно было?
Сомневаюсь , что такой сложный подход будет надежно работать . Я за магнитики и пенопласт
В скважине думаю мало места будет для поплавка. И в схеме с поплавком насос будет в импульсном режиме с частыми включениями. Или после разрешения от поплавка надо будет ставить таймер, чтобы сократить частоту включений.
К сожалению в таких ситуациях как у меня. Особо и нет вариантов. Эта ситуация с сухом ходом является стандартным решением на сегодня. И все современные электронные реле давления оснащены этой функцией. Только она там реализована не так как мне надо
К сожалению форум не дает возможности изменить первый пост. Поэтому код и библиотеки выкладываю https://drive.google.com/file/d/1aAcP8xK_aLPdlUsDQMqYn0OdX-Egg9Im/view?u...
В практике был случай, что в насос попала глина и он заклинил. Хотелось бы дополнительно защитить насос при увеличении тока нагрузки.
хорошая идея. Сделаю.
Спасибо! Буду ждать.
хорошая идея. Сделаю.
Как успехи? Насос уже работает. Действительно, шнек был заклинен в связи з глиной и долгим простоем. Жаль если заклинет и сгорит обмотка.