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
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:
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:
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
.
La prima cosa interessante da notare è che se si desidera
quando Vi è al suo minimo, come −20V, allora è possibile risolvere la (1) per R1 senza dover conoscere R2 perché si riduce in questo modo:
E questo è un risultato piuttosto interessante!
Finché
, si può ottenere un valore realistico di R1 senza preoccuparci di R2, solo nel caso particolare in cui
.
Avendo quindi
e
, segue che
.
Facile no? E ora che conosciamo R1, possiamo usare l'espressione (2) per ricavare R2, nel caso in cui
ottenendo
.
Se usiamo dei valori standard per i resistori,
e
, otteniamo
quando Vi = − 20V e
quando Vi = 20V.
La resistenza complessiva "vista" da Vi vale:
nel nostro caso,
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ì:
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
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:
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:
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
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:
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!

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)



