Kazalo:

FIR filtriranje za zanesljivejše zaznavanje frekvence: 5 korakov
FIR filtriranje za zanesljivejše zaznavanje frekvence: 5 korakov

Video: FIR filtriranje za zanesljivejše zaznavanje frekvence: 5 korakov

Video: FIR filtriranje za zanesljivejše zaznavanje frekvence: 5 korakov
Video: Высокая плотность 2022 2024, Julij
Anonim
FIR filtriranje za bolj zanesljivo zaznavanje frekvence
FIR filtriranje za bolj zanesljivo zaznavanje frekvence

Sem res velik oboževalec akellyirlovih navodil o zanesljivem zaznavanju frekvence z uporabo tehnik DSP, vendar včasih tehnika, ki jo je uporabil, ni dovolj dobra, če imate hrupne meritve.

Enostavna rešitev za čistejši vnos za detektor frekvenc je uporaba neke vrste filtra okoli frekvence, ki jo želite zaznati.

Na žalost ustvarjanje digitalnega filtra ni enostavno in za to je vključenih precej matematike. Zato sem razmišljal o tem, da bi ustvaril nekakšen program, ki bi poenostavil izdelavo takšnih filtrov, da bi vsem omogočil uporabo v svojih projektih, ne da bi se poglobil v podrobnosti.

V tem navodilu bom v hrupnem merjenju z Arduino Uno odkril 50 Hz sinusni val (Arduino v resnici ni potreben).

1. korak: Problem

Težava
Težava

Predstavljajte si, da so izmerjeni vhodni podatki podobni zgornji krivulji - precej hrupni.

Če sestavimo preprost frekvenčni detektor, kot je tisti v akellyirl's Instructable, je rezultat "-inf" ali v primeru spodnje kode: "Ja, preveč hrupa …"

Opomba: Uporabil sem skoraj vso kodo akellyirl, vendar sem na vrh dodal niz rawData, ki vsebuje hrupne meritve.

Spodaj najdete celotno kodo v datoteki z imenom "unfiltered.ino".

2. korak: Rešitev

Rešitev
Rešitev

Ker so vhodni podatki hrupni, vendar poznamo frekvenco, ki jo iščemo, lahko z orodjem, ki sem ga ustvaril, imenovanim easyFIR, ustvarimo pasovni filter in ga uporabimo za vhodne podatke, kar ima za posledico veliko čistejši vnos za detektor frekvence (zgornja slika).

3. korak: EasyFIR

EasyFIR
EasyFIR

Orodje easyFIR je precej preprosto za uporabo, samo prenesite skladišče GitHub in zaženite datoteko easyFIR.py z enim vzorcem vaših meritev (v formatu CSV).

Če odprete datoteko easyFIR.py, boste našli 5 parametrov (glejte sliko zgoraj), ki jih lahko in bi morali spremeniti glede na rezultat, ki ga želite doseči. Ko ste prilagodili 5 parametrov in izvedli datoteko python, boste v svojem terminalu videli izračunane koeficiente. Ti koeficienti so ključni za naslednji korak!

Več informacij o natančni uporabi najdete tukaj:

4. korak: Filtriranje

Filtriranje
Filtriranje

Zdaj, če ste izračunali potrebne koeficiente filtra, je zelo preprosto uporabiti dejansko polnilo na detektorju frekvence.

Kot lahko vidite na zgornji sliki, morate dodati samo koeficiente, funkcijo applyFilter in nato filtrirati vhodne meritve.

Spodaj najdete celotno kodo v datoteki z imenom "filtrirano.ino".

Opomba: velika hvala temu Stack Overflow Post za odličen algoritem uporabe filtra!

5. korak: Uživajte

Uživajte
Uživajte

Kot lahko vidite, zdaj lahko zaznamo 50Hz signal tudi v hrupnem okolju?

Prosim, da mojo idejo in kodo prilagodite svojim potrebam. Zelo bi bil hvaležen, če vključim vaše izboljšave!

Če vam je moje delo všeč, bi bil zelo hvaležen, če moje delo podprete z zvezdico na GitHubu!

Hvala za tvojo podporo!:)

Priporočena: