Você está na página 1de 5

Saber Eletrnica Online

http://www.sabereletronica.com.br/secoes/leitura/2190/imprimir:yes

Imprimir

PROJETOS / Projetos
26/03/2013 13:45:59

Alarme Residencial com Microcontrolador PIC16F84


Todas as funes de um alarme, tais como monitorao, temporizao, chave, controle, etc, podem ser implementadas com microcontroladores. Os temporizadores so circuitos muito usados em projetos de alarmes, sendo importante saber como so controlados e programados no microcontrolador. Neste artigo descreveremos um alarme que utiliza o microcontrolador PIC16F84.
Alfonso Prez

Funcionamento e Circuito

Este circuito usa o microcontrolador PIC16F84 como nico circuito integrado para dirigir todas as funes do alarme. So utilizados todos os pinos do microcontrolador. A porta A configurada como sada para controlar os LEDs indicadores, e a porta B como entrada com exceo do pino B0 (sada). Cinco pinos da porta B monitoram os sensores ou interruptores. Trs pinos so dedicados a monitorao das janelas e dois pinos para as portas.

Os pinos dedicados monitorao das janelas no tm temporizao e disparam o alarme automaticamente. Os pinos dedicados s portas tm uma temporizao que permite armar (ou desarmar) o alarme na hora de sair ou entrar do local.

Os LEDS 1 a 5 esto associados a cada sensor para apontar qual (ou quais) disparam o alarme. O interruptor S6 habilita ou desabilita o alarme. Este interruptor serve como chave, ou seja, desarma o alarme quando disparado, sendo recomendvel deix-lo em lugar secreto. O pino zero da porta B (LED7) indica quando o alarme disparou e pode ser usado para acionar alguma sirene ou dispositivo de aviso.

Quando o circuito conectado fonte de alimentao, o alarme est desabilitado. Para habilit-lo, basta pressionar o interruptor S6 e o LED6 acende. Neste momento, o alarme faz uma leitura de todos os sensores indicando de forma piscante quais esto desativados. Este processo tem uma durao aproximada de 20 segundos. Passado esse tempo, o alarme ativado e os LEDs deixam de piscar. O LED6 indica quando o alarme est acionado ou desativado. Neste ltimo caso, nenhuma funo de monitorao est ativa e o LED6 se apaga.

Quando o alarme est ativado, ele monitora constantemente todos os sensores. Se algum dos sensores rotulados como janela aberto, o alarme dispara e o LED7 acende. Se algum dos sensores rotulados como porta aberto, o circuito temporizado e fornece um tempo de aproximadamente 15 segundos para pressionar o pulsador S6. Se o S6 no for pressionado, o alarme disparar. Para desativar o alarme preciso pressionar S6, ou desligar o circuito.

Como existe uma grande variedade de sensores, interruptores, e sirenes, as entradas e sadas podem ser facilmente adaptadas. Para as entradas, lembre-se que so utilizados os contatos normalmente fechados. Para a sada, o pino entrega uma corrente mxima de 25 mA no modo dreno.

Com este sinal, pode-se controlar transistor ou optoacoplador para se excitar um dispositivo de maior potncia. Este circuito consome pouca energia, podendo ser conectado a um dispositivo gerenciador de energia (bateria, UPS, etc).

1 of 5

17/04/2013 21:28

Saber Eletrnica Online

http://www.sabereletronica.com.br/secoes/leitura/2190/imprimir:yes

O Programa

O programa comea com um salto ao endereo etiquetado como incio. Neste ponto selecionado o banco zero (0) de memria RAM para realizar as configuraes das portas A e B. O registro de opes tambm configurado neste banco. O bit rbup do Registro de Opes permite configurar os resistores pull-up internos para a porta B. O bit psa seleciona o contador pr-escalar no timer 0 e o bit t0cs seleciona o clock do ciclo de instrues como fonte de clock do timer 0. A seguir, selecionado o banco 0 de RAM, que onde, normalmente, se trabalha com os dados. O bit gie colocado no registro INTCON permite habilitar ou desabilitar globalmente todas as fontes de interrupes do PIC16F84.

O programa continua realizando a inicializao das principais posies da RAM usadas e entra em um lao onde so testados permanentemente todos os sensores e o pulsador S6 (chave).

Quando o alarme habilitado, d-se passagem a um bloco de programa controlado pelo bit B_TestEnt para realizar um teste dos sensores. Os que no esto conectados so indicados pelo piscar dos LEDs 1 a 5. Depois disso, o programa habilita a leitura de todos os sensores da porta A.

Um fator importante para que este tipo de circuitos (alarmes) funcionem por programa so as temporizaes. Existem duas formas principais para realizar temporizaes: por hardware dedicado dentro do microcontrolador, e por programao. Este circuito com PIC16F84 emprega as duas.

As temporizaes por hardware so realizadas usando o timer 0 do microcontrolador. Este timer utiliza um registro contador de 8 bits e um registro pr-escalar de 8 bits. Os dois trabalham em conjunto para executar as temporizaes por hardware.

O timer 0 pode trabalhar como temporizador, ou como contador de eventos externos. Quando ele funciona como temporizador incrementado pelo clock de ciclos de instrues. Quando o timer 0 trabalha como contador de eventos externos incrementado por cada borda de subida ou descida no pino 4 da porta A, marcado como RA4/T0CKI.

O bit T0CS colocado no Registro de Opes (bit 5) seleciona se o timer 0 ser usado como contador ou temporizador. Quando este bit colocado em 0, o timer 0 funciona como temporizador, e quando em 1 opera como contador de eventos. O bit T0SE, colocado no Registro de Opes (bit 4), seleciona a borda (subida ou descida) para incrementar o timer 0 enquanto trabalha como contador de eventos.

Neste circuito, o timer 0 configurado como temporizador. O pr-escalar de 8 bits pode trabalhar em conjunto com o timer 0 ou o timer watchdog. O bit PSA colocado no Registro de Opes (bit 3) determina para quem vai operar o pr-escalar. Quando este bit for 0, o pr-escalar ser dedicado ao timer 0, e quando 1 ser dedicado ao watchdog.

Os bits PS2, PS1 e PS0 colocados no Registro de Opes (bit 2, 1 e 0 respectivamente) determinam o valor do pr-escalar que ir trabalhar como contador - divisor. Como existem apenas 3 bits para configurar esta funo, so possveis 8 valores, a saber:

Uma vez configurado o timer 0 como temporizador, cada ciclo do clock de instrues contado pelo pr-escalar e, dependendo do valor selecionado pelos bits PS2, PS1 e PS0, gerado um pulso para o

2 of 5

17/04/2013 21:28

Saber Eletrnica Online

http://www.sabereletronica.com.br/secoes/leitura/2190/imprimir:yes

registro contador de 8 bits (TMR0). Este registro de leitura/gravao e pode ser manuseado pelo programa para determinar a quantidade de pulsos que se deseja contar a partir do pr-escalar. Assim, de acordo com os valores selecionados no pr-escalar e o timer 0, pode-se obter uma temporizao por hardware. Observe que os pulsos do pr-escalar vm do clock de instrues.

Os microcontroladores PIC16F84 tomam a frequncia do cristal externo e a dividem por 4 para gerar um clock de instrues. Para este circuito usado um cristal de 4 MHz, o que significa que a frequncia do clock de instrues 1 MHz.

Para saber quando a temporizao acabou, o microcontrolador PIC16F84 gera uma interrupo, a qual se produz quando o registro do timer 0 (TMR0) realiza uma transio de 0xFF para 0x00. Neste momento, o bit T0IF colocado no Registro INTCON (bit 2) posto no nvel 1 para indicar um pedido de interrupo do timer 0. Esta interrupo pode ser aceita ou desabilitada. Se o bit T0IE for colocado em 1, a interrupo ser habilitada, caso contrrio desabilitada.

Quando uma interrupo aceita, o valor contido no Registro Contador de Programa (PC) armazenado na pilha e um salto realizado ao endereo 0x0004 na memria de programa. A partir deste endereo, coloca-se a rotina que atender s interrupes do timer 0. Antes de sair da rotina de interrupo do timer 0, necessrio limpar o bit de aviso T0IF. Quando a rotina de interrupo terminar, o Registro Contador de Programa ser carregado a partir da pilha e assim o programa principal continuar do ponto onde foi interrompido.

Basicamente, o que se faz na rotina do servio de interrupes do timer 0 gerar uma base de tempos. Por exemplo, se o microcontrolador realiza uma interrupo a cada 1 milissegundo, pode-se fazer com que cada 1.000 interrupes a rotina de servio coloque algum bit em 1, indicando ao programa que ocorreu um tempo de 1 segundo. Desta forma, possvel temporizar e controlar qualquer intervalo de tempo. Note que a cada vez que o timer 0 interrompe necessrio recarreg-lo para que as temporizaes tenham os mesmos intervalos de tempo. importante levar em conta que o timer 0 trabalha em conjunto com o divisor neste circuito de alarme.

Na maioria dos programas, quando se atende a uma interrupo necessrio salvar o contexto do dispositivo. Para o PIC16F84 os dois principais registros para salvar so o acumulador de registro W e o registro de estado.

Observe que a primeira coisa que se faz neste programa ao atender uma interrupo salvar estes registros. Quando a rotina de interrupo finalizada, o contexto do dispositivo atualizado sobre a CPU e pode-se voltar ao programa principal.

Outra forma de se realizar temporizaes atravs de programa. Neste caso, algumas posies da memria RAM so utilizadas como contadores. Cada vez que o programa principal passa por um determinado ponto, estes contadores so decrementados.

Quando os contadores esto todos em zero, o programa pode testar e dar passagem a um bloco de cdigo. Este tipo de temporizao muito usado nos microcontroladores, e este circuito de alarme o emprega para fazer piscar os LEDs quando algum sensor est desconectado. Ao programar o microcontrolador, selecione o oscilador XT, reset ao ligar e desabilite o watchdog.

O download do programa pode ser obtido no endereo: http://sabereletronica.com.br/files /file/SE468_alarme_Codigo.txt

3 of 5

17/04/2013 21:28

Saber Eletrnica Online

http://www.sabereletronica.com.br/secoes/leitura/2190/imprimir:yes

* Matria originalmente publicada na revista Saber Eletrnica; Ano:48; N468; Mar / Abr 2013

4 of 5

17/04/2013 21:28

Saber Eletrnica Online

http://www.sabereletronica.com.br/secoes/leitura/2190/imprimir:yes

Extrado do Portal Saber Eletrnica Online - Todos os direitos reservados - www.sabereletronica.com.br

5 of 5

17/04/2013 21:28

Você também pode gostar