ARDUINO Контроллер дренажного насоса

Оцените проект

  • Супер!

    Голосов: 17 81.0%
  • Оигинально

    Голосов: 3 14.3%
  • Сойдет

    Голосов: 1 4.8%
  • Да ну, фигня

    Голосов: 0 0.0%
  • Слишком заморочено

    Голосов: 0 0.0%
  • Слишком просто

    Голосов: 0 0.0%
  • Я бы все сделал совсем по-другому

    Голосов: 1 4.8%
  • Утя клевая

    Голосов: 5 23.8%

  • Всего проголосовало
    21
  • Опрос закрыт .
Давно возникла задача автоматизированной откачки воды из подвала тещиной дачи, т.к. при его строительстве видимо не были учтены нюансы по его герметизации и устройству дренажной системы вокруг дома. В итоге – в подвале скапливается вода, и в сезон таяния снега или дождей – в весьма приличном количестве.
По началу пользовались различными насосами (от дешевых ручейков до не самых дешевых дренажных), включая их ручками в розетку когда приезжали. Это было не дело и в приямок был поселен дренажный насос с поплавком, который был запитан на постоянку. В принципе схема рабочая, но насос включался достаточно часто, что по идее не есть гут для его ресурса.
Было решено построить универсальный контроллер для управления насосом, исходя из следующих принципов:
* работа с любым насосом на 220В
* настройка включения насоса по расписанию: дважды в день/ежедневно/дважды в неделю/еженедельно/дважды в месяц/ежемесячно в указанное время
* отслеживание уровня воды контроллером по двум точкам:
— верхний уровень – минимальный уровень воды, для которого имеет смысл запускать насос
— нижний уровень – минимальный уровень воды, безопасный для насоса
* отслеживание температуры воды и воздуха и запрет запуска насоса при низких температурах.
* ограничение длительности работы насоса
* возможность ручного запуска и ручной остановки насоса

Алгоритм работы
Алгоритм работы устройства следующий:
Если подошло время запуска насоса по расписанию, то:
* если уровень воды ниже верхнего или ниже нижнего датчика уровня – запуск отменяем
* если температура воды или воздуха ниже заданных в меню значений - запуск отменяем
Если в соответствии с одним из условий запуск отменен, контроллер запоминает в EEPROM дату-время последней попытки запуска , а также причину отмены. Запуск насоса не производится до следующего следующего по расписанию старта.
Если условия не нарушены, производится запуск насоса. При этом контроллер запоминает дату-время последней попытки запуска насоса с причиной «ПУСК ОК», а также дату-время последнего запуска.
Во время работы насоса проверяются условия на нижний датчик уровня, температуру и время непрерывной работы насоса. Если одно из условий нарушается, насос останавливается, в EEPROM сохраняется длительность работы насоса и причина остановки.
Насос может быть запущен вручную. Для этого нужно нажать кнопку «#», контроллер запросит подтверждение «ПУСК? (# — ДА)» – нажать «#» еще раз. При ручном запуске проверка условий аналогична запуску по расписанию, в случае их нарушения будет выведена строка «ЗАПУСК ОТМЕНЕН», дата-время последней попытки и причина отмены будут сохранены.
В процессе работы насоса он может быть остановлен вручную. Для этого нужно нажать кнопку «#», контроллер запросит подтверждение «СТОП? (# — ДА)» – нажать «#» еще раз. В качестве причины отмены при такой остановке будет указан форс-мажор (Ф.МАЖОР). Такая же причина отмены будет сохранена при внезапном отключении питания контроллера, перезагрузке контроллера или ином сбое.

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

Реализация
В качестве основы проекта была выбрана плата ARDUINO NANO v3.
Также использовался модуль RTC DS3231 + AT24C32 с интерфейсом I2C. Встроенная в модуль EEPROM используется для хранения настроек контроллера и истории событий.
Для определения температуры воды и воздуха использованы датчики DS18B20 в герметичном исполнении.
Для определения уровня выбраны поплавковые датчики уровня, срабатывающие на замыкание, либо на размыкание (оба датчика должны быть идентичными) – настраивается константами в коде.
Для управления насосом выбран 2-канальный модуль реле. Для индикации подачи питания на насос, параллельно сигнальным ногам модуля реле добавлены пара светодиодов.
Для обеспечения настройки использованы пленочная клавиатура 4х4 и китайский символьный дисплей 16х2 с интерфейсом I2C.
Питается система от 12В блока питания LED-лент, я использовал дешевый блок на 25Вт. На ардуину питание идет через модуль стабилизатора. Напряжение выставлено около 8В и подается на вход VIn ардуины через диод 1N4007.
Модули и датчики питаются от выхода +5В ардуины.
Диаграмма подключения такая:
BasementPump_diagrams_noACDC_bb.png
Также отдельно выведена кнопка reset (на диаграмме не представлена), замыкающая вывод RST ардуины на землю.
Спаял все на макетке 5х7см. Позже развел плату в спринте, но переделывать пока не стал (файл спринта приложу, но его не очень проверял).

03-pcb-20180209_150853.jpg

В качестве датчиков температуры использовал DS18B20 в герметичном исполнении, покупал на Алиэкспрессе, ищутся по сочетанию слов DS18B20 waterproof, бывают с разной длинной провода (я брал 2м провод для датчика температуры воды и 1м для датчика температуры воздуха). Датчики уровня покупал в России (12vi.ru), но потом значительно дешевле нашел у китайцев (например вот тут, ищутся по слову Horizontal level sensor, но надо быть внимательнее, чтобы совпадал с приведенной картинкой – с широкой белой резинкой – он удобнее в монтаже).
02-Sensors.jpg
Собрал все в монтажной коробке подходящего размера из Леруа. Между БП и платой проложил вставку из жесткой пленки, чтобы ноги/дорожки платы не могли коротнуть на корпус блока питания.
04_20180403_184542.jpg

Некрасивости типа винтов, кривого окошка, прикрыл распечатанными и заламинированными «панельками». Сделал такие же подписи для кнопок. Вышло весьма прилично выглядящим.

05_20180403_215106.jpg

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

06-20180421_222009.jpg

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

07-tests-20180421_225208.jpg

Затем – установка системы в подвале.

08-20180513_162329.jpg

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

09-20180520_154828.jpg

Расстояние до приямка (с учетом обхода углов) составило около 10м. Для подключения датчиков использовал обычный электрический сетевой провод 3х0.75 и 2х0.75 из Леруа. Для подключения и легкого соединения датчиков использовал автомобильные разъемы на 4 контакта (надо, конечно, на 2 и 3 контакта, но эти у меня уже были). При 10-метровой длине кабелей проблем с опросом датчиков не наблюдается.
Ну и финальное тестирование на месте. Несколько циклов, вручную и по расписанию. Все работает как надо – оставляем девайс жить в подземелье.

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

11-BigSketch01.PNG

По данным ARDUINO IDE, скетч использует 98% памяти устройства и 75% ОЗУ, что может привести к нестабильной работе устройства. Однако длительные тесты показали отсутствие каких либо проблем в работе.
И не забываем о безопасности. Подключение устройства (как и насоса без него) к сети должно производиться через УЗО или дифавтомат. В случае неисправности насоса или кабеля напряжение может пробить на воду и существует риск поражения эл.током находящихся в подвале в процессе работы насоса лиц. Применение указанных устройств позволит значительно снизить эти риски.
Также, если нагрузка достаточно мощная (1 кВт и более), имеет смысл запитать насос через контактор (например я заказал себе вот такой), ибо модули реле при мощной нагрузке по слухам долго не живут. К сожалению, я о нем и особенностях реле-модулей узнал после реализации проекта, контакторы заказал, но еще не внедрил. Как реализую дополню тему.
Более подробное описание, скетч, файл печатки – в прикрепленном архиве, либо тут, на Я.Диске
 

Вложения

AstreyRize

★✩✩✩✩✩✩
31 Июл 2018
7
18
Выглядит компактно и аккуратно, люблю такие проекты. Еще бы добавить кабель менеджмент.
Идея для апгрейда: добавить gsm модуль для получения информации и управления насосом какими-нибудь SMS командами.
 

Юрий

✩✩✩✩✩✩✩
6 Авг 2018
1
0
Проект понравился своей практичностью, качеством подхода и реализацией, а так же подробным описанием! Спасибо за Ваш труд по ознакомлению с проектом!
 

EandV

★★★✩✩✩✩
4 Авг 2018
288
163
Шикарный проект! А можно ссылку на Али на разъем под Ардуино, который в макетку впаян или хотя бы как правильно называется, сам найду?
 
Шикарный проект! А можно ссылку на Али на разъем под Ардуино, который в макетку впаян или хотя бы как правильно называется, сам найду?
Покупал давно, у продавца товар ушел. Искал по строке dip 32p socket.
Панелька под dip-32 микросхему широкая (не знаю бывают ли вообще узкие).
2 пина остаются лишние - их можно либо вытащить либо оставить как есть и втыкать ардуинку с заранее запомненным смещением. Вытаскиваются пины путем выталкивания их с нижней стороны в направлении верхней мини-пассатижами или пинцетом.
 
  • Лойс +1
Реакции: EandV

Thug Robot

✩✩✩✩✩✩✩
8 Сен 2018
7
2
Проект очень даже хорош, однако я не предпочел бы использовать EEPROM по скольку у него ограниченные циклы записи.
Да, я знаю что их очень много,порядка нескольких тысяч, однако я считаю это не практичным в плане записи данных. EEPROM больше подходит для сохранения настроек и последующей их загрузки при включении микроконтроллера. Тем более было бы более удобно сохранять такие данные не SD карту которую можно без проблем вытащить и посмотреть лог на компьютере.
 
  • Лойс +1
Реакции: йцукен

SerjioSA

✩✩✩✩✩✩✩
7 Сен 2018
4
2
Вот это качество! Буду к такому стремиться.
 

alexblacktmn

✩✩✩✩✩✩✩
31 Июл 2018
1
1
А че такой заумный алгоритм работы? Поставить два датчика уровня. Верхний и нижний. Дошла вода до верхнего - насос качает пока не оголится нижний. Нижний оголился - насос стоп пока не замкнет верхний. И т.д. И не надо ни каких логов, датчиков температуры и прочих дисплеев.Достаточно ардуинки и двух датчиков уровня. Вам чтоб воды не было или попонтоваться?
 
Изменено:
  • Лойс +1
Реакции: Kelll31