Você está na página 1de 14

FACULDADE ASSIS GURGACZ FABRICIO STRHER DA SILVA MAIKON LUCIAN LENZ MIGUEL MURINELI NILSON CUSTDIO JUNIOR

ANLISE DE SINAIS E SISTEMAS: DTMF

CASCAVEL 2010

FACULDADE ASSIS GURGACZ FABRICIO STRHER DA SILVA MAIKON LUCIAN LENZ MIGUEL MURINELI NILSON CUSTDIO JUNIOR

ANLISE DE SINAIS E SISTEMAS: DTMF

Trabalho apresentado na disciplina de Sinais e Sistemas, do curso de Engenharia de Controle Automao, da Faculdade Assis Gurgacz FAG, como requisito parcial da nota referente ao segundo bimestre. Docente: Alvaro Juliano Vicente

CASCAVEL 2010

1 2 3 4 5 6 7 8

SUMRIO INTRODUO..........................................................................................................04 FUNDAMENTAO TERICA................................................................................05 ERROS NOS ALGORITMOS....................................................................................07 ANALISE DETALHADA DOS ALGORITMOS.........................................................07 4.1 DTMF.SCE........................................................................................................07 4.2 ANALISEDTMF.SCE.........................................................................................08 RESULTADOS OBTIDOS.........................................................................................09 OTIMIZAO............................................................................................................11 CONSIDERAES FINAIS......................................................................................13 REFERNCIAS BIBLIOGRFICAS.........................................................................14

4 1 INTRODUO A partir dos algoritmos DTMF.sce e AnaliseDTMF.sce abaixo, verificar se: verificar se os algoritmos cumprem as funo de gerao e anlise de sinais DTMF; testar os algoritmos no Scilab; descrever e explicar os algoritmos; identificar se h erros nos algoritmos; sugerir alteraes para aumentar a eficincia dos algoritmos. DTMF.sce
N = [ 1 9 0 ]; fr = [ 697 770 852 941 ]; fc = [ 1209 1336 1407 ] ; Fs = 32768; y = []; t = 0:1/Fs:0.25; for d = 1 : length(N) if if if if if if if if if if N(d) N(d) N(d) N(d) N(d) N(d) N(d) N(d) N(d) N(d) == == == == == == == == == == 1 2 3 4 5 6 7 8 9 0 , , , , , , , , , , r r r r r r r r r r = = = = = = = = = = 1; 1; 1; 2; 2; 2; 3; 3; 3; 4; c c c c c c c c c c = = = = = = = = = = 1; 2; 3; 1; 2; 3; 1; 2; 3; 2; end; end; end; end; end; end; end; end; end; end;

AnaliseDTMF.sce
clc; clear; lines(0); xdel; [ y Fs ] = wavread( 'numero.wav' ); playsnd( y , Fs ); Na = length(y); t = ( 0 : (Na-1) )*(1/Fs); Nb = 0.25/(1/Fs); Nd = round(Na/Nb); f = ( 0 : ( Nb - 1 ))*Fs/Nb; for d = 1 : Nd a = ((d-1)*Nb + 1); b = d*Nb; Y = abs( fft( y(a:b) )/Nb ); p = find( ( 600<f )&( f<1550 ) ); subplot( 2,Nd,d); plot(t(a:b),y(a:b)); xtitle('Digito ' + string(d),'t',''); subplot( 2,Nd,d+3); plot(f(p),Y(p),'.'); plot2d3(f(p),Y(p)) xtitle('Digito ' + string(d),'f',''); end;

y1 = sin( 2*%pi*fr(r)*t); y2 = sin( 2*%pi*fc(c)*t); y = [ y ( y1 + y2 )/2 ]; end; wavwrite( y , Fs , 'numero.wav' );

O primeiro gera um sinal de sinalizao de acordo com o padro DTMF (Dual-Tone Multi-Frequency), enquanto o segundo tem o intuito de analisar este sinal atravs de uma transformada de Fourier.

5 2 FUNDAMENTAO TERICA O padro DTMF (Dual-Tone Multi-Frequency), Duplo Tom Mltiplas Frequncias em portugus, de sinais consiste em gera os tons utilizados nos nmeros de telefone e celular. Sendo passveis de identificao pela frequncia deste sinal. Num total de 12 combinaes, onde so usados 7 tons em uma matriz 4x3, possvel identificar todos os dez nmeros mais os smbolos extras de asterisco (*) e tralha (#). Nos aparelhos de rdio comunicao, pode ser encontrada ainda uma quarta coluna que ser utilizada para as letras A, B, C e D (figura 1) com o intuito de aumentar o controle do sistema, existindo desta forma um oitavo tom, alm dos sete j citados.

Figura 1 Frequncia de cada tecla (combinao de tons), em vermelho o sistema de 8 tons

A exemplo, a tecla combina as frequncias de tom de 941 Hz (linha 1) e 1208 Hz (coluna 1), combinando os dois sinais (figura 2) obteremos uma resultante final DTMF (figura 3).

Figura 2 Frequncia de tom da linha 1 (a); frequncia de tom da coluna 1 (b)

O algoritmo faz a mdia entre os dois sinais, no nosso caso utilizando uma frequncia de amostragem de 32768 Hz. Abaixo o sinal combinado pelo algoritmo DTMF.sce:

Figura 3 Sinal combinado dos tons da linha e coluna da tecla 1

7 3 ERROS NO ALGORITMO

Com base na fundamentao terica, pode-se perceber que o algoritmo fornecido contm alguns pequenos erros no sistema de varredura de tabela. Retornando a tabela de frequncia linha x coluna (figura 1), nota-se que os valores de frequncia da linha esto invertidos: fr = [ 697 770 852 941 ]; quando na verdade deveria ser: fr = [ 941 852 770 697 ]; e ainda um dos valores de frequncia do vetor da coluna est errado: fc = [ 1209 1336 1407 ] ; o ltimo elemento do vetor na verdade deve ser 1477 Hz: fc = [ 1209 1336 1477 ] ;

4 ANALISE DETALHADA DOS ALGORITMOS 4.1 DTMF.SCE

O algoritmo DTMF.sce, gera um sinal de onda para cada um dos nmeros do vetor N criado no incio. Os vetores fr e fc, contm respectivamente os valores de frequncia para as linhas e colunas. Neste algoritmo, no montada a matriz DTMF com cada valor de frequncia, somente so criados os valores de linha e de coluna que combinados formariam a matriz. Com uma taxa de amostragem de 32768 Hz (32768 amostras por segundo) o algoritmo gera um sinal combinando as ondas senoidais de frequncia de linha e de

8 coluna, de cada correspondente nmero N da matriz DTMF. Faz-se isso somando as duas formas de onda e divindo-se por dois para que seja mantida a amplitude da onda. Por fim, gerado um arquivo .wav chamado numero.wav, com os valores de onda e taxa de amostragem.

4.2

ANALISEDTMF.SCE

O algoritmo AnaliseDTMF.sce faz a anlise do arquivo numero.wav, reproduzindo o som de cada onda e os grficos de sinais. Faz-se a leitura do arquivo numero.wav, salvando as ondas em um vetor y e a taxa de amostragem de cada uma em um vetor Fs. O comando playsnd, executa o som de cada onda a partir desses dados. As variveis Na, Nb, Nd e f, armazenam respectivamente: o comprimento do vetor y que contm as ondas de cada dos sinais fornecidos pelo arquivo numero.wav; o comprimento do vetor y da onda de cada um dos sinais; a quantidade de sinais; valores de 4 em 4 at o limite da amostragem por segundo. Com um lao de repetio, realizada a mesma funo 3 vezes gerando os grficos da onda e de espectro de cada um dos sinais. O processo inicia corrigindo o valor inicial e final de Nb (taxa de amostragem at 0,25 segundos), tratando cada onda como uma continuao da anterior. Atravs do valor absoluto da transformada rpida de fourrier dos valores de cada onda divididos pela quantidade de amostras, gerado o grfico de espectro desta onda que demonstra a frequncia de ocorrncia da amplitude do sinal para valores entre 600 e 1550 Hz. gerado tambm os grficos de onda de cada sinal levando-se em considerao o

9 nmero de amostras mas tambm no esquecendo que cada onda tratada como se fosse uma continuao da anterior, logo a linha do tempo no grfico iniciar a partir de onde terminou o anterior.

5 RESULTADOS OBTIDOS Os resultados dos algoritmo originais, obviamente so diferentes dos algoritmos corrigidos com o erros j identificados no terceiro tpico. A execuo dos arquivos originais tem os grficos abaixo como resultado:

Figura 1 Grficos gerados pelo AnaliseDTMF.sce a partir do arquivo criado por DTMF.sce

Corrigindo os erros de DTMF.sce, o arquivo abaixo, DTMFCorrigido.sce usado

10 para gerar o arquivo que ser analisado para gerar os grficos mudando o resultado final. DTMFCorrigido.sce
N = [ 1 9 0 ]; fr = [ 941 852 770 697 ]; fc = [ 1209 1336 1477 ] ; Fs = 32768; y = []; t = 0:1/Fs:0.25; for d = 1 : length(N) if if if if if if if if if if N(d) N(d) N(d) N(d) N(d) N(d) N(d) N(d) N(d) N(d) == == == == == == == == == == 1 2 3 4 5 6 7 8 9 0 , , , , , , , , , , r r r r r r r r r r = = = = = = = = = = 1; 1; 1; 2; 2; 2; 3; 3; 3; 4; c c c c c c c c c c = = = = = = = = = = 1; 2; 3; 1; 2; 3; 1; 2; 3; 2; end; end; end; end; end; end; end; end; end; end;

y1 = sin( 2*%pi*fr(r)*t); y2 = sin( 2*%pi*fc(c)*t); y = [ y ( y1 + y2 )/2 ]; end; wavwrite( y , Fs , 'numero.wav' );

Os grficos a seguir so gerado:

11

Figura 2 Grficos gerados pelo AnaliseDTMF.sce a partir do arquivo criado por DTMFCorrigido.sce

Pode-se notar a diferena principalmente nos grficos de espectro, o que significa que os nmeros enviados pelo primeiro algoritmo so diferentes do segundo. A combinao das ondas pela matriz DTMF ntida nos grficos de espectro onde se destacam dois pontos de grande amplitude em duas faixas de frequncia, o que representa uma maior repetio destes pontos durante a onda, logo a combinao de dois nmeros da matriz formam onda como era esperado.

6 OTIMIZAO

Apesar de os algoritmo fornecidos aparentarem leveza e simplicidade, o programa poderia se tornar ainda mais eficiente se utilizado um algoritmo de Goertzel, ao invs das

12 transformadas rpidas de fourier que requerem maior processamento. No entanto a eficincia deste algoritmo limita-se a deteco de algumas poucas componentes da frequncia, quando o este for usado para a anlise de toda a onda se tornar ineficiente pela grande quantidade de multiplicaes que necessita fazer. O algoritmo DTMF.sce ainda pode ser aprimorado reduzindo a quantidade de comandos necessrios para seleo das linhas e colunas de frequncias em cada nmero do vetor N (em negrito as linhas modificadas): DTMFCorrigido.sce
N = [ 1 9 0 ]; fr = [ 941 852 770 697 ]; fc = [ 1209 1336 1477 ] ; Fs = 32768; y = []; t = 0:1/Fs:0.25; for d = 1 : length(N) if if if if if if if if if if N(d) N(d) N(d) N(d) N(d) N(d) N(d) N(d) N(d) N(d) == == == == == == == == == == 1 2 3 4 5 6 7 8 9 0 , , , , , , , , , , r r r r r r r r r r = = = = = = = = = = 1; 1; 1; 2; 2; 2; 3; 3; 3; 4; c c c c c c c c c c = = = = = = = = = = 1; 2; 3; 1; 2; 3; 1; 2; 3; 2; end; end; end; end; end; end; end; end; end; end;

DTMFEnxuto.sce
N = [ 1 9 0 ]; fr = [ 941 852 770 697 ]; fc = [ 1209 1336 1477 ] ; Fs = 32768; y = []; t = 0:1/Fs:0.25; for d = 1 : length(N) r=int((N(d)-1)/3)+1; if (r==0) r=4; end; c=N(d); while(N(d)>3), c = c - 3 ; end; y1 = sin( 2*%pi*fr(r)*t); y2 = sin( 2*%pi*fc(c)*t); y = [ y ( y1 + y2 )/2 ]; end; wavwrite( y , Fs , 'numero.wav' );

y1 = sin( 2*%pi*fr(r)*t); y2 = sin( 2*%pi*fc(c)*t); y = [ y ( y1 + y2 )/2 ]; end; wavwrite( y , Fs , 'numero.wav' );

Ao invs de realizar 10 testes para indentificar os nmeros contidos no vetor N, o algoritmo atravs de relaes aritmticas busca automaticamente os valores destes.

13 7 CONSIDERAES FINAIS

O padro DTMF largamente utilizado nos sistemas de telefonia por ser prtico e eficiente. Os algoritmos utilizados geram o sinal combinando 7 tons diferentes para gerar at 12 tons diferentes. Posteriormente um outro algoritmo faz a anlise do sinal gerando o som e grficos de onda, e espectro capaz de analisar com maior facilidade os tons que foram combinados anteriormente j que amplitude das duas frequncia utilizadas fica evidenciada nos grficos. Ao utilizar a ferramenta fft (fast fourier transform) que realiza uma transformada rpida de fourier, o algoritmo consegue obter os valores de frequncia com significativa velocidade.

14 REFERNCIAS BIBLIOGRFICAS 01. VICENTE, A. J. Trabalho Acadmico Sinais e Sistemas, 1. Semestre de 2010. Disponvel em: <http://www.fag.edu.br/professores/ajvicente/TA_SS_2010_1S_2B.pdf>. Acesso em: 18 jun. 2010. 02. Faculdade Assis Gurgacz. MANUAL PARA ELABORAO E APRESENTAO DE TRABALHOS em: 20 jun. 2010. 03. GANTI, R. University of Notre Dame. Implementation of DTMF Encoder, Decoder. Disponvel em: <http://www.ccs.unicamp.br/cursos/fee107/download/cap06.pdf>. Acesso: 20 jun. 2010. 04. HAYKIN, S. Sinais e Sistemas. 1. ed. Porto Alegre: Bookman, 2001. 05. LIMA, J. B.; CAMPELLO DE SOUZA, R. M.; OLIVEIRA, H. M.; CAMPELLO DE SOUZA, M. M. Decodificao de Sinais DTMF via Transformada Aritmtica de Fourier. XXI Simpsio Brasileiro de Telecomunicaes. Belm: 2009. ACADMICOS. Disponvel em <http://www.fag.edu.br/academicon/arquivos/manual_trabalhos_academicos.pdf> Acesso