Sadržaj:

FIR filtriranje za pouzdanije otkrivanje frekvencije: 5 koraka
FIR filtriranje za pouzdanije otkrivanje frekvencije: 5 koraka

Video: FIR filtriranje za pouzdanije otkrivanje frekvencije: 5 koraka

Video: FIR filtriranje za pouzdanije otkrivanje frekvencije: 5 koraka
Video: Ранчо Скинуокеров - Интервью с Эриком Бардом в 4 сезоне 2024, Srpanj
Anonim
FIR filtriranje za pouzdanije otkrivanje frekvencije
FIR filtriranje za pouzdanije otkrivanje frekvencije

Zaista sam veliki obožavatelj akellyirlovih instrukcija o pouzdanom otkrivanju frekvencije pomoću DSP tehnika, ali ponekad tehnika koju je koristio nije dovoljno dobra ako imate bučna mjerenja.

Jedno jednostavno rješenje za dobivanje čistijeg ulaza za detektor frekvencije je primijeniti neku vrstu filtera oko frekvencije koju želite otkriti.

Nažalost, stvaranje digitalnog filtera nije jednostavno i potrebno je dosta matematike. Pa sam razmišljao o stvaranju neke vrste programa za pojednostavljenje izrade takvih filtera, kako bih omogućio bilo kome da ih koristi u svojim projektima, a da ne kopa po detaljima.

U ovom Instructableu ću otkriti sinusni val od 50Hz u bučnom mjerenju s Arduino Uno (Arduino zapravo nije potreban).

Korak 1: Problem

Problem
Problem

Zamislite da izmjereni ulazni podaci izgledaju poput gornje krivulje - prilično bučni.

Ako konstruiramo jednostavan detektor frekvencije poput onog u akellyirl's Instructable, rezultat je "-inf" ili u slučaju donjeg koda: "Da, previše buke …"

Napomena: Koristio sam gotovo sav akellyirl kod, ali sam dodao rawData niz na vrhu koji sadrži bučne mjere.

Ispod možete pronaći cijeli kôd u datoteci pod nazivom "unfiltered.ino".

Korak 2: Rješenje

Rješenje
Rješenje

Budući da su ulazni podaci bučni, ali znamo frekvenciju koju tražimo, možemo upotrijebiti alat koji sam stvorio pod nazivom easyFIR za stvaranje Bandpass filtra i njegovu primjenu na ulazne podatke, što rezultira mnogo čistijim unosom za detektor frekvencije (gornja slika).

Korak 3: EasyFIR

EasyFIR
EasyFIR

Alat easyFIR prilično je jednostavan za korištenje, samo preuzmite spremište GitHub i pokrenite datoteku easyFIR.py s jednim uzorkom vaših mjerenja (u CSV formatu).

Ako otvorite datoteku easyFIR.py, pronaći ćete 5 parametara (pogledajte gornju sliku) koje možete i trebate promijeniti ovisno o rezultatu koji želite postići. Nakon što ste prilagodili 5 parametara i izvršili python datoteku, vidjet ćete izračunate koeficijente u vašem terminalu. Ti su koeficijenti ključni za sljedeći korak!

Više informacija o točnoj uporabi možete pronaći ovdje:

Korak 4: Filtriranje

Filtriranje
Filtriranje

Sada, ako ste izračunali potrebne koeficijente filtera, prilično je jednostavno primijeniti stvarni file na detektor frekvencije.

Kao što možete vidjeti na gornjoj slici, trebate samo dodati koeficijente, funkciju applyFilter, a zatim filtrirati ulazna mjerenja.

Ispod možete pronaći cijeli kôd u datoteci pod nazivom "filtrirano.ino".

Napomena: veliko hvala ovom Stack Overflow Post -u na izvrsnom algoritmu primjene filtera!

Korak 5: Uživajte

Uživati
Uživati

Kao što vidite, sada smo u mogućnosti detektirati signal od 50Hz čak i u bučnom okruženju?

Slobodno prilagodite moju ideju i kod svojim potrebama. Bio bih vam zahvalan ako uvrstite vaša poboljšanja!

Ako vam se sviđa moj rad, bio bih vam zahvalan ako podržite moj rad sa zvijezdom na GitHubu!

Hvala na podršci!:)

Preporučeni: