Давно возникла задача автоматизированной откачки воды из подвала тещиной дачи, т.к. при его строительстве видимо не были учтены нюансы по его герметизации и устройству дренажной системы вокруг дома. В итоге – в подвале скапливается вода, и в сезон таяния снега или дождей – в весьма приличном количестве.
По началу пользовались различными насосами (от дешевых ручейков до не самых дешевых дренажных), включая их ручками в розетку когда приезжали. Это было не дело и в приямок был поселен дренажный насос с поплавком, который был запитан на постоянку. В принципе схема рабочая, но насос включался достаточно часто, что по идее не есть гут для его ресурса.
Было решено построить универсальный контроллер для управления насосом, исходя из следующих принципов:
* работа с любым насосом на 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В ардуины.
Диаграмма подключения такая:
Также отдельно выведена кнопка reset (на диаграмме не представлена), замыкающая вывод RST ардуины на землю.
Спаял все на макетке 5х7см. Позже развел плату в спринте, но переделывать пока не стал (файл спринта приложу, но его не очень проверял).
В качестве датчиков температуры использовал DS18B20 в герметичном исполнении, покупал на Алиэкспрессе, ищутся по сочетанию слов DS18B20 waterproof, бывают с разной длинной провода (я брал 2м провод для датчика температуры воды и 1м для датчика температуры воздуха). Датчики уровня покупал в России (12vi.ru), но потом значительно дешевле нашел у китайцев (например вот тут, ищутся по слову Horizontal level sensor, но надо быть внимательнее, чтобы совпадал с приведенной картинкой – с широкой белой резинкой – он удобнее в монтаже).
Собрал все в монтажной коробке подходящего размера из Леруа. Между БП и платой проложил вставку из жесткой пленки, чтобы ноги/дорожки платы не могли коротнуть на корпус блока питания.
Некрасивости типа винтов, кривого окошка, прикрыл распечатанными и заламинированными «панельками». Сделал такие же подписи для кнопок. Вышло весьма прилично выглядящим.
Для крепления датчиков в приямке использовал 110мм канализационную трубу. Для возможности настройки уровня на месте, насверлил в ней отверстий диаметром 22мм под датчики с шагом 2.5 см. Также прикрепил кронштейны – для фиксирования проводов и датчика температуры воды. Используемые датчики уровня позволяют переставлять их в такой конструкции не снимая трубы, т.к. крепятся целиком и полностью с внешней стороны.
После сборки – испытания в домашних условиях. Результаты испытаний заверены желтым ассистентом.
Затем – установка системы в подвале.
Датчики уровня установлены так, чтобы верхний срабатывал при полностью заполненном приямке, нижний – чуть выше уровня срабатывания поплавка насоса.
Датчик температуры воздуха вывел через окошко подвала и закрепил к наружной стене цоколя на теневой стороне дома.
Контроллер прикрутил при входе в подвал.
Расстояние до приямка (с учетом обхода углов) составило около 10м. Для подключения датчиков использовал обычный электрический сетевой провод 3х0.75 и 2х0.75 из Леруа. Для подключения и легкого соединения датчиков использовал автомобильные разъемы на 4 контакта (надо, конечно, на 2 и 3 контакта, но эти у меня уже были). При 10-метровой длине кабелей проблем с опросом датчиков не наблюдается.
Ну и финальное тестирование на месте. Несколько циклов, вручную и по расписанию. Все работает как надо – оставляем девайс жить в подземелье.
При заливке скетча может напугать сообщение о недостаточной памяти.
По данным ARDUINO IDE, скетч использует 98% памяти устройства и 75% ОЗУ, что может привести к нестабильной работе устройства. Однако длительные тесты показали отсутствие каких либо проблем в работе.
И не забываем о безопасности. Подключение устройства (как и насоса без него) к сети должно производиться через УЗО или дифавтомат. В случае неисправности насоса или кабеля напряжение может пробить на воду и существует риск поражения эл.током находящихся в подвале в процессе работы насоса лиц. Применение указанных устройств позволит значительно снизить эти риски.
Также, если нагрузка достаточно мощная (1 кВт и более), имеет смысл запитать насос через контактор (например я заказал себе вот такой), ибо модули реле при мощной нагрузке по слухам долго не живут. К сожалению, я о нем и особенностях реле-модулей узнал после реализации проекта, контакторы заказал, но еще не внедрил. Как реализую дополню тему.
Более подробное описание, скетч, файл печатки – в прикрепленном архиве, либо тут, на Я.Диске
По началу пользовались различными насосами (от дешевых ручейков до не самых дешевых дренажных), включая их ручками в розетку когда приезжали. Это было не дело и в приямок был поселен дренажный насос с поплавком, который был запитан на постоянку. В принципе схема рабочая, но насос включался достаточно часто, что по идее не есть гут для его ресурса.
Было решено построить универсальный контроллер для управления насосом, исходя из следующих принципов:
* работа с любым насосом на 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В ардуины.
Диаграмма подключения такая:
Также отдельно выведена кнопка reset (на диаграмме не представлена), замыкающая вывод RST ардуины на землю.
Спаял все на макетке 5х7см. Позже развел плату в спринте, но переделывать пока не стал (файл спринта приложу, но его не очень проверял).
В качестве датчиков температуры использовал DS18B20 в герметичном исполнении, покупал на Алиэкспрессе, ищутся по сочетанию слов DS18B20 waterproof, бывают с разной длинной провода (я брал 2м провод для датчика температуры воды и 1м для датчика температуры воздуха). Датчики уровня покупал в России (12vi.ru), но потом значительно дешевле нашел у китайцев (например вот тут, ищутся по слову Horizontal level sensor, но надо быть внимательнее, чтобы совпадал с приведенной картинкой – с широкой белой резинкой – он удобнее в монтаже).
Собрал все в монтажной коробке подходящего размера из Леруа. Между БП и платой проложил вставку из жесткой пленки, чтобы ноги/дорожки платы не могли коротнуть на корпус блока питания.
Некрасивости типа винтов, кривого окошка, прикрыл распечатанными и заламинированными «панельками». Сделал такие же подписи для кнопок. Вышло весьма прилично выглядящим.
Для крепления датчиков в приямке использовал 110мм канализационную трубу. Для возможности настройки уровня на месте, насверлил в ней отверстий диаметром 22мм под датчики с шагом 2.5 см. Также прикрепил кронштейны – для фиксирования проводов и датчика температуры воды. Используемые датчики уровня позволяют переставлять их в такой конструкции не снимая трубы, т.к. крепятся целиком и полностью с внешней стороны.
После сборки – испытания в домашних условиях. Результаты испытаний заверены желтым ассистентом.
Затем – установка системы в подвале.
Датчики уровня установлены так, чтобы верхний срабатывал при полностью заполненном приямке, нижний – чуть выше уровня срабатывания поплавка насоса.
Датчик температуры воздуха вывел через окошко подвала и закрепил к наружной стене цоколя на теневой стороне дома.
Контроллер прикрутил при входе в подвал.
Расстояние до приямка (с учетом обхода углов) составило около 10м. Для подключения датчиков использовал обычный электрический сетевой провод 3х0.75 и 2х0.75 из Леруа. Для подключения и легкого соединения датчиков использовал автомобильные разъемы на 4 контакта (надо, конечно, на 2 и 3 контакта, но эти у меня уже были). При 10-метровой длине кабелей проблем с опросом датчиков не наблюдается.
Ну и финальное тестирование на месте. Несколько циклов, вручную и по расписанию. Все работает как надо – оставляем девайс жить в подземелье.
При заливке скетча может напугать сообщение о недостаточной памяти.
По данным ARDUINO IDE, скетч использует 98% памяти устройства и 75% ОЗУ, что может привести к нестабильной работе устройства. Однако длительные тесты показали отсутствие каких либо проблем в работе.
И не забываем о безопасности. Подключение устройства (как и насоса без него) к сети должно производиться через УЗО или дифавтомат. В случае неисправности насоса или кабеля напряжение может пробить на воду и существует риск поражения эл.током находящихся в подвале в процессе работы насоса лиц. Применение указанных устройств позволит значительно снизить эти риски.
Также, если нагрузка достаточно мощная (1 кВт и более), имеет смысл запитать насос через контактор (например я заказал себе вот такой), ибо модули реле при мощной нагрузке по слухам долго не живут. К сожалению, я о нем и особенностях реле-модулей узнал после реализации проекта, контакторы заказал, но еще не внедрил. Как реализую дополню тему.
Более подробное описание, скетч, файл печатки – в прикрепленном архиве, либо тут, на Я.Диске
Вложения
-
831.3 KB Просмотры: 32