Indholdsfortegnelse:

Arduino: Frequency Transform (DFT): 6 trin
Arduino: Frequency Transform (DFT): 6 trin

Video: Arduino: Frequency Transform (DFT): 6 trin

Video: Arduino: Frequency Transform (DFT): 6 trin
Video: Arduino Spectrum Analyizer 2024, November
Anonim
Arduino: Frequency Transform (DFT)
Arduino: Frequency Transform (DFT)

dette program er til at beregne frekvensomdannelse på arduino med batterkontrol over parametre. det løses ved hjælp af desecrate fouriior transform.

dette er ikke FFT

FFT er en algoritme, der bruges til at løse DFT med mindre tid.

Kode til FFT findes her.

Trin 1: Sådan fungerer det (koncept):

Sådan fungerer det (koncept)
Sådan fungerer det (koncept)
Sådan fungerer det (koncept)
Sådan fungerer det (koncept)

Givet program til frekvensomformning giver stor kontrol over output, du har brug for. dette program evaluerer frekvensområde givet af bruger ved givet input til datasæt.

  • I figur et datasæt bestående af to frekvenser navngivet f2 og f5 givet, som skal testes. f2 og f5 er tilfældige navne for to frekvenser, højere tal for relativt højere frekvens. her har mindre frekvens f2 højere amplitude og f5 har mindre amplitude.
  • Det kan matematisk vises, at -summation af multiplikation af to harmoniske datasæt med forskellige frekvenser har tendens til nul (højere antal data kan føre til batterresultat). I vores tilfælde Hvis disse to multiplikationsfrekvenser har samme (eller meget tæt) frekvens, er multiplikationssummen et nul -nummer, hvor amplituden afhænger af datamængden.
  • til at detektere specifik frekvens givet datasæt kan multipliceres med forskellige testfrekvenser, og resultatet kan give komponent af denne frekvens i data.

Trin 2: Sådan fungerer det (i kode):

Sådan fungerer det (i kode)
Sådan fungerer det (i kode)
Sådan fungerer det (i kode)
Sådan fungerer det (i kode)

for de givne data (f2+f5) en efter en f1 til f6 er multiplikationer og sumværdien noteres. den endelige sum repræsenterer indholdet af denne frekvens. resten (ikke-matchende) frekvens bør ideelt set være nul, men det er ikke muligt i virkelige tilfælde. for at gøre summen nul er det påkrævet at have uendelig størrelse af datasæt.

  • som det kan vises i figur f1 til f6 prøvefrekvens og dens multiplikation med datasæt på hvert punkt vises.
  • i anden figur summeres denne multiplikation ved hver frekvens. to toppe ved 1 og 5 kan identificeres.

så ved hjælp af samme tilgang til tilfældige data kan vi evaluere for så mange frekvenser og analysere frekvensindhold i data.

Trin 3: Brug af kode til frekvensanalyse:

Brug af kode til frekvensanalyse
Brug af kode til frekvensanalyse

for et eksempel kan vi bruge denne kode til at finde DFT for firkantbølge.

indsæt først vedhæftede kode (dft -funktion) efter sløjfe som vist billede

8 BETINGELSER, DER SKAL SPECIFICERES

  1. en matrix, som dft skal tages
  2. størrelse på en matrix
  3. tidsinterval mellem 2 læsning i array i milliSECONDS
  4. lavere værdi af frekvensområde i Hz
  5. øvre værdi af frekvensområde i Hz
  6. trinstørrelse for frekvensområde
  7. gentagelse af et signal (minimum 1) højere nummer batternøjagtighed, men øget løsningstid
  8. vinduesfunktion:

    0 for intet vindue1 for fladvindue 2 for hann vindue 3 til hammer vindue

(hvis du ikke har nogen idé om at vælge vindue, skal du beholde standard 3)

eksempel: dft (a, 8, 0,5, 0, 30, 0,5, 10, 3); her a er en matrix af størrelse 8 -element, der skal kontrolleres for 0 Hz til 30 Hz med 0,5 trin (0, 0,5, 1, 1,5,…, 29, 29,5, 30) 10 gentagelses- og hamningvindue

her er det muligt at bruge større størrelse så meget som arduino kan klare.

Trin 4: Output:

Produktion
Produktion
Produktion
Produktion

hvis du kommenterer

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

fra kode seriel plotter vil give karakter af frekvensspektrum en hvis ikke Seriel monitor ville give frekvens med sin amplitude.

Trin 5: Kontrol af forskellige vindues- og prøvestørrelser:

Kontrol af forskellige vindues- og prøvestørrelser
Kontrol af forskellige vindues- og prøvestørrelser

i figur måles sinusbølgens frekvens ved hjælp af forskellige indstillinger.

Trin 6: Eksempel:

Eksempel
Eksempel

i figur transformering af data ved hjælp af SciLab og arduino sammenlignes.

Anbefalede: