Otto resistori in cerca di un DAC

C’è un mostro che si annida sotto i letti di molti ingegneri, e il suo nome è Porting Del Codice. E’ una creatura che può restare silente, nell’ombra, in paziente attesa del momento opportuno per saltare fuori e iniziare a mordere. E non c’è scampo. Verrà il momento in cui quel piccolo spazio sotto al letto non le sarà più sufficiente e bisognerà affrontarla. Alcuni faranno di tutto per trovarle un letto più grande sotto al quale abbia maggiori opportunità di ottenere ciò che vuole; altri, invece, lasceranno il letto così com’è, ma cercheranno di passarle da fuori, da quel piccolo varco tra le coperte, la cosa di cui è affamata. Oggi vi faremo vedere cosa fare se il mostro che avete sotto al letto di punto in bianco decidesse di aver bisogno di un DAC.  

NON SI BUTTA VIA NIENTE

Nello sconfinato Reame dei Microcontrollori, per le nuove generazioni la vita è una vera pacchia. Qualunque cosa tu voglia, basta cercare un pò e puoi averla. Ti serve un microcontrollore con USB? Banale. Ne vuoi uno con Wi-Fi, Bluetooth e 802.15.4 e interfaccia seriale? Nessun problema. Un bridge ethernet? Senza neanche bisogno di chiedere. Interfaccia neurale? Tra qualche anno, ma ci sarà.

C’è però un problema. Se nel gran salone del castello tutti questi principi gozzovigliano, appena al di fuori delle mura si aggira un esercito di vecchi straccioni derelitti, nobili di un’era passata caduti in disgrazia ma che, per un motivo o per un altro, sono rimasti in circolazione. E continueranno a rimanerci fintanto che tutte le conoscenze di cui sono depositari non saranno trasferite ai loro eredi più giovani. Ma nessun passaggio di testimone è mai indolore; ci sono problemi nell’adattare cose concepite per degli strumenti e una mentalità, che ormai non esistono più, lungaggini, fatica e costi. Certe volte non se ne può fare a meno: l’età è così avanzata che bisogna necessariamente trasferire tutto in una mente più giovane. Ma molte altre volte se ne può fare a meno. Il cervello funziona ancora; non sarà un fulmine di guerra ma fa ciò che deve. E magari si può insegnare ad usare un nuovo strumento senza eccessivi patemi. In questi casi, conviene di gran lunga tenersi il vecchio manovale esperto e dargli un piccone nuovo piuttosto che cercare di insegnare ad un giovane saltafossi a spaccare le pietre.

La conversione digitale-analogico è uno di questi casi. Se cercate su internet, impiegherete cinque secondi netti a trovare un microcontrollore dotato di DAC. Se state iniziando un nuovo progetto, qualcosa che non avete mai fatto prima, comprare il micro in questione è probabilmente la cosa migliore. Ma se, come capita spesso, avete una marea di codice già pronto stivato sul computer e pensate di poterne riusare una bella fetta per il progetto nuovo, bè, è il caso di pensarci bene prima di aggiungere il micro al carrello. Per quanto magari il nuovo micro dotato di DAC possa essere simile a uno vecchio per il quale avete il codice già pronto, non sarà mai uguale. Come minimo cambierà il pin-out. Il timer magari non uscirà più sulla porta B ma sulla C. Sono cose che capitano anche tra micro della stessa famiglia. Potrebbe cambiare il numero di periferiche. Potrebbe cambiare il nome. O potrebbero cambiare cose più sottili. Magari il micro vecchio era a sedici bit e quello nuovo a trentadue. Il compilatore assegnerà tutto un altro significato agli int, facendo saltare completamente cose come limiti superiori per le somme o (orrore) aritmetica dei puntatori.

Nessuno ha voglia di infilarsi in un ginepraio del genere. Di solito lo si fa solo se non si hanno alternative. Nel caso del DAC ce l’abbiamo? Bè, sì. Potremmo attaccare un DAC fuori dal vecchio micro. Si può fare? Dipende dal DAC. Esistono chip integrati per la conversione digitale-analogico che fanno tutto il lavoro sporco ma in genere sono pilotati tramite qualche tipo di seriale, tipo SPI o IIC. Questi li possiamo usare solo se il micro ha le relative periferiche, il che non è detto. Ma in effetti non ne abbiamo bisogno. In effetti, tutto ciò che ci serve è una manciata di resistori.

DAI GRADINI ALLA RAMPA

Per capire come, dove, quando e perché questo sia possibile dobbiamo prenderla un pò alla larga, e partire da cosa effettivamente faccia un DAC. Ok, un DAC converte un numero binario in una tensione, su questo siamo d’accordo tutti, ma come? Ci sono diversi modi, ma quello più semplice ricorda molto da vicino la conversione di un numero da binario a decimale. Prendiamo ad esempio 10 in binario:

1010

Per tornare in decimale, dobbiamo associare una potenza di due a ogni cifra del numero e sommarne un pò. Prendiamo tutte le potenze di due e associamole alle cifre da destra verso sinistra: dunque, associamo 1 (due alla zero) alla prima cifra, 2 alla seconda, 4 alla terza e via dicendo, e sommiamo solo quelle associate ad un 1. In questo caso, la seconda e la quarta cifra. Dunque:

2 + 8 = 10

che è quello che volevamo. Ora, la conversione analogico-digitale (occhio) prende un numero finito di tensioni su un certo intervallo e associa un numero binario a ciascuna di essi. Ad esempio, un ADC a quattro bit prenderebbe, sull’intervallo tra 0 e 5 V, 16 valori di tensione, e assocerebbe a ciascuno di essi un valore binario. Il primo valore sarebbe 5/16, ossia 0.3125 V, il secondo sarebbe 2 × (5/16), il terzo 3 × (5/16) e così via. La tensione associata ad ogni numero la possiamo ottenere prendendo il numero in decimale e moltiplicandolo per la tensione più piccola, in questo caso 0.3125.

Bene. Questo è esattamente un modo per convertire il numero da binario alla tensione corrispondente: si prende il numero e lo si moltiplica per una tensione di riferimento. Il problema è che il numero ce lo abbiamo in binario, non in decimale, il che significa che prima dobbiamo riportarlo in decimale. In realtà non è necessario. In realtà, basta sommare alcune versioni scalate della tensione di riferimento. Torniamo al numero 10:

1010 = 10102 = 210 + 810

Ma questo significa che

3.125 = 10 × 0.3125 = (2 + 8) × 0.3125

Quindi, se volessimo realizzare questa cosa con un circuito, avremmo bisogno di tre cose: una tensione di riferimento, un modo per scalarla, un modo per sommarla. La tensione di riferimento è facile: è l’uscita del microcontrollore! I cinque volt associati al numero binario! Nemmeno per la scalatura ci sono grossi problemi: basta un partitore di tensione se decidiamo di lavorare con le tensioni, o banalmente la legge di Ohm se decidiamo di passare in corrente.

Figura 1: Somma a valle di una rete a scala

Per quanto riguarda la somma, Kirchhoff ci ha dato ben due modi per farla: collegando direttamente in serie le tensioni scalate, o facendo confluire in un nodo le correnti in cui abbiamo convertito le nostre tensioni. Orientativamente, il secondo modo è più semplice. Consideriamo il circuito nella Figura 1. Se applichiamo la nostra tensione di riferimento ai rami della rete a scala e variamo il valore dei resistori, avremo una serie di correnti scalate che confluiscono nello stesso nodo e che, per l’appunto, si sommano. Aumentando le resistenze di un fattore due ogni volta che passiamo da un ramo all’altro, avremo tutte le divisioni possibili per le potenze di due.

Sì, non è tutta la storia. C’è una condizione. Tutto questo funziona se e solo se il nodo in cui le correnti confluiscono è a bassa impedenza. Solo in questo caso, infatti, tutta la tensione di riferimento cade sul resistore, e produce una corrente proporzionale ad essa senza risentire dei rami vicini. Così com’è, il circuito nella Figura 1 non funziona. Dovremmo mettere quel nodo a massa (o giù di lì) ma senza perdere la corrente che si genera lì. Come? Ovviamente non collegandolo a massa, non servirebbe a niente. Possiamo però collegarlo ad un altro genere di massa, quella virtuale all’ingresso di un op-amp.

Figura 2: Aggiunta dell'op-amp

Consideriamo il circuito nella Figura 2. Le magiche proprietà dell’op-amp tengono il potenziale sul nodo in comune a tutti i rami ad un livello molto vicino a quello di massa, ma la corrente non viene persa, perché può girare sul ramo di retroazione e ritrasformarsi in tensione, che ci ritroviamo bella precisa sull’uscita dell’amplificatore. [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2414 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

3 Commenti

  1. Avatar photo Mariangela.Mone 28 Settembre 2020
    • Avatar photo Cristiano Scavongelli 29 Settembre 2020

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend