Progettare un filtro che permetta alle frequenze inferiori a 5 kHz di passare liberamente, ma tutte le frequenze superiori a 5,2 kHz devono essere non rilevabili


12

La mia più grande sfida con questa domanda è la sua velocità di lancio ridicolmente ripida.

Suppongo che il segnale non sia rilevabile se il suo guadagno è -20 dB. Ciò significa che, all'interno della banda di transizione di 200 Hz, l'intensità del segnale deve diminuire di 20 dB.

Se i miei calcoli sono corretti, questo filtro richiede una frequenza di roll-off di 1200 dB / dec. Ciò richiede 60 poli, il che ovviamente non è fattibile.

Vorrei utilizzare un filtro attivo analogico con minima ondulazione nella banda passante. Un grande sfasamento non è troppo importante.

Una potenziale soluzione è quella di utilizzare un filtro notch a 5,2 kHz. Tuttavia, le frequenze al di sopra della larghezza di banda del filtro notch non sono ancora sufficientemente filtrate.

Indica eventuali difetti nella mia logica e o proponi potenziali soluzioni. Grazie.


16
Chiamare -20dB non rilevabile è abbastanza lungo
PlasmaHH

1
@WhatRoughBeast ??? Mi rendo conto che ha diviso 4500 per 20 per ottenere 225 poli; quello che sto sfidando è come ha ottenuto il 4500 in primo luogo.
Dave Tweed

7
Che tipo di risposta ti aspetti Tamir? Analogico passivo / attivo? Digital IIR / FIR? Filtro digitale Wave? FFT + Rimuovi elementi indesiderati + IFFT?
Harry Svensson,

4
Quanta ondulazione della banda passante è accettabile?
Bruce Abbott

1
"con minima ondulazione nella banda pass" - "minimal" non è una specifica.
Bruce Abbott,

Risposte:


21

È stato assunto un roll-off di 20 dB / dec per ordine di filtro per il filtro. Questo non è vero per tutti i tipi di filtro.

Lascia che e . Quindif s t o p = 5,2 k H z f s t o pf0=5kHzfstop=5.2kHz

fstopf0=1.04.

Dai un'occhiata a questo filtro ellittico del quarto ordine tratto dall'articolo di Wikipedia . ellittico

Sebbene non soddisfi completamente le tue esigenze, puoi vedere che è fattibile. Un filtro ellittico di ordine superiore può ottenere ciò che cerchi.

Dovresti tenere presente che i filtri ellittici possono fare cose inquietanti per la fase del segnale. Dato che non hai menzionato nulla dei tuoi vincoli di fase, ho assunto che un filtro ellittico sia adatto.


Non è una cattiva idea. L'LPF ellittico del 6 ° ordine ha una pendenza di transizione abbastanza ripida se l'ondulazione della banda passante 3dB e il max. Sono consentite perdite di -20dB a 5200Hz e superiori. Il risultato è stato ottenuto con un calcolatore di filtri, ho immesso solo ordini e limiti diversi fino a quando non è emersa una risposta in frequenza adeguata. Il sesto ordine significa che sono in cascata solo tre blocchi del 2 ° ordine. Nessuna idea, sarà realizzabile in pratica con le normali tolleranze dei componenti come filtro opamp analogico. Ciò ha bisogno di più simulazioni.
user287001

Ciao e grazie per la bella risposta. Solo una curiosità, quando guardo a Wikipedia i poli sembrano giacere su un'ellissi, è da dove viene il nome o è una coincidenza?
matematico

1
@mathreadler Credo che il nome derivi dalla funzione razionale ellittica che appare nella funzione di trasferimento del filtro ellittico. I poli dei filtri ellittici sono una funzione della funzione del coseno ellittico Jacobi. Quindi si trovano su un'ellisse.
user110971

21

Questo tipo di rolloff brusco richiede un filtro digitale. Non pensare nemmeno all'analogico. È necessario convolgere l'input con una funzione sinc. L'ampiezza della funzione sinc (il numero di punti del kernel) definisce l'attenuazione della banda di arresto.

Non ho fatto i calcoli, ma alcuni calcoli molto rapidi (che potrebbero essere spenti, il tuo lavoro per farlo correttamente) dice che probabilmente avrai bisogno di qualche centinaio di punti se campionerai a 20 kHz. 200 punti a 20 kHz indicano una velocità MAC di 4 MHz. È fattibile, in effetti ben al di sotto di ciò che i moderni DSP possono fare piuttosto facilmente. Ciò significa che il tuo problema è abbastanza trattabile. Qualcosa come un dsPIC serie E può fare questo, ed è piuttosto di fascia bassa se stai solo cercando la funzionalità DSP.


3
questo è in realtà un filtro FIR. Una rapida simulazione ha dimostrato che è sufficiente un filtro a 128 rubinetti con finestre rettangolari. I coefficienti sono presi dalla sincera risposta all'impulso dell'LPF ideale a 5100Hz. Il primo sidelobe è di soli -20 dB a ca. 5250Hz (visto da un calcolatore di filtri)
user287001

2
@utente: OK, quindi significa che in realtà è un po 'più semplice della mia stima approssimativa sopra. Probabilmente renderei il kernel un po 'più ampio, solo per avere un po' di margine, soprattutto perché è ancora ben compreso nelle capacità di un DSP modesto.
Olin Lathrop

Ci sono alcune risorse davvero buone per il filtro e quale funzione di finestra usare: mi piace personalmente dspguide.com
Peter Smith

4

Se si consente un ritardo sostanziale o si elabora un segnale registrato, è possibile semplicemente eseguire FFT, rimuovere componenti indesiderati e invertire la trasformazione. È necessario troncare il fileft con la funzione di finestra appropriata per mantenere accettabile lo squillo.


8
Penso che per una banda di transizione così stretta, devi dire molto di più su come selezionare la funzione finestra per rendere questa risposta utile per risolvere il problema.
Il fotone

4

Sceglierei un chip codec audio (ADC + DAC), instradare l'uscita digitale ADC all'ingresso DAC e impostare la frequenza di campionamento su 10kHz.

Questi chip includono già il motore di filtro digitale di cui hai bisogno. Un rapido controllo del foglio dati sembra confermare che otterrai le prestazioni del filtro di cui hai bisogno.


Sei sicuro?
user253751

Non sono sicuro al 100%, ma non vedo alcun motivo per cui non funzionerebbe con un codec sigma delta, alcuni possono campionare fino a 8kHz ...
peufeu

Voglio dire, perché credi che rifiuterà le frequenze indesiderate, piuttosto che alias?
user253751

Il solito audio ADC è un sigma delta con un enorme fattore di sovracampionamento seguito da un filtro digitale nitido. La maggior parte di questi andrà da Fs = 8k a 96-192k. L'aliasing è evitato da un semplice passa-basso del 1 ° ordine prima dell'ADC e il sovracampionamento se ne occupa. Dovrebbero funzionare bene attorno a Fs = 10kHz con la frequenza di clock corretta.
peufeu,

4

Hai già molte belle risposte con buone soluzioni tradizionali, filtri ellittici, (breve tempo) FFT, ecc., Quindi stavo pensando di poter aggiungere qualcosa dal mondo della trasformazione della codifica sotto-banda / wavelet.

La codifica sottobanda significa suddividere lo spettro di frequenza in "bin", ciascuno di questi bin ha il proprio filtro associato. Le bande più strette, i filtri più ampi nel dominio del tempo (naturalmente) - ma nelle aree in cui non abbiamo bisogno di bande molto strette possiamo scappare con filtri davvero brevi ed economici da calcolare.

Le wavelet sono funzioni che sono il risultato di un tipo specifico di filtri sub-band generati dal filtro iterato seguito dal sottocampionamento.

L'idea sarebbe quella di trovare le sottobande di interesse che ci permetterebbero di spremere maggiormente i calcoli, ma ottenere comunque una buona granularità nella banda di interesse.

Esempio di decomposizione di un pacchetto di rubinetti Daubechies 12 in tre livelli (Wikipedia):

Inserisci qui la descrizione dell'immagine

Possiamo quindi riassumere selettivamente questi per ottenere la risposta che vogliamo. E quelli che non vogliamo aggiungere - non dobbiamo nemmeno calcolare! Avremo bisogno di quelli più sottili più vicini alla banda 5-5.2 kHz per essere in grado di ottenere comportamenti abbastanza ripidi. D'altra parte, lontano dalla banda 5-5.2 kHz possiamo cavarcela solo con alcune suddivisioni.


Questo è più un annuncio che una risposta.
Harry Svensson,

@HarrySvensson Posso provare ad essere più specifico, ma in questi giorni non ho tanto tempo libero quanto un tempo dovevo migliorare le risposte.
matematico

3

se è possibile GARANTIRE un ingresso sinusoidale, può essere sufficiente un monostabile a colpo singolo (74121). O il riattivabile 122/123.

Utilizzare un comparatore prima del 74121/122/123

Alcune MCU includono comparatori analogici come loro periferiche; una volta convertito in onda quadra, è possibile utilizzare timer ecc. per rilevare sopra / sotto i 5.000Hz, se l'MCU ha un orologio stabilizzato XTAL. Non è necessario un monostabile sensibile alla temperatura.


3
Interessante, ma cosa ti fa pensare che l'ingresso potrebbe essere sinusoidale? Sembra abbastanza utopico fare quell'ipotesi senza alcun motivo particolare.
circa il

1
penso indicando le prime 4 parole della sua risposta "se puoi GARANTIRE", allora questa è una soluzione innovativa.
Techydude,

Ho usato questo approccio (il retromarciabile 74123) per rilevare il bloccaggio delle ruote in un sistema antiscivolo; quando il 74123 è scaduto, il cilindro idraulico è stato guidato da 2N3055 per azionare i freni. Abbiamo solo circa 2 impulsi al secondo, a causa della costante idraulica.
analogsystemsrf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.