Innehållsförteckning:

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

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

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

detta program är att beräkna frekvensomformning på arduino med smetkontroll över parametrar. det löses med desekrat fouriior -transform.

detta är inte FFT

FFT är en algoritm som används för att lösa DFT med mindre tid.

Kod för FFT finns här.

Steg 1: Hur det fungerar (koncept):

Hur det fungerar (koncept)
Hur det fungerar (koncept)
Hur det fungerar (koncept)
Hur det fungerar (koncept)

Givet program för frekvensomformning ger stor kontroll över utgången du behövde. detta program utvärderar frekvensintervallet som ges av användaren vid given ingång för datamängden.

  • I figur en datauppsättning gjord av två frekvenser med namnet f2 och f5 givet som måste testas. f2 och f5 är slumpmässiga namn för två frekvenser, högre tal för relativt högre frekvens. här har mindre frekvens f2 högre amplitud och f5 har mindre amplitud.
  • Det kan matematiskt visas att -summation av multiplikation av två harmoniska datamängder med olika frekvens tenderar till noll (högre antal data kan leda till smetresultat). I vårt fall Om dessa två multiplikationsfrekvenser har samma (eller mycket nära) frekvens är summan av multiplikation ett icke -nolltal där amplituden beror på dataens amplitud.
  • för att upptäcka specifik frekvens kan given datamängd multipliceras med olika testfrekvenser och resultatet kan ge komponent av den frekvensen i data.

Steg 2: Hur det fungerar (i kod):

Hur det fungerar (i kod)
Hur det fungerar (i kod)
Hur det fungerar (i kod)
Hur det fungerar (i kod)

för den givna data (f2+f5) en efter en f1 till f6 är multiplikationer och värdet av summan noteras. den slutliga summan representerar innehållet i den frekvensen. vilans (icke-matchande) frekvens bör helst vara noll men det är inte möjligt i verkliga fall. för att göra summan noll krävs det att ha oändliga storleken på datamängder.

  • som kan visas i figur f1 till f6 provfrekvens och dess multiplikation med datauppsättning vid varje punkt visas.
  • i andra figuren summeras den multiplikationen vid varje frekvens. två toppar vid 1 och 5 är identifierbara.

så med samma metod för slumpmässiga data kan vi utvärdera för så många frekvenser och analysera frekvensinnehåll för data.

Steg 3: Använda kod för frekvensanalys:

Använda kod för frekvensanalys
Använda kod för frekvensanalys

för ett exempel kan vi använda denna kod för att hitta DFT för fyrkantvåg.

klistra först in bifogad kod (dft -funktion) efter slinga som bilden visar

8 VILLKOR SOM MÅSTE SPECIFICERAS

  1. en uppsättning som dft måste tas
  2. storleken på en matris
  3. tidsintervall mellan 2 avläsningar i array i milliSECONDS
  4. lägre värde för frekvensområdet i Hz
  5. övre värdet på frekvensområdet i Hz
  6. stegstorlek för frekvensområde
  7. upprepning av en signal (minst 1) högre sifferslagsnoggrannhet men ökad lösningstid
  8. fönsterfunktion:

    0 för inget fönster1 för plattfönster 2 för hann fönster 3 för hammarfönster

(om du inte har någon aning om att välja fönster behåll standard 3)

exempel: dft (a, 8, 0,5, 0, 30, 0,5, 10, 3); här är a en array med storlek 8 -element som ska kontrolleras för 0 Hz till 30 Hz med 0,5 steg (0, 0,5, 1, 1,5,…, 29, 29,5, 30) 10 upprepnings- och hammarfönster

här är det möjligt att använda större storlek så mycket som arduino kan hantera.

Steg 4: Utmatning:

Produktion
Produktion
Produktion
Produktion

om du kommenterar

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

från kod seriell plotter kommer att ge typ av frekvensspektrum en om inte Seriell monitor skulle ge frekvens med dess amplitud.

Steg 5: Kontrollera olika fönster- och provstorlekar:

Kontrollera olika fönster- och provstorlekar
Kontrollera olika fönster- och provstorlekar

i figur mäts sinusvågens frekvens med olika inställningar.

Steg 6: Exempel:

Exempel
Exempel

i figuromvandling av data med SciLab och arduino jämförs.

Rekommenderad: