Taula de continguts:

Filtre FIR per a una detecció de freqüència més fiable: 5 passos
Filtre FIR per a una detecció de freqüència més fiable: 5 passos

Vídeo: Filtre FIR per a una detecció de freqüència més fiable: 5 passos

Vídeo: Filtre FIR per a una detecció de freqüència més fiable: 5 passos
Vídeo: Газотурбинный двигатель АИ-8 2024, Desembre
Anonim
Filtre FIR per a una detecció de freqüència més fiable
Filtre FIR per a una detecció de freqüència més fiable

Sóc molt aficionat a les instruccions d’akellyirl sobre la detecció fiable de freqüències mitjançant tècniques DSP, però de vegades la tècnica que va utilitzar no és prou bona si es fan mesures sorolloses.

Una solució fàcil per obtenir una entrada més neta per al detector de freqüència és aplicar algun tipus de filtre al voltant de la freqüència que vulgueu detectar.

Malauradament, crear un filtre digital no és fàcil i hi ha força matemàtiques. Així que vaig pensar en crear algun tipus de programa per simplificar la creació d’aquests filtres, per permetre que qualsevol persona els pogués utilitzar en els seus projectes sense aprofundir en els detalls.

En aquest instructiu, vaig a detectar una ona sinusoïdal de 50Hz en una mesura sorollosa amb un Arduino Uno (Arduino no és realment necessari).

Pas 1: el problema

El problema
El problema

Imagineu-vos que les dades d’entrada mesurades semblen la corba de dalt: força sorolloses.

Si construïm un senzill detector de freqüència com el de Instructible d’akellyirl, el resultat serà "-inf" o en el cas del codi següent: "Sí, massa soroll …"

Nota: He utilitzat pràcticament tot el codi d’akellyirl, però he afegit una matriu rawData a la part superior que conté les mesures sorolloses.

A continuació podeu trobar tot el codi en un fitxer anomenat "unfiltered.ino".

Pas 2: la solució

La solució
La solució

Com que les dades d’entrada són sorolloses, però sabem la freqüència que busquem, podem utilitzar una eina que he creat, anomenada easyFIR, per crear un filtre Bandpass i aplicar-lo a les dades d’entrada, cosa que dóna com a resultat una entrada molt més neta per al detector de freqüència (imatge superior).

Pas 3: EasyFIR

EasyFIR
EasyFIR

L'eina easyFIR és bastant fàcil d'utilitzar, només heu de descarregar el dipòsit GitHub i executar el fitxer easyFIR.py amb una mostra de les vostres mesures (en format CSV).

Si obriu el fitxer easyFIR.py, trobareu 5 paràmetres (vegeu la imatge superior) que podeu canviar i que hauríeu de canviar segons el resultat que vulgueu obtenir. Després de modificar els 5 paràmetres i executar el fitxer python, veureu els coeficients calculats al vostre terminal. Aquests coeficients són crucials per al següent pas.

Podeu trobar més informació sobre l’ús exacte aquí:

Pas 4: filtratge

Filtratge
Filtratge

Ara bé, si heu calculat els coeficients de filtre necessaris, és bastant fàcil aplicar el fitxer real al detector de freqüència.

Com podeu veure a la imatge superior, només cal afegir els coeficients, la funció applyFilter i filtrar les mesures d’entrada.

A continuació podeu trobar tot el codi en un fitxer anomenat "filtered.ino".

Nota: moltíssim gràcies a aquest missatge de desbordament de pila per l’algorisme de l’aplicació de filtres.

Pas 5: gaudiu

Gaudeix
Gaudeix

Com podeu veure, ara podem detectar un senyal de 50Hz fins i tot en un entorn sorollós?

Si us plau, no dubteu a adaptar la meva idea i codi a les vostres necessitats. Estaria molt agraït d’incloure les vostres millores.

Si us agrada el meu treball, agrairíeu molt que em donéssiu el suport amb la meva estrella a GitHub.

Gràcies pel teu recolzament!:)

Recomanat: