Sobre el DTMF

 

Generando tonos DTMF  usando la tarajeta de sonido

 

¿Que son los tonos DTMF ?

Los tonos DTMF son sumas de dos tonos de onda sinusoidal en frecuencias que sigue:

                 1209 Hz 1336 Hz 1477 Hz 1633 Hz

ABC DEF
697 Hz 1 2 3 A

GHI JKL MNO
770 Hz 4 5 6 B

PRS TUV WXY
852 Hz 7 8 9 C

oper
941 Hz * 0 # D

 

Metodos para generar  tonos DTMF

  • Usando especial ICpara generacion de tonosDTMF . Modems y telefonos usan este metodo.
  • Generar DTMF tonos usando el chip sintetizado de al tarjeta de sonido
  • Cargar una muestra de  onda senoiuda en la tabla de ondas de la tarjeta de sonido.Ejecutar esa muestra usando dos canales a diferentes frecuencias.
  • Muestrear todos las combinacione de  tonos DTMF  y ejecutar las que convengaa. 8 kHz a 8 bit de resolucion es suficinte para esto.
  • Generar la muestra usando software:
Generar una onda senoidal es facilmente calculable usando la siguiente formula:
sample=sin(n*2*pi*f/samplerate)
donde:
  • n es el valor de la muestra(empezando desde0)
  • f es la frecuencia que se quiere generar
  • samplerate es el ranago ques ejecuta las muestras a traves del DAC de la tarjeta de sonido

Generar tonos DTMF usando este método es muy fácil por justamente sumar dos de esta ondas sinusoidales . Para los tonos DTMF 8 que usan tasa de muestra de 8kHzó la resolución es bastante buena, pero no hay problemas usando resoluciones de 16 bits o más altos (usted justamente tiene que generar más datos para eso). Calculando muestras para 8 kHz y 8 bit (unsigned) data, usaremos las siguinte funcion: sample(n) = 128 + 63*sin(n*2*pi*f1/8000) + 63*sin(n*2*pi*f2/8000) Dónde el f1 y f2 son las frecuencias de las ondas sinusoidales en el tono DTMF.

 

Como optimizar los calculos

Usando la funcion seno consume bastante tiempo. Si su aplicación tiene limitada la capacidad de procesamiento, entonces debería optimizar la rutina de algún modo. La optimización en el cálculo de seno puede ser fácilmente hecha calculando una tabla de valores y luego leyendo los valores del seno de esa tabla en lugar de la función calculadora de seno actual todo el tiempo. Otra opción es usar un algoritmo para eficazmente realizar una serie de seno y / o cálculos de coseno de un ángulo que repetidamente aumenta (o decreciendo) por una cantidad fija. Otros métodos son evitar haciendo multiplicaciones innecesarias para cada prueba. Usted puede calcular 2 * f1 de * pi y 2 * f2 de * pi una vez al principio del calculo de tono DTMF y puede usar ese ato despues almacenado el valor en lugar de hacerlo en todas partes para cada prueba.

Deja una respuesta