Indholdsfortegnelse:

FIR -filtrering for mere pålidelig frekvensregistrering: 5 trin
FIR -filtrering for mere pålidelig frekvensregistrering: 5 trin

Video: FIR -filtrering for mere pålidelig frekvensregistrering: 5 trin

Video: FIR -filtrering for mere pålidelig frekvensregistrering: 5 trin
Video: 🟡 POCO X5 PRO - САМЫЙ ДЕТАЛЬНЫЙ ОБЗОР и ТЕСТЫ 2024, Juli
Anonim
FIR -filtrering for mere pålidelig frekvensregistrering
FIR -filtrering for mere pålidelig frekvensregistrering

Jeg er en virkelig stor fan af akellyirls instruerbare om pålidelig frekvensregistrering ved hjælp af DSP -teknikker, men nogle gange er den teknik, han brugte, ikke god nok, hvis du har støjende målinger.

En let løsning for at få et renere input til frekvensdetektoren er at anvende en slags filter omkring den frekvens, du vil registrere.

Desværre er det ikke let at oprette et digitalt filter, og der er ret meget matematik involveret. Så jeg tænkte på at oprette en slags program for at forenkle oprettelsen af sådanne filtre, så alle kunne bruge dem i deres projekter uden at grave i detaljerne.

I denne Instructable kommer jeg til at detektere en 50Hz sinusbølge i en støjende måling med en Arduino Uno (Arduino er egentlig ikke nødvendig).

Trin 1: Problemet

Problemet
Problemet

Forestil dig, at de målte inputdata ligner kurven ovenfor - temmelig støjende.

Hvis vi konstruerer en simpel frekvensdetektor som den i akellyirl's Instructable, er resultatet "-inf" eller i tilfælde af nedenstående kode: "Ja, for meget støj …"

Bemærk: Jeg brugte stort set al akellyirls kode, men tilføjede et rawData -array øverst indeholdende de støjende målinger.

Nedenfor kan du finde hele koden i en fil kaldet "unfiltered.ino".

Trin 2: Løsningen

Løsningen
Løsningen

Da inputdataene er støjende, men vi kender den frekvens, vi leder efter, kan vi bruge et værktøj, jeg har oprettet kaldet easyFIR, til at oprette et Bandpass -filter og anvende det på inputdata, hvilket resulterer i et meget renere input til frekvensdetektoren (billedet ovenfor).

Trin 3: EasyFIR

EasyFIR
EasyFIR

EasyFIR -værktøjet er ret let at bruge, bare download GitHub -depotet og kør filen easyFIR.py med en prøve af dine målinger (i CSV -format).

Hvis du åbner filen easyFIR.py, finder du 5 parametre (se billedet ovenfor), du kan og bør ændre afhængigt af det resultat, du gerne vil opnå. Når du har justeret de 5 parametre og udført python -filen, vil du se de beregnede koefficienter i din terminal. Disse koefficienter er afgørende for det næste trin!

Flere oplysninger om den nøjagtige brug findes her:

Trin 4: Filtrering

Filtrering
Filtrering

Hvis du nu har beregnet de nødvendige filterkoefficienter, er det ret let at anvende den faktiske filer på frekvensdetektoren.

Som du kan se på billedet ovenfor, skal du kun tilføje koefficienterne, ApplyFilter -funktionen og derefter filtrere inputmålingerne.

Nedenfor kan du finde hele koden i en fil kaldet "filtered.ino".

Bemærk: stor tak til denne Stack Overflow Post for den store filterapplikationsalgoritme!

Trin 5: Nyd det

god fornøjelse
god fornøjelse

Som du kan se, er vi nu i stand til at registrere et 50Hz signal selv i et støjende miljø?

Du er velkommen til at tilpasse min idé og kode til dine behov. Jeg vil være meget taknemmelig for at inkludere dine forbedringer!

Hvis du kan lide mit arbejde, ville jeg virkelig sætte pris på, hvis du støtter mit arbejde med stjerne på GitHub!

Tak for din støtte!:)

Anbefalede: