RECEPTOR DE 8 CANAIS POR TONS DTMF – C/ PIC 16F676 (REF346)

Controle seus aparelhos usando tons DTMF usando apenas um modesto microcontrolador …

Já a muitos anos que a rede telefônica tem usado o sistema DTMF (Dual-Tone Multi-Frequency) como padrão em seus sistemas de comunicações, em substituição ao antigo sistema decádico. Ao apertar uma tecla do telefone será gerado 2 tons distintos de frequência. Esta combinação de tons é a impressão digital da tecla apertada.

A proposta desta montagem é basicamente acionar um conjunto de 8 relés conforme o tom DTMF recebido no pino de entrada do microcontrolador. Para melhor compreender o funcionamento, veja o esquema abaixo:

DESCRIÇÃO GERAL:

O circuito é bem simples, com uma entrada de sinal DTMF no pino 12. Este pino serve na função de entrada analógica para o comparador analógico de sinal, portanto não é uma entrada digital. O programa lê na verdade o resultado deste comparador analógico para o funcionamento da rotina de identificação de sinal DTMF.

Para orquestrar as instruções de forma rápida, foi usado um cristal de 20mhz. Seu valor é crítico, pois a rotina de interrupção do timer 0 necessita ser executada em menos de 102,4 us. O uso de valores de cristais inferiores as estas frequência não possibilita isto.

Em seguida temos 8 pinos sendo usados como saídas para controlar relés. Foi necessário usar mais 8 transistores de uso geral do tipo NPN (como BC548) para controlar a corrente da bobina do relé.

Os pinos 1 (vcc) e 14 (gnd) recebem a tensão de 5 volts regulados para o funcionamento do PIC. Um capacitor de pequeno valor (100 nF deve ser deve ser ligado o mais próximo possível destes pinos. Ele serve de filtro para eliminar ruídos elétricos na linha de alimentação.

BREVE HISTÓRICO DE PESQUISA PARA ESTE ARTIGO

A detenção de sinais através de microcontroladores é um assunto bem interessante. Indo as pesquisas na internet, encontrei várias fontes e projetos interessantes.

A principal forma de algoritmo para encontrar as frequências que existem em determinado sinal de entrada é a FFT (Fast Fourier Transform). A sua execução exige muita capacidade de processamento, bem como muita memória ram e rom. A rotina Goertzel também pode ser usada, quando conhecemos as frequências que desejamos identificar em um sinal. Diferente da FFT, a rotina Goertzel somente indica se existe ou não existe uma dada frequência no sinal analisado.

Encontrei uma NOTE APPLICATION nomeada de ” Microchip Note Applications AN257 ‘DTMF Detection Using PIC18 Microcontrollers‘ by Gaurang Kavaiya. Nesta observei um conceito interessante: o de usar a detenção da rotina Goertzel não por amostragens através de um conversor ADC de 8 ou 10 bits, mas simplesmente amostragens de um bit. Este bit pode então ser gerado por um comparador analógico na configuração de detetor de passagem por zero.

Outro fator interessante é que todo cálculo relativo ao padrão para cada amostragem de uma dada frequência é feito previamente (através de tabelas de Excel, por exemplo) e não em tempo real, sendo depois portados para o PIC em forma de tabelas de consultas.

Estas tabelas se tornam compactas porque funciona com apenas 2 bits para cada frequência procurada. Na realidade a rotina usa um bit para informar o seno e outro para informar o cosseno de uma dada amostragem. Mesmo assim, com 2 tabelas de 255 bytes cada já é possível identificar se 8 frequências estão presentes ou não em um sinal. Coisa realmente incrível!

Também encontrei o artigo “Introduction: DTMF Touch Tone Decoder Using Microchip PIC Microprocessor by LargeMouthBass – https://www.instructables.com/member/LargeMouthBass/”. Neste usa a leitura do conversor ADC mas faz 8 varreduras de amostragem, uma para cada frequência a detectar. Funciona, mas a rotina se torna demorada para capturar sinais normais de telefone com duração de apenas 50 ms.

Outro artigo interessante é o do Roman Black nomeado “Black DTMF Decoding Algorithm”. Funciona pelo método “triplet pattern recognition” que significa ” reconhecimento de padrão de trigêmeos”. Infelizmente, nos poucos momentos de testes realizados, eu não consegui faze-lo funcionar corretamente, mas acredito que deva funcionar bem com sinais gerados pelo gerador de DTMF do seu projeto.

Seguindo os moldes da AN257 temos o artigo do Radu Constantinescu, DTMF Remote Control – A software DTMF decoder for 16F87X. Funciona muito bem, usando 1 bit. Uma adaptação deste código foi feita para um pic de 8 pinos, conforme o artigo ” DTMF Decoding Software with a PIC – by Wim de Vree PE1GRL – pe1grl@amsat.org”.

Excetuando o artigo do Roman Black, todos são escritos originalmente em linguagem assembly.

Para o firmware desta montagem foi optado pela rotina a 1 bit usando uma versão das tabelas de Radu Constantinescu e alguns aspectos da rotina Goertzel usada na adaptação feita pelo Sr. Win. O código foi escrito em linguagem C para facilitar quem desejar alterar a rotina para suas necessidades. A grande dificuldade é escolher funções em C que não sejam ‘gulosas’ em espaço de flash. Por isso, verá que apesar de usar C, o jeito usado se aproxima muito do assembly. Realmente, não tem como fugir do fato que assembly é a linguagem mais eficiente para microcontroladores!

USO PRÁTICO DO CIRCUITO

Existe várias possibilidades de aplicação para este circuito. Por exemplo, a entrada DTMF poderá ser ligada a saída da placa de som de um computador. Nele pode ser rodado algum programa gerador de tons DTMF. Então, a partir do computador, podemos controlar cargas.

Também podemos acoplar um pequeno pré-amplificador na entrada de sinal e usar um microfone de eletreto para captar sons DTMF no ambiente. Podemos gerar os sons DTMF a partir de um celular nas proximidades do circuito.

Uma outra aplicação: podemos construir um controle remoto via RF para comandar a distância diversos aparelhos. Você está convidado a usar a sua imaginação!

Obs. Esta montagem é experimental, sendo de caráter didático, montada apenas em placa experimental (do tipo “Protoboard”), sujeita a “bugs” ainda não detectados. Está sendo fornecido os arquivos para que cada hobista possa alterar o programa segundo suas necessidades.

Segue abaixo a pasta zipada com os arquivos desta montagem:

RECEPTOR_8CAN_DTMF.ZIP

Manuais:

PIC16F676 DATASHEET

Curiosidades:

A ponta das asas das aves planadoras

As manobras impressionantes das mosca-das-frutas

A Vida — Teve um Criador?

Outros assuntos:

Como vencer a fadiga da pandemia

Meu filho deve ter um smartphone?

O que é a batalha do Armagedom?

Tente entender as pessoas

Faça o curso da Bíblia on-line

Vídeos:

Jonas – Uma lição de coragem e compaixão

As maravilhas da criação revelam a glória de Deus – Padrões

Teve um Projeto? Como as formigas evitam engarrafamentos?

Até o próximo artigo!

Back To Top