Está en la página 1de 3

DSP

DTMF EN MATLAB
UNIVERSIDAD POLITECNICA SALESIANA JUAN DIEGO BERNAL, JAIME SANCHEZ R, CHRISTIAN ROMERO, MARCO SANCHEZ ESTUDIANTES DE LA CARRERA DE INGENIERA ELECTRNICA Abstract Dentro de la telefona, el sistema DTMF es muy usado para detectar las teclas que se estn pulsando y segn eso realizar la marcacin. Para esto se hace un anlisis en frecuencia de los tonos y se va viendo el rango en el que estos estn. Esto se puede implementar d manera fsica o usando un software, que ese es nuestro caso. A continuacin se detalla el proceso y conceptos bsicos que se debe saber sobre este tema. Palabras clave: DTMF, rango de frecuencias, FFT

Fig1. Rango de frecuencias de los tonos

1.2 DETECCION DE FRECUENCIAS Colocamos la frecuencia a la cual se debe muestrear y de ah sacamos la transformada de Fourier para analizarlas de la siguiente forma:
Function [f,modulo]=transform(sonido) f=0; modulo=0; fc=8000; N=length(sonido); L=2.^nextpow2(N); %longitud de la transformada de fourier % FFT_intera=fft(sonido,L)/N; transformada de fourier normalizada f=linspace(0,1,L/2)*fc/2; % eje de frecuencia f=F*fc/2 (frequenze da zero a fc/2) FFT=FFT_intera(1:L/2); % seleccionar muestras modulo=2*abs(FFT);

1. DTMF Es un mtodo utilizado por el sistema telefnico para reconocer las teclas pulsadas durante la marcacin. Al pulsar una tecla en el teclado del telfono se generan dos tonos simultneos, que son descodificados por la centralita para determinar la tecla pulsada. Este mtodo se aplica tanto para celulares como para telfonos convencionales para poder enlazar una comunicacin. Para poder realizar la prctica, primero se tuvo que revisar el rango de frecuencias en las que se encontraban cada uno de los nmeros, para esto se reviso la siguiente tabla:

Con las sentencias anteriormente descritas, podemos detectar las frecuencias. Ahora una PRACTICA DTMF Pgina 1

DSP
vez hecho este pas, procedemos a analizar el sonido adquirido, ya que el mismo si no esta dentro el rango especificado, no servir de nada. Para esto Nos valemos de la siguiente funcin:
function num=detection(f,modulo) num='4'; elseif indice== [2 6] num='5'; elseif indice== [2 7] num='6'; elseif indice== [3 5] num='7'; elseif indice== [3 6] num='8'; elseif indice== [3 7]1 num='9'; elseif indice== [4 5] num='asterisco'; elseif indice== [4 6] num='0'; elseif indice== [4 7] num='numeral'; else num='error'; end end for j=1:length(base_f) a(j)=find(f>(base_f(j)rango),1,'first'); % indice b(j)=find(f>(base_f(j)+ rango),1,'first'); % umbral(j)=max(modulo(a(j):b(j))); % end u_umbral=max(umbral)/3; % for i=1:length(base_f) if (umbral(i)>u_umbral) f_base(i)=base_f(i); else f_base(i)=0; end end indice=find(f_base); if (length(indice)>2) || (length(indice)==0) num='error'; else if indice==[1 5] num='1'; elseif indice==[1 6] num='2'; elseif indice== [1 7] num='3'; elseif indice== [2 5]

base_f=[697 770 852 941 1209 1336 1477]; % frecuencias dtmf f_base=zeros(1,length(base_f)); % vector de ceros igual al vector de frecuencias rango=2; % error mas menos de Hz num=0;

Como se observa en las lneas de cdigo, se coloca el rango de frecuencias en los que queremos analizar. Despus de eso se hace las respectivas comparaciones para saber que digito es el presionado y segn eso para dirigirnos a la subrutina que nos indica el nmero correcto. Finalmente mostramos el numero que se presiona en el celular mediante una imagen. Esto se logra con las siguientes lneas de cdigo:

function pushbutton1_Callback(hObject, eventdata, handles) global f global modulo sonido=wavrecord(8000*3,8000,1);G RABO SONIDO DE 3 SEGUNDOS a 8000 Hz [f,modulo]=transform(sonido); % HAGO LA TRANFORMADA DE FOURIER DE SONIDO Q GRABE num=deteccion(f,modulo);% Devolver el nombre de la imagen

PRACTICA DTMF

Pgina 2

DSP
relacionada a la tecla pulsada o un mensaje de error nome_img_display=strcat(num,'.bmp '); display=imread(nome_img_display); % leer la imagen imshow(display)

los tonos. Nos resulto de gran ayuda ya que las mismas ayudaron a determinar el rango de anlisis de los mismos. Cabe recalcar que la realizacin de la presenta practica nos ayudara a futuro en donde tengamos que implementar algoritmos computacionales ms complejos, sin embargo los mismos no nos resultaran difciles si aplicamos los conceptos adquiridos en la presente prctica. Estas serian nuestras conclusiones al trmino de la presente prctica. 3. REFERENCIAS [1]http://www.mediacollege.com/audio/ton e/dtmf.html [2]http://www.scribd.com/doc/39576022/In terface-DTMF [3]http://www.mathworks.com/products/sig nal/demos.html?file=/products/demos/shipp ing/signal/dtmfdemo.html

si queremos poder ver la tranforma de fourier de la seal para ver el pico de frecuencia en donde se encuentra par aver si concuerda o no con la table mostrada al inicio del ensayo.2
global f global modulo figure plot(f,modulo) title('FFT') xlabel('FRECUENCIA [Hz]') ylabel('AMPLITUD')

2. CONCLUSIONES Al terminar la siguiente prctica hemos sacado como conclusiones los siguientes puntos: Como se ha podido observar, la deteccin de tonos DTFM es muy utiliza en el mundo de la telefona, ya que si no hubiera esto no se podra discar o marcar un nmero telefnico para enlazar una comunicacin. Por otro lado, para la deteccin de los tonos se puede usar un circuito aparte o mediante un software computacional, que en nuestro caso fue matlab. Este nos permiti adquirir el sonido de los tonos mediante el micrfono del computador y mediante un algoritmo computacional detectar las frecuencias y ver que numero es el pulsado. Otro aspecto que se considero, fue el rango de frecuencias en las cuales el DTMF trabajaba. Para esto nos valimos de una tabla en donde nos especifica las frecuencias de

PRACTICA DTMF

Pgina 3

También podría gustarte