Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

8
voti

Level shifter passivi e attivi

In questo periodo sto lavorando con l'ADC di un micro e ovviamente mi sono trovato nella condizione di dover interfacciare segnali di ingresso aventi intervalli di escursione che non rientrano nel canonico intervallo 0 - Vref (dove Vref è la tensione di riferimento per l'ADC); in pratica l'ADC converte il segnale d'ingresso Vin in modo che per 0 \le Vin \le V_{ref} viene generato un valore digitale compreso tra 0 e 4095 se consideriamo un ADC a 12 bit.
Ovviamente in tali casi è praticamente d'obbligo pensare di utilizzare uno o più op-amp per condizionare in maniera opportuna il segnale da convertire, ovvero traslarlo di livello, amplificarlo ecc..
Vi sono però dei casi in cui un op-amp non è assolutamente necessario: se l'escursione del segnale è maggiore dell'escursione massima richiesta in ingresso all'ADC, sarà sufficente una semplice rete resistiva come quella illustrata di seguito per ottenere il risultato voluto.

Supponiamo di avere un segnale con escursione tra -20 V e + 20 V e di volerlo far rientrare nel range 0 - 5 V del micro; è un caso abbastanza comune, e ancora più comune sarebbe un range 0-3.3 V per i micro più recenti.

Ricaviamo l'espressione per Vo:


V_o = \frac{V_i\cdot R_1\cdot R_2 + 5\cdot R_i\cdot R_2}{R_1\cdot R_2 + R_i\cdot R_1 + R_i\cdot R_2}

Ho volutamente omesso i passaggi intermedi, che lascio come esercizio per gli studenti; di fatto tale circuito è forse poco utilizzato perché richiede un po' di manipolazioni algebriche (e un sistema di due equazioni in due incognite per il caso più generale, come vedremo in seguito) e molti progettisti diventano, diciamo, "pigri" quando si tratta di fare qualche sforzo in più...

Risolviamo l'espressione precedente in termini di R1 e R2:


R_1 = \frac{\left( V_o-5 \right)\cdot R_i\cdot R_2}{V_i\cdot R_2 - V_o\cdot\left(R_i + R_2 \right)} \quad (1)


R_2 =\frac{V_o\cdot R_1\cdot R_i}{V_i\cdot R_1+5 \cdot R_i - V_o \cdot\left(R_i + R_1\right)} \quad (2)

Supponiamo inoltre che Ri sia nota; la possiamo anche imporre noi a un valore noto se il generatore Vi ha una resistenza interna molto bassa (decine di ohm o anche meno, se nel caso di un op-amp), l'importante è che abbia un valore congruo. Per il nostro caso imponiamo R_i = 4.7 \, k\Omega.


La prima cosa interessante da notare è che se si desidera V_o=0\,V quando Vi è al suo minimo, come −20V, allora è possibile risolvere la (1) per R1 senza dover conoscere R2 perché si riduce in questo modo:


R_1 = \frac{\left(0-5\right)\cdot R_i\cdot R_2}{V_i\cdot R_2 - 0\cdot\left(R_i + R_2\right)}


= \frac{-5 \cdot R_i\cdot R_2}{V_i\cdot R_2}


= -5 \, \frac{R_i}{V_i}

E questo è un risultato piuttosto interessante!

Finché V_{imin} < 0 \,V, si può ottenere un valore realistico di R1 senza preoccuparci di R2, solo nel caso particolare in cui V_o= 0 \,V.

Avendo quindi R_i=4.7 \,k\Omega e V_{imin}= {-20} \,V, segue che R_1=1.175 \,k\Omega.

Facile no? E ora che conosciamo R1, possiamo usare l'espressione (2) per ricavare R2, nel caso in cui V_{imax}=+20 \,Vottenendo R_2=1.56 \,k\Omega.

Se usiamo dei valori standard per i resistori, R_1 = 1.2 \,k\Omega e R_2 = 1.5 \,k\Omega, otteniamo 
V_o\approx -51\ \textrm{mV} quando Vi = − 20V e V_o\approx 4.9\textrm{V} quando Vi = 20V.

La resistenza complessiva "vista" da Vi vale:


R'_i = R_i + R_1\vert\vert R_2

nel nostro caso, 
R_L \approx 5.36\,k\Omega



Una soluzione generale

Si può generalizzare il risultato ottenuto per ottenere un level shifter passivo che attenui e riconduca il segnale entro due livelli stabiliti, con il seguente circuito:

VCC e VEE sono due tensioni di riferimento, la prima positiva e la seconda negativa. Il segnale desiderato in uscita sarà VEE < Vo < VCC.

Assumendo Ri nota (la imponiamo noi di valore adeguato) possiamo allora ricavare R1 e R2 risolvendo un sistema di due equazioni in due incognite, così:


\begin{cases} \frac{R_{in}(R_1 V_{EE}+ R_2 V_{CC}) + R_1 R_2 V_{imin} }{R_{in}(R_1+R_2)+R_1R_2}=V_{Omin}\\\\\frac{R_{in}(R_1 V_{EE}+ R_2 V_{CC}) + R_1 R_2 V_{imax} }{R_{in}(R_1+R_2)+R_1R_2}=V_{Omax}\\\end{cases}

Dove Vomin e Vomax sono i valori minimo e massimo desiderati della tensione in uscita.

Come esempio pratico, supponiamo di avere:

VCC = + 5V

VEE = − 5V

R_{in} = 10 \, k\Omega

Vimin = + 1.5V

Vimax = + 10.5V

Questo è un segnale a dente di sega proveniente da una base tempi di un mio oscilloscopio che desidero campionare con l'ADC di un micro. Il segnale di uscita lo si vuole compreso tra 0V e 3.3V. Risolvendo il sistema si ottiene:

R_1 = 14\,k \Omega

R_2 = 9.9\,k \Omega

Si noti che, avendo Vimin un valore positivo, e' necessaria una VEE negativa, onde poter "tirare giu" il valore di Vomin a zero.

Se infatti ponessimo VEE = 0, la risoluzione del sistema fornirebbe come risultato:

R_1 = -33.3\,k \Omega

R_2 = 4.9\,k \Omega

Il valore negativo di R1 indica chiaramente che non e' possibile ottenere Vomin = 0 avendo a disposizione una VEE di 0 V !

Per non alterare il comportamento del traslatore di livello è consigliabile farlo seguire da un semplice buffer a guadagno unitario, per mettersi al riparo da eventuali sorprese, a meno che l'impedenza di ingresso dell'ADC sia sufficientemente elevata in modo da non caricare eccessivamente il partitore.

Sempre per lo stesso motivo, la resistenza di uscita della sorgente Vi dovrà essere minore di almeno un fattore 10 rispetto a Ri onde evitare di alterare troppo il funzionamento del partitore.

Quando un op-amp si rende necessario...

Un altro esempio pratico, sempre riguardante un mio progetto, è questo:

Come esempio pratico, supponiamo di avere:

VCC = + 5V

VEE = 0V

R_{in} = 10 \, k\Omega

Vimin = − 80mV

Vimax = + 1.11V

Si noti che ho scelto VEE = 0 perché il segnale da convertire ha un valore minimo negativo.

Imponendo sempre Ri = 10kΩ e risolvendo il sistema otteniamo i valori:


R_1 = 625\,k \Omega

R_2 = -15.26\,k \Omega

Oops! La seconda resistenza è negativa! Il motivo è presto detto: un partitore può solo attenuare un segnale, ma non amplificarlo.

In questo caso è giocoforza utilizzare un op-amp, dato che il valore massimo del segnale in ingresso (1.11 V) lo si desidera amplificare fino a 3.33 V.

Una possibile realizzazione circuitale potrebbe essere la seguente:

Vi risparmio in questo caso i dettagli dei calcoli fatti, che potete trovare nell'application note della TI "Single Supply Op Amp Techniques" che illustra e spiega molto bene tutte le casistiche possibili con un approccio sistematico e ordinato.

Termino qui questo mio breve articolo, sperando di avervi proposto spunti utili per i vostri progetti!

1

Commenti e note

Inserisci un commento

di ,

Interessante, c'è sempre da imparare a leggerti.

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.