Innholdsfortegnelse:

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

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

Video: Arduino: Frequency Transform (DFT): 6 trinn
Video: The Discrete Fourier Transform: Most Important Algorithm Ever? 2024, Juli
Anonim
Arduino: Frequency Transform (DFT)
Arduino: Frequency Transform (DFT)

dette programmet er å beregne frekvens transform på arduino med batter kontroll over parametere. det løses ved hjelp av desecrate fouriior transform.

dette er ikke FFT

FFT er en algoritme som brukes til å løse DFT med mindre tid.

Koden for FFT finner du her.

Trinn 1: Slik fungerer det (konsept):

Slik fungerer det (konsept)
Slik fungerer det (konsept)
Slik fungerer det (konsept)
Slik fungerer det (konsept)

Gitt program for frekvensomforming gir god kontroll over utgangen du trenger. dette programmet evaluerer frekvensområdet gitt av brukeren ved gitt inngang for datasett.

  • I figur et datasett laget av to frekvenser som heter f2 og f5 gitt som må testes. f2 og f5 er tilfeldige navn for to frekvenser, høyere tall for relativt høyere frekvens. her har mindre frekvens f2 høyere amplitude og f5 har mindre amplitude.
  • Det kan vises matematisk at -summasjon av multiplikasjon av to harmoniske datasett med forskjellig frekvens har en tendens til null (høyere antall data kan føre til batterresultat). I vårt tilfelle Hvis disse to multiplikasjonsfrekvensene har samme (eller veldig nære) frekvens, er summen av multiplikasjon et nullnummer der amplituden avhenger av datamplituden.
  • for å oppdage spesifikk frekvens gitt datasett kan multipliseres med forskjellige testfrekvenser, og resultatet kan gi komponent av den frekvensen i data.

Trinn 2: Slik fungerer det (i kode):

Slik fungerer det (i kode)
Slik fungerer det (i kode)
Slik fungerer det (i kode)
Slik fungerer det (i kode)

for de gitte dataene (f2+f5) er f1 til f6 én etter én multiplisert og summenes verdi noteres. den siste summen representerer innholdet i den frekvensen. resten (ikke-matchende) frekvens bør ideelt sett være null, men det er ikke mulig i virkelige tilfeller. for å gjøre summen null er det nødvendig å ha uendelig størrelse på datasett.

  • som kan vises i figur f1 til f6 prøvefrekvens og dens multiplikasjon med datasett på hvert punkt vises.
  • i andre figur er summen av den multiplikasjonen ved hver frekvens plottet. to topper på 1 og 5 er identifiserbare.

så ved å bruke samme tilnærming for tilfeldige data kan vi evaluere for så mange frekvenser og analysere frekvensinnhold i data.

Trinn 3: Bruke kode for frekvensanalyse:

Bruke kode for frekvensanalyse
Bruke kode for frekvensanalyse

for et eksempel kan du bruke denne koden til å finne DFT for firkantbølge.

lim først vedlagte kode (dft -funksjon) etter sløyfe som vist bilde

8 VILKÅR SOM MÅ SPESIFISERES

  1. en rekke som dft må tas
  2. størrelsen på en matrise
  3. tidsintervall mellom 2 avlesninger i array i milliSECONDS
  4. lavere verdi av frekvensområde i Hz
  5. øvre verdi av frekvensområdet i Hz
  6. trinnstørrelse for frekvensområde
  7. gjentagelse av et signal (minimum 1) høyere nøyaktighet på antall batterier, men økt løsningstid
  8. vindusfunksjon:

    0 for ikke vindu1 for flatvindu 2 for hann vindu 3 for hamring av vindu

(hvis du ikke har noen ide om valg av vindu, behold standard 3)

eksempel: dft (a, 8, 0,5, 0, 30, 0,5, 10, 3); her er a en matrise med størrelse 8 -element som skal kontrolleres for 0 Hz til 30 Hz med 0,5 trinn (0, 0,5, 1, 1,5,…, 29, 29,5, 30) 10 gjentagelses- og hamringvindu

her er det mulig å bruke større matrise så mye som arduino kan håndtere.

Trinn 4: Utgang:

Produksjon
Produksjon
Produksjon
Produksjon

hvis du kommenterer

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

fra kode seriell plotter vil gi karakteren av frekvensspekteret en hvis ikke Seriell monitor ville gi frekvens med sin amplitude.

Trinn 5: Kontroll av forskjellige vindus- og prøvestørrelser:

Kontroll av forskjellige vindus- og prøvestørrelser
Kontroll av forskjellige vindus- og prøvestørrelser

i figur måles sinusbølgens frekvens ved hjelp av forskjellige innstillinger.

Trinn 6: Eksempel:

Eksempel
Eksempel

i figurtransformasjon av data ved hjelp av SciLab og arduino sammenlignes.

Anbefalt: