Ciao
Vorrei fare un circuitino con uC+DAC per generare una sinuoside ad 1kHz. Ho visto che esistono diverse altre tecniche come DDS e filtraggio di onde quadre ma lascerei perdere per ora.
Il fatto è che voglio concentrarmi su un DAC per imparare l'interfaccia SPI del uC che andrò ad usare e capire bene quanto è importante il data rate dei campioni in uscita ( ad esempio se riesco ad andare ad 1Ms/s o 100kS/s cosa succederà alla fft della mia sinusoide?)
Prima di cominciare il vero e proprio lavoro però mi sono detto di prendere il generatore da banco che ho ( siglent SDSG830) generare una sinuoside ad 1kHz,fare una fft con l'oscilloscopio e vedere cosa ottengo.
Ho usato 0-4V come ampiezza di test ma è puramente arbitraria. La cosa che mi sorprende sono le armoniche presenti a 2,3,4 kHz... Secondo voi è normale? il data rate del generatore dovrebbe essere 125MS/s quindi parecchio alto e l'unico effetto che mi dovrebbe generare dovrebbero essere le armoniche a 125Mhz +/- 1kHz
Ringrazio e un saluto a tutti
Armoniche inaspettate
8 messaggi
• Pagina 1 di 1
0
voti
L'armonica maggiormente presente è la seconda, con un livello circa 56 dB sotto la fondamentale, come dire pochi millivolt rispetto a un volt. Hai provato a diminuire il segnale? Anche la base dei tempi sull'oscilloscopio può influire, ma mi sembra che sia abbastanza ampia.
0
voti
Le armoniche presenti nell'analisi spettrale dell'uscita del generatore dipendono dalla risoluzione in bit del DAC che forma la sinusoide e non dalla frequenza di campionamento. Con campionamento a frequenza elevata puoi alzare la frequenza del filtro p.b. a valle del D/A per ricostruire la sinusoide ma la THD% minima teorica del generatore (in pratica quante armoniche superiori sono presenti oltre alla fondamentale) è dominata dal numero di bit del convertitore D/A.
In pratica :
DAC 8 bit minTHD% = 1/255 x 100 < 0,4%
DAC 10 bit minTHD% = 1/1023 x 100 < 0,1%
DAC 12 bit minTHD% = 1/4095 x 100 < 0,025%
DAC 14 bit minTHD% = 1/16383 x 100 < 0,0061%
Il generatore SDSG830 ha un D/A a 14 bit ma l'acquisizione con l'oscilloscopio in FFT è fatta a 12 bit (lo dice la schermata che hai postato).
Dovresti calibrare la scala verticale in dBv e non dBm.
In pratica :
DAC 8 bit minTHD% = 1/255 x 100 < 0,4%
DAC 10 bit minTHD% = 1/1023 x 100 < 0,1%
DAC 12 bit minTHD% = 1/4095 x 100 < 0,025%
DAC 14 bit minTHD% = 1/16383 x 100 < 0,0061%
Il generatore SDSG830 ha un D/A a 14 bit ma l'acquisizione con l'oscilloscopio in FFT è fatta a 12 bit (lo dice la schermata che hai postato).
Dovresti calibrare la scala verticale in dBv e non dBm.
1
voti
E` vero che la risoluzione del D/A puo` dare della distorsione, ma i numeri sono diversi da quelli dati da esisnc e comunque complicati da calcolare. Se non si usa un filtro ricostruttore e si approssima la sinusoide come scalinata, supponendo che il D/A non introduca distorsioni, i valori di distorsione armonica calcolati dovrebbero essere questi
Il numero di campioni per ciclo e` molto piu` importante del numero di bit del D/A. Nota che questi numeri sono calcolati sulla scalinata, senza nessun filtro ricostruttore dietro.
La tabella arriva dall'articolo A Method for Calculating Total Harmonic Distortion of Digital Sinusoidal Waveform di Liu Min e Li Yalu, ICEMI’2007.
Il numero di campioni per ciclo e` molto piu` importante del numero di bit del D/A. Nota che questi numeri sono calcolati sulla scalinata, senza nessun filtro ricostruttore dietro.
La tabella arriva dall'articolo A Method for Calculating Total Harmonic Distortion of Digital Sinusoidal Waveform di Liu Min e Li Yalu, ICEMI’2007.
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
0
voti
IsidoroKZ ha scritto:ma i numeri sono diversi da quelli dati da esisnc e comunque complicati da calcolare
Spiego meglio i numeri che ho riportato nel mio post.
Si consideri una sinusoide completa di ampiezza max. +/-A e periodo T s. Se si quantizza l'ampiezza totale 2A con N bit si hanno 2^N-1 scalini e ogni scalino si suppone cambi a passi (campionamento) di dt = T/(2^N-1) s.
Consideriamo allora un DAC a 9 bit quindi 511 scalini che cambiano ogni T/511 s.
LA THD% teorica vale, secondo il mio post, THD% = 1/511 x 100 = 0,196% cioè < 0,2%
Sarà vero ??????
Vedere la foto allegata.......si tratta di un DDS con DAC 9 bit, FFT presa dopo il filtro p.b.
La fondamentale (50 Hz) è a -5 dBV e la 2° armonica (100 Hz) è a -62 dBV circa quindi siamo a -57 dBV sotto la fondamentale (tutte le armoniche superiori sono trascurabili) cioè THD% = 0.141% < 0,2%.
Direi che siamo precisi. Non sono numeri a caso, ma un circuito reale che ho costruito per fare una cassetta prova relè.
0
voti
Non sono sicuro di aver capito bene. Se cambi di un gradino a ogni passo di campionamento, mi sembra che venga fuori una retta, non una sinusoide. E ti ritrovi con 511 gradini in ampiezza e 511 punti per ciclo.
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
0
voti
Faccio un esempio: vogliamo generare una semplice sinusoide con frequenza fissa o poco variabile. Supponiamo che il DAC abbia pochi bit di risoluzione e che il sample rate sia basso cioè vengano creati pochi campioni per ogni periodo della sinusoide. Supponiamo che il filtro passa basso sia invece ottimo ed elimini le frequenze maggiori di quella che ci interessa. Quindi alla fine otteniamo la sinusoide voluta, pressochè ideale e poco distorta. Questo per dire che i fattori che influenzano la distorsione totale sono almeno tre: la risoluzione dei livelli, la frequenza di campionamento e la frequenza di taglio e l'ordine del filtro passa basso, frequenza che a sua volta è legata alle caratteristiche del segnale.
0
voti
IsidoroKZ ha scritto:Non sono sicuro di aver capito bene. Se cambi di un gradino a ogni passo di campionamento, mi sembra che venga fuori una retta, non una sinusoide. E ti ritrovi con 511 gradini in ampiezza e 511 punti per ciclo.
Il gradino cambia ogni dt=T/511 s, ma l'ampiezza verticale di ogni gradino segue l'andamento della sinusoide continua. In pratica imagina una sinusoide continua e sotto una gradinata discretizzata in 511 livelli.
Hai 511 passi sulla scala dei tempi e 511 valori discreti (9 bit) per le ampiezze.
Per realizzarlo con il micro (Arduino Nano) ho memorizzato un array di 511 valori che riproducono a ogni passo una sinusoide discretizzata. Ogni passo ovviamente non ha ampiezza costante (altrimenti avrei una retta come hai giustamente osservato).
Su una uscita PWM del micro, ogni dt punta un valore dell'array in memoria, quindi si costruisce una sinusoide dopo il filtraggio con un p.b.
In pratica è come avere un DAC a 9 bit.
P.S. le stesse relazioni le ho verificate per 8 bit e in quel caso la THD% non è scesa sotto lo 0,4%.
8 messaggi
• Pagina 1 di 1
Torna a Costruzione, riparazione, riutilizzo
Chi c’è in linea
Visitano il forum: Nessuno e 23 ospiti