Baixe Trabalho - Microcontroladores e outras Trabalhos em PDF para Tecnologia Industrial, somente na Docsity!
PIC16F628A
VDD
RA
RA
RA
RA
RA
VSS
RB
RB
RB
RB
RB
RB
RB
RB
/MCLR
OSC2/CLKOUT
OSC1/CLKIN
14
17
7 18
1
2
3
16 15 4 6
XTAL 4MHZ
8
9
10
11
12
13
+5V
27pF
27pF
+5V
100nF
100nF
RESET
10KΩ
470 Ω 10KΩ 10KΩ 10KΩ 10KΩ
330 Ω
330 Ω
330 Ω
330 Ω
330 Ω
330 Ω
S1 CH1 MS1 LS1 LS
M
B
VM
CF
VD
5
PIC16F628A
VDD
RA
RA
RA
RA
RA
VSS
RB
RB
RB
RB
RB
RB
RB
RB
/MCLR
OSC2/CLKOUT
OSC1/CLKIN
14
17
7 18
1
2
3
16 15 4 6
XTAL 4MHZ
8
9
10
11
12
13
+5V
27pF
27pF
+5V
100nF
100nF
RESET
10KΩ
470 Ω 10KΩ 10KΩ 10KΩ 10KΩ
330 Ω
330 Ω
330 Ω
330 Ω
330 Ω
330 Ω
S1 CH1 MS1 LS1 LS
M
B
VM
CF
VD
5
UUnniivveerrssiiddaaddee EEssttáácciioo ddee SSáá – – PP..XXII
CCuurrssoo^ AAuuttoommaaççããoo^ IInndduussttrriiaall
P Prrooffeessssoorr:: WWaaggnneerr ZZaannccoo
NNoommeess::
J Joorrggee LLeeoonncciioo
SSttaannlleeyy^ BBrruunnoo
Curso: Automação Industrial. Prof: Wagner Zanco
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A
Objetivo:
Desenvolver controle combinado (malha aberta / fechada) para Lavadora de Roupas Automática, com bases
em contagem de tempo e uso de sensores.
Justificativa:
Embora seja uma aplicação comum já conhecida na indústria, o controle para Lavadora de Roupas
Automática foi escolhido por se tratar de um desenvolvimento que envolve diversos conhecimentos
ensinados nas aulas de Sistemas Microprocessados / Microcontroladores, tais como:
- Programação Estruturada
- Temporizadores
- Debounce
- Uso de Flags
- Chamada a sub-rotinas
- Dentre outros
Esta aplicação é de autoria dos executantes deste trabalho, de forma alguma sendo reproduzida na sua
integridade de outras fontes, inclusive as soluções empregadas durante o desenvolvimento, que favoreceu um
sólido aprendizado no conteúdo da disciplina, obviamente baseando-se nas aplicações apresentadas em aula.
Descrição do Funcionamento:
1. Efetua rotina de inicialização
2. Sistema acende led verde sinalizando que a máquina está pronta para iniciar processo de lavagem.
Após dar um pulso no botão de partida CH1, é iniciado o processo de encher tanque.
3. A solenóide S1 dá permissão para entrada de água até o nível máximo LS1 ser alcançado.
4. Com o tanque cheio, é iniciado o processo de molho por 15 minutos.
5. Após o molho, é ligado o motor M1 para executar lavagem durante 10 minutos.
6. Finalizada a lavagem, é ligada a bomba B1 para drenar água com sabão até atingir o nível mínimo
LS2.
7. Novamente a solenóide S1 dá permissão para entrada de água até o nível máximo LS1 ser alcançado.
8. Com o tanque cheio, é ligado o motor M1 para executar o enxágue durante 10 minutos.
9. Finalizado o enxágue, é ligada a bomba B1 para drenar água com sabão até atingir o nível mínimo
LS2, junto com a centrífuga CF1 durante 5 minutos.
10. Após a centrifugação, o programa sinaliza novamente estar pronto para iniciar nova lavagem,
acendendo o led verde.
Observação:
Em qualquer momento do processo de lavagem, caso a tampa seja aberta, a aplicação desativará todas as
saídas em operação e sinalizará com o led vermelho. Para os processos com base em tempo, a contagem será
pausada. Após o fechamento da tampa, as saídas antes em operação serão restabelecidas e a contagem de
tempo será continuada.
Curso: Automação Industrial. Prof: Wagner Zanco
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A
Fluxogramas:
A seguir serão apresentados os fluxogramas de cada rotina com os respectivos comentários:
Rotina MAIN (Principal)
Exibe a sequência de sub-rotinas
que serão executadas no processo.
Por se tratar de programação
estruturada, as sub-rotinas não são
executadas na sequencia
apresentada, e sim conforme a
permissão das bandeiras (flags).
Entretanto, nas sub-rotinas
PARTIDA e TAMPA, as
permissões dependem de entradas
físicas no PORTA.
MAIN
TAMPA
ENCHER
MOLHO
LAVAR
DRENAR
CENTRIFUGAR
TIMER
PARTIDA
MAIN
TAMPA
ENCHER
MOLHO
LAVAR
DRENAR
CENTRIFUGAR
TIMER
PARTIDA
Curso: Automação Industrial. Prof: Wagner Zanco
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A
S Suubb--RRoottiinnaa PPAARRTTIIDDAA
Após a inicialização do
microcontrolador, o led verde
sinaliza sistema pronto para
executar processo de lavagem.
Somente após o botão CH1 ser
mantido pressionado por 50ms é
que a bandeira para encher tanque
é levantada e o led verde apagado.
Se o sistema já estiver em
funcionamento, o led verde estará
apagado, sendo direcionado para
retornar da sub-rotina.
Durante o teste do botão, é
verificada se a tampa foi aberta.
CH =0?
Debounce = 200
CountD = 50
Debounce =0?
Debounce = 200
CountD =0?
seta flag Enche
Led VD Set?
apaga LED VD
Retorna
PARTIDA
sim
não
sim
não
sim
não
CALL TAMPA
CH =0?
Debounce = 200
CountD = 50
Debounce =0?
Debounce = 200
CountD =0?
seta flag Enche
Led VD Set?
apaga LED VD
Retorna
PARTIDA
sim
não
sim
não
sim
não
CALL TAMPA
Curso: Automação Industrial. Prof: Wagner Zanco
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A
Encher
Flag Enche =1?
não
sim
Retorna
Flag Enxg =1?
Liga S1 Desl S
LS1 não Set?
zera flag Enche seta flag Molho
sim
sim
não
seta flag Lavar CountM = 60
CountM = 40
Encher
Flag Enche =1?
não
sim
Retorna
Flag Enxg =1?
Liga S1 Desl S
LS1 não Set?
zera flag Enche seta flag Molho
sim
sim
não
seta flag Lavar CountM = 60
CountM = 40
S Suubb--RRoottiinnaa EENNCCHHEERR
Estando a bandeira Enche levantada, o
programa liga a solenóide até o nível
máximo ser alcaçado.
Após o tanque cheio, é levantada a
bandeira para iniciar o processo de 15
minutos de Molho.
Esta sub-rotina também é utilizada pela
função Enxágue, logo se a banderia Enxg
estiver levantada o programa é desviado a
executar a sequência de instruções para
efetuá-la.
Curso: Automação Industrial. Prof: Wagner Zanco
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A
MOLHO_15MIN
sim
Retorna
Flag molho Set?
não
Flag _15S =1?
CountM =0?
zera flag Molho
seta flag Lavar
não
não
sim
sim
Seta flag Temp
zera flag Temp
zera flag _15S
CountM = 40
MOLHO_15MIN
sim
Retorna
Flag molho Set?
não
Flag _15S =1?
CountM =0?
zera flag Molho
seta flag Lavar
não
não
sim
sim
Seta flag Temp
zera flag Temp
zera flag _15S
CountM = 40
SSuubb--RRoottiinnaa MMOOLLHHOO__ 1155 MMIINN
Estando a bandeira molho levantada, o
programa ativa o módulo temporizador de
15s levantando a bandeira Temp.
A cada 15s, o contador de minutos
CountM é decrementado, e após zerar,
terão se passado 15 minutos.
Após o molho, é levantada a bandeira para
lavagem durante 10 minutos e desativado
o módulo temporizador.
Curso: Automação Industrial. Prof: Wagner Zanco
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A
DRENAR
sim
Retorna
Flag Dreno Set?
não
Desl B
LS2 =0?
não
sim
Lig B
Zera flag Dreno
Seta flag Enxg
Seta flag Encher
DRENAR
sim
Retorna
Flag Dreno Set?
não
Desl B
LS2 =0?
não
sim
Lig B
Zera flag Dreno
Seta flag Enxg
Seta flag Encher
S Suubb--RRoottiinnaa DDRREENNAARR
Com a bandeira dreno levantada, a bomba
de drenagem B1 será ligada até atingir o
nível mínimo LS2, e após esvaziar, a
mesma bandeira será abaixada e levantadas
as bandeiras enxg e encher desligando a
bomba B1.
As próximas etapas reutilizarão as sub-
rotinas Encher e Lavar , cuja bandeira
enxg desviará o processo para o enxágue
(remoção do excesso de sabão) conforme
verificado nos fluxogramas anteriores.
Curso: Automação Industrial. Prof: Wagner Zanco
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A
CETRIFUGA
Retorna
Flag Ctrfg Set?
LS2 =0?
não
sim
Lig B
Seta flag Temp
Lig CF
Desl B
Zera flag Ctfg
Flag _15S =1?
CountM =0?
não
não
sim
sim
zera flag _15S
Desl CF
zera flag Temp
liga LED verde
sim
não
CETRIFUGA
Retorna
Flag Ctrfg Set?
LS2 =0?
não
sim
Lig B
Seta flag Temp
Lig CF
Desl B
Zera flag Ctfg
Flag _15S =1?
CountM =0?
não
não
sim
sim
zera flag _15S
Desl CF
zera flag Temp
liga LED verde
sim
não
S Suubb--RRoottiinnaa CCEENNTTRRIIFFUUGGAA
Após o enxágue, com a bandeira ctrfg
levantada, o programa liga a centrifuga
CF1 pelo período de 5 minutos (ativando o
temporizador), ligando a bomba B1 para
remover o excesso de água até o nível
mínimo ser alcançado.
Após o processo, a centrífuga e o
temporizador são desligados, abaixando a
bandeira ctrfg e ligando o led verde,
sinalizando a conclusão da lavagem.
Curso: Automação Industrial. Prof: Wagner Zanco
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A
Programa Fonte:
; PROGRAMA - Controle Digital para Máquina de Lavar Roupa ; Autores: Jorge Leoncio e Stanley Bruno. ; Faculdade Estácio de Sá, 3º Período ; Prof: Wagner Zanco ;************************************************************************************************ ; ; ;ARQUIVOS DE DEFINICOES ; #INCLUDE <P16F628A.INC> ;ARQUIVO PADRAO MICROCHIP PARA O PIC16F628A ; ; ;BITS DE CONFIGURACAO ; __CONFIG _BOREN_ON&_CP_ON&_PWRTE_ON&_WDT_OFF&_LVP_OFF&_DATA_CP_OFF&_MCLRE_ON&_XT_OSC ;************************************************************************************************ ; PAGINACAO DA MEMORIA ;************************************************************************************************ ;COMANDOS PARA ALTERACAO DE PAGINA DE MEMORIA
BANK0 MACRO ;MACRO PARA SELECIONAR BANCO 0
BCF STATUS,RP
BCF STATUS,RP
ENDM ;FIM DA MACRO BANK
BANK1 MACRO ;MACRO PARA SELECIONAR BANCO 1
BSF STATUS,RP
BCF STATUS,RP
ENDM ;FIM DA MACRO BANK
; VARIAVEIS
;ENDERECOS DAS VARIAVEIS UTILIZADAS PELO SISTEMA
CBLOCK 0x20 ;ENDERECO INICIAL DA MEMORIA DO USUARIO
PAUSE ;MEMORIZA STATUS DO PORTB AO ABRIR TAMPA COUNT ;0x21 - UTILIZADO NO TIMER 15 SEGUNDOS FLAGS ;0x22 - BITS DE SINALIZACAO COUNTM ;0X23 - CONTADOR DE MINUTOS DEBOUNCE ;0X24 - DEBOUNCE COUNTD ;0X25 - CONTADOR DEBOUNCE ENDC ;FIM DO BLOCO DE MEMÓRIA
; CONSTANTES
;CONSTANTES UTILIZADAS PELO SISTEMA
;BITS DO REGISTRADOR FLAGS
ENCHE EQU .0 ;PRONTO PARA ENCHER
MOLHO EQU .1 ;PRONTO PARA O MOLHO
LAVAR EQU .2 ;PRONTO PARA LAVAR
DRENO EQU .3 ;PRONTO PARA DRENO
ENXG EQU .4 ;PRONTO PARA ENXAGUAR
CTRFG EQU .5 ;PRONTO PARA CENTRIFUGAR
TEMP EQU .6 ;HABILITA TEMPORIZADOR 15S
_15S EQU .7 ;SINALIZA APÓS 15 SEGUNDOS
; FLAGS
;REGISTRADOR FLAGS
; BIT# |7|6|5|4|3|2|1|0|
Curso: Automação Industrial. Prof: Wagner Zanco
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A
; |X|X|X|X|X|X|X|Y| ENCHE --> 1=PRONTO PARA ENCHER
; |X|X|X|X|X|X|Y|X| MOLHO --> 1=PRONTO PARA MOLHO
; |X|X|X|X|X|Y|X|X| LAVAR --> 1=PRONTO PARA LAVAR
; |X|X|X|X|Y|X|X|X| DRENO --> 1=PRONTO PARA DRENAR
; |X|X|X|Y|X|X|X|X| ENXG --> 1=PRONTO PARA ENXAGUAR
; |X|X|Y|X|X|X|X|X| CTRFG --> 1=PRONTO PARA CENTRIFUGAR
; |X|Y|X|X|X|X|X|X| TEMP --> 1=HABILITA TEMPORIZADOR 15S
; |Y|X|X|X|X|X|X|X| _15S --> 1=SINALIZA 15 SEGUNDOS
;X = DEFINIDO EM OUTRO LUGAR DA TABELA
;Y = DEFINIDO COMO MOSTRADO (0/1)
; ENTRADAS
;PINOS QUE SERAO UTILIZADOS COMO ENTRADA
#DEFINE CH1 PORTA,0 ;0 --> PRESSIONADO
;1 --> LIBERADO
#DEFINE MS1 PORTA,1 ;0 --> ATIVADO
;1 --> DESATIVADO
#DEFINE LS1 PORTA,2 ;0 --> ATIVADO
;1 --> DESATIVADO
#DEFINE LS2 PORTA,3 ;0 --> ATIVADO
;1 --> DESATIVADO
; SAIDAS
;PINOS QUE SERAO UTILIZADOS COMO SAIDA
#DEFINE S1 PORTB,1 ;0 --> ATIVADA
;1 --> DESATIVADA
#DEFINE M1 PORTB,2 ;0 --> ATIVADO
;1 --> DESATIVADO
#DEFINE B1 PORTB,3 ;0 --> ATIVADA
;1 --> DESATIVADA
#DEFINE CF1 PORTB,4 ;0 --> ATIVADA
;1 --> DESATIVADA
#DEFINE VM PORTB,5 ;1 --> LED VERMELHO
;SINALIZA PORTA ABERTA
#DEFINE VD PORTB,6 ;1 --> LED VERDE
;SINALIZA LAVAGEM PRONTA
; VETOR DE RESET
ORG 0x00 ;ENDERECO INICIAL DE PROCESSAMENTO GOTO INICIO
;************************************************************************************************ ; INTERRUPCAO ;************************************************************************************************ ;AS INTERRUPCOES NAO SERAO UTILIZADAS
ORG 0x04 ;ENDERECO INICAL DA INTERRUPCAO RETFIE ;RETORNA DA INTERRUPCAO
; INICIO
INICIO
BANK1 ;ALTERA PARA BANCO
MOVLW B'00001111'
MOVWF TRISA ;DEFINE RA0-RA3 COMO ENTRADA e DEMAIS
Curso: Automação Industrial. Prof: Wagner Zanco
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A
CLRF TMR0 ;LIMPA TMR
BTFSC MS1 ;TAMPA FECHADA?
GOTO $-2 ;NAO, ESPERA FECHAR
CLRF PORTB ;LIMPA PORTB
MOVF PAUSE,W ;COPIA PAUSE PARA W
MOVWF PORTB ;RESTAURA PORTB ANTES DA ABERTURA DA TAMPA
RETURN ;RETORNA
ENCHER
BTFSS FLAGS,ENCHE ;LIBERADO PARA ENCHER?
GOTO ENCHER3 ;NAO,
BTFSS LS1 ;TANQUE VAZIO?
GOTO ENCHER1 ;NAO
BSF S1 ;LIGA SOLENÓIDE PASSAGEM DAGUA
RETURN ;RETORNA
ENCHER
BTFSS FLAGS,ENXG ;PRONTO PARA ENXAGUAR?
GOTO ENCHER2 ;NAO
BSF FLAGS,LAVAR ;SIM, PRONTO PARA LAVAR
MOVLW .4 ;COUNTM = 40
MOVWF COUNTM ;CONTA 10 MIN PARA ENXAGUAR
BCF FLAGS,ENCHE ;ZERA FLAG ENCHE
GOTO ENCHER
ENCHER
MOVLW .4 ;COUNTM = 60
MOVWF COUNTM ;CONTA 15 MIN PARA MOLHO
BSF FLAGS,MOLHO ;SETA FLAG MOLHO
BCF FLAGS,ENCHE ;LIMPA FLAG ENCHE
ENCHER
BCF S1 ;DESL SOLENÓIDE PASSAGEM DAGUA
RETURN
MOLHO_15MIN
BTFSS FLAGS,MOLHO ;PRONTO PARA MOLHO?
RETURN ;NAO, RETORNA
;SIM, CONTINUA
BSF FLAGS,TEMP ;HABILITA TEMPORIZADOR 15S
BTFSS FLAGS,_15S ;PASSADOS 15 SEGUNDOS?
RETURN ;NAO RETORNA
BCF FLAGS,_15S ;SIM, APAGA FLAG _15S
DECFSZ COUNTM ;DECREMENTA COUNTM, ZEROU?
RETURN ;NAO RETORNA
BCF FLAGS,MOLHO ;APAGA FLAG MOLHO
BSF FLAGS,LAVAR ;PRONTO PARA LAVAR
MOVLW .4 ;COUNTM = 40
MOVWF COUNTM ;CONTA 10 MIN PARA LAVAGEM
BCF FLAGS,TEMP ;LIMPA FLAG TEMP
RETURN
LAV_10MIN
BTFSS FLAGS,LAVAR ;PRONTO PARA LAVAR?
RETURN ;NAO, RETORNA
;SIM, CONTINUA
BSF M1 ;SIM, LIGA MOTOR
BSF FLAGS,TEMP ;HABILITA TEMPORIZADOR 15S
BTFSS FLAGS,_15S ;PASSADOS 15 SEGUNDOS?
RETURN ;NAO, RETORNA
BCF FLAGS,_15S ;SIM, APAGA FLAG _15S
DECFSZ COUNTM ;DECREMENTA COUNTM, ZEROU?
RETURN ;NAO RETORNA
BCF M1 ;DESLIGA MOTOR
BCF FLAGS,TEMP ;APAGA FLAG TEMP
BCF FLAGS,LAVAR ;APAGA FLAG LAVAR
BTFSC FLAGS,ENXG ;PRONTO PARA ENXAGUE?
GOTO $+3 ;NAO
BSF FLAGS,DRENO ;PRONTO PARA DRENAR
RETURN
BCF FLAGS,ENXG ;APAGA FLAG ENXAGUE
Curso: Automação Industrial. Prof: Wagner Zanco
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A
BSF FLAGS,CTRFG ;PRONTO PARA CENTRIFUGAR
MOVLW .4 ;COUNTM = 20
MOVWF COUNTM ;CONTA 5 MIN PARA CENTRIFUGAR
RETURN
DRENAR
BTFSS FLAGS,DRENO ;PRONTO PARA DRENAR?
RETURN ;NAO, RETORNA
BTFSC LS2 ;TANQUE COM AGUA?
GOTO $+
BSF B1 ;LIGA BOMBA DAGUA
RETURN
BCF FLAGS,DRENO ;APAGA FLAG DRENO
BSF FLAGS,ENXG ;PRONTO PARA ENXAGUE
BSF FLAGS,ENCHE ;PRONTO PARA ENCHER
BCF B1 ;DESLIGA BOMBA DAGUA
RETURN
CENTRIFUGAR
BTFSS FLAGS,CTRFG ;PRONTO PARA CENTRIFUGAR?
RETURN ;NAO, RETORNA
BSF FLAGS,TEMP ;HABILITA TEMPORIZADOR
BSF CF1 ;LIGA CENTRIFUGA
BTFSC LS2 ;TANQUE COM AGUA?
GOTO CENTRIFUGAR2 ;NAO
BSF B1 ;SIM, LIGA BOMBA DAGUA
CENTRIFUGAR
BTFSS FLAGS,_15S ;PASSADOS 15 SEGUNDOS?
RETURN ;NAO, RETORNA
BCF FLAGS,_15S ;LIMPA FLAG _15S
DECFSZ COUNTM ;DECREMENTA COUNTM, ZEROU?
RETURN ;NAO, RETORNA
BCF CF1 ;DESLIGA CENTRIFUGA
BCF FLAGS,TEMP ;APAGA FLAG TEMP
BCF FLAGS,CTRFG ;APAGA FLAG CTRFG
BSF VD ;LIGA LED VERDE - LAVAGEM PRONTA
RETURN
CENTRIFUGAR
BCF B1 ;DESLIGA BOMBA DAGUA
GOTO CENTRIFUGAR1 ;CONTINUA PROCESSO
TIMER_15S
BTFSS FLAGS,TEMP ;TEMPORIZADOR HABILITADO?
RETURN
BCF INTCON,T0IF ;SIM, APAGA FLAG T0IF
MOVLW .229 ;GRAVA 229 EM COUNT
MOVWF COUNT
CLRF TMR0 ;ZERA TMR
TESTA_TAMPA
CALL TAMPA ;TESTA SE TAMPA ESTA ABERTA
BTFSS INTCON,T0IF ;TIMER ESTOUROU?
GOTO TESTA_TAMPA
BCF INTCON,T0IF ;SIM, APAGA FLAG T0IF
DECFSZ COUNT ;DECREMENTA COUNT, ZEROU?
GOTO TESTA_TAMPA
BSF FLAGS,_15S ;PASSADOS 15S
RETURN
END ;FIM DO PROGRAMA