Arduino для бассейна

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

Контроллер интегрирован в «умный дом» на базе OpenHab.

 

Исходное ТЗ:

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

Использованы модули Arduino:

  • Arduino Pro Mini (5В / 16 МГц) – неоригинальная плата
  • DS3231 – плата часов реального времени
  • ENC28J60 — Ethernet-плата
  • 4-х канальный модуль реле
  • DS18B20 – датчик температуры в герметичном исполнении
  • ACS712 — датчик тока на 20А
  • Блок питания 220В в 5В 1А

Все это смонтировано на монтажной плате и разведено тонким монтажным проводом. Размещено в подходящей электромонтажной коробке.

2015-06-16 19.54.50 2015-06-16 19.54.36_2 2015-06-16 19.55.14

В качестве источника питания для платин хлоратора и омеднителя используется трансформаторный блок питания 220В – 12В 4.5А. Схема коммутации реле в приложении ниже.

Режим работы хлоратора.

По итогам второго сезона работы хлоратора с бассейном на  11 куб. метров, я выработал для себя такой график:

  • Включение насоса  — 6:00
  • Через 10 минут включается хлоратор
  • Время работы хлоратора — 3 часа
  • Через 10 минут после отключения хлоратора включается омеднитель (не рекомендую включать его каждый день!)
  • Насос отключается в 10:00

Если на улице высокая температура, то время работы фильтра и хлоратора  увеличиваю на 1-2 часа по необходимости.

Краткие комментарии к логике работы.

Для подключения в Ethernet указываем нужный IP и уникальный MAC адрес. От DHC умышленно отказался, чтобы иметь статический адрес устройства в домашней сети.

При первом включении через HTTP запрос T&12:34 устанавливаем время в часах. Описание ниже в приложении по HTTP запросам.

Далее с помощью HTTP запроса S&00:11&22:33&44:55&66:77&88&99 устанавливаем время работы таймера. Описание ниже в приложении по HTTP запросам. При получении такого HTTP запроса, он парсится. Полученные значения переводятся в формат Int и присваиваются переменным, отвечающим за хранение данных о времени работы таймера.

Полученные данные сохраняются в EEPROM для восстановления их после пропадания питания или нажатия кнопки Reset.

Вызовом модуля timeCalc, вычисляются значения:

  • время включения насоса (часы и минуты)
  • время работы насоса (часы и минуты)
  • время выключения насоса (часы и минуты)
  • задержка включения хлоратора (минуты) – чтобы до включения хлоратора началась циркуляция воды
  • время включения хлоратора (часы и минуты)
  • время работы хлоратора (часы и минуты)
  • время выключения хлоратора (часы и минуты)
  • задержка включения омеднителя (минуты) – пауза между выключением хлоратора и включением омеднителя
  • время включения омеднителя (часы и минуты)
  • время работы омеднителя (часы и минуты)
  • время выключения омеднителя (часы и минуты)

Так как модуль таймера работает с минутами, то вычисляются:

  • время включения насоса (в минутах)
  • время выключения насоса (в минутах)
  • время включения хлоратора (в минутах)
  • время выключения хлоратора (в минутах)
  • время включения омеднителя (в минутах)
  • время выключения омеднителя (в минутах)

Работа таймера упрощена до одних суток – время включения, выключения и работы можно задать только в период от 00:00 до 24:00.

Для возможности ручного управления предусмотрено включение и выключение таймера – переменная iTimer.

Если iTimer == 1, то вызывается модуль timer, и система работает в автоматическом режиме.

Если iTimer == 0, то таймер не работает и можно включать/выключать все с помощью соответствующих HTTP запросов. Описание HTTP-запросов ниже.

В таймере происходит сравнение реального времени (в минутах) со временем включения и отключения оборудования (в минутах).

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

В модуле таймера для хлоратора предусмотрена смена полярности каждые сутки — для автоматической очистки пластин хлоратора от “накипи”. При “жесткой” воде пластины обычно забиваются “накипью” буквально за пару недель!

Все полученные данные отображаются на web-странице:

  • температура воды
  • уровень слои (оценочно)
  • реальное время
  • состояние таймера (ON/OFF)
  • время включения, задержки включения, работы и отключения оборудования
  • состояние оборудования (ON/OFF)
  • состояние датчика потока (OK/ERROR)

Это нужно для контроля работы хлоратора, а так же для передачи данных в “умный дом” – Openhab парсит эту страницу и забирает нужные данные для отображения на своем сайте.

Так же из Openhab можно устанавливать время работы хлоратора, включать/отключать, путем отправки HTTP запросов в строну хлоратора.

Код скетча: waterpool25

По тексту скетча я старался писать комментарии, чтобы и самому потом разобраться, и другие могли понять что и как работает!

Подключение Arduino:

Pro mini ENC28j60
GND GND
VCC +5V VCC +5V
RST RST
D10 CS
D11 MOSI
D12 MISO
D13 SCK

 

Pro mini DS18b20
VCC +5V Red VCC +5V
D9 Yellow — Резистор на +5V
GND Black

 

Pro mini DS3231
GND GND
VCC +5V VCC +5V
A4 SDA
A5 SCL

 

Pro mini Relay
GND GND
VCC +5V VCC +5V
D4 IN1
D5 IN2
D6 IN3
D7 IN4

 

Pro mini  
D8 Датчик потока воды
GND Датчик потока воды

 

Схема:

arduino_для_бассейна

 

HTTP запросы:

 192.168.1.90/T&00:11:22 – установка времени, где:

— T — признак установки времени

— 00 – часы

— 11 – минуты

— 22 — секунды

 

192.168.1.90/S&00:11&22:33&44:55&66:77&88&99 – установка таймера, где:

— S – признак установки таймера

— 00 – часы включения насоса фильтра (pumpStartHour)

— 11 – минуты включения насоса фильтра (pumpStartMinute)

— 22 – часы работы насоса фильтра (pumpWorkHour)

— 33 – минуты работы фильтра (pumpWorkMinute)

— 44 – часы работы хлоратора (chlorWorkHour)

— 55 – минуты работы хлоратора (chlorWorkMinute)

— 66 – часы работы омеднителя (cuprumWorkHour)

— 77 – минуты работы омеднителя (cuprumWorkMinute)

— 88 – задержка включения хлоратора после включения фильтра (chlorT)

— 99 – задержка отключения омеднителя перед выключением фильтра (cuprumT)

 

192.168.1.90/TIMER_ON – включить таймер

192.168.1.90/TIMER_OFF – выключить таймер – ручное управление

 

192.168.1.90/PUMP_ON – включить насос фильтра

192.168.1.90/PUMP_OFF – выключить насос фильтра

 

192.168.1.90/CHLOR_1_ON – включить хлоратор +

192.168.1.90/CHLOR_1_OFF – выключить хлоратор +

 

192.168.1.90/CHLOR_2_ON – включить хлоратор –

192.168.1.90/CHLOR_2_OFF – выключить хлоратор —

 

192.168.1.90/CUPRUM_ON – включить омеднитель

192.168.1.90/CUPRUM_OFF – выключить омеднитель

 

192.168.1.90/ALL_OFF – выключить все

 

12 thoughts on “Arduino для бассейна

  1. Добрый день,

    а картинок схем на странице нет, к сожалению. Нельзя ли их восстановить?

  2. Здравствуйте очень интересный проект, у меня вопрос к вам, я пока что не силен в openhab,
    а http запросами, можно рулить прямо из браузера??

    1. Да, можно напрямую из браузера отправлять http запросы.
      Прямо в адресной строке и пишите свой запрос, например, 192.168.1.90/TIMER_ON, где 192.168.1.90 — это адрес Ардуинки.

  3. Здравствуйте! А скажите, пожалуйста, какой омеднитель вы используете и сколько по времени он у вас работает? У меня примерно тоже самое только ещё добавлены электромагнитные клапана для обогрева через солн. обогреватель.

    1. Омеднитель тот который был в «хлораторе» Индекс — это две толстенные медные пластины, установленные рядом с пластинами хлоратора.
      Я его использую только если надо побороться с водорослями. В пришлом году пробовал включать каждый день на несколько минут. Но это оказалось не нужно. Например, в этом году только один раз в начале сезона на пару часов включал. После этого больше не включал — вода чистая.

  4. Я так понял, датчик потока и датчик уровня хлора вы взял в хлораторе Intex? Не могли бы рассказать подробнее про подключения к хлоратору, или нарисовать схему?

    У меня та же самая ситуация, только я еще купил теплообменник, делаю подогрев от газового котла, который в доме.
    Соответственно буду дорабатывать программу на включение реле котла джля подогрева по температуре и по наличию потока (по потоку очень важно, чтобы котел не перегрел воду около теплообменника и трубки не поплавились).
    Идея с котлом такая: в теплый период котел на отопление не используется, значит переклбючаем вентилями его на контур с теплообменником. А вместо реле температуры, что в доме, подсоединим реле Arduino, которое буджет замыкаться при понижении температуры воды и при наличии протока.

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

      Датчика уровня хлора у меня нет.
      Я уровень хлора проверяю изредка (1-2 раза за сезон) с помощью тестовых полосок.
      Просто подобрал оптимальную продолжительность работы хлоратора и все. Вот уже 4-й сезон все работает в автоматичном режиме. 🙂

    1. Для оценки уровня соли в воде. 🙂
      Это конечно достаточно «кривой» способ оценки, но можно понять что если ток снизился, то надо взять TDS-метр и изменить уровень соли. Ну и досыпать соли если нужно.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *