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, Juli
Anonim
FIR filtriranje za pouzdanije otkrivanje frekvencije
FIR filtriranje za pouzdanije otkrivanje frekvencije

Zaista sam veliki ljubitelj akellyirl -ovih 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 čistiji unos 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 koji bi pojednostavio izradu takvih filtera, kako bi omogućio bilo kome da ih koristi u svojim projektima bez uranjanja u detalje.

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 koda ispod: "Da, previše buke …"

Napomena: Koristio sam uglavnom 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

Rjesenje
Rjesenje

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 (slika iznad).

Korak 3: EasyFIR

EasyFIR
EasyFIR

EasyFIR alat je prilično jednostavan za korištenje, samo preuzmite GitHub spremište 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. Ovi koeficijenti su ključni za sljedeći korak!

Više informacija o tačnoj upotrebi 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, primijeniti funkciju Filter, 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 odličnom algoritmu aplikacije filtera!

Korak 5: Uživajte

Uživajte
Uživajte

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

Slobodno prilagodite moju ideju i kod svojim potrebama. Bio bih vam zahvalan ako uključite 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čuje se: