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. Boa tarde, Claudio;

    Acabo de baixar o coódigo “DISCADORA_628_V1_ASM.asm” e ja compilei e gravei no chip, quanto a compilação esta tudo certo; Minha dúvida esta relacionada a qual Matriz de teclado você adotou, se essa matriz possui resistores de Pull-up, se sim, qual o valor?

    Aguardo seu retorno.

    Obrigado!

    Atenciosamente;

    Tiago
    ttibaes@hotmail.com (Skype)

    1. Olá Bit! Foi usado um teclado de telefone antigo, cujas ligações do que liga com o que está junto ao esquema. Poderá fazer com botões dactilares também, se desejar. Os pull-ups são os que constam no esquema, não tendo nenhum dentro do teclado.
      Claudio

  2. olá claudio , não sei se é a sua área , mas você conseguiria fazer um circuito que simule um joystick usb ? pois quero montar um controle tipo o de um flipper ( com alavanca e botões ) de 2 jogadores para pc . procurei na internet e não achei e as pessoas compram e desmontam joystick usb e soldam os fios direto nos botões ( não quero fazer isso ) . você faria para mim ?

    1. Olá Michael!
      Infelizmente, não tenho conhecimentos sobre o protocolo do joystick e nunca montei nada parecido. No momento, não tenho como ajuda-lo.
      Continue procurando na Internet, que com certeza, voce vai achar…
      Claudio

    2. Olá amigo.
      Tenho um projeto que montei há uns 2 anos atrás.
      Usando o Atmega8, é possível obter 24 botões + 4 de direções (Cima, Baixo, Esquerda e Direita) e mais 6 eixos, podendo controlar: Aceleração, Eixo X, Eixo Y, etc) É muito bom para usar em simuladores.

      É plug and play, basta plugar na entrada USB, e já será reconhecido como um joystick comum.

      Segue esquema, pcb e .hex pronto pra gravar no Atmega8.

      https://mega.co.nz/#!fQ83iZqL!8JeKkxO-kSZxacW7G-wo0pHJqNGxzgFUNp6Go9jQ4FY

  3. Claudio uma pergunta , teria como no seu projeto ao invés de un teclado dedicado , fazer a programaçao com qualquer telefone conectado ao discador (te pergunto isso porque existem modelos de discadores comerciais que utilizam um telefone comum para a programaçao…

    1. Olá Claudinei! Fazer uso do teclado de um telefone colocado na linha é uma maneira opcional de programar, porém , não neste projeto. Envolveria mudanças significativas para captar este sinal em modo de programação, tendo que decodificar sinal dtmf/pulso oriundos deste telefone. Mas a sugestão vai para o ‘caderninho de idéias’….
      Claudio

  4. Realmente um discador se acha até por menos de 40,00,mas o importante é ter o prazer de fazer,montar e funcionar.
    Valeu….mais um ótimo projeto

Comments are closed.

Back To Top