Memoria analogica

Salve a tutti,

ho la necessità di progettare una sorta di "memoria analogica". Essa differisce da una memoria digitale poiché i valori di tensione da mantenere in ogni cella non sono 2 (0V o 5V), ma sono 181.

Per intenderci, può assumere qualunque valore da 0 a 18 V a passi di 100 mV (quindi in sostanza 181 valori).

E' una griglia 16x16 per intenderci, quindi sono 256 celle, quindi 256 capacità da caricare/scaricare.

La tensione di ogni singola cella può variare ogni 1 ms, per il resto del tempo deve esser mantenuta la tensione che gli viene assegnata (con

50mV di ripple al massimo).

La soluzione da me pensata era la seguente:

Per ogni cella c'è uno switch controllato digitalmente (0V off, 5V on). Quando lo switch è in ON, lascio passare una tensione prendendola da una linea analogica (unica per tutte le celle) che carica la capacità. Quando lo switch o OFF, la capacità si deve scaricare lentamente.

Problemi:

1 - Ho scoperto che non esistono switch analogici integrati che lasciano passare 18 V (e valori intermedi), controllandoli con una tensione da 5 V.

2 - La capacità dovrebbe caricarsi in fretta (la tensione su di essa rimarrà solo per 4 us) e scaricarsi lentamente (dopo 1 ms deve essere scesa di soli 50 mV) e non riesco con nessuna architettura.

Qualcuno potrebbe darmi qualche suggerimento? Ho provato a creare una rete di carica con un diodo e resistenza bassa e scarica con un altro diodo e resistenza alta, ma sorge un problema: se memorizzo 18 V e poi voglio memorizzare 3 V, non posso scaricarlo velocemente a causa dei diodi.

Grazie già in anticipo

Reply to
Eleison
Loading thread data ...

Fai capire bene cosa vuoi realizzare, è un progetto di studio, è un qualcosa per una applicazione concreta o altro?

Mi è chiaro cosa vorresti fare analogiamente, che poi è cio che fa un DA converter (a livello di principio), non vorrei stessi inventando l'acqua calda.

Poi avrei una miriade di osservazioni, ma aspetto delucidazioni.

Reply to
El_Ciula

cut...

Per quale insano motivo non dovrebbe andar bene un circuito digitale? Le 256 celle si prestano benissimo alla modesta memoria di un micro. Fatto tutto in analogica risulta oltre che dispendioso anche incerto. Occorre un refresh e le celle devono lavorare su tensioni pi=F9 basse per garantire una slew-rate accettabile. Ti servono contemporaneamente 256 valori di tensione (rete neurale???)? Con un micro, due multiplexer analogici CD4067 ed un DAC risolveresti la cosa...

Piccio.

Reply to
Piccio

Il 30/01/2011 11:59, El_Ciula ha scritto:

Grazie innanzitutto della risposta. Devo caricare 256 varactor a tensioni differenti, è un progetto reale.

Attualmente per controllare le 256 celle uso 17 decoder e i decoder mi vanno a controllare i famosi switch analogici di cui vi ho parlato.

La cosa che mi avete fatto venire in mente ora, è di sostituire la linea analogica con un bus a 8 bit, ponendo poi prima di ogni varactor un DAC (con registro di mantenimento a monte e un amplificatore alla valle).

Così:

uProc -> bus 8 bit -> Registro_cella1 -> DAC -> OpAmp18V -> Varactor

Le celle non servono a "memorizzare" un'informazione, ma a mantenere delle tensioni che cambiano le caratteristiche del varactor (0V-18V). Non è possibile sostituire il varactor perché in fase progettuale è stato scelto quello in particolare per alcune sue proprietà, ed è stato già preso (20 giorni per farlo arrivare).

Quindi devo trovare il modo per portare e mantenere queste tensioni. Qualcuno conosce (arrivati a questo punto) un DAC a 8 bit, con registro di mantenimento del valore a monte (max 5V) e amplificatore a valle (0V-18V)? Siamo a frequenze di campionamento basse, ripeto, 1 kHz.

Grazie ancora

Reply to
Artemis

Il 30/01/2011 12:04, Piccio ha scritto:

Ciao e grazie anche per la tua risposta. L'ho erroneamente chiamata memoria analogica per similitudine, ma non deve memorizzare informazione, bensì dei valori di tensione che vanno a caricare dei varactor (256 varactor). Tali varactor, come già saprai, cambiano la capacità in base alla tensione applicata.

Il refresh è già previsto, è di 1 kHz ed avviene mediante 17 decoder

4:16. E' la tensione che non riesco a mantenere, poiché aumentare il refresh per 256 celle, significherebbe scegliere un microprocessore a frequenze di 300 MHz o più, tenendo conto che: 1ms / 256 = 3,9 us -> 256 kHz

un uProcessore per assegnare un valore, deve prendere tale valore dalla memoria, disattivare la cella precedente e attivare la cella successiva, e ciò richiede almeno 10-15 cicli di clock. Occorre un processore da 8 MHz almeno, già *solo* per 1 kHz di refresh (e le celle si scaricano subito).

Sperimentalmente le celle (testando il sistema in laboratorio) a 400 kHz di refresh mostrano un ripple di 100 mV (a me ne serve uno da 50 mV). Quindi 400 kHz x 256 = 102 MHz circa. 102 MHz x 10-15 cicli arriviamo al Ghz e il ripple non è sufficientemente basso.

Dunque è da trovare un sistema diverso, tenendo conto che gli switch che ho, sono digitali (e non analogici) e funzionano fino a 5 V.

L'idea che ora mi avete fatto venire in mente è:

uProc -> bus 8 bit -> Registro_cella1 -> DAC -> OpAmp18V -> Varactor

Conoscete un DAC (possibilmente in package SOIC o similare) con registro di mantenimento a 8 bit a monte e opAmp a 18 V a valle?

Le specifiche di progetto sono:

- I varactor non si cambiano e la tensione deve essere 0-18V

- 256 elementi e la griglia (in futuro dovranno essere 4096)

- La tensione su ogni elemento varia ogni 1 ms, o ancor meno (se fosse possibile).

E' il sistema che sto usando attualmente e che non funziona. Fammi capire, il micro tira fuori il valore di tensione sottoforma di bit, il DAC lo converte in analogico, i multiplexer la distribuiscono sulle celle ma... le celle si scaricano troppo velocemente.

Metterei pure un condensatore più grande in parallelo ai varactor, ma devo poter portare la tensione velocemente sia da un valore basso ad uno alto, che viceversa, in massimo 4 us (1ms / 256).

Grazie ancora

Reply to
Artemis

Artemis:

Meglio quindi un D/A e un op-amp per ogni varactor. Tieni conto che una cosa così costa poco più di un euro

formatting link
e un LM324 (4 op-amp) meno di 20 centesimi. ti occorrono anche almeno due resistenze per canale, ma, visto che saranno di due soli valori, potrai usare dei comodi array a 4 o 8 elementi, che costano poco più di una resistenza singola.

Come puoi pensare che esista un D/A senza "registro di mantenimento"?

Questo scordatelo di certo.

Reply to
F. Bertolazzi

Artemis ha scritto:

der=20

E se per ogni cella metti un buffer con uscita push-pull prima, e uno ad =

altissima impedenza e dopo? Avevo fatto un sample and hold (refresh=20

12kHz) con uno switch 4066, un condensatore e un TL081, e la tensione=20 nei 12 microsecondi che mi servivano non accennava minimamente a scendere= =2E

Claudio_F

Reply to
Claudio_F

Bertolazzi, è quello che pensavo io sin dall'inizio, prima che specificasse, ma quello che hai proposto tu non è una soluzione sensata per una risoluzione di 0,07V su 18.

Devi usare operazionali da strumentazione e resistori all'1% con bassa deriva termica, altrimenti finisce che hai tra la tolleranza del DA e errori vari valori errati in uscita anche oltre 1 step richiesto, 2 errori uno in eccesso e uno in difetto di 0,035V fanno avere 2 celle allo stesso potenziale, parliamo di una precisione non indifferente, provate a fare in percentuale quel 0,035 su 18V. Comunque se deve essere raffinata la cosa, non troverai DA con la precisione voluta nel singolo step, il consiglio è di salire in risoluzione di 2-4 volte e linearizzare via software canale per canale, ma potrebbe non essere necessario, dipende da quanto hai tu come tolleranza.

Reply to
El_Ciula

El_Ciula:

Boh, pensavo che una risoluzione di 8 bit potesse essere rispettata con componenti standard. Gli array resistivi SMD all'1% credo abbiano una tolleranza, tra le resistenze dello stesso array, dello 0,1%

Di precisione, semmai.

Credo, e ripeto credo, che il problema della deriva termica, con array in SMD della stessa serie montati abbastanza vicini tra loro sia abbastanza ridotto.

Io non ho niente. ;-)

In effetti la soluzione più economica e sensata, alla fine, potrebbe essere di usare, per ogni canale, un controller da un euro, tipo lo ATtiny24, che ha un PWM a 16 bit e un A/D a 10. Con un transistor open collector si risolverebbe il problema dei 18V (anche se non quello dello zero) e si potrebbe lasciare al controller il compito di autotararsi in continuazione.

Reply to
F. Bertolazzi

Il 30/01/2011 13:22, F. Bertolazzi ha scritto:

I costi non sono un problema.

Preferisco però un D/A con input parallelo, 0V-5V come valori di tensione per il bus. Riguardo all'output basta una sola linea, perché controllare con un ChipSelect 2 D/A diversi significa portare a spasso un'ulteriore linea di controllo, e già abbiamo 8 bit per il dato e 8 bit per selezionare le celle, non posso prendere microcontrollori/microprocessori con oltre 16 porte, diventa un casino. Mi è più facile progettare uno stadio e collegarlo ad un bus parallelo a

8 bit abilitando il D/A da un decoder.

8 bit bus

8 bit decoder 2 alimentazioni (18 e 15 V) 0 V potenziale di riferimento

ho quindi 19 linee totali.

Quello che mi sposta un pò sono gli opamp, tirar fuori 18 V single ended. Il tutto dovrebbe essere integrato, quindi nel caso degli op-amp un array andrebbe bene, conosci array di 8-16 opamp che tirano fuori 18 o più volt (meglio 20, perché c'è la saturazione della dinamica) che lavorano a frequenze del khz (meglio 10 kHz per sicurezza)??

Ci sono array di resistenze? Li trovo su farnell?

Avevo trovato sul sito della Analog Devices, a soli 4$ un opamp che nell'absolute maximum rating portava +-25V e -0.3 to 17 V per la parte digitale: AD7224

però potrei anche sbagliarmi, quei datasheet non sono comprensibili, c'erano inoltre troppi criteri da rispettare: la tensione tra Vref e Aground deve essere al più +-25 V, tra Vcc e Dground -0.3-17V, tra Dground e Aground +-17V... non si capisce una mazza.

Grazie ancora

Reply to
Artemis

Si, ma sarebbe meglio sapere dopo che ha "caricato" i varactor che poi non sono varicap???

Cosa fa il sistema a valle, mica che basta staccare un connettore ed entrare con un micro direttamente che simula il tutto, non vorrei che si torni in digitale e si faccia tutto sto giro del fumo per nulla.

Ci dicesse che è sto macchinario e cosa fa oltre da che cosa è composto.

Reply to
El_Ciula

F. Bertolazzi:

E, beninteso, evidentemente mi sbagliavo.

Nel senso che non sono l'OP.

Alimentando il tutto a 24V e tenendo la massa dell'elettronica un paio di volt sotto quella dei varicap si risolve anche il problema dello zero.

I partitori resistivi per il feedback si potrebbero ricavare da uno stesso array resistivo (ad esempio, con uno da 10k * 4 si scalano i 18V a 4,5 con una tolleranza dello 0,1% o addirittura inferiore e, credo, nessuna deriva termica). Anche qui sarebbe il caso che qualche elettronico vero confermasse le mie ipotesi.

A pensarci bene, un Tiny45 potrebbe gestire due canali. Con due array resistivi, due transistor e 4 resistenze. Un solo bus I2C o SPI permette di mandare i dati a tutti. Bisogna vedere solo la latenza accettabile.

Reply to
F. Bertolazzi

El_Ciula:

Appunto.

Reply to
F. Bertolazzi

Il 30/01/2011 13:52, Claudio_F ha scritto:

Qui però non sono 12 microsecondi ma 1 millisecondo, che è tanto.

Reply to
Artemis

Artemis:

In base a cosa lo preferisci?

Ne potresti avere solo quattro. Ma, vista la segretezza del progetto, di più non posso dire.

Mi sembra impossibile.

Qualunque op-amp ha queste caratteristiche. Se poi tieni la massa dei varicap un paio di volt più alta e alimenti gli op-amp a 24V è meglio.

A bizzeffe.

Reply to
F. Bertolazzi

Artemis:

Anche quando farai un coso con 4096 celle???

1 euro = 4096 euri. Se a te sembran pochi...

Tieni conto poi il costo degli stampati. Se devi farne uno solo per 256 canali spenderai 10 volte di più che a farne 256 da un canale solo.

Reply to
F. Bertolazzi

Il 30/01/2011 14:00, El_Ciula ha scritto:

Allora, siccome il microcontrollore avrà una lookup table del tipo:

bit -> tensione in uscita

la linearizzazione c'è di base, anche perché i varactor hanno una curva tensione-capacità non lineare, per cui siamo apposto.

Sulla risoluzione ti dò assolutamente ragione. Troviamo DAC a 10 bit con tensione sul registro di 5 V?

Vorrei cercare di creare la catena:

uP -> bus -> D/A -> OpAmp -> Varactor

che mi sembra anche la più semplice, al momento. Se ci riusciamo entro oggi (Dio piacendo), già lunedì ordino i componenti.

Se l'output del D/A è a 15 V, alla fine basta introdurre un opamp con guadagno molto basso (1.2) e data la risoluzione scelta, siamo ok. Ripeto, sui varactor il passo di tensione accettabile è 100 mV (almeno attualmente).

E visto che mi chiedete anche cosa c'è dopo il varactor: una linea a microonde, che però è isolata dal resto del circuito digitale. Le onde vedono il varactor ma non vedono la linea digitale (c'è uno stub particolare che isola la radiofrequenza). Allo stesso modo, la linea digitale vede solo il varactor perché quella a microonde è una linea a circuito aperto.

Reply to
Artemis

Il 30/01/2011 15:08, F. Bertolazzi ha scritto:

Tieni presente che la struttura che andiamo a sostituire attualmente costa intorno al milione di euro. Questa abbatte i costi di un fattore

1000, 4096 euri sono pochi :)
Reply to
Artemis

Artemis:

In questo caso ti occorre una risoluzione assai maggiore. Oppure, in realtà, sono molti meno i valori che ti interessano?

Con tutto il rispetto per El_Ciula e Claudio_F, non ordinerei nulla senza la benedizione di Franco oppure lowcost, dalai lamah o SB. Se proprio fossi disperato mi accontenterei anche di un Piccio. ;-) E poi ci sono altri guru che però si vedono di rado.

A che scopo fare una cosa simile? Un guadagno 4 è più facilmente ottenibile e ti permette di usare un comune D/A a 5 V.

Il PWM del tiny45 è a 16 bit.

Cos'è, un'antenna direzionale?

Reply to
F. Bertolazzi

Artemis:

Essì che allora ti diamo consigli a grati. ;-)

Reply to
F. Bertolazzi

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.