Étape 7: Facultatif : détails de l’algorithme
L’algorithme agit comme un filtre passe bande très étroite. Il produit une réponse très forte aux fréquences de la bande passante et une réponse beaucoup plus faible pour les fréquences à l’extérieur de la bande passante. Les moindres détails de l’algorithme de Goertzel ne sera pas être mentionnées ici.
La boucle de l’algorithme échantillonne l’entrée à l’aide du microprocesseur construit au convertisseur A/N. Les opérations mathématiques nécessaires sont effectuées dans le temps entre les échantillons successifs.
Les différentes variables utilisés dans l’algorithme sont définis comme suit :
Xn_sample = le dernier échantillon du convertisseur A/D
XN = le dernier échantillon du convertisseur A/D multiplié par la fonction de fenêtre.
Y0 = la valeur de sortie actuellement étant calculée.
Y1 = la valeur précédemment calculée. (La valeur de sortie de l’itération précédente de la boucle).
Y2 = la valeur de sortie de l’itération l’itération avant l’itération précédente l de la boucle.
La figure ci-dessous montre une liste des variables utilisées dans l’algorithme.
Consultez l’organigramme dans le PDF ci-joint pour voir comment la partie d’algorithme de Goertzel du programme s’exécute sur le processeur. Une fois que l’algorithme a processus de tous les échantillons (fichiers joints *.hex et *.asm utilisent 200 échantillons), les composants réels et imaginaires des résultats sont calculés. Les parties réelles et imaginaires sont ensuite utilisés pour calculer la magnitude. La magnitude est qu'une mesure de la fréquence de la cible est présente dans les données échantillonnées. L’ampleur est ensuite comparé au seuil. Si la valeur est supérieure à la valeur seuil, la fréquence est considérée pour être détectée, et la sortie a la valeur haute. Si la grandeur est inférieure au seuil, la sortie a la valeur LOW.
La netteté de la réponse du filtre par rapport à la fréquence est proportionnelle au nombre d’échantillons prélevés. La réponse de l’algorithme doit être assez forte pour qu’il répond à la fréquence de la cible, mais produit beaucoup réponse plus faible pour les fréquences à l’extérieur de la cible. Une valeur de 200 échantillons a été trouvée pour produire une réponse raisonnablement étroite de l’expérimentation.
Fonction fenêtrée
Après que chaque échantillon est obtenu à partir du convertisseur A/D, il est tout d’abord multiplié par une valeur de fenêtre avant d’être utilisée dans les calculs ultérieurs. Voir les photos ci-dessous montrant la réponse en fréquence de l’algorithme pour voir les effets de la fenêtre. L’ampleur de la réaction est plus faible et la largeur de la réponse est plus large lorsque la fenêtre est utilisée, mais les ondulations sont presque éliminées, facilitant la détermination de la question de savoir si la fréquence cible est présente.
Il existe de nombreux types de fenêtres qui peuvent être appliqués au traitement numérique du signal. Celle-ci s’appelle une fenêtre de Hamming. La forme de la fenêtre de hamming est montrée dans l’image ci-dessous. Le graphique ci-dessous indique la valeur de la fonction de fenêtre qui est utilisée pour chacun des échantillons de la sous-routine.