Всем привет, сегодня я хочу показать свой проект, это уже будет более-менее осмысленно устройство. Напишем скетч, вернее покажу как я его писал, покажу схему устройства для управления насосом на Arduino. Чуть позже я вам покажу, на рисунке, что в общем-то у меня должно получиться по задумке.
Смотрите видео: Управление погружным насосом на Arduino
Значит по условиям, так сказать задачи, имеется погружной насос, имеется труба для насоса, который выкачивает воду, глубина колодца около 10 м, глубина воды внизу, диапазон который нужно выкачивать, где-то около метра.
Очень долго набирается вода, и чтоб не сидеть, не следить, когда она дойдет до максимального уровня, погружу два поплавка на герконах, которые будут передавать данные в Arduino и управлять через реле включением и выключения насоса.
Таким образом я смогу выбирать этот диапазон воды из колодца, управлять питанием на 220 Вольт.
Вот в нижней точке, когда будут размыкаться контакты в поплавке, будет отключаться питание чтобы насос не хватал воздух, иначе придётся заливать опять всю трубу водой и только после этого можно дальше использовать эту систему.
Вот такие поплавки я заказывал на AliExpress, они недорогие, вбейте в поиск, поплавок геркон для насоса, или для чего-то такого, можете сняв шайбу развернуть поплавок другой стороной и назначение будет меняться, этот геркон может работать как на замыкание, так и на размыкание.
Существует много различных на AliExpress поплавков, но я выбрал такой тип, он наиболее дешёвый, простой по конструкции и достаточно герметичен, по идее должен прослужить некоторое время, несколько лет, пока провода не окисляться из-за влажности.
От двух поплавков наверх пойдет 4 провода, надо будет использовать герметичный кабель, или кинуть витую пару, в ней 8 проводников, можно будет попарно соединить, и у меня получится на 2 датчика четыре провода.
Ну вот так примерно выглядит задача, которую я хотел бы решить с помощью Arduino, а использовать я буду Arduino Nano, поскольку, я сначала хотел сделать более компактную схему, поместить в небольшую коробочку, ну максимум тут реле управления насосом, но я столкнулся с проблемой, как запитать собственно Arduino, и пришлось заказывать дополнительно Shield, который имеет разъем для подачи питания на 9 вольт. Теперь можно будет от адаптера подать напряжение и дальше уже всё это использовать.
Вот примерная схема, как будет всё это выглядеть, в колодце нижний поплавок, верхний поплавок, сейчас все они настроены на размыкание при отсутствии воды.
В данный момент, как будто бы воды сейчас нет, и поплавки находится в сухом положение.
При погружении этих поплавков в воду будет замкнуты контакты, практически постоянно нижний поплавок будет замкнут, верхний будет замыкать цепь при достижении воды заданного уровня и включать насос.
Насос будет работать пока нижний поплавок не разомкнет цепь, то есть на него перестанет давить вода.
Использовал проводники, заказывал дополнительно, это всё еще сейчас монтажная схема.
А вот блок, который находится слева, где находится сопротивления и светодиоды, это всё будет у меня уже позже распаяно на отдельной плате.
Красный светодиод у меня отвечает за верхний уровень, за нижний уровень отвечает синий светодиод, ну и зелёный светодиод будет сигнализировать о включении и работе насоса.
Использовались контакты на плате D2
это красный светодиод – верхний поплавок, D3
синий светодиод – нижний поплавок.
Зеленый светодиод подключен к D11
, горит при включении и работе насоса и включенном реле.
Сигнальный контакт реле подключен к D12
. На этом Shield ближний ряд это пины Arduino, средний ряд – питание 5 вольт, и крайний ряд – GRD.
Пины D4
и D5
я использую как входящие для датчиков. 5 вольт идет с платы на геркон поплавка, допустим на верхний датчик, при замыкании контактов, питание идет в D5
, но он замкнут через сопротивление 220 ом на землю, пока геркон не замкнут. Если этого не делать, то реле сходит с ума и начинает хаотично замыкаться и размыкаться.
При включении, когда нижний уровень воды будет заполнен, и верхний также будет заполнен, сработает реле и включится насос.
Когда вода будет откачена ниже верхнего уровня, и будет опускаться ниже, нижний поплавок опустится вниз, реле отключит насос. Других вариантов как решить эту задачу найти не удалось, при всех иных схемах насос бы включался и выключался постоянно, пока срабатывал верхний поплавок, откачивая небольшой объем воды, на ход поплавка.
При погружении в воду или подъеме уровня воды, замкнется геркон нижнего поплавка, загорится синий светодиод.
Поднимется верхний датчик, загорится красный и зеленый светодиод, но пока не замкнут нижний датчик, а он должен быть замкнут, ничего не произойдет.
При замыкании нижнего поплавка, вода идет вверх, толкает верхний датчик, срабатывает реле, включается насос. Как только вода немного будет откачана, погас красный светодиод, горит зеленый на плате и на реле и замкнуто реле.
Как только вода уходит ниже поплавка, гаснут красный и зеленый светодиоды, отключается реле и выключается насос.
При наборе воды снова сработает нижний датчик и весь цикл повторится.
Питать плату буду от 9 вольтового адаптера, так как реле потребляет лишний ток, да и не везде удобно питать Arduino от USB.
Останется распаять навесные элементы(светодиоды, резисторы), привести в порядок провода и можно будет приступать к полевым испытаниям.
Теперь приступим к написанию скетча, он уже написан, я буду добавлять кусочки кода и пояснять, что получилось. На некоторые комментарии в коде не обращайте внимания, они могут повторяться, но дальше по ходу разберёмся.
Значит объявляем разъемы для светодиодов, которые будет у нас показывает, есть ли замыкание геркона или нет, синий светодиод (нижний датчик) на втором пине - downLed
, на третьем пине красный светодиод (верхний датчик)- upLed
, на одиннадцатом пине мы будем сигнализировать включение реле и насоса relayLed
.
keyPin1
это нижний датчик на четвёртом контакте, keyPin2
5 контакт, это у нас верхний датчик.
Объявляем разъем для реле D12
, объявляем две переменные – булевые: down
, up
для определения в каком положении находятся у нас поплавки.
Так же ещё одна переменная Trigger
, присвоим ей сразу значение ложь.
В setup и это важно,
данные будут приниматься с нижнего датчика. С верхнего датчика будем принимать данные
Через pinMode присвоим индикаторам нижнего, верхнего уровня, и реле значение OUTPUT
.
Исходящее значение для самого реле, и через digitalwrite (relay, HIGH)
подаем на реле напряжения, реле работает наоборот. То есть, если мы сейчас подаем напряжение, то реле разомкнуто, если мы здесь будем писать LOW
то реле будет замкнуто.
В цикле loop
сделаем проверку: если на разъёме D4
есть напряжение, то промежуточная переменная down
примет истинное значение, если нет, то ложь;
если на разъёме D5
есть напряжение, то промежуточная переменная up
примет истинное значение, если нет, то ложь.
Если на Верхнем датчик есть напряжение, а это свидетельствует о том, что верхний датчик замкнут, то up
истина, если нет, то up
ложь.
Идём дальше. Если keyPin1
- LOW
и keyPin2
- LOW
, то Trigger
ложь. Оба датчика разомкнуты.
В принципе здесь можно было использовать если up==false
и down==false
, и наоборот, то Триггер равно ложь, но как сделал так сделал.))))
И еще одно проверка: если keyPin1 - HIGH и keyPin2 - HIGH, то Trigger истина. Оба датчика замкнуты.
С общими проверками закончили. Идем дальше.
После цикла loop
напишем две функции mstart
и mstop
, в которых через digitalWrite
на реле и светодиод включения насоса, будем подавать питание. В mstart
на relay
– LOW
, relayLed
– HIGH
, в mstop
- relay
– HIGH
, relayLed
– LOW
, то есть наоборот.
Снова в loop
пойдёт куча проверок, если up
равно True
и Триггер равно false
, погружено в воду идёт набор воды, насос не включён – то насос включим и Триггер поменяет свое состояние.
Если теперь Триггер стал True
, то мы повторяем эти же действия.
Если нижний, верхний уровни и Триггер равны истине, то есть насос уже работает, продолжаем действием.
Если нижний уровень еще замкнут, то есть вода ещё в Нижнем уровне есть, в верхнем уже нет и триггер True
, продолжаем, Триггер всё ещё равен true
.
Если нижний уровень уже равен ложь, то есть вода откачана, верхний уровень само собой пройден, и триггер равен True
, то есть насос все еще работает, и только теперь мы мотор останавливаем, вызываем mstop
, триггер делаем равным ложь.
И ещё одна проверка и даже не одна, необходимо указать все возможные варианты, какие только могут быть, если нижний уровень ложь, верхний уровень ложь, Trigger
ложь, то чтоб не было никаких ложных срабатываний, мы опять посылаем mstop
, стоп мотор, опять пишем триггер ложь.
И вот теперь последняя проверка: если нижний уровень уже True
, верхней ещё false
и Триггер равно ложь, мы ещё шлём, что мотор не должен включаться.
Пришлось перечислить практически все вот эти комбинации, и они идут последовательно. То есть у нас up
cработает, когда поднимется до верхнего уровня и потом в цикле пойдёт опять. Триггер у нас пришел снизу со значением ложь, именно в такой последовательности всё это работает. По крайней мере в моём случае.
Небольшое условие для светодиода, я не помню почему именно, так если верхний датчик замкнут, то горит нижний синий светодиод, и наоборот.
Если замкнут нижний датчик, то мы подаем напряжение на верхний красный светодиод если нет - то наоборот…
Я не помню почему у меня так получилось, но я этот кусок кода я оставил, может быть потом в комментариях отпишусь, почему именно так сделал.
И почему именно так схема работает, почему-то я сделал перекрёст, вот такой, но сейчас я уже не могу вспомнить, писал давно.
Главное, что схема работает, вот весь код, сохраним скетч. Проверим на ошибки, ошибок нет, в принципе в таком виде схема должна работать.
Cкачать архив для ознакомления - скетч управления погружным насосом на Arduino и схема:
UPD. При сборе этой схемы в реальных условиях, по просьбам трудящихся, параллельно с верхним поплавком была припаяна кнопка, позволяющая включать насос, не дожидаясь пока сработает автоматика.
Таким образом, схема работает сразу в двух режимах: можно качать воду в большую ёмкость на несколько кубов в автоматическом режиме, пока через край не польется(можно добавить еще геркон и в бочку, для разрыва работы схемы) и можно при необходимости полить огород, не дожидаясь максимального наполнения воды в колодце, не опасаясь, что насос схватит воздух.
Смотрите видео: Управление погружным насосом на Arduino
Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!
Связанные статьи
Предыдущие статьи
- Arduino и датчик ультразвука. Определение расстояния до объекта. - 12/04/2019 14:52
- Arduino в роли вольтметра. Вывод напряжения на LCD дисплей - 10/04/2019 15:32
- Подключаем терморезистор к arduino, получим температуру в градусах по Цельсию и по Фаренгейту - 23/02/2019 20:51
- Как подключить дисплей LCD1602 к Arduino - 23/02/2019 19:35
- Как подключить сервомотор к Arduino - 23/02/2019 19:12
- Подключение RGB светодиода к Arduino - 12/01/2019 15:25
- Фоторезистор и светодиоды на Arduino - 12/01/2019 11:38
- Играем ноты на пищалке с Arduino - 12/01/2019 10:34
- Вынос мозга!!! АЦКИЙ BUZZER - омерзительная пищалка на Arduino Uno - 12/01/2019 09:55
- Новогодняя мини гирлянда в Arduino UNO. Как сделать мини гирлянду в Arduino UNO на светодиодах. - 12/01/2019 08:40
- Скетч - выключатель, светодиод и кнопка в Arduino UNO - 12/01/2019 08:15
- Включение светодиода через кнопку в Arduino UNO - 16/12/2018 04:55
- Управление светодиодом в Arduino UNO - 14/12/2018 18:24
- Установка среды разработки для Arduino UNO и пример программы - 14/12/2018 17:49