Elaborazione numerica dati acquisiti con DSP - problema su integrazione

Salve a tutti, volevo chiedere consiglio a qualcuno con più esperienza, anche se la questione è abbastanza tecnica. Ho realizzato un dispositivo che misura il flusso e la pressione dell'aria in una condotta, il flusso ha un andamento di tipo sinusoidale ed a fine ciclo l'aria entrante deve essere uguale a quella uscente. Sto provando a calcolare il volume tramite integrazione del flusso, ma a causa del rumore ottengo sempre un offset che non mi fa ritornare il volume a zero, è più o meno quello che avviene negli integratori ad operazionali a causa dell'offset.

Ho provato ad elaborare il flusso, rimuovendo il rumore in alta frequenza con un passa basso. Il risultato è però lo stesso di quello precedente: si ha sempre un offset che non riesco a rimuovere che è dello stesso ordine di grandezza di quello ottenuto se non filtro i campioni.

Suggerimenti?

Grazie in anticipo. Fabio.

Reply to
Fabio
Loading thread data ...

Fabio ha scritto:

Quale rumore (arrotondamenti, quantizzazione, altro)?

Reply to
Englishman

Englishman ha scritto:

E di che ordine di grandezza e in quanto tempo, rispetto alle misure in gioco?

Reply to
Englishman

Il rumore è di tutti i tipi, ma quello predominante dovrebbe essere di tipo meccanico. Fra l'altro la misura del flusso è effettuata mediante uno pneumotacografo, quindi ci saranno anche tutbolenze. L'immagine del flusso è

formatting link

Analizzando la FFT osservo che la fondamentale è a circa 5 Hz e sono poi presenti delle armoniche a 10, 15, 20, ecc... C'è poi qualcosa a circa 40 Hz e sporcizia ad alta frequenza.

Andando a filtrare tutto quello che c'è al di sopra dei 5 Hz ottengo una sinusoide pura, ma non è corretto.

"Englishman" ha scritto nel messaggio news:RHlyl.1091$ snipped-for-privacy@tornado.fastwebnet.it...

Reply to
Fabio

Fabio ha scritto:

Ridefiniamo i parametri del problema:

- devi misurare il flusso in questione

- devi integrarlo

- sai per certo che il flusso e' di tipo sinusoidale

- conosci per certo il periodo del segnale (ovvero il periodo puo' variare nel tempo)

- hai del rumore sovrapposto

- hai un offset

IMO, (era stato gia' discussa una soluzione simile, alcuni mesi fa) puoi adottare un filtro media mobile, e non appena il segnale filtrato passa per lo zero (per la seconda volta), con uno sporco trucco (tm) azzerare a tua volta il valore integrato (ritenendo per scontato di non avere problemi di monotonicita' della conversione).

Reply to
Englishman

Il giorno Wed, 25 Mar 2009 09:50:57 +0100, "Fabio" ha scritto:

Facendo una misura 'a occhio' mi sembra che l'area della parte dell'onda sopra lo zero sia maggiore rispetto a quella sottostante.

In queste condizioni c'è per forza un offset, e la cosa potrebbe dipendere dal sensore o anche da turbolenze del flusso che lo ingannano.

Per ripulire l' onda ti basta togliere le spurie a frequenza maggiore, comunque secondo me non è un problema di filtri, ma la cosa sta a monte.

-- ciao Stefano

Reply to
SB

Ma il filtro che hai usato per integrare (e magari anche quello per passabassare, non si sa mai) puoi mostrarcelo o ti han fatto firmare una NDA?

Ad occhiometro quell'andamento non è sinusoidale neanche per sbaglio, e non solo a causa del rumore. C'è qualche filtraggio strano o il sensore non è in grado di misurare o inseguire flussi negativi. È chiaro che se filtri pesantemente ottieni una sinusoide anche quando non c'è. Tra l'altro non mi sembra che le due aree positive e negative (sempre ad occhio) siano molto uguali, quindi potrebbe esserci un offset, come suggerisci tu.

Kalman lo puoi usare se hai un idea del modello che devi stimare (da cui il tuo post successivo, mi sembra di capire), altrimenti miracoli non ne fa che io sappia.

Ciao

Pasu

Reply to
Pasu

Ooops! Oggi sono io che faccio l'eco :-) Scusa, non avevo refreshato. Comunque almeno abbiamo due pareri indipendenti concordi!

Ciao

P.

Reply to
Pasu

Nessuna NDA, semplicemente ho visualizzato il segnale nudo e crudo come acquisito dal sensore e quindi l'ho provato ad elaborare / integrare con SigView. Ho provato a filtrare con vari PB (con frequenza di taglio fino a

100 Hz) e poi ad integrare, ma non riesco in alcun modo a rimuovere quell'offset (ovviamente posso sottrarre la media sul periodo, ma volevo evitare di fare questo). Fra l'altro il volume calcolato come integrale del flusso è pressocchè identico con o senza filtraggio, quindi il filtraggio in questo caso non mi serve a nulla. Anche il disocorso di "resettare" il volume ad ogni ciclo è un'idea che viene usata nei sistemi di calibrazione, ma mi sarebbe piaciuto risolvere il problema a monte.

Fabio.

"Pasu" ha scritto nel messaggio news:gqctrb$t1r$ snipped-for-privacy@aioe.org...

Reply to
Fabio

Ma ti sei chiesto cosa usa questo SigView (che non conosco) per integrare? È un integratore ideale o cosa?

Ma se il tuo segnale è a frequenza così bassa, perchè campioni così velocemente?

Reply to
Pasu

Fabio ha scritto:

lo precedente: si

Mi pare ovvio che un passa basso lasci inalterato l'offset, che =C3=A8 una componente continua. Per togliere l'offset dovresti mettere un passa alto.

Ciao.

lucky

Reply to
lucky

Già, fin troppo ovvio eh? Sai anche progettare un filtro che tolga la continua e lasci inalterato un segnale a 5Hz, fase e tutto il cucuzzaro, soprattutto con una frequenza di campionamento (inspiegabilmente o inspiegatamente) così alta? Auguri.

P.

Reply to
Pasu

Presumo che l'integrale venga calcolato con il metodo dei trapezi. Il segnale ha uno spettro più ampio, ho fatto solo delle prove di filtraggio per vedere se migliorava il calcolo del volume, ma non sono significative.

Fabio.

"Pasu" ha scritto nel messaggio news:gqd03j$uoq$ snipped-for-privacy@aioe.org...

Reply to
Fabio

una

ta?

Non sar=E0 facile, richieder=E0 molti tap, ma =E8 possibile e serve allo scopo. Con i passa basso allo scopo non ci arrivi di sicuro. Se l'offset c'=E8 all'uscita del sensore e non dovrebbe esserci o migliori il sensore (meccanica o elettronica, non ho elementi per determinare quale possa essere la causa) o te ne fai una ragione e ci convivi. Se lo conosci lo eviti.

Ciao.

lucky

Reply to
lucky

Asco' non voglio scatenare flame ma mi sembra di capire, da come parli, che non hai mai provato a fare una cosa del genere. Può darsi che sia un errore sistematico, e allora te ne sbarazzi una volta per tutte (al limite col tuo filtro lungo lungo, se puoi permettertelo). Altrimenti devi inseguire, e il filtro lungo lungo non si presta molto agli inseguimenti. Il tutto ovviamente, come già detto, senza toccare il segnale che, a quanto pare può andare anche più in basso di 5Hz (mi sembra di capire che sia solo un segnale di test, non necessariamente la frequenza più bassa). Se vuoi facciamo due conti (se l'OP ci dà frequenza di campionamento e banda passante del segnale). Può darsi che alla fine la precisione necessaria non sia così elevata e allora forse si può fare come dici tu, ma a quel punto io preferirei un integratore con un po' di perdita. Gusti personali.

Non ho mai detto il contrario, ma sicuramente limitare la banda alla sola banda del segnale aiuta. Lo puoi fare in analogico e campionare più lentamente, o in digitale se hai una frequenza di campionamento imposta.

Appunto. :-)

Reply to
Pasu

Il giorno Wed, 25 Mar 2009 11:41:42 +0100, "Fabio" ha scritto:

Il problema potrebbe essere nel sensore, o meglio nella risposta del sensore rispetto al tempo.

Ho avuto un problema simile tempo fa misurando delle vibrazioni con un accelerometro. Il fatto che l'accelerometro avesse una diversa risposta rispetto alla velocità linare (misura l'accelerazione, non lo spostamento) causava delle distorsioni sulle onde con effetti simili a quello che hai mostrato.

La cosa si poteve anche compensare imponendo variazioni negative all'aumentare della frequenza, ma dal momento che oltretutto non sono lineari rispetto alla frequenza, ho lasciato stare facendo alla fine un analisi nella banda che mi interessava.

Comunque ti consiglio di investigare sul comportamento del sensore e sulla sua linearità rispetto alla velocità dell'aria nella condotta.

-- ciao Stefano

Reply to
SB

o

Una cosa tanto complicata come quanto puoi decidere tu, no; una cosa come _potrebbe_ andar bene per il caso come _sinora_ appare, s=EC.

Appunto, prima di investire sulle soluzioni complicate, non =E8 il caso di valutare se bastano le soluzioni semplici?

=F9

Come fare il filtro, con le sole specifiche a disposizione, dipende dalle altre specifiche che devi invertarti.

Ciao.

lucky

Reply to
lucky

Fabio ha scritto:

ria=20

e=20

a=20

ore=20

pi=F9 o=20

sembra offset, oppure distorsione...valvolare ?

za=20

nte: si=20

ine di=20

visto che il sistema di acquisizione sembra molto piu' veloce del segnale che ti interessa, potresti introdurre una fase di auto_zero che scatta ogni x tempo e solo quando il segnale e' piuttosto basso (vicino allo zero crossing del filtrato) per non influenzare il segnale vero.

saluti

--=20 lowcost

Reply to
lowcost

Rispondendo e ringraziando tutti coloro che mi hanno voluto aiutare con un consiglio, ho constatato che il problema principale è un offset in DC, che sono riuscito a compensare calibrando il segnale ottenuto dal trasduttore (in pratica sottraendo il valore medio). Pensavo quindi di procedere così: a parte l'eventuale filtraggio, memorizzare i dati nel periodo di interesse utilizzando una ram, calcolare il valor medio sul periodo e quindi dedurre l'offset, sottrarre da tutti i campioni l'offset e quindi calcolare l'integrale come semplice somma. Sfortunatamente non posso evitare l'elaborazione post-acquisizione, speravo di evitare la bufferizzazione dei campioni nella RAM ed il tempo necessario all'elaborazione.

L'alternativa potrebbe essere quella di calcolare l'integrale al volo e "resettare" il volume calcolato al termine del periodo, però in caso di offset elevato avrei un errore non accettabile sul picco di volume. Eventualmente potrei sottrarre il volume residuo dal picco di volume, però non sono molto sicuro che vada bene.

Fabio.

"Fabio" ha scritto nel messaggio news:49c9e2aa$0$1105$ snipped-for-privacy@reader4.news.tin.it...

Reply to
Fabio

Un bel giorno Fabio digitò:

Io prima di cercare un modo per eliminare l'offset in post processing, tenterei di capire a cosa è dovuto; magari si può eliminare a monte o comunque in modo più semplice. In particolare bisognerebbe capire la sua dipendenza da tempo, temperatura, ampiezza, frequenza, o una combinazione dei suddetti.

--
emboliaschizoide.splinder.com
Reply to
dalai lamah

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.