Está en la página 1de 4

DSP

DTMF EN MATLAB
UNIVERSIDAD POLITECNICA SALESIANA JUAN DIEGO BERNAL, JAIME SANCHEZ R, CHRISTIAN
ROMERO, MARCO SANCHEZ ESTUDIANTES DE LA CARRERA DE INGENIERÍA ELECTRÓNICA Abstract
Dentro de la telefonía, el sistema DTMF es muy usado para detectar las teclas que
se están pulsando y según eso realizar la marcación. Para esto se hace un análisis
en frecuencia de los tonos y se va viendo el rango en el que estos están. Esto se
puede implementar d manera física o usando un software, que ese es nuestro caso. A
continuación se detalla el proceso y conceptos básicos 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 método utilizado por el sistema telefónico para reconocer las teclas
pulsadas durante la marcación. Al pulsar una tecla en el teclado del teléfono se
generan dos tonos simultáneos, que son descodificados por la centralita para
determinar la tecla pulsada. Este método se aplica tanto para celulares como para
teléfonos convencionales para poder enlazar una comunicación. Para poder realizar
la práctica, primero se tuvo que revisar el rango de frecuencias en las que se
encontraban cada uno de los números, para esto se reviso la siguiente tabla:

Con las sentencias anteriormente descritas, podemos detectar las frecuencias. Ahora
una PRACTICA DTMF Página 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 función:
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 líneas de código, se coloca el rango de frecuencias en los


que queremos analizar. Después de eso se hace las respectivas comparaciones para
saber que digito es el presionado y según eso para dirigirnos a la subrutina que
nos indica el número correcto. Finalmente mostramos el numero que se presiona en el
celular mediante una imagen. Esto se logra con las siguientes líneas de código:

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

Página 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 análisis de los mismos. Cabe recalcar que la realización de la presenta
practica nos ayudara a futuro en donde tengamos que implementar algoritmos
computacionales más complejos, sin embargo los mismos no nos resultaran difíciles
si aplicamos los conceptos adquiridos en la presente práctica. Estas serian
nuestras conclusiones al término de la presente práctica. 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 señal 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 práctica hemos sacado como conclusiones


los siguientes puntos: Como se ha podido observar, la detección de tonos DTFM es
muy utiliza en el mundo de la telefonía, ya que si no hubiera esto no se podría
discar o marcar un número telefónico para enlazar una comunicación. Por otro lado,
para la detección 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 micrófono 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

Página 3

También podría gustarte