Memoria analogica

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

Si ma io sono un tesista, non guadagno na mazza :D

Reply to
Artemis
Loading thread data ...

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

Sono tutti i valori che interessano.

Franco lo conosco da anni, almeno qui sul newsgroup, ma tali persone si collegano di rado ed entro la fine della prossima settimana devo aver già tutto in mano. In linea di massima ordino solo i componenti per uno stadio e vedo come si comportano, al massimo spendo 20-30 euro ma non è un problema.

Effettivamente se in ingresso ho un bus 0-5V e in uscita un segnale analogico da 0 a 5V, con un guadagno di 4 sto apposto. Potrebbe però venir fuori qualcosa di troppo sensibile, perché il passo della 5V in uscita è di 4,88 mV (con 10 bit di risoluzione), cioè quasi 1/5 della tensione termica di un semiconduttore (circa 25 mV). Se ci aggiungiamo l'errore del convertitore (1-2 LSB) e la tolleranza delle resistenze... tutto moltiplicato per un guadagno di 4... viene fuori un macello.

Lo svantaggio è che devi andarti a programmare 256 microprocessori, non è cosa, serve una soluzione semplice e agevole, integrati da mettere in cascata da controllare digitalmente.

Un'altro svantaggio di un D/A seriale è la sincronizzazione. Quando vado a riprogrammare la lookup table del microprocessore per poi riprendere a "scrivere" sui varactor, dovrei azzerare lo shift register di ogni D/A, quindi occorre un'altra linea da sparpagliare in 256 varactor. Poi ancora, 10 bit da trasmettere per 256 linee sono 2560 campioni al secondo da scrivere ogni ms, una frequenza di 2.56 MHz, senza contare il problema che per leggere dalla memoria i valori e settare la linea del bus (abilitando e disabilitando le celle) occorrono 10-15 cicli di clock

-> 25-30 MHz di microprocessore... è già troppo complicato per una roba di solo 1 KHz, quando con qualche euro in più, ho solo un bus da 10 bit,

8 bit di indirizzo, 2 linee di alimentazione e una linea di riferimento (0V).

No, tutt'altro. E' qualcosa che non c'è in letteratura attualmente, la soluzione da 1 milione viene utilizzata per scopi militari ed è realizzata con una tecnologia costosa. Perciò non posso dirvi più di tanto. La parte a microonde la stanno svolgendo altre persone molto più capaci, mentre la parte digitale è di mia pertinenza.

Tra l'altro ho acquistato dei decoder molto veloci, ma con uscita "negata", il ché significa che il write enable del D/A è preferibile averlo negato (High -> non scrivere, Low -> Scrittura abilitata), ond'evitare di acquistare delle porte "not" che ritardano ulteriormente il segnale (e ingombrano).

Reply to
Artemis

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

Un'altro svantaggio di un D/A seriale è la sincronizzazione. Quando vado a riprogrammare la lookup table del microprocessore centrale per poi riprendere a "scrivere" sui varactor, dovrei azzerare lo shift register di ogni D/A, quindi occorre un'altra linea da sparpagliare in 256 varactor. Poi ancora, 10 bit da trasmettere per 256 linee sono 2560 campioni ogni ms, una frequenza di 2.56 MHz, senza contare il problema che per leggere dalla memoria i valori e settare la linea del bus (abilitando e disabilitando le celle) occorrono 10-15 cicli di clock ->

25-30 MHz di microprocessore... è già troppo complicato per una roba da 1 KHz soltanto, quando con qualche euro in più, ho solo un bus da 10 bit, 8 bit di indirizzo, 2 linee di alimentazione e una linea di riferimento (0V).

Tra l'altro ho acquistato dei decoder molto veloci, ma con uscita "negata", il ché significa che il write enable del D/A è preferibile averlo negato (High -> Scrittura off, Low -> Scrittura on), ond'evitare di acquistare delle porte "not" che ritardano ulteriormente il segnale (e che danno ingombro).

Reply to
Artemis

Artemis:

Ma non avevi giustamente detto che i varicap non sono lineari?

Lascia una riga prima tra il testo a cui rispondi e il tuo.

Beh, in un certo senso hai già tutto in mano, se capisci la battutaccia.

E io pago...

Appunto per ciò la soluzione migliore è di avere un processore per ogni canale.

Che problema c'è? una volta che il software è a punto, basta programmare i processori. Ci metti meno tempo che a saldarli.

Così facendo metti in cascata errori, rumori, lunghezza delle linee e chi più ne ha ne metta.

Uh? Perché dovresti riprogrammare la lookup table? Potresti almeno dirci qual'è la latenza accettabile? Devi cambiare il valore di tutti i varicap ogni millisecondo?

Se utilizzi 256 ATtiny25 e li colleghi tramite un paio (o più) bus I2C o SPI potrai spedire dati, in teoria, a qualche MHz, senza preoccuparti di altro.

Infatti farei otto o sedici bus. Il controller principale butta fuori lo LSB degli otto byte da trasmettere, toggla il clock, shifta di un bit gli otto byte da trasmttere e ripete quanto sopra otto volte.

In questo modo devi trasmettere 320 bit al millisecondo, 320 kHz. Le istruzioni di cui sopra, se svolte (non ha senso fare un for(;;)), sono una trentina, quindi anche la CPU non deve essere troppo veloce.

Qualche euro per niente, deviu fare uno stampato solo e questo ti costerà più dei componenti. Meglio 256 schedine uguali.

Per farci cosa? Per abilitare i vari multiplexer? Hai tenuto conto del settling time di queste lunghe liee che avranno una capacità non trascurabile? Secondo me il tuo approccio non funzionerà mai.

Reply to
F. Bertolazzi

Artemis:

T'è partito un post extra. :D

A proposito, immagino che i varicap vadano montati secondo una geometria ben precisa. Ce la descrivi?

Reply to
F. Bertolazzi

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

Ho scritto che i varactor hanno una curva C-V "non-lineare" ma la lookup table (già prevista), linearizza la curva. Se voglio una capacità di X pF, assegno la tensione Y al varactor.

No non l'ho capita.

Di tasca mia purtroppo.

Ok, vediamo.

La lookup table è fissa, ma va riprogrammata la configurazione dei varactor. Esempio: voglio che tutti i primi 50 varactor in alto abbiano una capacità di 15 pF, mentre i restanti devono averla di 10 pF. La lookup table è la stessa (assegno C ottengo V), ma la tabella che specifica che i primi 56 varactor devono avere una tensione di 12 V e i restanti una tensione di 17.2 V viene aggiornata da computer.

La tensione sui singoli varactor varia ogni 1 ms, ma posso cambiare la tabella della configurazione dopo un giorno o dopo un'ora o dopo 2 minuti, e ogni qual volta la cambio, usando un sistema seriale dovrei resettare tutte le celle e risincronizzarmi.

Sarò tardivo ma non devi sempre sincronizzare? Cioè mettiamo caso che il microprocessore centrale, selezioni l'ATTiny25 della cella 1, mettendo un suo pin a 5V.

Poi inizia sequenzialmente a mandargli 10 bit.

L'ATtiny25 dovrebbe accorgersi del pin a 5V e successivamente iniziare a ricevere i dati. I due devono essere sincronizzati, perché basta che il uP sia più veloce di poco e già manda li 8 bit quando l'ATtiny ancora non ha iniziato la lettura.

Voglio evitare questi casini. Tra l'altro poi, l'ATTiny poi che output mi produce una volta ricevuti i 10 bit? Tira fuori una tensione analogica da 0 a 5 V? Io ho letto che ha un ADC a 10 bit, non un DAC.

Devo trasmettere 10 bit per ogni cella per 256 celle per ogni ms, quindi

2560 bit al millisecondo, 2.56 MHz.

No multiplexer non ce ne sono. I 16 decoder 4:16 sono su ogni riga della griglia. Con il 17esimo decoder 4:16 controllo i 16 decoder precedenti.

Quindi con 8 bit il microprocessore abilita le singole celle con un segnale "basso" (0 V), e tutte le altre linee dei decoder sono a 5V.

Così evito le sincronizzazioni dei multiplexer, perché quando il processore ha preso i valori dalla memoria, ed è pronto per scrivere su una cella, seleziona la cella con i decoder e abilita il primo la scrittura.

Non sono un problema le lunghezze delle linee, perché ogni ritardano al più di qualche decina di nanosecondi, ma già i decoder in cascata e l'opamp ritarda di 3-400 ns, quindi è tutto ok.

Reply to
Artemis

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

I varactor sono montati sulla linea a microonde, che sta su un layer a parte. La scheda elettronica dovrebbe poi essere eventualmente appoggiata su quella dei varactor, come si fà con i processori dei vostri computer. Avrei pensato però di porre dei pin sulle linee che alimentano i varactor, pin che si incastrano in alcuni zoccoli posti sulla scheda digitale (come i zoccoletti dei package DIP), così da venire una struttura a sandwitch. Dalla scheda digitale poi porto fuori l'alimentazione a 20 V e il bus per riprogrammare il microprocessore.

Cioè alla fine del lavoro, io devo controllare da computer la tabella di configurazione del microprocessore e poter assegnare una tensione fissa ad un varactor, come se scrivessi un valore in memoria. La tensione può essere variabile da 0 a 18V a passi di 100 mv, tolleranza 50 mV.

Reply to
Artemis

Artemis:

Ottimo. A che distanza sono tra loro i varicap?

Non capisco cosa tu intenda per "tabella di configurazione". Intendi dire una tabella con i livelli di tensione di tutti i varicap?

In pratica vorresti ttrasmettere da un PC i valori di tensione dei varicap? Via USB?

Reply to
F. Bertolazzi

Artemis:

Quindi o non ti interessano tutti i valori o ti serve una risoluzione maggiore sul D/A. Di qui non si scappa. Intendi forse dire che la linearizzazione viene fatta a monte, su di un PC?

Insomma, quanti sono i valori "iniziali", ovvero prima della tabella di linearizzazione?

Quindi non è una look-up table, ma semplicemente un vettore di valori.

Ok, quindi non ti serve spedire tutti i dati ogni millisecondo.

No, si collegano in cascata. In questo modo, se vuoi, puoi usare un'altra linea (per un totale di tre) puoi variare tutti i valori di tutti i varicap contemporaneamente.

A questo serve la linea di clock di I2C e SPI.

E un PWM a 16 bit (il 45). Che, una volta flitrato, è un DAC a 16 bit.

No, avendo 8 linee seriali ad ognuna delle quali sono collegati solo 32 processori, hai 320 kHz.

Scusa, ma che interruttori analogici conteresti di usare? Vuoi mandare l'uscita di un A/D a 256 switch analogici???

Non hai tenuto conto del tempo che occorre a caricare e scaricare la capacità di input degli switch analogici.

Reply to
F. Bertolazzi

Il 30/01/2011 15.24, F. Bertolazzi ha scritto: [...]

povero Piccio :-o

ah, qui si parla di me :-o :-o :-o :-D

--
Ogni problema complicato ha una soluzione semplice...per lo piu` sbagliata
[cit. Franco, i.h.e. 20.01.2007]
Reply to
PeSte

Il 30/01/2011 17:19, F. Bertolazzi ha scritto:

Questo non te lo sò dire, perché se ne sta occupando un gruppo di ricercatori, tra l'altro il varactor non sarà l'unico componente attivo. Io devo occuparmi solo di questo, il resto agli altri.

Si, ma non sarà una tabella fissa. Caricherò una solta di filmato, saranno tante tabelle di 256 valori, che cambieranno come le immagini di uno screen saver.

Ecco, ogni tanto sarà necessario cambiare "filmato".

Non via USB, ho previsto un sistema embedded, il tutto viene trasmesso via ethernet (i sistemi embedded hanno il DHCP che assegna loro un indirizzo di rete in automatico). Alla fine questo "filmato" lo caricherò nella memoria dal browser del PC. Figo eh?

Reply to
Artemis

"Artemis" ha scritto nel messaggio news:4d456f4c$0$2056$ snipped-for-privacy@reader1.news.tin.it...

Perdonami la schiettezza, mi son letto tutto...

O ti sbottoni e dici che cavolo c'è dopo i varicap, oppure su ti si propongono delle soluzioni, o se ne discute e si riesce in gruppo (anche perchè è un gruppo) a concludere qualcosa oppure non serve a nessuno e meno di tutti a te. Se ti si dicono delle cose e poi spari la tua soluzione ogni volta non è elegante, o lo fai nella mente o diventa poco interessante, almeno per me.

A mio avviso sempre schiettamente non ti servono manco sti 256 "condensadiodi".

Hai detto che li hai ordinati, quindi non è roba custom o un substrato nanotecnologico bio-semiconduttore a che servono i varicap? Cioè che fai una volta che la loro giunzione ha una certa capacità?

Io poi di aiutare ente o privato legato al governo giapponese non ho molta voglia, senza interesse reciproco.

Reply to
El_Ciula

PeSte:

Non stiamo parlando nè di switcher né di sci. ;-) Scherzi a parte, non ho idea di come tu te la cavi con operazionali e roba simile.

Reply to
F. Bertolazzi

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

gnè gnè...ormai è tutto finito (anche lo speck)...da domani si ricomincia con i colloqui...ben tre in un giorno :-o

a parte qualche filtrino anti aliasing qua e là e uno stadio 4-20mA non ho fatto altro...

--
Ogni problema complicato ha una soluzione semplice...per lo piu` sbagliata
[cit. Franco, i.h.e. 20.01.2007]
Reply to
PeSte

Il 30/01/2011 17:37, El_Ciula ha scritto:

Non hai letto tutto, ho scritto che c'è una linea a microonde che è elettromagneticamente già disaccoppiata, ed è una linea a circuito aperto. Per cui, quello che tu vedrai è un varactor da portare ad una certa tensione. Tale tensione cambia ogni 1ms, e tra un ms e l'altro deve essere mantenuta.

Ma questo lo so, non ho sparato alcuna soluzione. Ho sottolineato un problema alla soluzione proposta, nient'altro.

Una volta che si ha una certa capacità, questa capacità ripercuote un effetto sulla linea a microonde che a sua volta provoca un ulteriore effetto. Inutile stare qui a spiegare, perché non so nel dettaglio come funziona. Quello che sò (e che devo portare a termine) è che le spiecifiche di progetto impongono quei varactor, tensione 0V-18V a passo di 0.1 V, la tensione varia ogni ms e tra un ms e l'altro deve essere mantenuta. Stop. Via alle soluzioni.

L'indirizzo email è casuale, sono Italiano quale Giappone.

Reply to
Artemis

El_Ciula:

Nah, kusanagi.jp.gov é evidentemente falso, dato che il dominio gov è allocato al governo USA. Forse c'è un gov.jp, ma non è la stessa cosa.

Se poi googli kusanagi vedi che è il nome di una qualche spada di un qualche eroe giapponese o cinese.

La propulsione manetoidrodinamica è invece roba da modellisti o scienziati dilettanti, non scala fino a dimensioni "reali".

Reply to
F. Bertolazzi

F. Bertolazzi:

Di un D/A, chiaramente.

Reply to
F. Bertolazzi

Il 30/01/2011 17:34, F. Bertolazzi ha scritto:

Risoluzione: 10 bit. E' stata già ricavata la corrispondenza V -> C sperimentalmente. Nel processore inseriremo solo una mappa di byte, ad ogni byte corrisponde una tensione da assegnare.

????

Il vettore di valori va nel processore. La lookup table mi permetterà di passare dal valore che voglio di capacità, al valore di tensione corrispondente da assegnare.

Ok calma, mi hai fatto nascere un dubbio allucinante. Per come avevo pensato la cosa:

Tempo 0 s -> Inizio ad aggiornare il primo varactor

Tempo 0.001 -> Ho aggiornato tutti e 256 varactor e ri-aggiorno il primo varactor

dovrebbe essere l'analogo di ciò che fa una scheda video no? Non so se però una volta aggiornati tutti i varactor c'è da mantenere tale configurazione per un certo tempo.

Allora, facciamo così, scrivimi esattamente cosa hai in mente, in maniera lineare, perché ora tra i tanti messaggi, e le tante soluzioni, non riesco più a capire.

Spiegami bene la tua soluzione, come lavorerebbe.

Quindi c'è da inserire anche un filtro attivo del primo ordine nell'opamp, con guadagno 4 all'uscita dell'ATtiny?

No, c'era una sola linea analogica, dei decoder digitali e degli switch digitali. Il microprocessore impone ad esempio 15 V sulla linea analogica, abilita lo switch digitale (on-off) della prima cella e tale switch una volta attivo fa passare i 15 V. Poi il microprocessore chiude lo switch, cambia la tensione sulla linea analogica, attiva lo switch della seconda cella e la tensione passa etc. etc.

Lo switch ha bassa resistenza in ON e alta impedenza in OFF. Ma l'alta impedenza è "troppo bassa" e la capacità si scarica. Inoltre ho scoperto che lo switch fa passare al massimo 5 V e non 18V, quindi fiasco.

Ne ho tenuto conto, fan-in e fan-out con i decoder sono 1 al massimo 2 e il segnale si propaga lo stesso velocemente.

Dai spiegami la tua soluzione seriale, chissà riusciamo per stasera

Reply to
Artemis

Artemis:

Quindi non più otto, o 181 valori come dicevi all'inizio. Francamente queste variazioni in corso d'opera mi infastidiscono parecchio.

Di quanti elementi è composta la tabella di linearizzazione? Da quanto dici qui direi che sono 256 valori da 10 bit. O no?

Perché metterla sul processore principale? Per mandare in giro dati in formato a 10 bit e complicarsi inutilmente la vita?

Informati.

Ok, appena mi dici se in realtà devi aggiornarli tutti insieme e qual'è il tempo massimo di latenza, ovvero tra quando dai il comando di modificare la tensione di uno o più varicap e quando varia la tensione stessa. Dalla descrizione che hai fatto fin'ora mi pare di capire che potrebbe anche essere di qualche secondo.

Non metterei nessun opamp, ma semplicemente un transistor che scarica un condensatore che viene caricato da una resistenza. Il tutto ad una frequenza di 7,8 kHz (per 10 bit) o meno (dimezzi la frequenza per ogni bit di risoluzione in più).

Sì, ma questi 15 V li devi mandare a *tutti* e 256 gli switch. Switch che non sono certo digitali, visto che devono far passare una tensione compresa tra 0 e 18V.

Reply to
F. Bertolazzi

F. Bertolazzi:

Quindi, in effetti, meglio uno o due filtri RC (dipende dalla velocità a cui vuoi arrivare al nuovo valore) e l'op-amp.

Purtroppo l'ideale sarebbe usare un attiny25 che, col suo PLL, ti permette una frequenza PWM di ben 100 kHz, ma solo per 8 bit.

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.