Buscar

Trabalho AV2 - Microcontroladores

Prévia do material em texto

PIC16F628A
VDD
RA0
RA1
RA2
RA3
RA4
VSS
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
/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Ω
CH1 MS1 LS1 LS2S1
M1
B1
VM
CF1
VD
5
PIC16F628A
VDD
RA0
RA1
RA2
RA3
RA4
VSS
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
/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Ω
CH1 MS1 LS1 LS2S1
M1
B1
VM
CF1
VD
5
UUnniivveerrssiiddaaddee EEssttáácciioo ddee SSáá –– PP..XXII 
CCuurrssoo AAuuttoommaaççããoo IInndduussttrriiaall 
PPrrooffeessssoorr:: WWaaggnneerr ZZaannccoo 
 
 
NNoommeess:: 
JJoorrggee LLeeoonncciioo 
SSttaannlleeyy BBrruunnoo 
 
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 1 
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. 
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 2 
Diagrama Esquemático: 
 
 
Observação: 
Para fins de apresentação, foram utilizados leds amarelos para sinalizar a ativação de cada saída do 
microcontrolador, o que numa aplicação real, esta seria usada para excitar a base de um transistor que 
acionaria um relé, conforme diagrama abaixo: 
 
PIC16F628A
VDD
RA0
RA1
RA2
RA3
RA4
VSS
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
/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Ω
CH1 MS1 LS1 LS2S1
M1
B1
VM
CF1
VD
5
PIC16F628A
VDD
RA0
RA1
RA2
RA3
RA4
VSS
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
/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Ω
CH1 MS1 LS1 LS2S1
M1
B1
VM
CF1
VD
5
PORTB
 
10kΩ
 
10kΩ
 
T1
 
+12V
 
Diodo para evitar 
realimentação 
reversa da bobina
 
relé
 
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 3 
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
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 4 
SSuubb--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. 
CH1 
=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
CH1 
=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
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 5 
TAMPA
Retorna
MS1 
Set?
sim
não MS1 
=0?
sim
não
Copia PORTB 
para PAUSE
limpa PORTB
Copia PAUSE 
para PORTB
limpa TMR0
Acende LED 
vermelho
limpa PORTB
TAMPA
Retorna
MS1 
Set?
sim
não MS1 
=0?
sim
não
Copia PORTB 
para PAUSE
limpa PORTB
Copia PAUSE 
para PORTB
limpa TMR0
Acende LED 
vermelho
limpa PORTB
SSuubb--RRoottiinnaa TTAAMMPPAA 
A cada chamada a esta sub-rotina, o 
programa verifica se a tampa foi aberta e, 
caso positivo, executa os seguintes passos: 
• Faz backup de todas as saídas 
ativas no PORTB. 
• Desliga todas as saídas do PORTB 
• Liga led vermelhor para sinalizar 
tampa aberta. 
• Pausa a contagem de tempo 
zerando TMR0. 
• Verifica se a porta foi fechada. 
• Caso positivo, desliga led vermelho 
• Restabelece as saídas ativas antes 
da abertura da porta. 
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 6 
Encher
Flag Enche 
=1?
não
sim
Retorna
Flag Enxg
=1?
Liga S1 Desl S1
nãoLS1 
Set?
zera flag Enche seta flag Molho
sim
sim
não
seta flag Lavar CountM = 60CountM = 40
Encher
Flag Enche 
=1?
não
sim
Retorna
Flag Enxg
=1?
Liga S1 Desl S1
nãoLS1 
Set?
zera flag Enche seta flag Molho
sim
sim
não
seta flag Lavar CountM = 60
CountM = 40
SSuubb--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. 
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 7 
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__1155MMIINN 
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. 
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 8 
SSuubb--RRoottiinnaa LLAAVVAARR__1100MMIINN 
Estando a bandeira lavar levantada, o 
programa liga o motor de lavagem e 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 10 minutos. 
 
Após a lavagem, é desligado o motor 
levantada a bandeira para dreno e 
desativado o módulo temporizador. 
 
Esta sub-rotina também é utilizada pela 
função Enxágue, logo se a banderia Enxg 
estiver abaixada o programa é desviado a 
executar a sequência de instruções para 
efetuá-la. 
LAVAR_10MIN
sim
Retorna
Flag Lavar 
Set?
não
Zera flag Lavar
Seta flag Dreno
Flag Enxg
=0?
Seta flag Ctrfg
Zera flag Enxgsim
não
Liga M1
Flag _15S 
=1?
CountM
=0?
não
não
sim
sim
Seta flag Temp
zera flag _15S
Desl M1
zera flag Temp
CountM = 20
LAVAR_10MIN
sim
Retorna
Flag Lavar 
Set?
não
Zera flag Lavar
Seta flag Dreno
Flag Enxg
=0?
Seta flag Ctrfg
Zera flag Enxgsim
não
Liga M1
Flag _15S 
=1?
CountM
=0?
não
não
sim
sim
Seta flag Temp
zera flag _15S
Desl M1
zera flag Temp
CountM = 20
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 9 
DRENAR
sim
Retorna
Flag Dreno 
Set?
não
Desl B1
LS2 =0?
não
sim
Lig B1
Zera flag Dreno
Seta flag Enxg
Seta flag Encher
DRENAR
sim
Retorna
Flag Dreno 
Set?
não
Desl B1
LS2 =0?
não
sim
Lig B1
Zera flag Dreno
Seta flag Enxg
Seta flag Encher
SSuubb--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. 
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 10 
CETRIFUGA
Retorna
Flag Ctrfg
Set?
LS2 =0?
não
sim
Lig B1
Seta flag Temp
Lig CF1
Desl B1
Zera flag Ctfg
Flag _15S 
=1?
CountM
=0?
não
não
sim
sim
zera flag _15S
Desl CF1
zera flag Temp
liga LED 
verde
sim
não
CETRIFUGA
Retorna
Flag Ctrfg
Set?
LS2 =0?
não
sim
Lig B1
Seta flag Temp
Lig CF1
Desl B1
Zera flag Ctfg
Flag _15S 
=1?
CountM
=0?
não
não
sim
sim
zera flag _15S
Desl CF1
zera flag Temp
liga LED 
verde
sim
não
SSuubb--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. 
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 11 
TIMER_15S
sim
Retorna
Flag Temp
Set?
Count = 229
zera TMR0
não
TMR0 
estourou?
não
Apaga flag T01F
Count =0?
não
sim
sim
seta flag _15S
CALL TAMPA
zera flag T01F
TIMER_15S
sim
Retorna
Flag Temp
Set?
Count = 229
zera TMR0
não
TMR0 
estourou?
não
Apaga flag T01F
Count =0?
não
sim
sim
seta flag _15S
CALL TAMPA
zera flag T01F
SSuubb--RRoottiinnaa TTIIMMEERR__1155SS 
Esta sub-rotina é utilizada pelos processos 
que necessitam do módulo temporizador. 
 
Ao ser ativada com a bandeira temp 
levantada, a bandeira T01F é zerada, para o 
caso de ter ocorrido estouro do TMR0 
durante algum processo da lavagem. 
 
O prescaler do TMR0 foi setado para o 
delay de 1:256, e o estouro do mesmo 
ocorre de 0 a 255. Para se obter um valor 
divisor inteiro de 60, foi setado o valor 
decimal para o Count de 229, de forma 
que: 256µs × 256 × 229 = 15 segundos. 
Desta forma, a rotina que usa a 
temporização utiliza o contador de minutos 
CountM correspondente ao valor em 
segundos dividido por 4. Exemplo: 10 
minutos → 10 × 60 = 600 ÷ 15 = 40. 
Sendo 40 um número menor que 255 que 
cabe na variável CountM de 8 bits. 
 
É verificada se a tampa foi aberta durante a 
contagem do tempo. 
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 12 
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,RP0 
 BCF STATUS,RP1 
 
ENDM ;FIM DA MACRO BANK0 
 
BANK1 MACRO ;MACRO PARA SELECIONAR BANCO 1 
 
 BSF STATUS,RP0 
 BCF STATUS,RP1 
 
ENDM ;FIM DA MACRO BANK1 
 
;************************************************************************************************ 
; 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| 
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 13 
; |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 BANCO1 
 MOVLW B'00001111' 
 MOVWF TRISA ;DEFINE RA0-RA3 COMO ENTRADA e DEMAIS 
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 14 
 ;COMO SAIDA 
 MOVLW B'00000000' 
 MOVWF TRISB ;DEFINE O PORTB COMO SAIDA 
 
 MOVLW B'10000111' 
 MOVWF OPTION_REG ;PRESCALER 1:256 NO TMRO <2:0> 
 ;TMR0 INCREMENTADO PELO CICLO DE INSTRUCAO <5> 
 ;APLICA PRESCALER AO TMR0 <3> 
 ;PULL_UPS DESABILITADOS <7> 
 ;DEMAIS BITS IRRELEVANTES 
 MOVLW B'00000000' 
 MOVWF INTCON ;INTERRUPCOES DESABILITADAS 
 
 BANK0 
 MOVLW B'00000111' ;CONFIGURA RA3: RA0 COM I/O <2:0> 
 MOVWF CMCON 
 
;************************************************************************************************ 
; INICIALIZACAO DAS VARIAVEIS 
;************************************************************************************************ 
 CLRF PORTA ;LIMPA PORTA 
 CLRF PORTB ;LIMPA PORTB 
; MOVLW B'00000001' 
 CLRF FLAGS ;ZERA FLAGS 
 BSF VD ;PRONTO PARA INICIAR PROCESSO DE LAVAGEM 
 
 
;************************************************************************************************ 
; ROTINA PRINCIPAL 
;************************************************************************************************ 
MAIN 
 CALL PARTIDA ;CHAMA SUB-ROTINA PARA INICIAR LAVAGEM 
 CALL TAMPA ;CHAMA SUB-ROTINA QUE VERIFICA SE A TAMPA ESTA ABERTA 
 CALL ENCHER ;CHAMA SUB-ROTINA PARA ENCHER COM AGUA 
 CALL MOLHO_15MIN ;CHAMA SUB-ROTINA PARA AGUARDAR 15 MIN MOLHO 
 CALL LAV_10MIN ;CHAMA SUB-ROTINA PARA 10 MIN LAVAGEM 
 CALL DRENAR ;CHAMA SUB-ROTINA PARA DRENAR 
; CALL ENCHER ;CHAMA SUB-ROTINA PARA ENCHER COM AGUA APOS DRENAR 
; CALL LAV_10MIN ;CHAMA SUB-ROTINA PARA 10 MIN LAVAGEM E ENXAGUE 
 CALL CENTRIFUGAR ;CHAMA SUB-ROTINA PARA CENTRIFUGAR 
 CALL TIMER_15S ;CHAMA SUB-ROTINA PARA TEMPORIZAR 15S 
 GOTO MAIN 
 
;************************************************************************************************ 
; SUB-ROTINAS 
;************************************************************************************************ 
PARTIDA 
 BTFSS VD ;LED VERDE ACESO 
 RETURN ;NAO, RETORNA 
 MOVLW .200 
 MOVWF DEBOUNCE ;DEBOUNCE = 200 
 MOVLW .50 
 MOVWF COUNTD ;COUNTD = 50 
TESTA_CHAVE 
 CALL TAMPA 
 BTFSC CH1 ;CHAVE GERAL PRESSIONADA? 
 GOTO PARTIDA ;NAO, REFAZ TESTE 
 DECFSZ DEBOUNCE ;DECREMENTA DEBOUNCE, ZEROU? 
 GOTO TESTA_CHAVE ;NAO, TESTA CHAVE 
 MOVLW .200 
 MOVWF DEBOUNCE ;REINICIA DEBOUNCE COM 200 
 DECFSZ COUNTD ;DECREMENTA COUNTD, ZEROU? 
 GOTO TESTA_CHAVE ;NAO, TESTA CHAVE 
 BSF FLAGS,ENCHE ;PRONTO PARA ENCHER 
 BCF VD ;APAGA LED VERDE 
 RETURN 
 
 
;************************************************************************************************ 
TAMPA 
 BTFSS MS1 ;TAMPA ABERTA? 
 RETURN ;NAO, RETORNA 
 MOVF PORTB,W ;COPIA PORTB PARA W 
 MOVWF PAUSE ;COPIA W PARA PAUSE 
 CLRF PORTB ;LIMPA PORTB 
 BSF VM ;LED VM ALERTA TAMPA ABERTA LIGADO 
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 15 
 CLRF TMR0 ;LIMPA TMR0 
 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 ;RETORNAENCHER1 
 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 ENCHER3 
ENCHER2 
 MOVLW .4 ;COUNTM = 60 
 MOVWF COUNTM ;CONTA 15 MIN PARA MOLHO 
 BSF FLAGS,MOLHO ;SETA FLAG MOLHO 
 BCF FLAGS,ENCHE ;LIMPA FLAG ENCHE 
ENCHER3 
 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 
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 16 
 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 $+3 
 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 
CENTRIFUGAR1 
 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 
CENTRIFUGAR2 
 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 TMR0 
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 
;************************************************************************************************
Universidade Estácio de Sá 
Curso: Automação Industrial. Prof: Wagner Zanco 
Controle digital para Lavadora de Roupas, desenvolvido para microcontrolador PIC16F628A 
Alunos: Jorge Leoncio e Stanley Brito 17 
Conclusões: 
 
• Compreendidos os princípios dos Sistemas Microprocessados. 
• É possível reproduzir qualquer lógica booleana na linguagem de programação. 
• Compreendidas as definições apresentadas em aula, tais como: 
o Alocação de memória 
o Declaração de variáveis 
o Programação Estruturada 
o A importância da simulação da aplicação no software de desenvolvimento. 
o etc. 
• Embora o projeto requeira alguns ajustes para tornar viável a fabricação de chips que seriam 
utilizados nos equipamentos a que se destinam, a atual aplicação foi mantida para fins de 
apresentação e aplicabilidade dos conhecimentos adquiridos no curso. 
FIM

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes