Innalzare i livelli di tensione per adattarli alle logiche TTL
Premetto, visto il titolo, che questo non vuole essere un tutorial esaustivo dell’argomento ma mi limito ad illustrare qui il sistema che ho adottato io per risolvere facilmente un problema elettronico.
In pratica, dato che in questi giorni sto smanettando un po’ con gli strumenti di misura digitali, dopo averne studiato per bene il funzionamento è giunta l’ora di interfacciarli ad un picmicro per poter prelevare i dati e quindi mostrarli sul pc o su un display più grande.
Il primo “muro” che si incontra in questa operazione è il livello di tensione. Il livello logico è già ok nel senso che il livello logico alto sui calibri corrisponde alla tensione positiva di alimentazione della batteria, mentre il livello logico basso corrisponde al polo negativo e quindi a 0V, per cui non abbiamo una logica invertita.
Le batterie che alimentano i calibri sono generalmente una LR44 o una SR44, le quali forniscono una tensione di alimentazione pari a 1,5V. Il livello logico alto su questi strumenti, quindi, corrisponde ad una tensione di 1,5V: troppo pochi per essere interfacciati direttamente con una logica TTL.
La logica TTL potrebbe interpretare il livello logico alto del calibro (1,5V) come livello zero, in quanto la tensione di soglia delle logiche TTL è proprio 1,5V. Quindi se la batteria è bella carica, forse ce la potremmo ancora fare, ma per quanto tempo ancora? Non è certo una buona idea!
A tal proposito vi indico qui un link utilissimo sui livello di tensione:
http://www.interfacebus.com/voltage_threshold.html
L’immagine è assolutamente chiara e c’è da farci un bel poster!
Abbiamo quindi bisogno di innalzare in qualche modo il livello di tensione basso in maniera tale da poterlo fornire ad un picmicro, arduino o qualsiasi altra logica TTL senza avere problemi di “interpretazione”. Ovviamente i sistemi sono infiniti: possiamo usare un transistor, un mosfet, delle porte logiche. Personalmente ho scelto la strada del comparatore. Perchè? Il comparatore è un dispositivo progettato proprio per fare questo lavoro: riusciremo ad ottenere in uscita un livello logico 1 a livello TTL (5V) anche in condizioni “estreme” (batteria del calibro mooooooolto scarica).
Per realizzare un comparatore può essere utilizzato un qualsiasi amplificatore operazionale, ma personalmente ho scelto di utilizzare un integrato appositamente progettato per funzionare come comparatore: l’ LM339 che, tra l’altro ha un’uscita a collettore aperto che mi permette di avere il livello logico alto alla stesso valore della tensione di alimentazione senza problemi di saturazione. Questo integrato ha al suo interno 4 comparatori, per cui per il mio scopo, dovendo innalzare il livello di due linee dati (data e clock), me ne avanzano due (o meglio: ci posso collegare anche un altro calibro!). Al suo posto può essere utilizzato anche un LM393, che funzionalmente è identico ma ha solo due comparatori e quindi è più compatto (è in formato DIP8). Vi sono comunque molti integrati progettati per funzionare esplicitamente come comparatori.
Indice dei contenuti
Funzionamento del comparatore
Analizziamo lo schema circuitale di un comparatore:
Supponiamo di alimentare il comparatore con una tensione di 5Volts. Se all’ingresso V1 (ingresso + ovvero ingresso non invertente) applichiamo una tensione superiore a quella applicata all’ingresso V2 (ingresso invertente), VOut sarà uguale alla tensione di alimentazione dell’integrato: 5V. Al contrario se su V1 applichiamo una tensione inferiore a quella applicata a V2, su Vout avremo un livello di tensione pari alla tensione di alimentazione negativa del comparatore (0V nel nostro caso).
Il funzionamento del comparatore quindi, come suggerisce il nome, è quello di “comparare”, confrontare, due livelli di tensione: in realtà non esegue un’amplificazione del segnale per cui è scorretto parlare di “amplificazione”. Il comparatore confronta semplicemente il nostro segnale variabile con un livello di tensione generalmente fisso. Se il nostro livello di tensione è superiore a quello fisso, un uscita avremo un livello alto (se il segnale è applicato al + e il riferimento al -).
E’ facile capire che questo “oggetto” casca proprio a fagiolo per la nostra applicazione: metteremo V2 ad un livello di tensione fisso, mentre su V1 applicheremo il nostro segnale di cui vogliamo innalzare di livello, e su Vout preleveremo il segnale con il livello di tensione più elevato.
Se abbiamo bisogno, oltre che di innalzare i livelli di tensione, anche di invertire i livelli logici, basta applicare i segnali al contrario: su V1 mettiamo il livello di tensione fisso e su V2 applichiamo il nostro segnale da amplificare.
V2 non può essere fissato a 0V in quanto il comportamento, nel caso in cui su V1 arrivano 0V, è imprevedibile, lo fisseremo quindi ad un livello di tensione pari a circa la metà del livello logico da innalzare. Nel nostro caso, avendo una batteria LR44 una piena carica di circa 1,6 / 1,65V, è ragionevole porre V2 ad un livello di tensione fisso di circa 0,8V tramite un partitore. Facendo uso anche dell’applicazione consigliata dal datasheet, il nostro circuito può essere realizzato in maniera semplice in questo modo:
Il partitore di tensione formato da R1 e R2 fa giungere all’ingresso invertente una tensione di circa 0,8V creando quindi una tensione di riferimento (Vref). Se nel punto IN, che va all’ingresso non invertente, giunge quindi una tensione superiore a 0,8V, nel punto OUT avremo 5V, se invece all’ingresso non invertente applichiamo 0V o comunque una tensione inferiore a 0,8V, in uscita avremo 0V. La resistenza R3 sul pin di uscita è richiesta dal momento che l’uscita è di tipo open collector.
In questa immagine che ho salvato dall’oscilloscopio, proprio utilizzando il calibro, potete vedere come il segnale in ingresso (colore azzurro) avente una tensione massima di 1.4V viene prelevato in uscita dal comparatore (segnale di colore giallo) con una tensione di 5V:
Se abbiamo bisogno di utilizzare più comparatori, che devono cioè elaborare più livelli logici ma aventi uguali livelli di tensione, la tensione di riferimento può essere unica per tutti: in pratica non è necessario dover realizzare un partitore per ogni comparatore.
Links
- Protocolli seriali usati dai calibri
- MuIn Caliper - Firmware PIC18F2550 per lettura calibro (305 download)
- Software su PC per leggere il calibro: Digital Caliper Readout