Salve, qualcuno sa suggerirmi un modo per estrarre da una generica scheda audio la sua frequenza di campionamento interna?
Mi servirebbe per sincronizzare acquisizioni di segnali.
Grazie
Tullio
Salve, qualcuno sa suggerirmi un modo per estrarre da una generica scheda audio la sua frequenza di campionamento interna?
Mi servirebbe per sincronizzare acquisizioni di segnali.
Grazie
Tullio
so di alcuni colleghi che hanno a che fare con l'oversampling di piccolissimi segnali e che hanno considerato, non so come e' finita, l'uso dell'alta risoluzione (24 bit) di alcune schede audio. Se vuoi ti passo i nomi in privato.
Ciao Tullio non capisco bene qual'è la tua esigenza: vuoi sincronizzare più schede con lo stesso clock o solo tenere d'occhio la frequenza di clock? O altro ancora? Hai già provato a cercare il data sheet del chippettone sulla scheda? Magari riesci a trovare un'uscita dell'oscillatore che divisa opportunamente ti dà la frequenza di campionamento. Se spieghi un po' meglio il problema forse ti posso dirti qualcosa in più.
Pasu
Ti ringrazio. Puoi trovare il mio indirizzo e-mail qui:
Ciao
Tullio
e con
agari
d=E0
=F9.
Ci provo, e siccome sono ignorante nel campo e non so cosa =E8 banale e cosa complicato, metter=F2 tutti i dettagli col risultato di essere prolisso. :-)
Ho un sistema che fa una scansione riga-quadro e vorrei usare una qualunque scheda audio come sistema di acquisizione dati, registrando una tensione funzione di x,y in sequenza in formato wav (sotto codifica, vedi sotto). Finita la scansione, convertirei in modo opportuno il wav in forma di matrice. I punti devono essere a passi costanti e sincronizzati con la scansione (=E8 una immagine al microscopio) per cui sarebbe conveniente ricavarsi le rampe di scansione dal clock della scheda audio (prima ragioneper avere il sincronismo :-)
Siccome devo partire dalla continua, dovr=F2 codificare in qualche modo il segnale da acquisire. Prima idea: convertitore frequenza-tensione; con una scheda a 96 kHz posso registrare fino a ~45 kHz e quindi avere buona dinamica (mi servono 12 bit / 72dB almeno). Se faccio in FFT su
10000 punti risolvo meglio di 10 Hz quindi dinamica di 1:4500 assicurata, che =E8 quel che mi serve. Per=F2 la banda passante del segnale dopo decodifica diventa di pochi Hz, mentre a me serve qualche centinaio di Hz, quindi idea scartata.Seconda idea: modulazione in ampiezza/chopping del segnale da acquisire (che =E8 una cosa, almeno quella, che so fare bene) e poi registrarlo sempre in formato wav. La mia scheda, ha una dinamica in ampiezza di 12 bit (verificati) quando =E8 usata 16 dichiarati (mi accontento: molte ne hanno 8-10 al massimo). Quindi potrebbe andare. Choppando intorno agli 8 kHz la banda passante del segnale da choppare potrebbe essere vari kHz.
Inconvenienti: l'ampiezza =E8 meno immune ai disturbi della frequenza. Possibile soluzione: registro su un canale il segnale choppato, sull'altro il segnale di chopping. Per decodificare il wav registrato, mi basta fare il prodotto, campione per campione, dei due canali e avr=F2 un segnale continuo (con ripple alla frequenza di chopping) da registrare sequenzialmente in un altro file. In pratica faccio un rivelatore sincrono / lock in.
Il clock della scheda audio mi servirebbe anche qui per i sincronismi (i momenti giusti) e per un'altra cosa: il ripple alla frequenza di chopping lo posso filtrare con un passabasso sui dati del file di uscita (quello dopo il prodotto). Per=F2 se la frequenza di chopping me la faccio sincrona con quella di campionamento della scheda, e di periodo corrispondente a un numero intero di cicli di campionamento, potrei fare una media mobile su un numero di punti che corrisponda esattamente a un periodo della frequenza di chopping, e cos=EC elimino totalmente il ripple mantenendo una banda pi=F9 ampia per il egnale originale (seconda ragione per volere il sincronismo).
Mi rendo conto che ho fatto una confusione oscena, anche perch=E9 in buona parte non so di cosa parlo, ma confido che qualcuno pi=F9 sveglio di me riesca a interpretare correttamente le mie farneticazioni, sempre che ne abbia voglia e ritenga che ne valga la pena.
Ciao e grazie
Tullio
Sembra interessante, anche se non ho ben chiaro cosa sia esattamente questo sistema che fa la scansione. Prima di tutto. Non sarebbe possibile utilizzare le due uscite SX e DX della scheda audio come generatori di rampe riga e quadro, bypassando quelli del sistema? In questo modo eviteresti gran parte dei problemi di sincronismo...
Uhm...Tra l'altro mi dà l'idea di una cosa che tende ad essere poco lineare...
Beh, potresti anche in questo caso generare il segnale di chopping con la scheda audio, così risolvi i problemi di sincronismo.
Altra idea: metti mano alla scheda audio e togli i condensatori di disaccoppiamento, al limite risistemando la polarizzazione. Non ho mai fatto niente di simile, ma non vedo perchè quegli ADC non debbano andare fino alla continua!
Non mi sembra...E comunque non sono la persona più adatta per questo tipo di giudizi :-P Se posso, nel mio piccolo, ti aiuto con piacere. Quindi ora tocca a te giudicare le mie di farneticazioni :-)
Pasu
ede con
Magari
i d=E0
i=F9.
Non ho capito troppo bene tutto il contesto, ammetto di aver letto rapidamente il tutto. Ad ogni modo, anni fa avevo usato delle tecniche di interpolazione capaci di aumentare di molto la risoluzione sull'estrazione di frequenza a partire da una FFT. Mi ricordo che con uno span di qualche MHz e 64 punti per la FFT riuscivo ad apprezzare variazioni di frequenza di qualche ppm. Bisogna avere pero' un minimo di rapporto segnale/rumore adeguato. Se serve, cerco i riferimenti.
La risposta =E8 'in compartecipazione' per te e per Darwin (come sar=E0 quella che dar=F2 a lui ;-)
to
Immagina di fare scorrere su una superficie, facendo un raster come quello del televisore, una sonda che legge punto per punto determinate caratteristiche della superficie stessa. vorrei acquisire le lettrure della sonda senza ricorrere a schede AD costose e complicate. L'intenzione =E8 di fare un sistema semplice ed economico, basato su un qualunque PC e quattro componenti esterni in croce, che possa essere duplicato con semplicit=E0 da un laboratorietto di liceo o da un hobbista. Anche il software da usaredovrebbe essere elementare e magari gi=E0 disponibile/adattabile.
lla
.=2E.
Ottima idea, ma il problema =E8 che le mie scansioni sono molto lente. Tempo di riga da 0,1 a 2 secondi, tempo di immagine (quadro) da 30 secondi a oltre trenta minuti. Ci vorrebbe una scheda audio con uscita in continua. Esistono?
Per=F2, ora che mi ci fai pensare, potrei fare cos=EC: Frequenza di chopping ricavata da una uscita della scheda audio (e fatta uguale a un sottomultiplo esatto della F di campionamento) e poi con divisori e contatori up/down mi ricavo con due banali DA sia il triangolo di riga (la riga va scandita bidirezionale) che la rampa di quadro. Grazie del suggerimento!
.=2E.
Pensavo anche io. Poi per=F2 ho guardato il datasheet di LM331 (
.=2E................
S=EC, finalmente ci sono arrivato anche io :-) Basta che la scheda sia full duplex.
tto
alla
Temo (ma non so, sono ignorante di queste cose) che il blocco sulla continua non sia solo una questione di hardware. Poi vorrei fare qualcosa da far funzionare con qualunque calcolatore ci si trovi tra le mani, con la semplice aggiunta di elettronica esterna
po di
Evidentemente mi capisci meglio di quanto mi capisca io. :-)
Finora un paio di buoni suggerimenti me li hai dati. Se ne hai altri, ben vengano.
Ciao e grazie
Tullio
Ho provato a spiegarmi meglio nella ultima reply a Pasu. Sto cercando, come sempre, di fare le nozze coi fichi secchi :-) Un qualunque PC con scheda audio decente, un minimo di elettronica di segnale esterna e quattro-cinque IC digitali di quelli che so usare persino io. Il tutto dovrebbe diventare un sistema di gestione-acquisizione per un microscopio (o profilografo) a sonda, a livello didattico o di buon giocattolo.
Direi che va oltre le mie esigenze. Sono passato all'idea di choppare il segnale della sonda (devo scandere fino alla continua e la sound card non ce la fa) e registrarlo sul canale sinistro, mentre sul destro registro l'onda quadra di chpping.
Quando, finita la scansione, voglio ricostruire il segnale originale, faccio il prodotto campione per campione dei due canali (rivelazione sincrona) o forse il rapporto del sinistro al destro (normalizzazione, va visto quale introia meno il segnale) e mi disegno l'immagine.
A proposito, esiste qualche programma che faccia l'una e/o l'altra funzione? Dove posso trovare in rete informazioni su come sono registrati i dati in formato wav?
Ciao e grazie
Tullio
Ma lo span in frequenza non dovrebbe essere usato per gli analizzatori di spettro analogici ? Voglio dire lo span è l'intervallo in cui spazia la frequenza locale che entra nel mixer insieme al segnale oggetto di analisi?
Inoltre per avere una risoluzione spettrale dell'ordine di 10^-6 con 64 campioni non ci vogliono dei tempi di acquisizione enormemente lunghi ?
Non ho fornito tutti i dettagli. Si trattava di un'applicazione di una scheda di acquisizione rapida in cui un segnale a 73 MHz veniva campionato a 14 bit a 45 MHz (c'era sottocampionamento, ma andava bene, perch=E9 il segnale da campionare era a banda stretta). Appena dopo il campionamento, si entrava in un ricevitore digitale che effettuava nient'altro che le solite operazioni di miscelazione e filtraggio che di solito si fanno in analogico, solo in forma completamente digitale sui campioni ottenuti. Prima di uscire, la frequenza di campionamento era ridotta a valori pi=F9 umani utilizzando dei filtri di decimazione, dato che il segnale era ormai in banda base. Oltretutto, filtrando si guadagnano dei bit, quindi con filtri pi=F9 restrittivi c'era una dinamica assolutamente impressionante (a memoria ricordo di aver superato facilmente i 120 dB tra il picco del segnale e il fondo di rumore). Ho usato questo aggeggio qui (era montato su una scheda gi=E0 fabbricata, mi sono occupato solo di programmarlo e scrivere dei driver): http://www.ortodoxism.ro/datasheets/texasinstruments/gc4016.pdf
No, perch=E9 basta avere i 64 campioni ed ovviamente fare delle supposizioni sulla forma del segnale di cui si vuole misurare la frequenza (in particolare, si faceva un fit con una sinusoide). Quindi, bastava una sola acquisizione, purch=E9 il rapporto segnale su rumore fosse adeguato. Erano techniche simili a quella descritta in quest'articolo:
Si trattava in sostanza di utilizzare non solo il campione pi=F9 elevato ottenuto dalla FFT, ma anche i suoi vicini per fare un'interpolazione con una formuletta neppure troppo complicata. Avevo dei generatori di segnale e misuravo con questa tecnica la frequenza di uno (avendo come riferimento l'altro) e vedevo molto facilmente le derive termiche relative dei quarzi.
La risposta è 'in compartecipazione' per te e per Darwin (come sarà quella che darò a lui ;-)
Sospettavo che fosse qualcosa di simile... Ero sicuro che non stavi pensando di acquisire un segnale video con una scheda audio :-P
Per il software posso aiutarti se vuoi.
Stesso problema, suppongo: bisogna togliere i condensatori. Oppure si va su una scheda di acquisizione...Ormai ce ne sono di molto economiche che vanno anche su USB.
Altrimenti potresti mandare un segnale che, raddrizzato e filtrato, rampeggi a dovere (?) Non ho ben presente come dovrebbe essere suddetto segnale, ma intanto ci penso ;-)
Lo terrò presente per le mie prossime farneticazioni! :-)
No probs... Ormai sono tutte full duplex
Intendi qualcosa a livello di driver? Non credo sai, ho usato delle schede sonore che mi facevano registrare un offset sistematico (una continua), il che mi fa pensare che facciano ben poco per disaccoppiare... Ma un giorno farò questa prova. Intanto dal data sheet del codec si potrebbe capire qualcosa... Hai una sigla a portata di mano? Io ho solo un portatile...
Beh, questo allora è tutto un altro paio di maniche :-) Come non detto allora.
Ciao!
Pasu
Banda stretta, ma intorno a 73 Mhz giusto ? Con campionamento a 45 Mhz non hai un limite di 22 Mhz per l'informazione sullo spettro ?
La miscelazione di cui parli è quella per portare il segnale (che hai detto stretto) in banda base ?
E infatti sto studiando proprio ora l'uso del decimatore per aumentare la risoluzione della fft :-) In pratica si scartano dei campioni in modo da allungare il brano acquisito e di conseguenza la risoluzione spettrale della fft. Siccome sei in numerico e a valle della conversione AD non hai problemi di aliasing, sbaglio ?
Direi che è molto 120 dB.
Qua passo.
Ah ecco, devi ipotizzare nota la forma del segnale.
Ti spiego: mi incuriosice perché sto studianto questo proprio ora ed è una specie di "confronto", finora non ho mai applicato le nozioni studiate (giusto un minimo di elettrotecnica).
Ciao
P.S. Se usi us-ascii come charset non usare le accentate che non vengono visualizzate bene dai newsreader.
Basta che tu sappia che stai ripiegando lo spettro. Ovvero, utilizzi l'aliasing a tuo favore. E' necessario che il segnale sia a banda stretta (si, intorno a 73 MHz) e che la zona in cui il segnale ripiegato va a cascare, ovvero verso i (73-45) MHz non ci sia nulla, altrimenti l'aliasing ti fa perdere informazione. La tecnica si chiama sottocampionamento.
Si. Pensa ad un analizzatore di spettro: faccio la stessa identica cosa, ma tutto in digitale.
Non capisco bene cosa vuoi dire: hai un segnale portato in banda base e filtrato anche in maniera piuttosto violenta con dei filtri digitali. Il segnale e' ancora campionato a 45MHz, ma, mettiamo, hai selezionato un filtro passa basso da 1 MHz attorno alla frequenza centrale. La cosa divertente =E8 che lavorando in digitale, si puo' facilmente fare il trattamento con due segnali in quadratura, ovvero lavorare con segnali complessi. Quando il segnale in banda base e' filtrato, la banda occupata =E8 tra -1MHz e 1MHz mentre la frequenza di campionamento e' sempre a 45MHz. Il filtro di decimazione serve per ridurre la frequenza di campionamento che adesso =E8 sovrabbondante e portarla, per esempio a 2 MHz (pi=F9 un pelo).
Grazie per la segnalazione. E' quello schifo di Google gruppi. E' molto comodo per poter accedere ai newsgroup da casa e dal lavoro, ma si comporta in maniera disastrosa. Proprio in questa discussione, stamane mi ha perso un mio post in cui rispondevo a Tullio (osservavo in sostanza che in una mia vecchia scheda audio un offset in digitale era ben presente). Il tutto oltre a fare schifo come hai fatto notare con i charset.
Bè se decimi i campioni a monte del blocco che realizza la FFT stai costruendo un vettore da trasformare i cui campioni sono spaziati tra di loro nel tempo 10 volte quelli non decimati, stai in pratica lavorando con una frequenza di campionamento più elevata e la risoluzione spettrale è inversamente proporzionale alla f_s. A quanto ho capito è questo il vantaggio della decimazione, no?
Perché gli spettri di fase sono opposti, giusto ?
Sicuro che riduca la frequenza di campionamento ?
Ho visto qualcuno con GG usare charset Latin1, forse nelle preferenze puoi scegliere il charset.
ndo
Potrebbe essere usato anche per roba "video": un laser, due specchietti oscillanti che ti fanno la scansione x e y, una fotocella che ti legge il segnale di ritorno e fai fotografie senza bisogno di obiettivi :-)
Offerta generosa e gradita, se vado avanti con questa idea balzana faccio conto su di te. Posso contattarti in privato?
Dovrei avere vecchie schede ormai inutilizzate, quasi faccio la prova. Per=F2 ho paura dei drift termici: non credo sia componentistica di gran qualit=E0, essendo intesa per alternata e per audio.
no
Questa sarebbe interessante (dipende dal prezzo :-) ce ne sono con funzione sia D=3D>A che A=3D>D? Se puoi darmi qualche indicazione vado a vedere com'=E8.
Sarebbe bello che la potesse programmare anche chi non ci capisce un Kaiser (uno a caso: io).
ggi
Se ti viene qualche idea, obbligatissimo! :-)
Un offset, lavorando con spectralab e guardando la 'time series' l'ho visto anche io, sotto forma di asimmetria dell'onda (shift positivo), ma era a livello di ultimo bit
Anche io. La aggiungo a quelle che mi vado segnando da 10 anni e che nonm potr=F2 fare mai :-(
E' la pi=F9 economica delle sound blaster audigyaudigy a 96 kHz e 24 bit (ma ho visto che se vuoi il duplex devi andare a 16). Ma, come ti dicevo, l'obiettivo massimo sarebbe di poter usare l'accrocco con qualunque calcolatore.
Ciao e grazie
Tullio
Ci mancherebbe! Il problema =E8 che mi piacerebbe saperne un po' di pi=F9 e capire quel che dici :-)
A occhio, direi che parli dell'equivalente di un analizzatore eterodina. Sballo di molto?
Ciao
Tullio
Vorrei correggermi, ora credo di avere più chiaro il quadro e ho detto una cosa errata: la decimazione serve per mantenere inalterata la densità spettrale a valle del filtro passabasso numerico.
Mi spiego più in dettaglio: per sfruttare al massimo l'analizzatore si manda il convertitore AD a frequenza di lavoro massima e si dimensiona il fintro antialiasing su questa. Se un segnale ha banda molto minore c'è uno "spreco" sia in termini di calcolo effettuato che di memoria utilizzata (un brano di una certa lunghezza campionato con frequenza elevata ha più campioni rispetto al campionamento dello stesso brano a frequenza più bassa) per questo lo si abbassa di frequenza con un filtro numerico sicuri di non avere aliasing grazie al filtro analogico a monte. Dopo aver filtrato però il numero di campioni rimane alto, per ovviare a questo li si può decimare. In questo modo si mantiene inalterato il rapporto f_s/M, dove f_s è la frequenza di campionamento e M il numero di campioni da mandare al trasformatore FFT, che è la densità spettrale risultante dalla fft.
Certamently. Ma l'indirizzo che pubblico è un po' fasullo, nel senso che non lo guardo mai ed è pieno di spam. Ti mando un indirizzo valido.
Hai ragione, però il vantaggio del digitale è che puoi fare calibrazioni abbastanza facilmente, ammesso che il tempo di scansione sia ridotto rispetto alla deriva termica... Amenochè la deriva sia qualcosa di identificabile (una retta ad esempio).
Sì, la più classica ha molti A/D, 1 o 2 D/A e magari anche qualche I/O digitale. Dò un'occhiata e ti dico con più precisione.
Intendi la scheda di acquisizione? Guarda, non è molto differente da una scheda audio.
Mah, in realtà credo vada bene qualsiasi segnale, anche una semplice onda quadra o sinusoide, se non hai bisogno di tensioni negative. Forse c'è una soluzione ottima per quanto riguarda ripple residuo e/o disturbi generati.
Esattamente ciò a cui mi riferivo. Magari anche qualcosa di più di un bit, a seconda della qualità della scheda.
Quella lista ce l'abbiamo tutti :-D
Beh, in ogni caso non sarebbe poi male comprare una scheda audio apposta per lo scopo e poi modificarla per lo scopo... Hai la possibilità di postare la sigla che c'è sul chippettone della scheda?
Ciao!
Pasu
E' esatto. Solo che =E8 fatto tutto in digitale e dopo il trattamento, si possono recuperare i campioni a 32 bit in parte reale ed immaginaria separate. Filtrando, si guadagna in dinamica anche in maniera spaventosa... La schedina che utilizzavo su cui era montato il chip che ho descritto costava intorno ai 10 keuro e si innestava in uno slot compactPCI. Mi ero occupato di scrivere dei driver per poterla gestire tramite Labview.
Have something to add? Share your thoughts — no account required.
Ask the community — no account required