Пятница, 22 Январь 2016 21:14

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

Автор
Оцените материал
(1 Голосовать)

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

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

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

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, кнопки хитро соединены с выводами через диоды. А потом уже в программе по сочетанию высоких и низких уровней напряжения на трёх вводах определяется, какая именно кнопка нажата.

Схема клавиатуры

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

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

Писал я её долго и упорно, несколько раз переписывал куски кода... Но в итоге работает!

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

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

UPD Скетч для Ардуино и файлы со схемами доступны по этой ссылке

Прочитано 7073 раз Последнее изменение Среда, 16 Март 2016 18:50

2 комментарии

Авторизуйтесь, чтобы получить возможность оставлять комментарии