Универсальное устройство .

 

Автор проекта : А.Н.Шуленков (автор блога).
Универсальное устройство ( может быть применено в водонапорных башнях, при поливе огородов, для циркуляции воды в системах отопления) . Устройство построено на микроконтроллере PIC 16F84A (16F628). Состоит из 3-х небольших плат: 1. Источника питания 2. Платы управления. 3. Платы запуска исполнительных механизмов. Используются три датчика и два исполнительных механизма. В плате запуска исполнительных механизмов (насосов) использованы реле , а для индикации срабатывания определенного реле – светодиоды. Семисегментый индикатор отображает режимы работы : П- поливка . О-влага отсутствует — почва сухая . Н- не поливать (достаточно влаги) . З- закачать воду в емкость .Проект моделировался (симулировал) в программе PROTEUS. Принципиальная электрическая схема ( для моделирования в программе PROTEUS) представлена на следующем рисунке

Разводка ножек соответствует приведенной программе (hex-коду)

Устройство работает надежно. Ошибок в программе и в работе устройства нет . В качестве датчиков ( уровня воды в емкости ) можно использовать металлические штыри . Главное в устройстве программа микроконтроллера ( все остальное – управление насосами , контроль влажности в почве датчиками ) решается аппаратными методами и каждый может решить по-разному. Программу писал на ассемблере :

LIST P=16F84A
include<p16f84A.inc>
TEMPA1 equ 0x0C
COUNT2 equ 0x0D
COUNT1 equ 0x0E
TEMPB equ 0x0F
;——————————————
org 0x000
goto BEGIN
BEGIN
org 0x005
call INIT
rrrr
call DDD
goto rrrr
INIT
movlw b’00000011′
movwf PORTA
movlw b’11111111′
movwf PORTB
bsf STATUS,RP0
movlw b’00011100′
movwf TRISA
movlw b’00000000′
movwf TRISB
bcf STATUS,RP0
clrf TEMPA1
clrf TEMPB
return
;—————————— полив и качку выполнил
DELAY
movlw 0x0A
MOVWF COUNT2 ;загрузка W в регистр COUNT2
CLRF COUNT1 ;сброс содержимого регистра COUNT1
LOOPD
NOP ;пустая команда
DECFSZ COUNT1,F ;декремент COUNT1
GOTO LOOPD ;повторение цикла 256 раз
DECFSZ COUNT2,F ;декремент COUNT2
GOTO LOOPD ;повторение цикла H’L’ раз
return
DDD
movf PORTA,0
andlw b’00011100′; маска на 2-4 вход.
movwf TEMPA1
movwf TEMPB
;—————запомнил. сост. датчиков.
call DELAY
;———- задержка прошла.(дребезг окончен)
movf PORTA,0 ; снова смотр.сост. датчиков
movwf TEMPB ;
andlw b’00011100′; маска на задейст входа
subwf TEMPA1,0 ;вычит содер.W из сохр. ранее TEMPA1
btfss STATUS,2 ;если сохр.сос.датчиков до задер. и после совпали (то Z=1)
goto DDD ;снова считываем.
;——DDD постоянно считывает состояние датчиков на 2-4 входах (проанализируем , что же показ датчики)
btfss TEMPA1,4 ; 1- нужно качать воду
goto DDD_1
bsf PORTA,1 ; качаю
DDD_1
btfsc TEMPA1,4 ; 0- качать воду не надо
goto DDD_2
bcf PORTA,1 ; не качаю

DDD_2
btfss TEMPA1,2 ;поливать
goto DDD_3
bsf PORTA,0 ; поливаю
DDD_3
btfsc TEMPA1,2
goto DDD_4
bcf PORTA,0 ; не поливаю
goto DDD_5
DDD_4
goto DDD_5
DDD_5
rrf TEMPB,1
rrf TEMPB,1
movf TEMPB,0
andlw 0x07
call SEG
movwf PORTB
rlf TEMPB,1
rlf TEMPB,1
andlw b’00011100′
movwf TEMPB
return
SEG
addwf PCL,1
retlw b’10001001′ ;H
retlw b’11001000′ ;П
retlw b’10001001′ ;H
retlw b’11001000′ ;П
retlw b’10110000′ ;З
retlw b’11000000′ ;O
retlw b’10110000′ ;З
retlw b’11000000′ ;O

Для прошивки микроконтроллера программатором привожу готовый HEX код :
020000040000FA
020000000128D5
06000A0008201E2006285C
1000100003308500FF30860083161C3085000030D9
10002000860083128C018F0108000A308D008E013A
1000300000008E0B18288D0B1828080005081C39A5
100040008C008F00152005088F001C390C02031D41
100050001E280C1E2C2885140C1A2F2885100C1D08
10006000322805140C1936280510372837288F0C2C
100070008F0C0F080739422086008F0D8F0D1C3919
100080008F00080082078934C8348934C834B034FA
06009000C034B034C0349E
00000001FF
Схема программатора и практика программирования.

Скачать практику программирования

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

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

*

code