Sisukord:

Arduino: sagedusteisendus (DFT): 6 sammu
Arduino: sagedusteisendus (DFT): 6 sammu

Video: Arduino: sagedusteisendus (DFT): 6 sammu

Video: Arduino: sagedusteisendus (DFT): 6 sammu
Video: Уроки Ардуино #0 - что такое Arduino, куда подключаются датчики и как питать Ардуино 2024, Juuli
Anonim
Arduino: sagedusteisendus (DFT)
Arduino: sagedusteisendus (DFT)

see programm on arvutada sagedusmuundamine arduino'l koos taigna kontrolliga parameetrite üle. see lahendatakse rüvetatud neljaiiori teisendusega.

see pole FFT

FFT on algoritm, mida kasutatakse DFT lahendamiseks väiksema ajaga.

FFT koodi leiate siit.

Samm: kuidas see toimib (kontseptsioon):

Kuidas see toimib (kontseptsioon)
Kuidas see toimib (kontseptsioon)
Kuidas see toimib (kontseptsioon)
Kuidas see toimib (kontseptsioon)

Sagedusmuundamise programm annab suurepärase kontrolli vajaliku väljundi üle. see programm hindab kasutaja antud sagedusala andmekogumi sisendi jaoks.

  • Joonisel on andmestik, mis koosneb kahest sagedusest nimega f2 ja f5 ning mida tuleb testida. f2 ja f5 on juhuslikud nimed kahele sagedusele, suurem arv suhteliselt kõrgemale sagedusele. siin on väiksemal sagedusel f2 suurem amplituud ja f5 väiksem amplituud.
  • Matemaatiliselt saab näidata, et kahe erineva sagedusega harmoonilise andmekogumi korrutamise kokkuvõte kaldub nulli (suurem andmete arv võib viia taigna tulemuseni). Meie puhul, kui neil kahel korrutussagedusel on sama (või väga lähedane) sagedus, on korrutuste summa nullist erinev arv, mille amplituud sõltub andmete amplituudist.
  • konkreetse sageduse tuvastamiseks saab antud andmekogumi korrutada erinevate katsesagedustega ja tulemus võib anda selle sageduse komponendi andmetes.

2. toiming: kuidas see toimib (koodis):

Kuidas see toimib (koodis)
Kuidas see toimib (koodis)
Kuidas see toimib (koodis)
Kuidas see toimib (koodis)

antud andmete (f2+f5) korral korrutatakse f1 kuni f6 ükshaaval ja summa väärtus märgitakse üles. see lõppsumma tähistab selle sageduse sisu. ülejäänud (mittevastav) sagedus peaks ideaalis olema null, kuid see pole reaalsel juhul võimalik. summa nullimiseks on vaja lõpmatu suurusega andmekogumeid.

  • Nagu on näidatud joonistel f1 kuni f6, on näidatud katsesagedus ja selle korrutamine andmekogumiga igas punktis.
  • teisel joonisel on joonistatud selle korrutise summeerimine igal sagedusel. tuvastatakse kaks piiki punktides 1 ja 5.

nii et juhuslike andmete puhul sama lähenemisviisi kasutades saame hinnata nii palju sagedusi ja analüüsida andmete sageduse sisu.

Samm: koodi kasutamine sageduse analüüsimiseks:

Sagedusanalüüsi koodi kasutamine
Sagedusanalüüsi koodi kasutamine

näiteks võimaldab seda koodi kasutada ruutlaine DFT leidmiseks.

kleepige kõigepealt lisatud kood (dft -funktsioon) pärast silmust, nagu näidatud pildil

8 TINGIMUST, MIDA ON vaja täpsustada

  1. massiiv, millest dft tuleb võtta
  2. massiivi suurus
  3. ajavahemik massiivi kahe lugemise vahel millisekundites
  4. sagedusvahemiku madalam väärtus Hz
  5. sagedusvahemiku ülemine väärtus Hz
  6. sagedusvahemiku sammude suurus
  7. signaali kordamine (vähemalt 1) suurem taigna täpsus, kuid pikem lahendusaeg
  8. akna funktsioon:

    0 ei ole akent

(kui teil pole akna valimisest aimugi, hoidke vaikimisi 3)

näide: dft (a, 8, 0,5, 0, 30, 0,5, 10, 3); siin on a suurus 8 elemendi massiivi, mida tuleb kontrollida 0 Hz kuni 30 Hz juures 0,5 sammuga (0, 0,5, 1, 1,5,…, 29, 29,5, 30) 10 kordus- ja vasaraaken

siin on võimalik kasutada suuremat massiivi nii palju kui arduino suudab.

4. samm: väljund:

Väljund
Väljund
Väljund
Väljund

kui kommenteerite

Seeriatrükk (f); Seeriatrükk ("\ t");

koodi seeriaplotter annab sagedusspektrile olemuse, kui mitte, jadamonitor annaks sageduse oma amplituudiga.

Samm: erinevate akende ja proovide suuruste kontrollimine:

Erinevate akna- ja näidissuuruste kontrollimine
Erinevate akna- ja näidissuuruste kontrollimine

joonisel mõõdetakse siinuslaine sagedust, kasutades erinevaid seadeid.

Samm 6: Näide:

Näide
Näide

joonisel võrreldakse andmete teisendamist SciLabi ja arduino abil.

Soovitan: