Cuprins:

Filtrare FIR pentru detectarea mai frecventă a frecvenței: 5 pași
Filtrare FIR pentru detectarea mai frecventă a frecvenței: 5 pași

Video: Filtrare FIR pentru detectarea mai frecventă a frecvenței: 5 pași

Video: Filtrare FIR pentru detectarea mai frecventă a frecvenței: 5 pași
Video: Costeo biju ‼️luat la palme de interlopi‼️#bucuresti #emipian #florinsalam #dans #interlopi 2024, Noiembrie
Anonim
Filtrare FIR pentru detectarea mai frecventă a frecvenței
Filtrare FIR pentru detectarea mai frecventă a frecvenței

Sunt un mare fan al instruirii lui akellyirl despre detecția fiabilă a frecvenței folosind tehnici DSP, dar uneori tehnica pe care a folosit-o nu este suficient de bună dacă aveți măsurători zgomotoase.

O soluție ușoară pentru a obține o intrare mai curată pentru detectorul de frecvență este aplicarea unui fel de filtru în jurul frecvenței pe care doriți să o detectați.

Din păcate, crearea unui filtru digital nu este ușoară și există destul de multă matematică implicată. Așa că m-am gândit să creez un fel de program pentru a simplifica crearea unor astfel de filtre, pentru a permite oricui să le folosească în proiectele lor, fără a săpa în detalii.

În acest Instructable, voi detecta o undă sinusoidală de 50Hz într-o măsurare zgomotoasă cu un Arduino Uno (Arduino nu este cu adevărat necesar).

Pasul 1: problema

Problema
Problema

Imaginați-vă că datele de intrare măsurate arată ca curba de mai sus - destul de zgomotoasă.

Dacă construim un detector de frecvență simplu ca cel din Instrucțiunea lui akellyirl, rezultatul este „-inf” sau în cazul codului de mai jos: „Da, prea mult zgomot …”

Notă: am folosit cam tot codul lui akellyirl, dar am adăugat o matrice rawData în partea de sus, care conține măsurătorile zgomotoase.

Mai jos puteți găsi întregul cod într-un fișier numit „unfiltered.ino”.

Pasul 2: Soluția

Soluția
Soluția

Deoarece datele de intrare sunt zgomotoase, dar cunoaștem frecvența pe care o căutăm, putem folosi un instrument pe care l-am creat, numit easyFIR, pentru a crea un filtru Bandpass și a-l aplica la datele de intrare, ceea ce duce la o intrare mult mai curată pentru detectorul de frecvență (imaginea de mai sus).

Pasul 3: EasyFIR

EasyFIR
EasyFIR

Instrumentul easyFIR este destul de ușor de utilizat, trebuie doar să descărcați depozitul GitHub și să rulați fișierul easyFIR.py cu un eșantion de măsurători (în format CSV).

Dacă deschideți fișierul easyFIR.py, veți găsi 5 parametri (a se vedea imaginea de mai sus) pe care le puteți și ar trebui să le modificați în funcție de rezultatul pe care doriți să îl obțineți. După ce ați modificat cei 5 parametri și ați executat fișierul python, veți vedea coeficienții calculați în terminalul dvs. Acești coeficienți sunt cruciale pentru următorul pas!

Mai multe informații despre utilizarea exactă pot fi găsite aici:

Pasul 4: Filtrare

Filtrare
Filtrare

Acum, dacă ați calculat coeficienții de filtrare necesari, este destul de ușor să aplicați filerul real pe detectorul de frecvență.

După cum puteți vedea în imaginea de mai sus, trebuie doar să adăugați coeficienții, funcția applyFilter și apoi să filtrați măsurătorile de intrare.

Mai jos puteți găsi întregul cod într-un fișier numit „filtered.ino”.

Notă: mulțumiri mari acestui Post Stack Overflow pentru algoritmul excelent al aplicației de filtrare!

Pasul 5: Bucurați-vă

Bucurați-vă
Bucurați-vă

După cum puteți vedea, acum putem detecta un semnal de 50Hz chiar și într-un mediu zgomotos?

Vă rugăm să nu ezitați să vă adaptați ideea și codul la nevoile dvs. Aș fi foarte recunoscător să includ îmbunătățirile dvs.!

Dacă îți place munca mea, aș aprecia cu adevărat dacă îmi sprijini munca cu star pe GitHub!

Mulțumesc pentru sprijin!:)

Recomandat: