Obsah:

FIR filtrovanie pre spoľahlivejšiu detekciu frekvencie: 5 krokov
FIR filtrovanie pre spoľahlivejšiu detekciu frekvencie: 5 krokov

Video: FIR filtrovanie pre spoľahlivejšiu detekciu frekvencie: 5 krokov

Video: FIR filtrovanie pre spoľahlivejšiu detekciu frekvencie: 5 krokov
Video: 10 Best Wireless Earbuds on Amazon ( UNDER $100 ) 2024, Júl
Anonim
FIR filtrovanie pre spoľahlivejšiu detekciu frekvencie
FIR filtrovanie pre spoľahlivejšiu detekciu frekvencie

Som naozaj veľkým fanúšikom pokynov akellyirl o spoľahlivej detekcii frekvencie pomocou techník DSP, ale niekedy technika, ktorú použil, nie je dosť dobrá, ak máte hlučné merania.

Jednou jednoduchou opravou, ako získať čistejší vstup pre detektor frekvencie, je použiť nejaký druh filtra okolo frekvencie, ktorú chcete detekovať.

Vytvorenie digitálneho filtra bohužiaľ nie je jednoduché a je s ním aj veľa matematiky. Preto som premýšľal o vytvorení nejakého programu na zjednodušenie vytvárania takýchto filtrov, ktorý by komukoľvek umožnil používať ich vo svojich projektoch bez toho, aby sa hrabal v detailoch.

V tomto návode sa chystám detekovať 50 Hz sínusovú vlnu pri hlučnom meraní pomocou Arduino Uno (Arduino nie je skutočne potrebné).

Krok 1: Problém

Problém
Problém

Predstavte si, že namerané vstupné údaje vyzerajú ako na krivke vyššie - dosť hlučné.

Ak zostrojíme jednoduchý frekvenčný detektor, ako je ten v Akellyirl's Instructable, výsledkom bude „-inf“alebo v prípade nižšie uvedeného kódu: „Áno, príliš veľa hluku …“

Poznámka: Použil som skoro celý kód akellyirl, ale navrch som pridal pole rawData obsahujúce hlučné merania.

Nižšie nájdete celý kód v súbore s názvom „unfiltered.ino“.

Krok 2: Riešenie

Riešenie
Riešenie

Pretože sú vstupné údaje hlučné, ale poznáme frekvenciu, ktorú hľadáme, môžeme pomocou nástroja, ktorý som vytvoril, nazvaného easyFIR, vytvoriť pásmový filter a použiť ho na vstupné údaje, čo má za následok oveľa čistejší vstup pre frekvenčný detektor (obrázok vyššie).

Krok 3: EasyFIR

EasyFIR
EasyFIR

Nástroj easyFIR sa používa veľmi jednoducho, stačí si stiahnuť úložisko GitHub a spustiť súbor easyFIR.py s jednou ukážkou vašich meraní (vo formáte CSV).

Ak otvoríte súbor easyFIR.py, nájdete 5 parametrov (pozri obrázok vyššie), ktoré môžete a mali by ste sa meniť v závislosti od výsledku, ktorý by ste chceli dosiahnuť. Po vyladení 5 parametrov a spustení súboru python sa vo vašom termináli zobrazia vypočítané koeficienty. Tieto koeficienty sú rozhodujúce pre ďalší krok!

Viac informácií o presnom použití nájdete tu:

Krok 4: Filtrovanie

Filtrovanie
Filtrovanie

Teraz, keď ste vypočítali potrebné koeficienty filtra, je veľmi ľahké použiť skutočný detektor na detektor frekvencie.

Ako vidíte na obrázku vyššie, stačí sčítať koeficienty, funkciu applyFilter a potom filtrovať vstupné merania.

Nižšie nájdete celý kód v súbore s názvom „filtrované.ino“.

Poznámka: veľká vďaka tomuto príspevku o pretečení zásobníka za skvelý algoritmus aplikácie filtrov!

Krok 5: Užite si to

Užite si to
Užite si to

Ako vidíte, teraz sme schopní detekovať 50 Hz signál aj v hlučnom prostredí?

Neváhajte a prispôsobte môj nápad a kód svojim potrebám. Bol by som veľmi vďačný, keby som zahrnul vaše vylepšenia!

Ak sa vám páči moja práca, veľmi by som ocenil, keby ste podporili moju prácu s hviezdou na GitHub!

Ďakujem za tvoju podporu!:)

Odporúča: