Baixe o app para aproveitar ainda mais
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
Compartilhar