Obsah:

Arduino: Frekvenční transformace (DFT): 6 kroků
Arduino: Frekvenční transformace (DFT): 6 kroků

Video: Arduino: Frekvenční transformace (DFT): 6 kroků

Video: Arduino: Frekvenční transformace (DFT): 6 kroků
Video: Why do we use the Fourier Transform? 2024, Červenec
Anonim
Arduino: Frekvenční transformace (DFT)
Arduino: Frekvenční transformace (DFT)

tento program má vypočítat frekvenční transformaci na arduinu s řízením parametrů nad těstíčkem. Je to vyřešeno pomocí desecrate fouriior transformace.

toto není FFT

FFT je algoritmus používaný k řešení DFT s menším časem.

Kód pro FFT naleznete zde.

Krok 1: Jak to funguje (koncept):

Jak to funguje (koncept)
Jak to funguje (koncept)
Jak to funguje (koncept)
Jak to funguje (koncept)

Daný program pro frekvenční transformaci poskytuje skvělou kontrolu nad požadovaným výstupem. tento program vyhodnocuje frekvenční rozsah daný uživatelem na daném vstupu pro sadu dat.

  • Na obrázku je soubor dat vytvořený ze dvou frekvencí pojmenovaných f2 a f5, které je třeba otestovat. f2 a f5 jsou náhodná jména pro dvě frekvence, vyšší číslo pro relativně vyšší frekvenci. zde menší frekvence f2 má vyšší amplitudu a f5 má menší amplitudu.
  • Matematicky lze ukázat, že -součet násobení dvou harmonických datových sad s různou frekvencí má tendenci k nule (vyšší počet dat může vést k výsledku těsta). V našem případě Pokud tyto dvě multiplikační frekvence mají stejnou (nebo velmi blízkou) frekvenci, pak je součet násobení nenulové číslo, kde amplituda závisí na amplitudě dat.
  • pro detekci konkrétní frekvence může být daný soubor dat vynásoben různými testovacími frekvencemi a výsledek může dát komponentu této frekvence v datech.

Krok 2: Jak to funguje (v kódu):

Jak to funguje (v kódu)
Jak to funguje (v kódu)
Jak to funguje (v kódu)
Jak to funguje (v kódu)

pro ta daná data (f2+f5) jeden po druhém se f1 až f6 násobí a hodnota součtu se zaznamenává. tento konečný součet představuje obsah této frekvence. zbytek (neodpovídající) frekvence by měl být ideálně nulový, ale v reálném případě to není možné. Aby byl součet nula, je nutné mít nekonečnou velikost datových sad.

  • jak může být ukázáno na obrázku f1 až f6 zkušební frekvence a je ukázáno její vynásobení datovou sadou v každém bodě.
  • na druhém obrázku je vynesena součet tohoto násobení pro každou frekvenci. dva píky na 1 a 5 jsou identifikovatelné.

takže pomocí stejného přístupu pro náhodná data můžeme vyhodnotit tolik frekvencí a analyzovat frekvenční obsah dat.

Krok 3: Použití kódu pro frekvenční analýzu:

Použití kódu pro analýzu frekvence
Použití kódu pro analýzu frekvence

například umožňuje použít tento kód k nalezení DFT čtvercové vlny.

nejprve vložte připojený kód (funkce dft) za smyčku, jak je znázorněno na obrázku

8 PODMÍNEK, KTERÉ POTŘEBUJÍ BÝT SPECIFICKÉ

  1. pole, z nichž je třeba vzít dft
  2. velikost pole
  3. časový interval mezi 2 odečty v poli v miliSECONDS
  4. nižší hodnota frekvenčního rozsahu v Hz
  5. horní hodnota frekvenčního rozsahu v Hz
  6. velikost kroků pro frekvenční rozsah
  7. opakování signálu (minimálně 1) vyšší přesnost čísla těsta, ale delší doba řešení
  8. funkce okna:

    0 pro žádné okno1 pro ploché horní okno 2 pro Hannovo okno 3 pro zatloukání okna

(pokud nemáte představu o výběru okna, ponechte výchozí 3)

příklad: dft (a, 8, 0,5, 0, 30, 0,5, 10, 3); zde a je pole prvku velikosti 8, které má být zkontrolováno na 0 Hz až 30 Hz s 0,5 krokem (0, 0,5, 1, 1,5,…, 29, 29,5, 30) 10 opakování a hamming okno

zde je možné použít pole větší velikosti, jaké arduino zvládne.

Krok 4: Výstup:

Výstup
Výstup
Výstup
Výstup

pokud se vyjádříte

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

z kódového sériového plotru dá povahu frekvenčního spektra, a pokud ne, sériový monitor by udával frekvenci s její amplitudou.

Krok 5: Kontrola různých velikostí oken a vzorků:

Kontrola různých velikostí oken a vzorků
Kontrola různých velikostí oken a vzorků

na obrázku je frekvence sinusové vlny měřena pomocí jiného nastavení.

Krok 6: Příklad:

Příklad
Příklad

na obrázku je porovnána transformace dat pomocí SciLab a arduino.

Doporučuje: