ulixxes Inserito: 10 novembre 2012 Segnala Share Inserito: 10 novembre 2012 Salve a tutti, per un mio progetto dovrei analizzare un segnale corrispondente al peso di un contenitore che via via si svuota per poi riempirsi nuovamente ad intervalli regolari. La velocità con cui si svuota è piuttosto regolare, ma purtroppo, essendo il materiale costituito da granaglie discrete, sul segnale è presente un certo ripple che per me è molto fastidioso in quanto causa successive elaborazioni viene molto amplificato. Per eliminarlo finora ho provato ad usare semplici filtri passabasso, che però non vanno bene in quanto nel riempimento, che a differenza dello svuotamento è molto veloce, causano un forte ritardo nell'inseguimento del segnale (per cui devo "staccare" il controllo per diversi secondi per evitare problemi in questa fase). Ho verificato l'uso di filtri LMS, ma non sembrano attenuare molto questo disturbo. Qualcuno saprebbe suggerirmi un qualche filtro per trattare questi disturbi? Il peso passa da 15000 a 4000 nell'arco di 10-15 minuti, per poi ritornare a 15000 in pochi secondi, il ripple è dell'ordine del 2-3% del segnale. Grazie a tutti, Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 10 novembre 2012 Segnala Share Inserita: 10 novembre 2012 Potresti provare ad usare un filtro tipo "finestra scorrevole". E' essenzialmente un passa basso ma, a differenza del passa basso tradizionale offre numerosi vantaggi. Puoi anche cambiare tempo di aggiornamento "al volo". E' adattissimo a questo tipo di misure perchè non si limita a tagliare il disturbo ma lo media. l Link al commento Condividi su altri siti More sharing options...
ulixxes Inserita: 11 novembre 2012 Autore Segnala Share Inserita: 11 novembre 2012 Grazie della risposta. Non li conoscevo, o meglio: ho visto che esistevano, ma non avevo capito che fossero utili in simili situazioni. Proverò ad applicarli ed eventualmente se a qualcuno interessa, vi dico i risultati. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 11 novembre 2012 Segnala Share Inserita: 11 novembre 2012 Proverò ad applicarli ed eventualmente se a qualcuno interessa, vi dico i risultati. Riportare i risultati è il modo migliore per "sdebitarsi" per l'eventuale aiuto ricevuto. Se ci dici anche con quale Hw e con quale linguaggio effettui la tua misura completi le informazioni. Magari potrebbe arrivare anche qualche suggerimento più mirato. Link al commento Condividi su altri siti More sharing options...
ulixxes Inserita: 12 novembre 2012 Autore Segnala Share Inserita: 12 novembre 2012 Salve, certamente. Il valore mi è passato in seriale 485 una volta al secondo da un dispositivo che legge una cella di carico (TD RS 485), mentre per quanto riguarda l'elaborazione/controllo in questa prima fase prototipale ho utilizzato una scheda hobbistica (Arduino) programmata in C, che comunque sia ha fatto il suo dovere. Una volta chiuso il lavoro legato a questo filtro, passero a qualcosa di livello industriale, probabilmente PLC (e quindi programmato in ST), a meno che non riesca a trovare un qualche dispositivo embedded sufficientemente robusto e continuare a lavorare in C (in parte per riutilizzare il lavoro già fatto, in parte perchè questo è di gran lunga il mio linguaggio preferito) Link al commento Condividi su altri siti More sharing options...
Beatrice_Ru Inserita: 27 novembre 2012 Segnala Share Inserita: 27 novembre 2012 puoi usare un piccolo buffer di lettura, creando un piccolo ritardo temporale. Questo ritardo temporale puo' essere molto piccolo, visto che hai un microcontrollore (se ottimizzi il codice puo' essere moltr veloce) Con questo ritardo puoi analizzare il tuo segnale usando la traformata di Fourier (nel periodo di Ritardo lo dividendi in periodo di 2*Pi_Greek ). Successivamente devi eseguire l'anti-Trasformata di Fourier, eliminando la parte di Dominio con le frequenze piu' alte, e usando solo le frequenze piu' basse. Con il tuo Arduino puoi usare un Algoritmo FFT (Fast Fourier Trasform) con il quale puoi esegure la Trasformata di Fourier, che l'Anti-Trasformata di Fourier.\ In questo modo ottieni un segnale che puo' essere filtrato in maniera ottimale. Link al commento Condividi su altri siti More sharing options...
Federico Milan Inserita: 3 dicembre 2012 Segnala Share Inserita: 3 dicembre 2012 (modificato) Secondo me un media mobile potrebbe aiutare, ma se c'è bisogno di precisione e visto che disponi di un PC, probabilmente Kalman potrebbe fare al caso tuo, visto che il modello lo conosci. ciao Modificato: 10 dicembre 2012 da Federico Milan Link al commento Condividi su altri siti More sharing options...
Beatrice_Ru Inserita: 10 dicembre 2012 Segnala Share Inserita: 10 dicembre 2012 Ha Perfettamente ragione Federico potresti usare il filtro di Kalman. ti allego una serie di documentazioni con relativi esempi in Fortran e Basic per implementare il tuo filtro Kalman. Se sai usare il C++ , penso che non avrai nessun problema vedendo il odice in Fortran. http://iaac.technion.ac.il/workshops/2010/KFhandouts/ Link al commento Condividi su altri siti More sharing options...
Federico Milan Inserita: 10 dicembre 2012 Segnala Share Inserita: 10 dicembre 2012 Ottimo link, penso sia veramente interessante come materiale. Link al commento Condividi su altri siti More sharing options...
Henon Inserita: 10 giugno 2013 Segnala Share Inserita: 10 giugno 2013 Anche se non molto prestante puoi usare un Filtro di tipo FIR (Finite Impulse Response) Ma a livello di computazione è molto veloce, ed il risultato può essere Buono. Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora