ADC / DAC virgola mobile o fissa
Moderatori:
carloc,
g.schgor,
BrunoValente,
IsidoroKZ
16 messaggi
• Pagina 1 di 2 • 1, 2
0
voti
Salve ,ho un'altra questione (forse stupida...boh),riguardante gli adc/dac, da chiarire con qualcuno molto più esperto di me .Se ho dei valori in virgola mobile memorizzati in una ROM (p.es look up table con valori di una funzione coseno e seno) e volessi successivamente convertirli in valore analogico (senza usare microcontrollori) che tipo di dac dovrei usare?Mi spiego meglio,per memorizzare dei valori di seno e coseno di certo non potrò usare la rappresentazione con interi e sarò costretto ad utilizzare quella con mantissa ed esponente oppure quella in virgola fissa ,in questo caso come effettuo la conversione in valore analogico?
-

Roswell1947
89 1 3 8 - Stabilizzato

- Messaggi: 438
- Iscritto il: 10 feb 2020, 16:39
2
voti
Ciao,
In virgola mobile, senza microcontrollori la vedo dura.
La conversione da virgola mobile a intero è digitale, poi la conversione da intero ad analogico (corrente o tensione elettrica) la fa il DAC.
Per ogni campione, la conversione a intero (in C per esempio) potrebbe essere:
Per esempio se il DAC è a 8 bit, RANGE_DAC è 256, e:
- il valore -1.0 verrà convertito a 0
- il valore 0.0 verrà convertito a 127
- il valore 1.0 verrà convertito a 255
I valori intermedi ovviamente verranno convertiti a valori intermedi.
Certo che puoi usarla. Memorizzi i valori pronti da dare in pasto al DAC, quelli che escono dalla conversione precedente. Così puoi fare la conversione prima, e a run-time non ti serve fare calcoli.
In questo modo potresti non aver bisogno di un microcontrollore, potrebbe bastarti un contatore digitale come generatore di indirizzi per la ROM.
Se ti bastano 8 bit, un DAC08 per esempio.
Roswell1947 ha scritto:Se ho dei valori in virgola mobile ... e volessi successivamente convertirli in valore analogico (senza usare microcontrollori)
In virgola mobile, senza microcontrollori la vedo dura.
Roswell1947 ha scritto:come effettuo la conversione in valore analogico?
La conversione da virgola mobile a intero è digitale, poi la conversione da intero ad analogico (corrente o tensione elettrica) la fa il DAC.
Per ogni campione, la conversione a intero (in C per esempio) potrebbe essere:
- Codice: Seleziona tutto
valoreIntero = (unsigned int)(((valoreVirgolaMobile + 1.0) / 2.0) * (RANGE_DAC - 1));
Per esempio se il DAC è a 8 bit, RANGE_DAC è 256, e:
- il valore -1.0 verrà convertito a 0
- il valore 0.0 verrà convertito a 127
- il valore 1.0 verrà convertito a 255
I valori intermedi ovviamente verranno convertiti a valori intermedi.
Roswell1947 ha scritto:Mi spiego meglio,per memorizzare dei valori di seno e coseno di certo non potrò usare la rappresentazione con interi
Certo che puoi usarla. Memorizzi i valori pronti da dare in pasto al DAC, quelli che escono dalla conversione precedente. Così puoi fare la conversione prima, e a run-time non ti serve fare calcoli.
In questo modo potresti non aver bisogno di un microcontrollore, potrebbe bastarti un contatore digitale come generatore di indirizzi per la ROM.
Roswell1947 ha scritto:che tipo di dac dovrei usare?
Se ti bastano 8 bit, un DAC08 per esempio.
Big fan of ⋮ƎlectroYou! Ausili per disabili e anziani su ⋮ƎlectroYou
Caratteri utili: À È É Ì Ò Ó Ù α β γ δ ε η θ λ μ π ρ σ τ φ ω Ω º ª ² ³ √ ∛ ∜ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ∃ ∄ ∆ ∈ ∉ ± ∓ ∾ ≃ ≈ ≠ ≤ ≥
Caratteri utili: À È É Ì Ò Ó Ù α β γ δ ε η θ λ μ π ρ σ τ φ ω Ω º ª ² ³ √ ∛ ∜ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ∃ ∄ ∆ ∈ ∉ ± ∓ ∾ ≃ ≈ ≠ ≤ ≥
0
voti
non vedo come puoi andare a convertire valori inferiori ad 1 con un DAC, (non ne ho mai usati, ma a buon senso mi pare sia così).
Per usare il convertitore, dovrai pure andare a moltiplicare un valore intero per il tuo float, ed avrai un intero a tua volta che convertirai, i decimali andranno persi, prendendo il solo valore intero, quello che puoi fare è aumentare l'intero, arrivando al valore massimo di uscita, fruttando così il numero maggiore di decimli.
saluti.
Per usare il convertitore, dovrai pure andare a moltiplicare un valore intero per il tuo float, ed avrai un intero a tua volta che convertirai, i decimali andranno persi, prendendo il solo valore intero, quello che puoi fare è aumentare l'intero, arrivando al valore massimo di uscita, fruttando così il numero maggiore di decimli.
saluti.
-

lelerelele
4.899 3 7 9 - Master

- Messaggi: 5505
- Iscritto il: 8 giu 2011, 8:57
- Località: Reggio Emilia
0
voti
Perché hai i valori delle funzioni trigonometriche in formato floating? Direi che in fixed point possa andare altrettanto bene. Con una risoluzione di 8bit vicino allo zero hai una risoluzione di circa 0.2 gradi, mentre vicino a 1 diventa di 5 gradi. Con un 12 bit la risoluzione diventa meglio, intorno a zero, dove la funzione è praticamente lineare, hai una risoluzione di 50", mentre vicino a 1, dove la funzione e è esenzialmente quadratica, migliori di u n fattore 4 e quindi hai una risoluzione di 1.3 gradi circa.
Che io sappia, tutti i dds usano memorie con il seno rappresentato in virgola fissa.
Che io sappia, tutti i dds usano memorie con il seno rappresentato in virgola fissa.
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
Per risparmiare hardware il sistema più utilizzato specialmente in passato era quello di memorizzare direttamente i valori da mandare al DAC.
A esempio da 0 a 255 nel caso di 8Bit.
Il resto era fatto a livello analogico.
Naturalmente oltre alla risoluzione occorre valutare il tempo di conversione e il tempo necessario alla gestione digitale del Micro o/e della lettura della Rom.
A che frequenza è il segnale sinusoidale generato?
Ciao
A esempio da 0 a 255 nel caso di 8Bit.
Il resto era fatto a livello analogico.
Naturalmente oltre alla risoluzione occorre valutare il tempo di conversione e il tempo necessario alla gestione digitale del Micro o/e della lettura della Rom.
A che frequenza è il segnale sinusoidale generato?
Ciao
600 Elettra
0
voti
IsidoroKZ ha scritto:Perché hai i valori delle funzioni trigonometriche in formato floating? Direi che in fixed point possa andare altrettanto bene. Con una risoluzione di 8bit vicino allo zero hai una risoluzione di circa 0.2 gradi, mentre vicino a 1 diventa di 5 gradi. Con un 12 bit la risoluzione diventa meglio, intorno a zero, dove la funzione è praticamente lineare, hai una risoluzione di 50", mentre vicino a 1, dove la funzione e è esenzialmente quadratica, migliori di u n fattore 4 e quindi hai una risoluzione di 1.3 gradi circa.
Che io sappia, tutti i dds usano memorie con il seno rappresentato in virgola fissa.
ok,ma come si gestisce un dac in virgola fissa?nel senso come avviene la conersione con la rappresentazione in virgola fissa?
-

Roswell1947
89 1 3 8 - Stabilizzato

- Messaggi: 438
- Iscritto il: 10 feb 2020, 16:39
0
voti
ok,ma come si gestisce un dac in virgola fissa?nel senso come avviene la conversione con la rappresentazione in virgola fissa ?
supponi di avere un DAC a 8 bit, sono 256 valori da 0 a 255.
Prepari una tabella di 256 valori interi
Il seno viene calcolato a passi di 360/256 gradi = 1,406
Moltiplichi i valori del seno variabili fra -1 e 1 per 127
e sommi il valore 127
N gradi seno senox127 numero
1 0 0 0 127 metà tensione
2 1,406 0,0245 3,116 130
3 2,82 0,049 6,23 133
.......
45 0,707 89,7 216
...
90 1 127 255 fondo scala
....
270 -1 -127 0 inizio scala
0
voti
OK ma in questo modo nella ROM ci sono numeri interi e non valori del seno rappresentati in virgola fissa
-

Roswell1947
89 1 3 8 - Stabilizzato

- Messaggi: 438
- Iscritto il: 10 feb 2020, 16:39
0
voti
IsidoroKZ ha scritto:Perché hai i valori delle funzioni trigonometriche in formato floating? Direi che in fixed point possa andare altrettanto bene. Con una risoluzione di 8bit vicino allo zero hai una risoluzione di circa 0.2 gradi, mentre vicino a 1 diventa di 5 gradi. Con un 12 bit la risoluzione diventa meglio, intorno a zero, dove la funzione è praticamente lineare, hai una risoluzione di 50", mentre vicino a 1, dove la funzione e è esenzialmente quadratica, migliori di u n fattore 4 e quindi hai una risoluzione di 1.3 gradi circa.
Che io sappia, tutti i dds usano memorie con il seno rappresentato in virgola fissa.
Potresti spiegarmi come mai con una risoluzione di 8bit vicino allo zero si ha una risoluzione di circa 0.2 gradi, mentre vicino a 1 diventa di 5 gradi?
grazie
-

Roswell1947
89 1 3 8 - Stabilizzato

- Messaggi: 438
- Iscritto il: 10 feb 2020, 16:39
0
voti
Roswell1947 ha scritto:OK ma in questo modo nella ROM ci sono numeri interi e non valori del seno rappresentati in virgola fissa
Supponi di volere il seno di 40°, che tensione vuoi all'uscita del convertitore? Se il convertitore ha l'uscita in corrente, che corrente vuoi sempre per lo stesso angolo?
Poi rispondo al problema della risoluzione.
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
16 messaggi
• Pagina 1 di 2 • 1, 2
Chi c’è in linea
Visitano il forum: Nessuno e 63 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)




