Table des matières:

Arduino : Transformée de fréquence (DFT) : 6 étapes
Arduino : Transformée de fréquence (DFT) : 6 étapes

Vidéo: Arduino : Transformée de fréquence (DFT) : 6 étapes

Vidéo: Arduino : Transformée de fréquence (DFT) : 6 étapes
Vidéo: Matlab #14: La Transformée de Fourier d'un Signal - les Fonctions FFT et FFTSHIFT [TUTO] 2024, Juillet
Anonim
Arduino: Transformée de fréquence (DFT)
Arduino: Transformée de fréquence (DFT)

ce programme consiste à calculer la transformation de fréquence sur arduino avec un contrôle de la pâte sur les paramètres.

ce n'est pas FFT

FFT est un algorithme utilisé pour résoudre DFT avec un temps plus court.

Le code pour FFT peut être trouvé ici.

Étape 1: Comment ça marche (concept):

Comment ça marche (concept)
Comment ça marche (concept)
Comment ça marche (concept)
Comment ça marche (concept)

Le programme donné pour la transformation de fréquence offre un excellent contrôle sur la sortie dont vous avez besoin. ce programme évalue la gamme de fréquences donnée par l'utilisateur à une entrée donnée pour l'ensemble de données.

  • Dans la figure un ensemble de données composé de deux fréquences nommées f2 et f5 données qui doivent être testées. f2 et f5 sont des noms aléatoires pour deux fréquences, un nombre plus élevé pour une fréquence relativement plus élevée. ici une fréquence plus petite f2 a une amplitude plus élevée et f5 a une amplitude plus petite.
  • Il peut être démontré mathématiquement que la sommation de la multiplication de deux ensembles de données harmoniques ayant une fréquence différente tend vers zéro (un nombre plus élevé de données peut conduire à un résultat de battement). Dans notre cas, si ces deux fréquences de multiplication ont la même fréquence (ou très proche), cette somme de multiplication est un nombre non nul où l'amplitude dépend de l'amplitude des données.
  • pour détecter une fréquence spécifique, un ensemble de données donné peut être multiplié par diverses fréquences de test et le résultat peut donner une composante de cette fréquence dans les données.

Étape 2: Comment ça marche (dans le code):

Comment ça marche (dans le code)
Comment ça marche (dans le code)
Comment ça marche (dans le code)
Comment ça marche (dans le code)

pour cette donnée donnée (f2+f5) une par une f1 à f6 est multipliée et la valeur de la somme est notée. cette somme finale représente le contenu de cette fréquence. le reste (non correspondant) de la fréquence devrait être idéalement nul mais ce n'est pas possible dans le cas réel. pour que la somme soit nulle, il est nécessaire d'avoir une taille infinie d'ensembles de données.

  • comme le montre la figure f1 à f6, la fréquence d'essai et sa multiplication avec l'ensemble de données à chaque point est montrée.
  • dans la deuxième figure, la somme de cette multiplication à chaque fréquence est tracée. deux pics à 1 et 5 sont identifiables.

ainsi, en utilisant la même approche pour des données aléatoires, nous pouvons évaluer pour autant de fréquences et analyser le contenu fréquentiel des données.

Étape 3: Utilisation du code pour l'analyse de fréquence:

Utilisation du code pour l'analyse de fréquence
Utilisation du code pour l'analyse de fréquence

pour un exemple, utilisons ce code pour trouver DFT d'onde carrée.

Collez d'abord le code attaché (fonction dft) après la boucle, comme indiqué sur l'image

8 TERMES À PRÉCISER

  1. un tableau dont les dft doivent être pris
  2. taille d'un tableau
  3. intervalle de temps entre 2 lectures dans le tableau en millisecondes
  4. valeur inférieure de la plage de fréquence en Hz
  5. valeur supérieure de la plage de fréquence en Hz
  6. taille des pas pour la gamme de fréquences
  7. répétition d'un signal (minimum 1) précision de frappe plus élevée mais temps de solution accru
  8. fonction fenêtre:

    0 pour aucune fenêtre1 pour fenêtre à toit plat 2 pour fenêtre hann 3 pour fenêtre de Hamming

(si vous n'avez aucune idée de la sélection de la fenêtre, gardez la valeur par défaut 3)

exemple: dft(a, 8, 0,5, 0, 30, 0,5, 10, 3); ici a est un tableau d'éléments de taille 8 à vérifier pour 0 Hz à 30 Hz avec un pas de 0,5 (0, 0,5, 1, 1,5, …, 29, 29,5, 30) 10 répétition et fenêtre de Hamming

ici, il est possible d'utiliser un tableau de plus grande taille autant que l'arduino peut le gérer.

Étape 4: Sortie:

Sortir
Sortir
Sortir
Sortir

si tu commentes

Serial.print(f);Serial.print("\t");

à partir du code, le traceur série donnera la nature du spectre de fréquence, sinon le moniteur série donnera la fréquence avec son amplitude.

Étape 5: Vérification de différentes tailles de fenêtre et d'échantillon:

Vérification de différentes tailles de fenêtres et d'échantillons
Vérification de différentes tailles de fenêtres et d'échantillons

dans la figure, la fréquence de l'onde sinusoïdale est mesurée en utilisant un réglage différent.

Étape 6: Exemple:

Exemple
Exemple

dans la figure, la transformation des données à l'aide de SciLab et d'arduino est comparée.

Conseillé: