3dx

Народное творчество

Система автоматического полива. Контроллер.

12 комментариев

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

Эта статья является логическим продолжением темы о системе автоматического полива. Начало было положено в статье о форсунках. Трубы закопаны, распылители установлены, теперь надо сделать так, что бы не бегать постоянно к кранику и не крутить его туда, сюда. Речь пойдет только о контроллере, про исполнительные устройства будет написана еще одна статья.

Требования к контроллеру были установлены следующие:
1. Включать и выключать полив по заранее установленному времени;
2. Следить за наличием дождя за бортом, зачем поливать если идет дождь;
3. Следить за температурой воздуха;
4. На перспективу: контролировать уровень в бочке с водой.

Требования есть, надо делать. В качестве мозга выбран микроконтроллер ATmega328 распаянный  на платке Arduino Nano. Это удобно, так как на этой платке есть разъем мини usb, что позволяет менять прошивку в ходе отладки, не извлекая контроллер из платы. Время будет отсчитывать микросхема часов реального времени DS3231, в ней встроен датчик температуры и с помощью него организована температурная корректировка показаний. DS3231 более точна в отличии от дешевой ds1307. Управление исполнительными механизмами будет организовано через реле. Для отображение информации я выбрал LCD экран на 20 знаков в 4 ряда. Для навигации выбрал платку с распаянными кнопками. Температуру и влажность решил измерять датчиком DH22, в отличии от DH11 он более точный и позволяет измерять влажность до 100%. DH22 будет трудится в паре с аналоговым датчиком воды (для меня дождя). Контроллер и начинка будут запитаны через плату с регулятором напряжения LM2596. Питаться вся сборка будет от напряжения 12В, которое обеспечивает щит низковольтного питания. Для наглядности привожу картинки всех составляющих, которые были заказаны в китайском магазине.

Что бы эта вся требуха не болталась я разместил ее на кусочке фольгированного текстолита 10х15 см, который является как бы «материнской платой». Рисуем печатную плату (она же материнская), параллельно чертим схему и пишем программный код. Вроде все сверял и проверял, а все равно попутал порты контроллера (ардуино), поэтому  на фотографии готовой платы видно много перемычек, в архиве для скачивания и на скриншоте из Sprint-Layout уже все исправлено.

Схема и ее краткое описание. (схема кликабельная).

Схема не представляет собой чего то сложного, так как вся конструкция собрана из модулей, остается их только соединить между собой. Питание всей логики и исполнительных элементов осуществляется с помощью DC-DC преобразователя на микросхеме LM2596. Эту сборку можно заменить простой LM7805, мне было удобней поставить сборку, что бы меньше паять. Далее по схеме индикаторный светодиод, который информирует о наличии напряжения после регулятора. Модуль клавиатуры — это по сути делитель напряжения, он подключен к аналоговому входу ардуино на котором организовано АЦП, напряжение которое приходит на лапку контроллера определяет какая кнопка нажата. Значения делителя лучше измерять по факту, а то кто знает, что там китайци запаяют. Модуль часов реального времени сидит на шине I2C. Можно заметить, что шина данных не подтянута к плюсу питания, так как подтяжка присутствует на самом модуле. Модули реле так же имеют на своей плате подтяжку к плюсу питания, это означает, что реле включается при низком логическом уровне (по уровню LOW). На всей схеме мы видим всего лишь два транзистора, один для включения пищалки, которая сигнализирует своим писком о состоянии системы, ошибках и превышении каких то там пределов. Второй включает подсветку экрана, логика включения отработана на программном уровне. Дисплей подключен к контроллеру по 4-х битному интерфейсу, хотя выгодней его подключить к шине I2C, тогда останется больше цифровых портов для подключения разных приблуд. На схеме все выводы подписаны, нужен только даташит к экрану. Резистор R2 предназначен для регулировки контрастности.  Датчик влажности и температуры выбран именно DH22 из за более точных показаний в отличии от DH11, о чем, в принципе, я уже говорил. Датчик дождя представляет из себя простую пластинку с дорожками и отдельную платку с которой организован выход двух сигналов — аналоговый и цифровой. Я заиспользовал цифровой, так как мне надо знать идет дождь или нет. Датчик дождя работает программно в паре с DH22 что бы отсечь ошибочные срабатывания. Все входы и выходы выведены на клеммные колодки.

На схеме видно 3 выключателя и два квадратика с надписями «Расход» и «Давление». Это сделано на перспективу для контроля заполнения емкости запаса воды. Датчики соответственно для мониторинга давления и расхода в подающей магистрали. Датчики предполагаются только аналоговые. Можно применить датчики передающие информацию по протоколу I2C, но это уже совсем другая история.

А вот и печатная плата. Тут особо рассказывать нечего. Все найденные ошибки я, вроде, исправил. Тут видно маленькие платки для распайки клемм и выносных датчиков.

Poliv_1_16

А вот фото собранного девайса. Куча перемычек — это мои ошибки. :)))

Poliv_1_14Poliv_1_12Poliv_1_13

Назначение кнопок для дальнейшего понимания обозреваемого:

Poliv_1_29

В итоге программный комплекс получился следующий.

В контроллере организовано две независимые ветки полива с тремя таймерами включения и выключения, которые выставляются независимо друг от друга. На картинке видно только первую линию, вторая аналогичная. Переключается индикация кнопками «вверх» и «вниз».

Poliv_1_17

Запрет на полив организован по температуре: запрет на полив при высокой температуре, чтоб не сжечь растения летом, и при низкой, чтоб «не заморозить» :))). Диапазон рабочих температур можно выставить в меню.

Контроллер может работать с двумя системами подачи воды: от водопровода и от бочки с насосом. В схеме присутствует четыре реле, два из них управляют клапанами на линиях полива, одно включает насос и последнее включает подпитку бака. При превышении или понижении уровня высвечивается ошибка и пищит пищалка. По логике при низком уровне насос не включится, при переполнении — включается.

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

Poliv_1_26Poliv_1_27Poliv_1_28

В самой нижней строке экрана могут мигать ошибки:
1. Еrr 001 — нет связи с датчиком DH22 (эта ошибка высвечивается в верхнем тулбаре);
2. Еrr 002 — превышен уровень в баке;
3. Еrr 003 — слишком низкий уровень в баке.

Включить полив можно и в ручную, удерживая кнопку «Set»:

Poliv_1_25

Для удобства пользования организовано меню. При нажатии на кнопку «влево» она же «menu» открывается первая страница где можно выбрать настройки первой, второй линии и настройки, собственно, системы. Пройдемся по порядку.

Poliv_1_18

Настройки таймеров для линии 1. Здесь можно настроить три независимых таймера включения — выключения. Для линии 2 все точно так же.

Poliv_1_19

Первые значения это время включения, второе время выключения, а ниже флажок включен таймер или нет. При нажатии на кнопку «Set» происходит сохранение заданных значений. При нажатии на кнопку «влево, menu» происходит возврат в предыдущее меню без сохранения значений. Навигация осуществляется кнопками «влево», «вправо». Настройка значений кнопками «вверх», «вниз».

Poliv_1_20

Следующее подменю — подменю Setup. Здесь можно выбрать пункт настройки часов, температурного диапазона включения полива, а так же очистить энергонезависимую память, то есть сбросить все настройки таймеров.

Poliv_1_21

Настройка часов аналогична настройке таймера полива.

Poliv_1_22

Настройка температурного диапазона полива. Первое значение — это нижняя граница, второе — верхняя.

Poliv_1_23

Меню очистки память. Здесь  кнопками «вверх», «вниз» требуется выбрать необходимое действие и подтвердить его нажатием кнопки «Set».

Poliv_1_24

В конце статьи можно скачать архив со схемой, печатными платами и прошивкой. В прошивке присутствуют коментарии для облегчения понимания. На момент написания статьи версия прошивки 2.04. Если найду ляпы, прошивку обновлю.

Для всей этой конструкции был закуплен корпус:

Poliv_1_29

А вот контроллер в процесе монажа:

Poliv_1_30

А вот уже смонтирован:

Poliv_1_31

Датчики разместил возле крыши сарая. В место корпуса отлично подошла баночка из под крема.

Poliv_1_32

А тут мы видим узел подачи воды к форсункам. В качестве электроприводной арматуры выступает китайский электромагнитный клапан:

Poliv_1_33

Конструкция подключения временная. Она будет изменена когда доделаю вторую ветку системы полива. А пока так.

Архив со схемой, печатными платами и прошивкой: Клац…

Так же Вам может понадобится дополнительная библиотека «DHT.h» и она так же присутствуюет в вышеизложенном архиве.
Как устанавливать библиотеки расписано тут: Клац…

Для работы с выложенным материалом вам понадобятся:
1. sPlan 7.0;
2. Sprint-Layout 6.0;
3. Среда разработки Arduino IDE 1.6.5


PS. Я вижу люди мою статью читают, поэтому пишите в коментах (спам я не рассылаю), дам пояснения, правильно я сделал или нет. Не стесняйтесь.

12 thoughts on “Система автоматического полива. Контроллер.

  1. Уведомление: Безопасное питание — 3dx

  2. Уведомление: Безопасное электропитание. | 3dx

  3. Спасибо за статью, как можно расширить до 8 каналов? Спасибо!

    Нравится

    • Есть пару вариантов.
      1. отказаться от доп. датчиков уровня, давления и расхода.
      2. применить ардуину с большим количеством портов — Arduino Mega 2560
      3. применить сдвиговый регистр 74HC595.
      Но в любом случае править код, в одном случае больше, в другом меньше. Меню написано под две линии.

      Нравится

      • «Меню написано под две линии.»
        То есть можно только 2 реле запрограммировать?

        Нравится

        • Да, у меня программа написана для 2-х реле, которые включают подачу воды в две разные линии. В добавок, 1 реле для включения насоса и 1 реле для подпитки бака запаса воды. Это все я делал под свои нужды. На этой же платформе без перепайки компонентов, но с корректировкой программы, можно организовать 4 независимых линии полива, но отказаться от насоса и подпитки бака.

          Нравится

  4. Добрый день.Однако давненько опубликовано,но вопросик.
    В пртеусе на работает,не пробовали?

    Нравится

  5. Добрый вечер.Вроде в протеусе запустил.(пока жду детальки из Китая)
    Кажет температуру,влажность.На концевики реагирует,линии меняет на дисплеи.А вот кнопки не работают!!!
    Я в программировании полный чайник,только повторяю.
    Литом на даче поставил шестиметровую теплицу.Нужно организовать капельный полив.
    Без больших заморочек.Ваш проект самое ТО.Благодарю за доступ к разработке.

    Нравится

    • В протеусе временные задержки сильно зависят от производительности ПК. А кнопки, как раз, организованы на временных задержках. Но и в железе, если честно, они работают немного «туговато».

      Нравится

  6. Извините,все заработало.Буду симулировать.Еще раз Благодарю.

    Нравится

  7. Добрый день. У Вас получился хороший незамудрённый проект полива, но мне кажется для дачного участка было-бы неплохо добавить возможность полива не только по времени, а и в заданные дни недели. Учитывая что на многих дачах воду подают по расписанию или раз в неделю, закачивать воду в резервуар тоже неплохо только в эти дни недели (возможно с учетом давления воды в водопроводе). Ну и для увеличения линий полива — подключить дисплей по шине i2c.

    Нравится

Оставьте комментарий