Sommario:

Arduino: Trasformazione di frequenza (DFT): 6 passaggi
Arduino: Trasformazione di frequenza (DFT): 6 passaggi

Video: Arduino: Trasformazione di frequenza (DFT): 6 passaggi

Video: Arduino: Trasformazione di frequenza (DFT): 6 passaggi
Video: che cos'è la TRASFORMATA DI FOURIER? 2024, Dicembre
Anonim
Arduino: Trasformazione di frequenza (DFT)
Arduino: Trasformazione di frequenza (DFT)

questo programma serve per calcolare la trasformata di frequenza su arduino con il controllo della pastella sui parametri. Si risolve usando la trasformata di quattro dissacrare.

questo non è FFT

FFT è un algoritmo utilizzato per risolvere DFT con tempi più brevi.

Il codice per FFT può essere trovato quiqui.

Passaggio 1: come funziona (concetto):

Come funziona (concetto)
Come funziona (concetto)
Come funziona (concetto)
Come funziona (concetto)

Il programma dato per la trasformazione di frequenza offre un ottimo controllo sull'output richiesto. questo programma valuta la gamma di frequenza fornita dall'utente in un dato input per il set di dati.

  • In figura un set di dati composto da due frequenze denominate f2 e f5 date che devono essere testate. f2 e f5 sono nomi casuali per due frequenze, un numero più alto per una frequenza relativamente più alta. qui una frequenza minore f2 ha un'ampiezza maggiore e f5 ha un'ampiezza minore.
  • Si può dimostrare matematicamente che la sommatoria della moltiplicazione di due set di dati armonici aventi frequenza diversa tende a zero (un numero maggiore di dati può portare a risultati di pastella). Nel nostro caso Se queste due frequenze di moltiplicazione hanno la stessa (o molto vicina) frequenza, la somma della moltiplicazione è un numero diverso da zero dove l'ampiezza dipende dall'ampiezza dei dati.
  • per rilevare una frequenza specifica, un dato set di dati può essere moltiplicato per varie frequenze di test e il risultato può fornire una componente di quella frequenza nei dati.

Passaggio 2: come funziona (in codice):

Come funziona (in codice)
Come funziona (in codice)
Come funziona (in codice)
Come funziona (in codice)

per quel dato dato (f2+f5) uno per uno da f1 a f6 si moltiplica e si annota il valore della somma. quella somma finale rappresenta il contenuto di quella frequenza. il resto (non corrispondente) della frequenza dovrebbe essere idealmente zero ma non è possibile nel caso reale. per fare la somma zero è necessario avere una dimensione infinita di set di dati.

  • come può essere mostrato in figura f1 a f6 frequenza di prova e viene mostrata la sua moltiplicazione con i dati impostati in ogni punto.
  • nella seconda cifra viene tracciata la somma di tale moltiplicazione a ciascuna frequenza. sono identificabili due picchi a 1 e 5.

quindi, utilizzando lo stesso approccio per dati casuali, possiamo valutare così tante frequenze e analizzare il contenuto della frequenza dei dati.

Passaggio 3: utilizzo del codice per l'analisi della frequenza:

Utilizzo del codice per l'analisi della frequenza
Utilizzo del codice per l'analisi della frequenza

per un esempio, usiamo questo codice per trovare DFT dell'onda quadra.

prima incolla il codice allegato (funzione dft) dopo il ciclo come mostrato nell'immagine

8 TERMINI DA SPECIFICARE

  1. un array di cui dft deve essere preso
  2. dimensione di un array
  3. intervallo di tempo tra 2 letture nell'array in milliSECONDS
  4. valore inferiore della gamma di frequenza in Hz
  5. valore superiore della gamma di frequenza in Hz
  6. dimensione dei passi per la gamma di frequenza
  7. ripetizione di un segnale (minimo 1) numero maggiore di precisione della batteria ma maggiore tempo di soluzione
  8. funzione finestra:

    0 per nessuna finestra1 per finestra flat-top 2 per finestra hann 3 per finestra hamming

(se non hai idea di selezionare la finestra mantieni il valore predefinito 3)

esempio: dft(a, 8, 0,5, 0, 30, 0,5, 10, 3); qui a è un array di elementi di dimensione 8 da controllare da 0 Hz a 30 Hz con passo di 0,5 (0, 0,5, 1, 1,5, …, 29, 29,5, 30) 10 ripetizione e finestra di hamming

qui è possibile utilizzare array di dimensioni maggiori quanto arduino può gestire.

Passaggio 4: uscita:

Produzione
Produzione
Produzione
Produzione

se commenti fuori

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

dal plotter seriale di codice darà la natura dello spettro di frequenza, se non il monitor seriale darebbe la frequenza con la sua ampiezza.

Passaggio 5: verifica delle varie dimensioni di finestre e campioni:

Controllo di varie dimensioni di finestre e campioni
Controllo di varie dimensioni di finestre e campioni

in figura, la frequenza dell'onda sinusoidale viene misurata utilizzando un'impostazione diversa.

Passaggio 6: esempio:

Esempio
Esempio

in figura viene confrontata la trasformazione dei dati utilizzando SciLab e arduino.

Consigliato: