Obsah:

FIR filtrování pro spolehlivější detekci frekvence: 5 kroků
FIR filtrování pro spolehlivější detekci frekvence: 5 kroků

Video: FIR filtrování pro spolehlivější detekci frekvence: 5 kroků

Video: FIR filtrování pro spolehlivější detekci frekvence: 5 kroků
Video: Blok A6 - Multimorbidní senior v péči internisty 2024, Listopad
Anonim
FIR filtrování pro spolehlivější detekci frekvence
FIR filtrování pro spolehlivější detekci frekvence

Jsem opravdu velkým fanouškem instrukcí akellyirl o spolehlivé detekci frekvence pomocí technik DSP, ale někdy technika, kterou použil, není dost dobrá, pokud máte hlučná měření.

Jednou snadnou opravou, jak získat čistší vstup pro detektor frekvence, je použít nějaký filtr kolem frekvence, kterou chcete detekovat.

Vytvoření digitálního filtru bohužel není snadné a je s tím spojená poměrně velká matematika. Přemýšlel jsem tedy o vytvoření nějakého programu, který by zjednodušil vytváření takových filtrů, aby je mohl kdokoli použít ve svých projektech, aniž by hloubal do detailů.

V tomto Instructable se chystám detekovat 50Hz sinusovou vlnu v hlučném měření pomocí Arduino Uno (Arduino ve skutečnosti není nutné).

Krok 1: Problém

Problém
Problém

Představte si, že naměřená vstupní data vypadají jako výše uvedená křivka - docela hlučná.

Pokud sestrojíme jednoduchý frekvenční detektor, jako je ten v Akellyirl's Instructable, výsledkem bude „-inf“nebo v případě níže uvedeného kódu: „Jo, příliš mnoho šumu…“

Poznámka: Použil jsem téměř veškerý kód akellyirl, ale v horní části jsem přidal pole rawData obsahující hlučná měření.

Níže najdete celý kód v souboru s názvem "unfiltered.ino".

Krok 2: Řešení

Řešení
Řešení

Protože jsou vstupní data hlučná, ale známe frekvenci, kterou hledáme, můžeme pomocí nástroje, který jsem vytvořil, nazvaného easyFIR, vytvořit pásmový filtr a použít jej na vstupní data, což má za následek mnohem čistší vstup pro frekvenční detektor (obrázek výše).

Krok 3: EasyFIR

EasyFIR
EasyFIR

Nástroj easyFIR se velmi snadno používá, stačí si stáhnout úložiště GitHub a spustit soubor easyFIR.py s jedním vzorkem vašich měření (ve formátu CSV).

Pokud otevřete soubor easyFIR.py, najdete 5 parametrů (viz obrázek výše), které můžete a měli byste změnit v závislosti na výsledku, kterého byste chtěli dosáhnout. Poté, co vyladíte 5 parametrů a spustíte soubor pythonu, uvidíte vypočítané koeficienty ve vašem terminálu. Tyto koeficienty jsou zásadní pro další krok!

Více informací o přesném použití najdete zde:

Krok 4: Filtrování

Filtrování
Filtrování

Pokud jste nyní vypočítali potřebné koeficienty filtru, je velmi snadné použít skutečný filtr na frekvenční detektor.

Jak vidíte na obrázku výše, stačí pouze přidat koeficienty, funkci applyFilter a poté filtrovat vstupní měření.

Níže najdete celý kód v souboru s názvem „filtrované.ino“.

Poznámka: velké díky tomuto příspěvku přetečení zásobníku za skvělý algoritmus aplikace filtrů!

Krok 5: Užijte si to

Užívat si
Užívat si

Jak vidíte, nyní jsme schopni detekovat signál 50 Hz i v hlučném prostředí?

Neváhejte a přizpůsobte můj nápad a kód vašim potřebám. Byl bych velmi vděčný za zahrnutí vašich vylepšení!

Pokud se vám moje práce líbí, byl bych opravdu rád, kdybyste moji práci s hvězdou na GitHubu podpořili!

Děkuji za vaši podporu!:)

Doporučuje: