0% encontró este documento útil (0 votos)
284 vistas7 páginas

Decodificación de Tonos DTMF

El documento describe el decodificador de tonos DTMF (Dual-Tone Multi-Frequency), el cual detecta las teclas pulsadas en un teléfono analizando la frecuencia de los tonos generados. Explica que el DTMF usa dos tonos simultáneos de diferentes frecuencias para cada tecla y describe el proceso de detección mediante filtros pasabanda y la identificación de las frecuencias a través de un banco de filtros en MATLAB.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
284 vistas7 páginas

Decodificación de Tonos DTMF

El documento describe el decodificador de tonos DTMF (Dual-Tone Multi-Frequency), el cual detecta las teclas pulsadas en un teléfono analizando la frecuencia de los tonos generados. Explica que el DTMF usa dos tonos simultáneos de diferentes frecuencias para cada tecla y describe el proceso de detección mediante filtros pasabanda y la identificación de las frecuencias a través de un banco de filtros en MATLAB.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

DSP

Decodificador De Tonos DTMF (04 Diciembre 2017)

UNIDADES TECNOLOGICAS DE SANTANDER


BUCARAMANGA
DIEGO ARMANDO VARGAS PEREZ, KEVIN JAIMES MORENO, WBEYMAR ANDRES PEÑA MENDOZA
ESTUDIANTES 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: Fig1. Rango de frecuencias de los tonos


DTMF, rango de frecuencias, FFT, filtro
pasabandas, filtro pasa bajas, filtro pasa
altas. En un teléfono convencional no tiene la
última columna de la tabla, esta fue usada
por los militares para tener prioridad en la
1. DTMF línea.

En telefonía, la marcación por tonos también 1.1 REQUERIMIENTOS DTMF


llamada marcación por tonos duales de
multifrecuencia, consiste en que cuando un
usuario pulsa una tecla de su teléfono Las especificaciones ITU Q.24 para la
correspondiente al dígito que quiere marcar, detección DTMF son las siguientes:
se envían dos tonos de distinta frecuencia, Tolerancia de la frecuencia: para que
los tonos como se puede apreciar en la tabla un tono DTMF sea válido debe tener una
un tono es de baja frecuencia inferior a un desviación en frecuencia dentro del 1.5%
1kHz y el otro tono esta en rango de altas de tolerancia. Los tonos con una desviación
frecuencias entre 1kHz y 2 Khz. Las en frecuencia mayor al 3.5% deben ser
frecuencias han sido seleccionas con mucha rechazados. Este requerimiento ayuda a
precesión, para que la detección del prevenir la detección de falsas señales
multitono sea precisa: como tonos DTMF inválidos.
Duración de la señal: Un tono DTMF
con una duración mínima de 40ms debe
ser considerado válido. La duración de la

PRACTICA DTMF Página 1


DSP

señal no debe ser menor de 23ms Los 4 filtros pasabanda en el canal de baja
(considerado sin funcionamiento). frecuencia tiene frecuencias centrales de
Un espaciado mínimo entre tonos de 697, 770, 857 y 941Hz.
Los 4 filtros pasabanda en el canal de alta
50 ms
frecuencia tienen frecuencias centrales a
Los dígitos requieren que sean 1209, 1336,1477 y 1633Hz.
transmitidos en un ratio de menos de 10
por segundo 2. CODIGOS DE MATLAB
Atenuación de la señal: El detector
debe trabajar con una relación señal-ruido Para realizar el filtrado general de la señal
(SNR) de 15db en el peor de los casos y una inicial ([Link]) utilizamos los filtros antes
atenuación de 26dB. nombrados, utilizando una herramienta muy
util como lo es matlab, acontinuacion
Interrupción de la señal: Una señal daremos una breve explicacion de las
DTMF válida interrumpida por un máximo funciones utilizadas para este proyecto:
de 10ms, no debe ser detectada como dos
tonos distintos.  FiltroPasaBandaDeMuestreo
Pausa en la señal: Una señal DTMF FrecuenciaDeMuestreo es la frecuencia a la
válida separada por una pausa de tiempo cual se tomo la señal
de al menos 40ms debe ser detectada fstop1,fpass1,fpass2,fstop2,Rp,Rs, son los
como dos tonos distintos. parametros para el filtro Pasabanda
iGraficar = si queremos que nos de una
Fase: El detector debe operar con un imagen de la muestra 1 para que grafique o
máximo de 8dB en fase normal y 4dB en cero que no grafique
fase invertida. sNombre: nombre de la imagen que se crea
Rechazo al habla: El detector debe o el plot.
operar en la presencia del habla La funcion nos devuelve la maxima
rechazando la voz como un símbolo DTMF frecuencia y la maxima amplitud de dicha
válido. frecuencia hallada.

1.2 DETECCION DE FRECUENCIAS  BancoDeFiltrosDeFrecuenciasAltas


Esta funcion recibe dos parametros
(SenalEntrada)= es la muestra a la cual
El algoritmo que se utiliza para identificar las queremos obtenerle el valor de la frecuencia
dos frecuencias asociadas con el boton (FrecuenciaDeMuestreo) = Es la frecuencia
oprimido, la separacion de los dos tonos; de muestreo a la cual se tomo la muestra
primero mediante un filtro pasa bajas y otro Esta funcion retorna la frecuencia detecta en
pasa altas. la muestra o señal de entrada.
Esta funcion recibe como parametros la señal
La frecuencia de corte del filtro pasa bajas es de entrada y entregalas frecuencias altas
ligeramente superior a 1000Hz, la frecuencia para el reconocimiento de frecuencias DTMF
de corte del filtro pasa altas es ligeramente las cuales van entre 1209 y 1633Mz.
superior a 1200Hz
La salida de cada filtro se procesa por medio  BancoDeFiltrosDeFrecuenciasBajas
de un banco de filtros pasabanda con banda Esta funcieon recibe los mismos parametros
de paso estrechas. que el filtro anterior.

PRACTICA DTMF Página 2


DSP

Esta funcion recibe como parametros la señal PeriodoMuestreo =


de entrada y entregalas frecuencias bajas 1/FrecuenciaDeMuestreo;
para el reconocimiento de frecuencias DTMF
LongitudSenal =
las cuales van entre 697 y 941Mz. size(SenalEntrada);

 GuiGraficarSenal %Tiempo de la señal


Esta funcion sirve para graficar las distintas tiempo = (0:LongitudSenal-
señales, el codigo de dicha funcion es: 1).*PeriodoMuestreo;

function %Reproducimos el audio original


GuiGraficarSenal(handles,SenalEnt (ArchivoAudioTxt)
rada,nombreSenal,Color) %soundsc(SenalEntrada);%sounds(To
%[0,0.7,0.9] ejemplo de Color no A escuchar , Frecuencia de
muestreo)
axes([Link])
%Hacemos una grafica de la señal
plot(SenalEntrada,'Color',Color) de audio Original
xlabel('Tiempo') (ArchivoAudioTxt)
ylabel('Amplitud') %GraficarSenal(SenalEntrada,'Seña
title(nombreSenal) l De Audio Original')

%Eliminamos el ruido de 60 Hz de
 BancoDeFiltrosFrecuenciasAltas y la señal de entrada con un filtro
BancoDeFiltrosFrecuenciasBajas pasa
En estas funciones lo unico que hacemos es %banda
tomar las frecuencias bajas y altas ya
filtradas por las funciones anteriores y las %******************************Cr
comparamos mediante una matriz para eamos El Filtro Pasa Banda entre
697 y 1633 para eliminar el Ruido
determinar exactamente que frecuencia se
*********************
esta utilizando y asi, al tener que frecuencia
alta y baja tiene la señal se determina que %Determinamos el orden del filtro
tecla se ha oprimido (gracias al cuadro de fstop1 = 400;
frecuencias utilizadas en DTMF). fpass1 = 697;
fpass2 = 1633;
 DecodificarSenal fstop2 = 1800;
Esta funcion es la que se encarga de sacar
Rp = 2;
cada señal ya filtrada y la toma como una Rs = 6;
muestra independiente, seria como la
funcion fundamental para hallar los numeros Fnyquist = FrecuenciaDeMuestreo/2
marcados. ;
el codigo completo y explicado (como esta
en matlab) es el siguiente: Ws(1) = fstop1/Fnyquist;
Wp(1) = fpass1/Fnyquist;
function [SenalDeEntradaSinRuido Wp(2) = fpass2/Fnyquist;
NMuestras IntervaloDeLaMuestra Ws(2) = fstop2/Fnyquist;
MuestrasEncontradas
ContenedorDatosTeclado] = [n,Wn] = buttord(Wp,Ws,Rp,Rs);
DecodificarSenal(SenalEntrada)
%Seleccion de los coeficientes
%Decodificador De Tonos DTMF del filtro
FrecuenciaDeMuestreo = 32660; [b,a] = butter(n,Wn);

PRACTICA DTMF Página 3


DSP
%Seleccion de los coeficientes
%**************************Aplica del filtro
mos el filtro a la señal de [b,a] = butter(n,Wn,'low');
entrada para eliminar el ruido
***** %Aplicamos el filtro pasa bajas a
la señal sin ruido
SenalDeEntradaSinRuido =
filter(b,a,SenalEntrada); SenalDeFrecuenciaBajas =
%GraficarSenal(SenalDeEntradaSinR filter(b,a,MuestrasEncontradas);
uido,'Señal De Audio Sin Ruido')

%************************Aplicamo %*************************Aplicam
s el algoritmo de os el filtro pasa Altas para
muestreo************************* conseguir que la señal
**************************** (MuestrasEncontradas) solo tenga
frecuencias desde 1209Hz hasta
%Determinamos donde hay Señales 1633Hz
de tono
%la funcion ObtenerMuestras %Creamos El Filtro pasa Altas de
obtiene muestras de la señal 950 Hz
esclusibamente %aqui busco el orden del filtro y
%donde hay frecuencia DTMF establezco la Fcorte.
creando una nueva señal mas fstop =950;
limpia fpass = 1200;
Rp = 4;
[NMuestras IntervaloDeLaMuestra Rs = 30;
MuestrasEncontradas] =
ObtenerMuestras(SenalDeEntradaSin Fnyquist =
Ruido,FrecuenciaDeMuestreo,120);% FrecuenciaDeMuestreo/2;
120
Ws = fstop /Fnyquist;
Wp = fpass /Fnyquist;
%*************************Aplicam [n,Wn] = buttord(Wp,Ws,Rp,Rs);
os el filtro pasa bajas para
conseguir que la señal %Seleccion de los coeficientes
(MuestrasEncontradas) solo tenga del filtro
frecuencias desde 697Hz hasta [b,a] = butter(n,Wn,'high');
941Hz
%Aplicamos el filtro pasa Altas a
%Creamos El Filtro pasa Bajas de la señal sin ruido
1090 Hz
%aqui busco el orden del filtro y SenalDeFrecuenciaAltas =
establezco la Fcorte. filter(b,a,MuestrasEncontradas);
fstop = 1090;
fpass = 990;
Rp = 6;
Rs = 18;
Fnyquist = ContenedorDatosTeclado = [];
FrecuenciaDeMuestreo/2;
for x = 1 : NMuestras
Ws = fstop /Fnyquist;
Wp = fpass /Fnyquist; LimiteInferior =
[n,Wn] = buttord(Wp,Ws,Rp,Rs); IntervaloDeLaMuestra(x,1);
LimiteSuperior =
IntervaloDeLaMuestra(x,2);

PRACTICA DTMF Página 4


DSP
end

%Tomamos una muestra de la señal


de frecuencias bajas que va end
desde 6 a 1710
Muestra1 =
SenalDeFrecuenciaBajas(
LimiteInferior :  InterfasDTMF
LimiteSuperior);%2300:3997 Lo ultimo que elaboramos fue la interfaz
%GraficarSenal(Muestra1,'Muestra grafica que es donde se ejecuta todo el
1') programa y se ve en varios pasos los
%ObtenerEspectro(Muestra1,Frecuen procesos por los que pasa la señal,
ciaDeMuestreo,1,'Espectro Señal
Muestra1');
acontinuacion tenemos una breve
explicacion de la misma:
%Obtenemos la componente de la
frecuencia baja del tono de la
muestra. aplicando el banco de
filtros pasa banda
FrecuenciaBaja =
BancoDeFiltrosFrecuenciasBajas(Mu
estra1,FrecuenciaDeMuestreo);

%Tomamos una muestra de la señal


de frecuencias Altas que va
desde 6 a 1710
Muestra1 =
SenalDeFrecuenciaAltas( Esta seria la pantalla inicial de la interfaz
LimiteInferior : LimiteSuperior); grafica.
%ObtenerEspectro(Muestra1,Frecuen Primero donde dice agregar archivo se le da
ciaDeMuestreo,1,'Espectro Señal
click y abre una ventana donde podemos
Frecuencias Altas Muestra1');
%Obtenemos la componente de la buscar en este caso el archivo [Link] que es
frecuencia Alta del tono de la el dado para el proyecto, luego se le da en
muestra. aplicando el banco de abrir y tras esperar tenemos la imagen ya
filtros pasa banda cargada:
FrecuenciaAlta =
BancoDeFiltrosFrecuenciasAltas(Mu
estra1,FrecuenciaDeMuestreo);

%Obtenemos la tecla que


representa las frecuencias altas
y bajas que
%componen el tono
TeclaDelTono =
ObtenerTecla(FrecuenciaBaja,Frecu
enciaAlta);
Esta seria la imagen de la señal inicial (el
ContenedorDatosTeclado = archivo [Link]) en la parte izquierda
[ContenedorDatosTeclado tendremos los numeros marcados y la
TeclaDelTono];
cantidad de tonos en este caso 60, tambien
al pulsar los botones de la parte superior de
la imagen podemos escuchar la señal (play) o

PRACTICA DTMF Página 5


DSP

abrir la imagen aparte para poder analizarla


(Generar img). La interfas tambien tiene
puntos que se pueden seleccionar en la parte
superior y asi poder ver el procedimiento
para hallar dichos numeros.
En este caso tenemos la señal luego de pasar
por el filtro pasa bandas:

Este seria el espectro en frecuencia de dicha


muestra (numero 60). En la imagen podemos
ver dos puntos superioes en rojo (al final de
las dos lineas verticales, estos puntos son las
frecuencias maximas y minimas de dicha
muestra.
No solamente la podriamos analizar en
frecuencia, tambien en el tiempo para asi ver
Aca tenemos la señal completamente limpia, la amplitud total de dicha muestra, faltaria
sin ningun ruido, se puede decir que solo se dar click en donde nos indica el circulo rojo,
ve en la imagen las señales a utilizarse en el el resultado seria:
filtro DTMF (señal completamente
decodificada:

Esta seria una breve explicacion de las


funciones utilizadas para nuestro proyecto,
Por ultimo podemos analizar cada muestra en este caso utilizamos, vale recalcar; matlab
por separado, en este caso serian 60 como aplicacion para desarrollar este
muestras las cuales podemos analizar una proyecto de la materia: procesamiento
por una, solamente ponemos el numero de digital de señales.
la muestra a analizar y damos click en el
boton, acontinuacion como ejemplo En la carpeta final (codigo completo de
analizaremos la muestra numero 60: matlab), se utilizaron otras funciones de
menos reelevancia para el funcionamiento
del mismo, los cuales es su mayoria son
borradores para obtener las funciones finales
anteriormente descritas.

3. CONCLUSIONES

PRACTICA DTMF Página 6


DSP

Al terminar la siguiente práctica hemos


sacado como conclusiones los siguientes 4. REFERENCIAS
puntos:
[1][Link]
Como se ha podido observar, la detección de e/[Link]
tonos DTFM es muy utilizada en el mundo de [2][Link]
la telefonía, ya que si no hubiera esto no se terface-DTMF
podría discar o marcar un número telefónico [3][Link]
para enlazar una comunicación. nal/[Link]?file=/products/demos/shipp
ing/signal/[Link]
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 del archivo [Link] y un
algoritmo computacional para detectar las
frecuencias y ver que tecla fue pulsada.

Fue muy importante en este caso el uso de


filtros(pasabanda, pasa baja y pasa alta) para
el correcto desarrollo de esta practica asi
como la TFD y los temas vistos a lo largo de
el curso de procesamiento digital de señales.

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
los tonos. Nos resulto de gran ayuda ya que
las mismas ayudaron a determinar el rango
de análisis de los mismos y nos direcciono en
el uso de cada uno de los filtros.

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.

Al realizar el filtrado general de la practica


tenemos como resultado 60 muestras, cada
muestra referida a un boton, los ultimos 4
digitos marcados son “2111”, asociandolos
con la tabla inicial estos numeros se asocian
a las letras “UK”.

PRACTICA DTMF Página 7

También podría gustarte