пятница, 6 января 2017 г.

Система автополива комнатных растений

В жизни каждого человека существует множество забот требующих выполнения однообразной и неинтересной работы и к счатью именно такая работа (однообразная и неинтересная) обычно больше всего подходит для того чтобы её автоматизировать. В этой статье рассмотрим устройство которое можно применить для автоматизации например полива растений, кормёжки домашних животных и возможно ещё чего либо подобного.
Рассмотрим схему
Рисунок 1 - Система автополива комнатных растений

Кварцевый резонатор для генератора тактовых импульсов микроконтроллера имеет основную резонансную частоту 4МГц. Используя таймер микроконтроллера при данной частоте можно добиться точного счёта времени как в часах. Для этого предделитель таймера устанавливаем так чтобы он делил тактовую частоту на 16, начальное значение таймера (с которого он считает до переполнения) сделаем равным 5 т.е. таймер будет отсчитывать 250 импульсов идущих с частотой в 16 раз меньшей частоты тактирования микроконтроллера которая, в данном случае, равна 1МГц т.к. резонансная частота кварцевого резонатора 4МГц + микроконтроллер делит её на 4. В основном цикле после 250 переполнений таймера будет отсчитана ровно одна секунда! (1000000/(16*250*250)=1) А дальше имея такой секундный счётчик не трудно посчитать минуты и часы. Микросхема CD4543 -  декодер семисегментного индикатора и + ещё драйвер семисегментного индикатора т.к. серия 45 данных микросхем, по сравнению с серией 40, имеет больший выходной ток и он достаточен для того чтобы семисегментный индикатор светился достаточно ярко. Для того чтобы не ставить 4 таких микросхемы, выводов микроконтроллера хватило для обслуживания системы вывода цифр и не было большого потребления тока можно сделать динамическую индикацию, при этом цифры будут светиться в 4 раза слабее чем если бы индикация была статической но т.к. вывод цифр - это не основная функция данного устройства то можно пожертвовать яркостью ради других достоинств описанных выше. Т.к. выводов у данного микроконтроллера не много то для переключения индикаторов будет использоваться десятичный счётчик CD4022 которым можно управлять через 2 его вывода CLOCK и RESET, декодер займёт 4 вывода + драйвер шагового двигателя займёт 4 итого остаётся 3 вывода для кнопок и переключателя через которые будет происходить настройка системы т.е. установка текущего времени и установка времени при котором срабатывает шаговый двигатель открывающий клапан для полива. Для управления маленьким шаговым двигателем лучше использовать полношаговый режим и использованием 2х фоз на каждом шаге т.к. такой способ даст самый большой момент что позволит двигателю вытянуть большую нагрузку. Драйвер двигателя представляет собой 4 эмиттерных повторителя, т.к. двигатель маломощный то их будет достаточно самих по себе.
Рассмотрим программу:
 Программа написана на языке C в среде "mikroC PRO for PIC" -это удобная сред с полезным калькулятором и т.д. весь проект можно скачать по ссылке https://yadi.sk/d/MGmnThXb37MdSn. Записать hex файл в микроконтроллер можно например через программу программатор ICprog также понадобится com-порт и простейший jdm программатор. В начале программы инициализируются переменные и константы, после идёт функция interrapt которая вызывается при переполнении таймера, далее идёт основная функция main с которой начинается выполнение программы в ней происходит инициализация таймера (установка предделителя и начального значения) разрешение прерывания от таймера TMR0 а также конфигурация портов ввода вывода (в чём очень помогает встроенный в среду калькулятор). Далее идёт основной цикл внутри которого определяется нажатие кнопок, считаются минуты и часы, происходит управление шаговым двигателем при совпадении текущего времени и времени для полива а также выводятся цифры на семисегментные индикаторы.

КАРТА БЛОГА (содержание)