DISC1 – DISCADORA PARA ALARMES COM PIC 16F628A

Tem voce instalado em sua casa um bom alarme? Hoje em dia, não são poucas as invasões residenciais, número este que aumenta a cada dia, de forma ‘geometrica’!!! Mas, seu alarme é antigo? Não têm discadora? Gostaria de continuar a usa-la adaptando uma simples discadora? Os preços tem caido bastante, podendo se encontrar até por R$ 40,00 na internet. Realmente, nem compensa montar uma . Há sim, mas … você gostaria de ‘construir’ uma discadora!!! Afinal, você quer ter o ‘prazer de fazer’!!! Ou ainda, para conhecer melhor como funciona e ter alguma experiência? Mas… procura e procura e não acha esquema em canto nenhum ? Então, você vai querer ver este projeto….

A idéia deste projeto é ser o mais simples possivel. Não usa interrupções para o teclado. Apenas usa interrupções para os timer 0 e 1 por ocasião da geração de protocolo DTMF. Não é um projeto super refinado, mas estudando ele dá para conhecer a idéia de uma discadora. Interessante, que cada projetista acha soluções diferentes para o mesmo trabalho a ser feito. Isto realmente é algo excitante na programação de microcontroladores. Também, deixa nos curiosos para a conhecer a solução que outro colega encontrou, aumentando assim, a nossa bagagem de ‘know how’. Vamos ao projeto:
Veja o esquema abaixo:

Com um PIC 16F628A, um teclado comum de telefone para aquisição de dados, mais componentes comuns como rele, capacitores e diodos, poderemos construir esta simples discadora. Tem 6 memórias para número telefonicos de até 20 digitos. Possui uma chave ligado ao pino 18 do PIC, para escolha entre Pulso(decádico) ou Tom (DTMF). Certas operadoras de telefone usam um ou outro padrão (consulte antes de usar).
Veja a funções possíveis abaixo:

PROGRAMAR NÚMERO A SER DISCADO EM UMA DAS 6 MEMÓRIAS:
DIGITE: (*)(1)(6)(*)(X)(NÚMERO DE TELEFONE ATÉ 20 DIG)(#) ; SENDO X = MEMÓRIA 1 A 6
APAGAR NÚMERO DE UMA DAS 6 MEMÓRIAS:
DIGITE: (*)(1)(6)(*)(X)(#) ; SENDO X = MEMÓRIA 1 A 6
APAGAR NÚMERO DE TODAS AS 6 MEMÓRIAS DE UMA ÚNICA VEZ:
DIGITE: (*)(1)(6)(*)(7)(*) (OBS. NO FINAL, OUVE-SE UM BIP LONGO, INDICANDO SUCESSO DO APAGAMENTO)
TESTAR DISCAGEM DE NÚMERO DA MEMÓRIA:
DIGITE: (*)(1)(6)(*)(8)(0) ; DISCARÁ TODOS OS NÚMEROS DAS MEMÓRIAS EM SEQUENCIA
DIGITE: (*)(1)(6)(*)(8)(X) ; DISCARÁ SOMENTE A MEMÓRIA X ,SENDO X= 1 A 6 (BIPARÁ 5 VEZES SE MEMÓRIA ESTIVER ‘VAZIA’)
DEFINIR MODO DE DISCAGEM INTERROMPIDO(PARA DE DISCAR SE ENTRADA DE COMANDO VOLTAR A ‘0’(DISCA APENAS O 1º NÚMERO):
DIGITE: (*)(1)(6)(*)(9)
DEFINIR MODO DE DISCAGEM CONTINUO (DISCA EM SEQUENCIA TODOS OS NÚMEROS, MESMO SE ENTRADA DE COMANDO VOLTAR A ‘0’:
DIGITE: (*)(1)(6)(*)(0)
INTERROMPER UMA DISCAGEM EM PROCESSO:
DIGITE: (*)(1)(7)(6)(*) (NÃO GERA BIPS NESTA FUNÇÃO)

O pino 18 do PIC é multiplexado com a função de seleção de tom/pulso (entrada) e como saída de som (bip) para uma capsula piezoeletrica (pode ser de campainha de telefone ou aquelas pequenas de relógio). A cada tecla apertada, será gerado um breve ‘bip’, com o objetivo de identificar a aceitação da tecla.
Pelos pinos 2 e 3 do PIC, saem os tons DTMF gerados (se for opção escolhida). Usa-se dos timers 0 e 1 para gerar os tempos programados para cada frequência, com ajuda de tabelas, acessadas pelo programa. Por meio de interrupções, as saidas dos pinos 2 e 3 são alteradas no ritmo das frequências correspondentes aos digitos discados, pré gravados nas 6 memórias. Também, por estes pinos sai um som que simula uma ‘sirene’, para que, ao se atender o telefone do outro lado da linha, saiba que foi a discadora que emitiu esta chamada. O tempo deste ‘som’ é de 40 segundos. No pino 1 do PIC, liga-se um transistor que acionará o rele (12V) de linha. Quando em modo ‘pulso’, este rele ‘pulsará’ ao ritmo dos números discados, ouvindo-se o tradicional ‘tec,tec,tec’. Para guardar os números, utiliza-se a EEprom interna do PIC. Mesmo que a alimentação seja desligada, estes números continuarão na memória. Quanto ao teclado, foi usado um da sucata, tirado de um velho aparelho telefonico. No esquema, consta uma tabela ‘verdade’ do ‘que liga com que’ neste teclado. Pode-se usar qualquer modelo, apenas escolhendo os pinos de forma correta, conforme esta tabela (na dúvida, use um multimetro para testar). As teclas ‘mode, flash e redial’ não foram usadas neste projeto. Para obter temporizações corretas, é vital o uso de um cristal na exata frequência de 10 MHZ. É pelo pino 17 que entra o sinal para começar a discar (com +5v disca). No arquivo ASM, foi previsto um pequeno delay após ligar este pino. Isto evita que seja feita uma discagem desnecessária quando ocorrer disparos acidentais momentaneos, menores que 10 segundos (por ex. a faxineira não sabe como desligar o alarme e ele dispara, mas ai, rapidamente ela aperta os botões e para de tocar). Caso queira, pode-se alterar a variavel “T_PRE_DISPARO” para alterar este tempo. A fonte de alimentação é composta por um transformador de 110 para 12 volts, retificadores, capacitores de filtro e um regulador de voltagem para 5 volts (7805). O led colocado junto ao rele de linha é opcional, mas, com ele se pode ver quando o equipamento se conectou com a linha telefonica. Note que esta montagem deverá ser usado apenas com com linhas fixas (Não foi testado com sistema VOIP).
Este projeto é em caracter didático e foi montado apenas em protoboard ( sujeito a ter ‘bugs’ não detectados ainda), visando servir de base para outros projetos.

Segue abaixo o arquivo ASM:

DISCADORA_628_V1_ASM

Segue abaixo o arquivo HEX:

DISCADORA_628_V1_HEX

Até o próximo artigo!!!

11 comments on “DISC1 – DISCADORA PARA ALARMES COM PIC 16F628A

  1. Ola Claudio Larios, muito bom seu artigo, sou um pouco novo ainda no ramo, e gostaria de saber se vc sabe ou conhece algo de como faz para discar para um chip de celular?
    Grato dês de já.

    1. Olá wmoscon! Discar para um chip de celular não dá. Mas para um celular com o chip colocado nele sim. No caso da discadora, bastaria programa-la com o número do celular. Não sei exatamente no que está pensando em fazer. Pode compartilhar?
      Cláudio

Comments are closed.

Back To Top