четверг, 10 сентября 2015 г.

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

А вот и мой самодельный контроллер системы автополива.

Контроллер автополива в разобранном виде

Контроллер собран и готов к работе!
Схем будет несколько, так как собирал я его по модульной системе. Это удобно тем, что если потом захочется что-то улучшить - не нужно переделывать всё.

Итак, из чего состоит контроллер?


Arduino Leonardo. Самодельная.


Для тех, кто не в курсе, Arduino - это такие небольшие платы с микроконтроллером, который можно запрограммировать для выполнения почти каких угодно задач. Для него разработан специальный значительно упрощённый язык программирования и куча обучающих материалов.Начать работать с ним может человек, достаточно далёкий от программирования и электроники. Каким и я был в своё время.
Сделал я её уже давненько, как эксперимент.

Схема Arduino Leonardo.
Исходники делал на основе официальной схемы с сайта https://www.arduino.cc/ в Протеусе, Ссылки на все исходники внизу. Так как делал на односторонней печатной плате - то у меня не получилось развести её так, как надо - поэтому расположение выводов не соответствует официальному.

Поначалу мне удалось залить в Ардуино загрузчик, и потом заливать в неё скетчи через USB. Но потом по непонятным причинам он слетел, и пришлось программировать через ISP-разъём при помощи программатора (у меня это USBasp).

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

Плата контроллера.

Плату контроллера системы автополива я сделал двустороннюю, травил популярным методом лазерно-утюжной технологии.


Схема главной платы контроллера системы автоматического полива
Как видите, больше всего на плате всяких разъёмов. По сути, это по большей части просто разводка от выводов Arduino до других компонентов.Так что, стоит запастись вот такими вилками и розетками:
Кроме того, на плате расположены 6 транзисторных ключей Q1 - Q6 с обвязкой, к которым и подключаются электромагнитные клапаны. Транзисторы можно брать почти любые (биполярные NPN, или полевые N-канальные), с напряжением от 30 вольт, и силой тока от 1А. Я остановился на BD135. Перед тем стояли полевики - но они почему-то попробивались.

Микросхема сдвигового регистра 74HC595 нужна для того, чтобы, используя только 3 вывода Arduino , управлять всеми 6-ю транзисторами. Соединяется с микроконтроллером через шину SPI.

Разъёмы J14 - J16 пока не используются, в будущем могут быть использованы для подключения каких-либо аналоговых датчиков. С землёй они соединены через транзистор - чтобы можно было программно отключать питание на датчики и таким образом экономить энергию.

Модуль часов реального времени (RTC) DS1307


Модуль я сделал сам, а сейчас - так проще купить готовый в любом магазине. Микросхема часов реального времени нужна для того, чтобы при отключении питания сохранять данные о времени (и продолжать отсчитывать дальше). Для этого она получает питание не только от +5 вольт, как и вся схема - но ещё и имеет отдельную литиевую батарейку. DS1307 отличается весьма малым энергопотреблением - поэтому этой батарейки хватает на несколько лет.

LCD экран от Nokia 5110


Очень распространённый в самоделках экранчик. Продаётся в большинстве онлайн радиомагазинов, стоит дёшево. Имеет разрешение 84 на 48 точек, и к нему есть несколько библиотек для Arduino. Я для экономии выводов подключал к выводам ICSP Arduino Leonardo, и немного переделал стандартную библиотеку - так что если кто будет повторять - нужно брать мою (PCD8544_Leo). Она будет в архиве.
Также нужно учитывать, что разрешённое напряжение для выводов экранчика - 3.3 В, тогда как на выводах Arduino напряжение 5 В. И хотя при экспериментах я соединял их просто так без последствий - топри длительной работе вполне вероятен выход экрана из строя. Поэтому я сделал простенький конвертер уровней по принципу резистивного делителя напряжения, туда же влепил линейный стабилизатор на 3.3В на питание.

Клавиатура


Клавиатура состоит из 5 тактовых кнопок. Для того, чтобы обойтись не пятью, а только тремя выводами Arduino, кнопки хитро соединены с выводами через диоды. А потом уже в программе по сочетанию высоких и низких уровней напряжения на трёх вводах определяется, какая именно кнопка нажата.

Вот видео, где на всё это можно посмотреть:
Контроллер автополива в разобранном виде

Но всё, что я описал - это куча железа без программы для микроконтроллера.
Писал я её долго и упорно, несколько раз переписывал куски кода... Но в итоге работает!
В программе реализована возможность разрешать/отключать автополив и набор воды в бак, устанавливать дни недели, когда осуществлять полив, выбирать общую длительность полива и длительность включения каждого клапана, корректировать время...  И вроде без явных багов. По крайней мере, в моё отсутствие полив производится, вода в бак набирается.

В следующем видео можно увидеть меню настроек и простые тесты контроллера.

Контроллер собран. Обзор меню и настроек, тестирование.


Ну, а видео того, как работает система полива непосредственно на моей даче - в моём предыдущем посте.

А по этой ссылке можно скачать схемы и прошивку всего того, что я здесь описал: https://drive.google.com/folderview?id=0B-L3FpybzEsjR2JsYU5BaGlieFU&usp=sharing


4 комментария :

  1. А для чего нужны диоды на коллекторах транзисторов?

    ОтветитьУдалить
    Ответы
    1. Когда ток через транзистор закрывается, из-за индуктивности соленоида на коллекторе возникает скачок напряжения. Вот это-то избыточное напряжение и отводится через диод.

      Удалить
  2. Organic titanium dioxide in food: The basic recipe
    › food › columbia titanium organic-etire_v › food 2014 ford fusion energi titanium › organic-etire_v Tertium oxide is a highly volatile molecule in food, which acts like a nutrient in The chemical, titanium white wheels Tertium dioxide, 출장마사지 is nano titanium flat iron a chemical compound that gives an excellent

    ОтветитьУдалить