bufferizzazione ADC
Moderatore:
Paolino
44 messaggi
• Pagina 3 di 5 • 1, 2, 3, 4, 5
0
voti
salve
venexian, visto che l'argomento mi interessa posso sfruttarti per un paio di domande?
Come si può fare per avere una frequenza di campionamento "molto" stabile? e quanto può definirsi stabile?
Cioè, tutti i quarzi dei micro sono soggetti a variazioni termiche, come si fa a migliorare questa cosa?
Io fin ora (all'interno dei micro) ho sempre usato il free-running mode in cui prescalo il main clock, oppure con un timer che genera un'interrupt e all'interno dell'interrupt si lancia la conversione dell'ADC. Sono approcci validi?
Qui invece come andrebbe risolta la faccenda a livello analitico? abbonadare nel sampling?
Scusa per il disturbo e grazie se vorrai dedicarmi un po di tempo, sto ancora studiando e questi argomenti sono stati trattati solo di sfuggita
Davide
Deriva molto, molto, MOLTO di più
Come si può fare per avere una frequenza di campionamento "molto" stabile? e quanto può definirsi stabile?
Cioè, tutti i quarzi dei micro sono soggetti a variazioni termiche, come si fa a migliorare questa cosa?
Io fin ora (all'interno dei micro) ho sempre usato il free-running mode in cui prescalo il main clock, oppure con un timer che genera un'interrupt e all'interno dell'interrupt si lancia la conversione dell'ADC. Sono approcci validi?
In questo caso, come può essere che da 500 Hz in poi, il segnale abbia spurie non superiori a -80 dB?
Qui invece come andrebbe risolta la faccenda a livello analitico? abbonadare nel sampling?
Scusa per il disturbo e grazie se vorrai dedicarmi un po di tempo, sto ancora studiando e questi argomenti sono stati trattati solo di sfuggita
Davide
1
voti
1) Clock.
'Molto stabile' non vuol dire nulla. La stabilità di un clock è un concetto molto ampio che dipende dall'intervallo temporale che consideri.
Su intervalli brevi si confonde con il rumore di fase, importante per campionamenti a frequenze molto elevate, per ricostruzione di clock in comunicazioni sempre a frequenza molto elevata, raramente un problema per applicazioni usuali.
Su tempi più lunghi si ha la stabilità a breve termine, tipica degli oscillatori di tipo ring, presenti ormai in tutti i micro e anche nel convertitore dell'OP. Questa stabilità è importante nei campionamenti, nell'uso delle UART, nelle misure di frequenza di segnali esterni, ecc. Alcuni oscillatori ring sono abbastanza precisi e hanno compensazioni di temperatura per assicurare il funzionamento di UART anche a 150 kbaud e oltre. Non costano nulla, ma necessitano di verifiche accurate sulle possibili variazioni della tensione di alimentazione, della temperatura, dell'invecchiamento del componente. Sui datasheet c'è tutto.
Su tempi ancora più lunghi la stabilità si calcola in p.p.m. e siamo nell'ambito degli RTC, dove anche 10 p.p.m. rompono le scatole su un orologio da quattro soldi. I risonatorini a 32 768 Hz hanno stabilità strabilianti per il costo che hanno, molto interessante è utilizzarli come riferimento nei PLL dei micro che hanno questa funzione per ottenere una frequenza di sistema molto precisa e stabile a lungo termine. Il rumore di fase che hanno è maggiore se comparato a quello di un quarzo a frequenza maggiore, ma questo è raramente un problema.
I 'quarzi standard' quelli da 8 MHz, per capirsi, vanno bene per tutto (eccetto gli orologi). Nel loro utilizzo come clock per un convertitore ADC sono 'overkilling' anche perché sono ben altri i problemi che affliggono la precisione di una conversione di questo tipo.
Giusto quattro parole, comunque. Il capitolo 'clock' del manuale di un micro è uno di quelli più pesanti e c'è il motivo...
'Molto stabile' non vuol dire nulla. La stabilità di un clock è un concetto molto ampio che dipende dall'intervallo temporale che consideri.
Su intervalli brevi si confonde con il rumore di fase, importante per campionamenti a frequenze molto elevate, per ricostruzione di clock in comunicazioni sempre a frequenza molto elevata, raramente un problema per applicazioni usuali.
Su tempi più lunghi si ha la stabilità a breve termine, tipica degli oscillatori di tipo ring, presenti ormai in tutti i micro e anche nel convertitore dell'OP. Questa stabilità è importante nei campionamenti, nell'uso delle UART, nelle misure di frequenza di segnali esterni, ecc. Alcuni oscillatori ring sono abbastanza precisi e hanno compensazioni di temperatura per assicurare il funzionamento di UART anche a 150 kbaud e oltre. Non costano nulla, ma necessitano di verifiche accurate sulle possibili variazioni della tensione di alimentazione, della temperatura, dell'invecchiamento del componente. Sui datasheet c'è tutto.
Su tempi ancora più lunghi la stabilità si calcola in p.p.m. e siamo nell'ambito degli RTC, dove anche 10 p.p.m. rompono le scatole su un orologio da quattro soldi. I risonatorini a 32 768 Hz hanno stabilità strabilianti per il costo che hanno, molto interessante è utilizzarli come riferimento nei PLL dei micro che hanno questa funzione per ottenere una frequenza di sistema molto precisa e stabile a lungo termine. Il rumore di fase che hanno è maggiore se comparato a quello di un quarzo a frequenza maggiore, ma questo è raramente un problema.
I 'quarzi standard' quelli da 8 MHz, per capirsi, vanno bene per tutto (eccetto gli orologi). Nel loro utilizzo come clock per un convertitore ADC sono 'overkilling' anche perché sono ben altri i problemi che affliggono la precisione di una conversione di questo tipo.
Giusto quattro parole, comunque. Il capitolo 'clock' del manuale di un micro è uno di quelli più pesanti e c'è il motivo...
1
voti
2) Sampling.
Qui la faccenda è ancora più complessa, ma si può riassumere in una sola parola 'confusione'.
Alcuni concetti mal compresi e divenuti di dominio pubblico nell'ambiente elettronico sono quotidianamente applicati a sistemi di misura che di preciso non hanno neppure il nome. Molte volte, troppe, è a causa della totale incomprensione del concetto di frequenza di Nyquist.
Se è vero che 'bisogna campionare almeno al doppio della massima frequenza di interesse' per avere tutte le informazioni necessarie sul segnale campionato, questa è una condizione necessaria, ma non certo sufficiente. L'altra condizione fondamentale è che 'dalla metà della frequenza di campionamento in poi, il contenuto spettrale deve essere nullo' (*). Se questa condizione non è rispettata, quello che si campiona è semplicemente privo di senso. Serve quindi il filtro anti-aliasing.
Come si sceglie il filtro? Meglio fare un esempio. Se ho un segnale con spettro dalla continua a 300 Hz, posso campionare a 600 Hz per avere tutta l'informazione del segnale? Certo, nel paese di Alice puoi farlo perhé il Cappellaio ti avrà fornito un filtro che ha attenuazione 'zero' dalla continua a 300 Hz e poi attenuazione infinita da 300 Hz in sù.
Fuori dalla tana del bianconiglio le cose sono diverse. I filtri 'scendono' con una certa pendenza e allora devi spostare in su la frequenza di campionamento per spostarla dove l'ampiezza dei segnali filtrati sarà scesa sotto un LSB. Più ripido scegli il filtro, più bassa puoi tenere la frequenza di sampling, ma più complesso sarà il filtro e più ripple avrai in banda, compromettendo la precisione dei segnali che ti interessano.
Come sempre, il tipo di filtro, il numero di poli, la frequenza di sampling il numero di bit di conversione sono varibili da aggiustare con il compromesso che comprende anche il costo, l'occupazione di spazio sulla scheda, l'affidabilità, ecc. ecc.
Lavoro difficile e entusiasmante. E meno male che lo è, così riusciamo ancora a farci pagare...
(*) Nullo dal punto di vista del convertitore, come dire sotto un LSB del convertitore.
Qui la faccenda è ancora più complessa, ma si può riassumere in una sola parola 'confusione'.
Alcuni concetti mal compresi e divenuti di dominio pubblico nell'ambiente elettronico sono quotidianamente applicati a sistemi di misura che di preciso non hanno neppure il nome. Molte volte, troppe, è a causa della totale incomprensione del concetto di frequenza di Nyquist.
Se è vero che 'bisogna campionare almeno al doppio della massima frequenza di interesse' per avere tutte le informazioni necessarie sul segnale campionato, questa è una condizione necessaria, ma non certo sufficiente. L'altra condizione fondamentale è che 'dalla metà della frequenza di campionamento in poi, il contenuto spettrale deve essere nullo' (*). Se questa condizione non è rispettata, quello che si campiona è semplicemente privo di senso. Serve quindi il filtro anti-aliasing.
Come si sceglie il filtro? Meglio fare un esempio. Se ho un segnale con spettro dalla continua a 300 Hz, posso campionare a 600 Hz per avere tutta l'informazione del segnale? Certo, nel paese di Alice puoi farlo perhé il Cappellaio ti avrà fornito un filtro che ha attenuazione 'zero' dalla continua a 300 Hz e poi attenuazione infinita da 300 Hz in sù.
Fuori dalla tana del bianconiglio le cose sono diverse. I filtri 'scendono' con una certa pendenza e allora devi spostare in su la frequenza di campionamento per spostarla dove l'ampiezza dei segnali filtrati sarà scesa sotto un LSB. Più ripido scegli il filtro, più bassa puoi tenere la frequenza di sampling, ma più complesso sarà il filtro e più ripple avrai in banda, compromettendo la precisione dei segnali che ti interessano.
Come sempre, il tipo di filtro, il numero di poli, la frequenza di sampling il numero di bit di conversione sono varibili da aggiustare con il compromesso che comprende anche il costo, l'occupazione di spazio sulla scheda, l'affidabilità, ecc. ecc.
Lavoro difficile e entusiasmante. E meno male che lo è, così riusciamo ancora a farci pagare...
(*) Nullo dal punto di vista del convertitore, come dire sotto un LSB del convertitore.
0
voti
Ti dispiace se ti "sfrutto ancora un po" ?
Non pretendo di capire tutto e subito anche perché queste cose in magistrale dovrebbe spiegarcele "per bene".
Di solito impostare la soglia minima tollerabile a LSB/2 è sufficiente? L'idea è di fare un filtro sufficientemente piatto in banda in tutta la zona interessata dal segnale da campionare, poi il filtro cade con una certa pendenza e si vede a che frequenza si ha una attenuazione sufficiente a considerare nullo il segnale, si campiona a poco più del doppio di quella frequenza li: ti pare corretta come idea di fondo?
Davide
Non pretendo di capire tutto e subito anche perché queste cose in magistrale dovrebbe spiegarcele "per bene".
Di solito impostare la soglia minima tollerabile a LSB/2 è sufficiente? L'idea è di fare un filtro sufficientemente piatto in banda in tutta la zona interessata dal segnale da campionare, poi il filtro cade con una certa pendenza e si vede a che frequenza si ha una attenuazione sufficiente a considerare nullo il segnale, si campiona a poco più del doppio di quella frequenza li: ti pare corretta come idea di fondo?
Davide
0
voti
Ti ringrazio, mi hai tolto un grande dubbio! immagino che abbia senso anche spostare "piu su" la frequenza di taglio del filtro così da evitare che il ripple di banda cada dentro il segnale da campionare, no? si paga come prezzo di dover campionare anche a freqeuenze piu elevata
0
voti
Questo è uno dei compromessi di cui parlavo prima. Il discorso si può allargare parlando della 'sensitivity' dei vari componenti utilizzati nel filtro. Più spinto è il filtro e più devi considerare le tolleranze dei componenti per poter infilare il passabasso tra il segnale che ti interessa e la frequenza di Nyquist senza che ci siano sovrapposizioni.
Considera anche che un Butterworth ti da la massima 'piattezza' in banda, ma va giù più lentamente di un Chebyshev, mentre un Chebyshev inverso il ripple te lo da nella parte attenuata. La scelta dipende da un'immensità di fattori e non puoi tralasciarne neppure uno.
Considera anche che un Butterworth ti da la massima 'piattezza' in banda, ma va giù più lentamente di un Chebyshev, mentre un Chebyshev inverso il ripple te lo da nella parte attenuata. La scelta dipende da un'immensità di fattori e non puoi tralasciarne neppure uno.
0
voti
Allora ti presento un attimo come ho affrontato un mio progetto amatoriale vediamo che ne pensi.
Campionando un segnale audio (20Hz-20kHz) la parte di segnale che mi interessava elaborare era sotto 1kHz.
Pensando che buona parte del segnale audio sta comunque sotto 3kHz e che a frequenze più alte c'è già una riduzione naturale di ampiezza del segnale ho fatto un filtro passa basso del secondo ordine Butterworth intorno ai 3kHz. Campionando a 25kSps mi trovo che la parte di alias che si sovrappone nel range 0-1kHz è attenuata di 45dB.
Supponendo il worst case di un segnale che satura appieno l'ADC (3.3V) una attenuazione di -45dB lo fa diventare di circa 33mV e sto aggiungendo 7 codici di rumore al segnale vero. La faccenda in realtà va meglio di così perché il segnale è mai così ampio in quel range di frequenze.
Per migliorare la faccenda potrei aumentare l'ordine del filtro oppure aumentare la frequenza di campionamento.
All'interno del DSP c'è un filtro che taglia in maniera ripida ad 1kHz per lavorare con la sola sezione di segnale di interesse.
Quante cavolate ho detto?
Campionando un segnale audio (20Hz-20kHz) la parte di segnale che mi interessava elaborare era sotto 1kHz.
Pensando che buona parte del segnale audio sta comunque sotto 3kHz e che a frequenze più alte c'è già una riduzione naturale di ampiezza del segnale ho fatto un filtro passa basso del secondo ordine Butterworth intorno ai 3kHz. Campionando a 25kSps mi trovo che la parte di alias che si sovrappone nel range 0-1kHz è attenuata di 45dB.
Supponendo il worst case di un segnale che satura appieno l'ADC (3.3V) una attenuazione di -45dB lo fa diventare di circa 33mV e sto aggiungendo 7 codici di rumore al segnale vero. La faccenda in realtà va meglio di così perché il segnale è mai così ampio in quel range di frequenze.
Per migliorare la faccenda potrei aumentare l'ordine del filtro oppure aumentare la frequenza di campionamento.
All'interno del DSP c'è un filtro che taglia in maniera ripida ad 1kHz per lavorare con la sola sezione di segnale di interesse.
Quante cavolate ho detto?
44 messaggi
• Pagina 3 di 5 • 1, 2, 3, 4, 5
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 5 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)


