Buscar

Trabalho AV2 - Microcontroladores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Outros materiais