Paso 2: Descripción del algoritmo de procesamiento de señal
El algoritmo de Goertzel es una algoritmo que se utiliza para detectar una sola frecuencia de procesamiento de señal. Actúa como un filtro bandpass muy estrecho. Produce una respuesta muy fuerte a las frecuencias dentro de la banda de paso y una respuesta mucho más baja para las frecuencias fuera de la banda de paso.
En mi implementación del algoritmo, las muestras se toman a un ritmo de 4 veces la frecuencia para ser detectado. Utilizando una frecuencia de muestreo de frecuencia de 4 veces el destino hace coeficientes utilizados en el algoritmo de ser igual a 1 o 0. Esto elimina la necesidad de realizar multiplicación complicado y desperdiciador de tiempo en un micro de 8 bits. Yo no he incluido todos los detalles matemáticos del algoritmo aquí, pero una búsqueda en Google produce artículos sobre el tema si estás interesado en aprender más sobre el algoritmo sí mismo.
Debido a la restricción que la frecuencia de muestreo debe ser 4 veces el destino frecuencia, la frecuencia de muestreo necesaria será diferente para cada uno de los 8 tonos que se utilizan para DTMF. Por lo tanto, el algoritmo se debe ejecutar una vez para cada una de las 8 frecuencias. Esto significa que un conjunto separado de las muestras debe tomarse para cada frecuencia de interés, como cada frecuencia se probarán a una velocidad de muestreo diferente.
La agudeza de la respuesta del filtro versus frecuencia es proporcional al número de muestras tomadas. La respuesta del algoritmo debe ser aguda que responde a la frecuencia de objetivo, pero no responde a ninguna de las otras 7 frecuencias. Se encontró un valor de 120 muestras para producir una respuesta razonablemente estrecha en experimentación. Por supuesto hay un equilibrio entre el número de muestras y el tiempo de ejecución. Para detectar tonos cortos, el tiempo de ejecución debe ser tan corto como sea posible. Pero hacer una respuesta estrecha el número de muestras debe ser mayor, dando por resultado un tiempo de ejecución. El número de muestras se convierte la limitación de factor en cómo falta un tono puede ser detectado.
Una vez que el algoritmo ha procesado 120 muestras, salidas un valor. La magnitud de este valor es proporcional a la amplitud de la frecuencia de interés. Este valor resultante se compara contra un umbral para determinar si la frecuencia de la blanco está presente.
Una vez que el algoritmo ha sido dirigido para todas las frecuencias de 8, el microprocesador ejecuta lógica en los resultados para determinar si un par DTMF válido está presente. Un par DTMF válido se considera presente sólo si 1 fila freq y 1 col freq se detecta. Otras combinaciones son considerados como no válidos.
El gráfico muestra la respuesta real medida mediante este algoritmo en un PIC 12F683. El gráfico muestra que la respuesta en frecuencia de todo 8 veces el algoritmo se ejecuta. El eje x es la frecuencia en Hz. El eje vertical es la salida de valor por el algoritmo. La entrada es una onda sinusoidal de 1V, barrida de 600Hz a 1800Hz. Tenga en cuenta que el ancho de la respuesta es más amplio para los filtros de frecuencia más alta. Esto es debido a que el ancho de la respuesta es proporcional a la frecuencia de muestreo, dividida por el número de muestras tomadas. En esta implementación del algoritmo, la frecuencia de muestreo es siempre cuatro veces la frecuencia de la blanco, a simplemente y acelerar los cálculos. Sin embargo, el mismo número de muestras se utiliza para cada una de las frecuencias 8 objetivo. El hacer el ancho de la respuesta de la misma para cada uno requeriría utilizando la misma frecuencia de muestreo para cada uno, que implicaría más matemáticas mucho tiempo, o sería necesario que el número de muestras tomadas en las frecuencias más altas sea mayor, que alarga el tiempo de ejecución. Si estaba usando un microprocesador con una verdadera funcionalidad DSP, las matemáticas adicionales podrían ser realizadas muy rápidamente y entonces sería algo que usted probablemente incluiría.
A pesar de las diferencias en el ancho de la respuesta, la operación ha sido muy robusta en la detección de tonos, incluso en presencia de ruido significativo.