INHOUDSOPGAWE:

FIR -filter vir meer betroubare frekwensiedetectie: 5 stappe
FIR -filter vir meer betroubare frekwensiedetectie: 5 stappe

Video: FIR -filter vir meer betroubare frekwensiedetectie: 5 stappe

Video: FIR -filter vir meer betroubare frekwensiedetectie: 5 stappe
Video: Электрика в квартире своими руками. Финал. Переделка хрущевки от А до Я. #11 2024, November
Anonim
FIR -filter vir meer betroubare frekwensie -opsporing
FIR -filter vir meer betroubare frekwensie -opsporing

Ek is regtig 'n groot aanhanger van die instruksies van akellyirl oor betroubare frekwensiedeteksie met behulp van DSP -tegnieke, maar soms is die tegniek wat hy gebruik het nie goed genoeg as u raserige metings het nie.

'N Eenvoudige oplossing om 'n skoner insette vir die frekwensiedetektor te kry, is om 'n soort filter toe te pas om die frekwensie wat u wil opspoor.

Ongelukkig is dit nie maklik om 'n digitale filter te skep nie en is daar baie wiskunde betrokke. Daarom het ek daaraan gedink om 'n soort program te skep om die skep van sulke filters te vereenvoudig, sodat almal dit in hul projekte kan gebruik sonder om in die besonderhede te kyk.

In hierdie instruksies gaan ek 'n sinusgolf van 50Hz opspoor in 'n lawaaierige meting met 'n Arduino Uno (Arduino is nie regtig nodig nie).

Stap 1: Die probleem

Die probleem
Die probleem

Stel jou voor dat die gemete insetdata soos die kromme hierbo lyk - redelik raserig.

As ons 'n eenvoudige frekwensiedetektor bou soos die in akellyirl's Instructable, is die resultaat "-inf" of in die geval van die onderstaande kode: "Ja, te veel geraas …"

Nota: ek het omtrent al die kode van akellyirl gebruik, maar ek het 'n rawData -skikking aan die bokant bygevoeg met die lawaaierige metings.

Hieronder vind u die hele kode in 'n lêer genaamd "unfiltered.ino".

Stap 2: Die oplossing

Die oplossing
Die oplossing

Aangesien die insetdata raserig is, maar ons weet watter frekwensie ons soek, kan ons 'n instrument wat ek geskep het, easyFIR gebruik, om 'n Bandpass -filter te skep en dit op die invoerdata toe te pas, wat 'n baie skoner insette vir die frekwensiedetektor tot gevolg het (prent hierbo).

Stap 3: EasyFIR

EasyFIR
EasyFIR

Die easyFIR -instrument is redelik maklik om te gebruik; laai net die GitHub -bewaarplek af en voer die easyFIR.py -lêer uit met een voorbeeld van u metings (in CSV -formaat).

As u die easyFIR.py -lêer oopmaak, vind u 5 parameters (sien prent hierbo) wat u kan en moet verander, afhangende van die resultaat wat u wil bereik. Nadat u die 5 parameters aangepas het en die python -lêer uitgevoer het, sien u die berekende koëffisiënte in u terminale. Hierdie koëffisiënte is van kardinale belang vir die volgende stap!

Meer inligting oor die presiese gebruik kan hier gevind word:

Stap 4: Filtreer

Filtering
Filtering

As u nou die benodigde filterkoëffisiënte bereken het, is dit redelik maklik om die werklike lêer op die frekwensiedetektor toe te pas.

Soos u in die prent hierbo kan sien, hoef u slegs die koëffisiënte, die ApplyFilter -funksie by te voeg en dan die invoermetings te filter.

Hieronder vind u die hele kode in 'n lêer met die naam "filtered.ino".

Opmerking: baie dankie aan hierdie Stack Overflow Post vir die uitstekende filtertoepassingsalgoritme!

Stap 5: Geniet dit

Geniet dit
Geniet dit

Soos u kan sien, kan ons 'n 50Hz -sein opspoor, selfs in 'n raserige omgewing?

Voel asseblief vry om my idee en kode aan te pas by u behoeftes. Ek sal dit baie dankbaar wees om u verbeterings op te neem!

As u van my werk hou, sal ek dit baie waardeer as u my werk met ster op GitHub ondersteun!

Dankie vir jou ondersteuning!:)

Aanbeveel: