Satura rādītājs:

FIR filtrēšana drošākai frekvences noteikšanai: 5 soļi
FIR filtrēšana drošākai frekvences noteikšanai: 5 soļi

Video: FIR filtrēšana drošākai frekvences noteikšanai: 5 soļi

Video: FIR filtrēšana drošākai frekvences noteikšanai: 5 soļi
Video: ПОЧЕМУ ВСЕ ИХ ЛЮБЯТ??? обзор и сравнение RETEKESS TR106 и RETEKESS TR103 2024, Jūlijs
Anonim
FIR filtrēšana drošākai frekvenču noteikšanai
FIR filtrēšana drošākai frekvenču noteikšanai

Es esmu ļoti liels akellyirl pamācāmo fanu par uzticamu frekvenču noteikšanu, izmantojot DSP metodes, bet dažreiz viņa izmantotā tehnika nav pietiekami laba, ja jums ir trokšņaini mērījumi.

Viens vienkāršs risinājums, lai iegūtu tīrāku ievadi frekvences detektoram, ir noteikt filtru ap frekvenci, kuru vēlaties noteikt.

Diemžēl digitālā filtra izveide nav vienkārša, un tajā ir diezgan daudz matemātikas. Tāpēc es domāju izveidot kādu programmu, lai vienkāršotu šādu filtru izveidi, lai ikviens varētu tos izmantot savos projektos, neiedziļinoties detaļās.

Šajā pamācībā trokšņainā mērījumā ar Arduino Uno es atklāšu 50 Hz sinusoidālo viļņu (Arduino nav īsti nepieciešams).

1. solis: problēma

Problēma
Problēma

Iedomājieties, ka izmērītie ievades dati izskatās kā augšējā līkne - diezgan trokšņaini.

Ja mēs izveidojam vienkāršu frekvences detektoru, piemēram, akellyirl's Instructable, rezultāts ir "-inf" vai tālāk norādītā koda gadījumā: "Jā, pārāk daudz trokšņa …"

Piezīme. Es izmantoju gandrīz visu akellyirl kodu, bet augšpusē pievienoju rawData masīvu, kas satur trokšņainus mērījumus.

Zemāk jūs varat atrast visu kodu failā ar nosaukumu "unfiltered.ino".

2. solis: risinājums

Atrisinājums
Atrisinājums

Tā kā ievades dati ir trokšņaini, bet mēs zinām meklēto frekvenci, mēs varam izmantot manu izveidoto rīku ar nosaukumu easyFIR, lai izveidotu frekvenču joslas filtru un piemērotu to ievades datiem, kā rezultātā frekvences detektora ievade būs daudz tīrāka (attēls iepriekš).

3. darbība: EasyFIR

EasyFIR
EasyFIR

EasyFIR rīku ir diezgan viegli lietot, vienkārši lejupielādējiet GitHub repozitoriju un palaidiet failu easyFIR.py ar vienu mērījumu paraugu (CSV formātā).

Atverot failu easyFIR.py, jūs atradīsit 5 parametrus (skatiet attēlu iepriekš), kurus varat un vajadzētu mainīt atkarībā no tā, kādu rezultātu vēlaties sasniegt. Pēc 5 parametru pielāgošanas un python faila izpildīšanas terminālī redzēsit aprēķinātos koeficientus. Šie koeficienti ir izšķiroši nākamajam solim!

Plašāku informāciju par precīzu lietošanu var atrast šeit:

4. darbība: filtrēšana

Filtrēšana
Filtrēšana

Tagad, ja esat aprēķinājis nepieciešamos filtra koeficientus, ir diezgan viegli piemērot reālo filtru frekvences detektoram.

Kā redzat attēlā iepriekš, jums jāpievieno tikai koeficienti, funkcija ApplyFilter un pēc tam jāfiltrē ievades mērījumi.

Zemāk jūs varat atrast visu kodu failā ar nosaukumu "filtrated.ino".

Piezīme: liels paldies šim kaudzes pārpildes ierakstam par lielisko filtru lietojuma algoritmu!

5. solis: izbaudiet

Izbaudi
Izbaudi

Kā redzat, tagad mēs varam noteikt 50 Hz signālu pat trokšņainā vidē?

Lūdzu, nekautrējieties pielāgot manu ideju un kodu savām vajadzībām. Es būtu ļoti pateicīgs, ja iekļautu jūsu uzlabojumus!

Ja jums patīk mans darbs, es būtu ļoti pateicīgs, ja jūs atbalstītu manu darbu ar zvaigzni vietnē GitHub!

Paldies par atbalstu!:)

Ieteicams: