Generare valori con DAC molto rapidi
Moderatori:
carloc,
g.schgor,
BrunoValente,
IsidoroKZ
0
voti
EcoTan ha scritto:Un'altra idea simile la avrei però dal dire al fare.. uscite PWM, ponti H, filtri LC e via. Ho realizzato qualcosa nel campo audio.
A dire la verità è stata la mia prima idea ma l'ho scartata perché vorrebbe dire gestire una gamma di frequenze abbastanza ampia e a me servono dei valori di analogica molto precisi e avevo paura che ii filtri LC compromettessero i valori in uscita al variare della frequenza.
0
voti
Si, la qualità si abbasserebbe molto specialmente per quanto riguarda la risoluzione dei livelli. Ma alla fine i DAC non è che fanno miracoli. Un microcontrollore che abbia già il suo modulo DAC in HW sarebbe una via di mezzo.
Temo che con una rete R-2R esterna ci sarebbe un rumore di commutazione
Temo che con una rete R-2R esterna ci sarebbe un rumore di commutazione
0
voti
Non ho capito quanto dev'essere la risoluzione dei dac, ma con con 2 porte del micro, es portc e portd si può raggiungere la risoluzione di 12bit, tanto i segnali di comando dei demultiplexer e dei latch si riducono a poche linee.
Esempio, voglio in uscita 4 dac a 12 bit usando 6 demultiplexer tipo i MC74AC139 che contengono 2 demultiplexer 1-4, uso 8 bit della portc e 4 della portd per i dati che collego agli enable e 2 bit della portd per la selezione delle uscite. I dati sulle uscite vanno poi memorizzati in altrettanti latch e mi serve un alto bit di portd per l'enable dei latch. A questo punto ho moltiplicato 12 bit delle porte c e d del micro per 4. Converto il dato digitale in uscita a ciascun latch in analogico tramite delle reti di resistenze R-2R e condiziono il segnale tramite opamp per avere bias, escursione e impedenza di uscita desiderati e lowpass filter per eliminare le commutazioni.
Il micro così deve solo presentare sulle porte c e d i dati digitali voluti generando i segnali di timing per i demultiplexer ed i latch, cosa che sa fare molto velocemente. Con il clock a 16Mhz che tra l'altro può arrivare a 20, credo che si possa raggiungere il MHz in uscita, anche se non ho fatto i conti.
Esempio, voglio in uscita 4 dac a 12 bit usando 6 demultiplexer tipo i MC74AC139 che contengono 2 demultiplexer 1-4, uso 8 bit della portc e 4 della portd per i dati che collego agli enable e 2 bit della portd per la selezione delle uscite. I dati sulle uscite vanno poi memorizzati in altrettanti latch e mi serve un alto bit di portd per l'enable dei latch. A questo punto ho moltiplicato 12 bit delle porte c e d del micro per 4. Converto il dato digitale in uscita a ciascun latch in analogico tramite delle reti di resistenze R-2R e condiziono il segnale tramite opamp per avere bias, escursione e impedenza di uscita desiderati e lowpass filter per eliminare le commutazioni.
Il micro così deve solo presentare sulle porte c e d i dati digitali voluti generando i segnali di timing per i demultiplexer ed i latch, cosa che sa fare molto velocemente. Con il clock a 16Mhz che tra l'altro può arrivare a 20, credo che si possa raggiungere il MHz in uscita, anche se non ho fatto i conti.

0
voti
Senza usare una rete r2r, e senza de-multiplexer
Rimanendo su Arduino si potrebbe usare una MEGA2560 e dei DAC a ingresso parallelo, scrivendo magari usando la port manipolation
Dovrebbe essere il "meglio" come semplicità HW, Sw e velocità, anche come costi non dovrebbe essere eccessivo
Rimanendo su Arduino si potrebbe usare una MEGA2560 e dei DAC a ingresso parallelo, scrivendo magari usando la port manipolation
Dovrebbe essere il "meglio" come semplicità HW, Sw e velocità, anche come costi non dovrebbe essere eccessivo
-

standardoil
547 2 4 - Stabilizzato

- Messaggi: 424
- Iscritto il: 15 lug 2022, 19:14
0
voti
Con arduino ho provato a manipolare i registri delle porte usando anche i timer interni e toccando 1 solo bit ma riesco al massimo ad ottenere un onda quadra pulita "accettabile" da 1 MHz quindi se aggiungo i tempi di:
Acquisizione del dato (seriale, da ram esterna, da SD card, ecc)
Elaborazione dati, giusto un paio di calcoli banali
Comando dei registri come minimo 12bit+12bit
Sicuramente la frequenza in uscita crolla vertiginosamente.
Acquisizione del dato (seriale, da ram esterna, da SD card, ecc)
Elaborazione dati, giusto un paio di calcoli banali
Comando dei registri come minimo 12bit+12bit
Sicuramente la frequenza in uscita crolla vertiginosamente.
1
voti
l'acquisizione del dato è un problema comune a tutti i possibili metodi di "uscita"
per quanto riguarda l'elaborazione, pure
poi non so se sia veramente conveniente scrivere una caterva di bit in seriale (che sia IIC o SPI sempre seriale è)
piuttosto che manipolare direttamente le porte e scrivere 12 +12 bit sulle 12+12 uscite connesse a due DAC paralleli
facendo due conti se usi un protocollo seriale sincrono (sia esso IIC o SPI) devi scrivere 12+12 bit più 12+12 volte il clock che poi devi anche tirare giù 12+12 volte
secondo i miei conti sono un minimo di 72 bit da scrivere, che lo faccia tu od una libreria poco cambia...
e nella trasmissione seriale troverai una caterva di operazioni di shift bit a bit
invece con DAC paralleli scrivi 12+12 bit e una sola volta l'enable dei due DAC
poi, il lavoro lo devi fare tu, non io, quindi agirai come preferirai
per quanto riguarda l'elaborazione, pure
poi non so se sia veramente conveniente scrivere una caterva di bit in seriale (che sia IIC o SPI sempre seriale è)
piuttosto che manipolare direttamente le porte e scrivere 12 +12 bit sulle 12+12 uscite connesse a due DAC paralleli
facendo due conti se usi un protocollo seriale sincrono (sia esso IIC o SPI) devi scrivere 12+12 bit più 12+12 volte il clock che poi devi anche tirare giù 12+12 volte
secondo i miei conti sono un minimo di 72 bit da scrivere, che lo faccia tu od una libreria poco cambia...
e nella trasmissione seriale troverai una caterva di operazioni di shift bit a bit
invece con DAC paralleli scrivi 12+12 bit e una sola volta l'enable dei due DAC
poi, il lavoro lo devi fare tu, non io, quindi agirai come preferirai
-

standardoil
547 2 4 - Stabilizzato

- Messaggi: 424
- Iscritto il: 15 lug 2022, 19:14
Chi c’è in linea
Visitano il forum: Nessuno e 220 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)






