Tartalomjegyzék:

FIR szűrés a megbízhatóbb frekvenciaérzékelés érdekében: 5 lépés
FIR szűrés a megbízhatóbb frekvenciaérzékelés érdekében: 5 lépés

Videó: FIR szűrés a megbízhatóbb frekvenciaérzékelés érdekében: 5 lépés

Videó: FIR szűrés a megbízhatóbb frekvenciaérzékelés érdekében: 5 lépés
Videó: Bevezetés a Tudatosságba 5 Általános tanítás és kérdések! 2024, Július
Anonim
FIR szűrés a megbízhatóbb frekvenciaérzékelés érdekében
FIR szűrés a megbízhatóbb frekvenciaérzékelés érdekében

Igazán nagy rajongója vagyok az akellyirl utasításainak a megbízható frekvenciaérzékelésről a DSP technikák használatával, de néha az általa alkalmazott technika nem elég jó, ha zajos méréseket végez.

Az egyik egyszerű megoldás a frekvenciaérzékelő tisztább bemenetének megszerzésére, ha valamilyen szűrőt alkalmaz az érzékelni kívánt frekvencia körül.

Sajnos a digitális szűrő létrehozása nem könnyű, és meglehetősen sok matematika van benne. Ezért arra gondoltam, hogy létrehozok valamilyen programot, amely egyszerűsíti az ilyen szűrők létrehozását, hogy bárki használhassa őket a projektjeiben anélkül, hogy belemélyedne a részletekbe.

Ebben az utasításban 50 Hz -es szinuszhullámot fogok érzékelni zajos méréseknél Arduino Uno -val (az Arduino nem igazán szükséges).

1. lépés: A probléma

A probléma
A probléma

Képzelje el, hogy a mért bemeneti adatok úgy néznek ki, mint a fenti görbe - elég zajos.

Ha olyan egyszerű frekvenciaérzékelőt építünk, mint az akellyirl Instructable-ben, az eredmény "-inf", vagy az alábbi kód esetében: "Igen, túl sok zaj …"

Megjegyzés: Nagyjából az akellyirl összes kódját használtam, de hozzáadtam egy rawData tömböt a tetején, amely tartalmazza a zajos méréseket.

Az alábbiakban megtalálja a teljes kódot egy "unfiltered.ino" nevű fájlban.

2. lépés: A megoldás

A megoldás
A megoldás

Mivel a bemeneti adatok zajosak, de ismerjük a keresett frekvenciát, az általam létrehozott easyFIR nevű eszközzel létrehozhatunk egy Bandpass szűrőt, és alkalmazhatjuk a bemeneti adatokra, ami sokkal tisztább bemenetet eredményez a frekvenciaérzékelő számára (kép fent).

3. lépés: EasyFIR

EasyFIR
EasyFIR

Az easyFIR eszköz használata nagyon egyszerű, csak töltse le a GitHub adattárat, és futtassa le az easyFIR.py fájlt egy mérési mintával (CSV formátumban).

Ha megnyitja az easyFIR.py fájlt, 5 paramétert talál (lásd a fenti képet), amelyeket meg kell változtatnia és meg kell változtatnia az elérni kívánt eredménytől függően. Miután beállította az 5 paramétert és végrehajtotta a python fájlt, látni fogja a számított együtthatókat a terminálon. Ezek az együtthatók kulcsfontosságúak a következő lépéshez!

További információ a pontos használatról itt található:

4. lépés: Szűrés

Szűrő
Szűrő

Most, ha kiszámította a szükséges szűrési együtthatókat, nagyon könnyű a tényleges szűrőt alkalmazni a frekvenciaérzékelőre.

Amint a fenti képen látható, csak hozzá kell adnia az együtthatókat, az applyFilter függvényt, majd szűrnie kell a bemeneti méréseket.

Az alábbiakban megtalálja a teljes kódot a "filtered.ino" nevű fájlban.

Megjegyzés: nagy köszönet ennek a Stack Overflow Postnak a nagyszerű szűrőalkalmazási algoritmusért!

5. lépés: Élvezze

Élvezd
Élvezd

Amint látja, most képesek vagyunk 50 Hz -es jelet érzékelni még zajos környezetben is?

Kérem, bátran igazítsa ötletemet és kódomat az Ön igényeihez. Nagyon hálás lennék, ha belefoglalná a fejlesztéseit!

Ha tetszik a munkám, nagyon megköszönném, ha támogatnád a GitHubon végzett munkámat!

Köszönet a támogatásodért!:)

Ajánlott: