Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Convertitore A/D ad inseguimento - Missing code

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto UtenteDirtyDeeds, Foto UtenteIsidoroKZ, Foto Utenteg.schgor, Foto UtenteBrunoValente

3
voti

[1] Convertitore A/D ad inseguimento - Missing code

Messaggioda Foto UtenteGOpamp » 18 mag 2019, 17:36

Buon sabato a tutti voi del forum! Ho progettato, per un' esperienza didattica, il convertitore A/D ad inseguimento mostrato in figura:


Vi spiego brevemente...
Il segnale analogico in ingresso Va ha una dinamica compresa fra 0V e +5V, quindi il DAC deve uscire con quella dinamica. La frequenza del segnale di ingresso è bassa (max 100Hz). La frequenza di clock, da specifiche, è 10kHz. La rete R/2R è stato progettata in modo che la resistenza di uscita del counter (non lineare, ma si aggira sulle poche centinaia di ohm) fosse trascurabile. Il dynamic adapting, adatta più o meno bene l'uscita del comparatore ai livelli (0V,+5V ) di Up/Dwn del counter.

La transcaratteristica del ADC ottenuto è questa:
ADC_transfer_function_oscillation_regions_FINAL.png


La transcaratteristica è stata rappresentata considerando il comportamento reale del convertitore: nell'intervallo analogico 0 (da pochi millivolt a circa 0.3V) il numero digitale in uscita oscilla tra 0000 e 0001, e così via.


DOMANDA: vorrei modificare il circuito in modo da ottenere un missing code NON AGLI ESTREMI, ad esempio fra 5 e 6. Quindi vorrei che nell' intervallo analogico 5 (inizio a contare da 0), l'uscita digitale oscilli fra 0101 e 0111.
Avatar utente
Foto UtenteGOpamp
40 4
 
Messaggi: 38
Iscritto il: 11 dic 2018, 23:00

0
voti

[2] Re: Convertitore A/D ad inseguimento - Missing code

Messaggioda Foto UtenteMarcoD » 21 mag 2019, 8:53

Il diagramma transcaratteristica mi pare errato, oppure lo intendo in modo differente:
Nel diagramma transcaratteristica la variabile indipendente, la tensione in ingresso varia in modo continuo, per ogni valore il valore numerico dell'uscita varia continuamente di 1 bit ( e alle volte di +/- 1 bit), quindi i segmenti degli intervalli dovrebbero essere in verticale.

Il progetto pare funzionante, si possono introdurre varianti/migliorie.
Fino ad ora lo hai solo disegnato o anche simulato?, di sicuro non ancora montato e provato?

Il dinamic adapter funziona, ma se adoperassi un comparatore ad open collector potresti farne a meno. Oppure realizzi la traslazione di livello con uno zener da 4,7 V e un resistore.

Il doppio stadio invertente nel feedback pare funzionalmente inutile (l'impedenza di ingresso del comparatore è >> 22 kohm), collega direttamente la rete al comparatore. risparmi e guadagni in velocità di risposta.

Qunto al missing code, se ho ben capito, potresti centrare il tutto con una regolazione di offset e guadagno ( un potenziometro e un ressitore variabile). Se tu numerassi resistori e integrati potrei indicarti dove.

Per la lettura del valore numerico dal contatore da parte di un microprocessore?,
forse è necessario un consenso alla lettura di segnale di dato stabile, oppure di un circuito latch,
ma sono poco competente.

Forse nel seguito della giornata rielaborerò lo schema, ora non ho tempo.
Poi anche io posso sbagliare, hanno passato anni a studiare i circuiti migliori per un convertitore A/D.
O_/
Avatar utente
Foto UtenteMarcoD
6.332 4 8 13
Master EY
Master EY
 
Messaggi: 2531
Iscritto il: 9 lug 2015, 16:58
Località: Torino

0
voti

[3] Re: Convertitore A/D ad inseguimento - Missing code

Messaggioda Foto UtenteGOpamp » 21 mag 2019, 13:57

Ciao Foto UtenteMarcoD :-)
Il diagramma transcaratteristica mi pare errato, oppure lo intendo in modo differente:
Nel diagramma transcaratteristica la variabile indipendente, la tensione in ingresso varia in modo continuo, per ogni valore il valore numerico dell'uscita varia continuamente di 1 bit ( e alle volte di +/- 1 bit), quindi i segmenti degli intervalli dovrebbero essere in verticale.

Sulle ascisse ho il segnale analogico in ingresso all'ADC mentre sulle ordinate il numero digitale rispettivamente convertito. Supponiamo che in ingresso abbia un valore costante di tensione (nella dinamica del convertitore), dopo un certo tempo di conversione, l'uscita digitale avrà un ripple di 1LSB. Questo per ogni valore di tensione. Quindi l'idea è: per il bound analogico i-esimo in uscita avrò un ripple fra Di e Di+1 (D numero digitale in uscita).
Non so se ho reso l'idea..

Il progetto pare funzionante, si possono introdurre varianti/migliorie.
Fino ad ora lo hai solo disegnato o anche simulato?, di sicuro non ancora montato e provato?

È un progetto alla buona, lo so. Funziona, è stato montato e provato.

Il doppio stadio invertente nel feedback pare funzionalmente inutile (l'impedenza di ingresso del comparatore è >> 22 kohm), collega direttamente la rete al comparatore. risparmi e guadagni in velocità di risposta.

È stato fatto solo perché il DAC esce tra 0V e -5V e a me serve da 0V a +5V.

Qunto al missing code, se ho ben capito, potresti centrare il tutto con una regolazione di offset e guadagno ( un potenziometro e un ressitore variabile). Se tu numerassi resistori e integrati potrei indicarti dove.


Ecco :D

Per la lettura del valore numerico dal contatore da parte di un microprocessore?,
forse è necessario un consenso alla lettura di segnale di dato stabile, oppure di un circuito latch,
ma sono poco competente.

Ripeto è didattico, non lo abbiamo collegato ad un micro. L'esercizio era semplicemente vedere che tutto funzionasse più o meno bene, ma io vorrei capirci di più. Questo convertitore penso che così sia insfruttabile: credo ci voglia una logica (combinatoria forse) in uscita al dato digitale per associare ad ogni ripple un solo valore digitale. Ad esempio, quando oscilla fra 0 e 1 gli associo 0 o 1.
Avatar utente
Foto UtenteGOpamp
40 4
 
Messaggi: 38
Iscritto il: 11 dic 2018, 23:00

0
voti

[4] Re: Convertitore A/D ad inseguimento - Missing code

Messaggioda Foto UtenteMarcoD » 21 mag 2019, 14:18

@GOpamp,
È stato fatto solo perché il DAC esce tra 0V e -5V e a me serve da 0V a +5V.
:?:
Nello schema il contatore è alimentato fra 0 e +5 V, l'uscita rete ladder è fra 0 e quasi +5 V
Ci sono due stadi invertenti in cascata.
E' vero l'uscita numerica balla sempre di 1 bit, è tracking.
Per aggiornare il valore basta un colpo (o due di clock), se fosse un convertitore ad approssimazioni successive ogni volta ripartirebbe da capo e impieghertebbe più tempo. O_/
Avatar utente
Foto UtenteMarcoD
6.332 4 8 13
Master EY
Master EY
 
Messaggi: 2531
Iscritto il: 9 lug 2015, 16:58
Località: Torino

0
voti

[5] Re: Convertitore A/D ad inseguimento - Missing code

Messaggioda Foto UtenteMarcoD » 21 mag 2019, 17:39

Questa è la mia versione:


non ho controllato la polarità del comando up/down, nel caso sfavorevole serve una inversione logica.
Avatar utente
Foto UtenteMarcoD
6.332 4 8 13
Master EY
Master EY
 
Messaggi: 2531
Iscritto il: 9 lug 2015, 16:58
Località: Torino

0
voti

[6] Re: Convertitore A/D ad inseguimento - Missing code

Messaggioda Foto UtenteGOpamp » 21 mag 2019, 19:39

Nello schema il contatore è alimentato fra 0 e +5 V, l'uscita rete ladder è fra 0 e quasi +5 V
Ci sono due stadi invertenti in cascata

Un convertitore D/A basato su rete a scala (counter driven) ha questa topologia circuitale:

in modo tale da avere correnti uguali alla metà della corrente del ramo precedente (I_Q3=2*I_Q2=4*I_Q1=8*I_Q0).
La Vo in uscita, nel mio caso, varia da 0V a -5V. Per questo motivo ho aggiunto uno stadio invertente successivo.

Ma il punto non è questo.. il problema è generare un missing code..
Io ho generato un missing code tra 0111 e 1000, e cioè in uscita ho tutte le oscillazioni (fra 0/1, fra 1/2,...14/15), eccetto quella fra 7/8. L'ho ottenuto semplicemente creando UN SOLO errore di non monotonicità nel DAC aumentando la R8 da 44k a 56k in modo da avere meno corrente in quel ramo quando si attiva(così facendo riduco anche la dinamica di ingresso del convertitore).

Ora mi chiedo:
1)Errore di non monotonicità <=> missing code??
2)Se volessi generare un missing code solo fra 5/6??

Ripeto, è una esperienza didattica.

P.S. Diminuendo invece la R8, si riesce a diminuire la dinamica di uscita: il numero digitale (4 bit) D non varierà più fra 0 e 15 ma fra 0 e qualcosa minore di 15 in base al valore R8.
Avatar utente
Foto UtenteGOpamp
40 4
 
Messaggi: 38
Iscritto il: 11 dic 2018, 23:00

0
voti

[7] Re: Convertitore A/D ad inseguimento - Missing code

Messaggioda Foto UtenteMarcoD » 22 mag 2019, 6:54

Codice: Seleziona tutto
Diminuendo invece la R8, si riesce a diminuire la dinamica di uscita: il numero digitale (4 bit) D non varierà più fra 0 e 15 ma fra 0 e qualcosa minore di 15 in base al valore R8.

Non ho capito. Riducendo R8 aumenta il gradino, ma il numero digitale rimane sempre di 4 bit.


Quale è la R8 ?, non è indicata nello schema.
E' la R in serie all'uscita Q3 ?
Le tue deduzioni sono corrette.
Se aumenti la R in serie a Q3 il suo contributo di corrente diminuisce e passando da 111 a 1000 si crea un gradino più basso o mancante.
Nel caso di Resistenza interna dei Q non trascurabile, proprio per uniformare i contributi,
facendo a vedere a ogni generatore Q la stessa resistenza di carico di 66 kohm, metterei
in serie all'operazionale invertente una R da 44 kohm, si dimezza la corrente/tensione, ma tanto si compensa con la Rf.
O_/
Avatar utente
Foto UtenteMarcoD
6.332 4 8 13
Master EY
Master EY
 
Messaggi: 2531
Iscritto il: 9 lug 2015, 16:58
Località: Torino

0
voti

[8] Re: Convertitore A/D ad inseguimento - Missing code

Messaggioda Foto UtenteGOpamp » 22 mag 2019, 12:36

Diminuendo invece la R8, si riesce a diminuire la dinamica di uscita: il numero digitale (4 bit) D non varierà più fra 0 e 15 ma fra 0 e qualcosa minore di 15 in base al valore R8.

Effettivamente mi sono espresso male, scusa Foto UtenteMarcoD.
Se ho progettato il mio adc considerando un ingresso analogico che varia fra 0V e +5V, quando diminuisco la R8 (che sarebbe quella sul ramo MSB) allora riuscirò a convertire (male perché ad una certa avrò un intervallo analogico grandissimo) il segnale di ingresso con meno numeri digitali. Non so se mi sono spiegato benissimo :)
Avatar utente
Foto UtenteGOpamp
40 4
 
Messaggi: 38
Iscritto il: 11 dic 2018, 23:00

0
voti

[9] Re: Convertitore A/D ad inseguimento - Missing code

Messaggioda Foto Utentebrabus » 22 mag 2019, 14:23

GOpamp ha scritto:(…)
DOMANDA: vorrei modificare il circuito in modo da ottenere un missing code NON AGLI ESTREMI, ad esempio fra 5 e 6. Quindi vorrei che nell' intervallo analogico 5 (inizio a contare da 0), l'uscita digitale oscilli fra 0101 e 0111.


Ottimo lavoro, anche con FidoCad! :ok: :ok: :ok:

Riguardo la tua domanda, io intravedo una soluzione a porte logiche discrete, che generi B0 in base alla tabella combinatoria degli altri 3 bit. Dovresti cavartela con una manciata di porte in tutto. È fattibile o stai cercando una soluzione analogica?
Alberto.
Avatar utente
Foto Utentebrabus
18,5k 3 11 13
G.Master EY
G.Master EY
 
Messaggi: 2606
Iscritto il: 26 gen 2009, 15:16

0
voti

[10] Re: Convertitore A/D ad inseguimento - Missing code

Messaggioda Foto UtenteGOpamp » 22 mag 2019, 20:53

Ottimo lavoro, anche con FidoCad! :ok: :ok: :ok:

Grazie mille Foto Utentebrabus :lol:

(...) una soluzione a porte logiche discrete (...)

Io stavo cercando di trovare un modo per ottenerlo fra 5/6 (o in generale fra i/i+1) modificando solo il valore delle resistenze in modo opportuno, ma pare non così semplice. Non vedo una strada per creare un errore di non monotonicità nel DAC SOLO fra 5/6, e quindi un missing code solo fra 5/6 (se è vero che non monotonicità DAC <=> missing code ADC, ma credo di si).
Tu dici di creare una rete combinatoria fra uscite del counter e ingressi della ladder network?
Avatar utente
Foto UtenteGOpamp
40 4
 
Messaggi: 38
Iscritto il: 11 dic 2018, 23:00

Prossimo

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Google Adsense [Bot], Foto UtenteIsidoroKZ e 17 ospiti