Il
partitore resistivo nelle misure analogiche
|
Partitore resistivo e misure con il
modulo AD
Il partitore resistivo è l' ideale per effettuare misure di
tensione con il modulo ADC del
microcontroller, che accetta al massimo una
tensione pari alla Vdd.
Quindi, se si devono misurare tensioni superiori è d'obbligo un divisore a
resistenze.
|
Abbiamo tratteggiato le caratteristiche e il calcolo
del partitore qui. E, nelle note, abbiamo rilevato come la tensione di uscita
dipende dalla corrente assorbita dal carico. Se essa varia, varia anche la tensione ai capi
di R2, a causa della caduta su R1.
Si potrebbe pensare che questo
non abbia alcunchè a che fare con le misure dal modulo ADC, ma vanno ricordate
le caratteristiche di questo modulo.
Tipicamente la fase iniziale
della conversione consiste nella carica di un condensatore integrato di sample
& hold. Questo produce un brevissimo, ma robusto impulso di corrente. Le
specifiche dei convertitori AD indicano chiaramente che l' impedenza della
sorgente non deve superare un certo valore ohmico, altrimenti il tempo di carica
del condensatore va aumentato. |
La resistenza R1 determina questo tempo, in quanto si trova in serie al
condensatore del sample&hold e, in pratica, determina il valore della
impedenza della sorgente di tensione. Se il partitore ha un elevato rapporto
di divisione (ovvero Vin >> di Vout) oppure si è scelto una coppia di
resistenze di valore elevato per minimizzare la corrente assorbita, la
resistenza del partitore supera quella ideale della sorgente di tensione per il
modulo AD e richiede un aggiustamento del tempo di acquisizione.
Nel caso dei PIC, i fogli dati indicano una impedenza della sorgente della
tensione non maggiore di 10kΩ per rispettare
i tempi indicati di acquisizione. Se la resistenza è maggiore, occorrerà
aumentare questi tempi di conseguenza. Spesso questa operazione va fatta per
tentativi e richiede un certo impegno di tempo nella fase di debug.
Se il valore dell' impedenza della sorgente è più basso, invece, non ci sono
problemi di temporizzazione e si possono perfino considerare tempi di
acquisizione minori. Se
prendiamo un semplice caso, ovvero la necessità di misurare una tensione di
50V con l' ADC del microcontroller alimentato a 5V, ci occorrerà un partitore
1:10, ad esempi una R1=90kΩ e una R2=10kΩ.
Già qui la R1 è ampiamente superiore ai 10 kΩ richiesti; dovremmo
abbassare i valori a R1=9kΩ e R2=1kΩ e saremmo ancora al limite,
trovandoci probabilmente con misure più basse di quanta tensione ci sia in
realtà in quanto il tempo di acquisizione è troppo breve, dovendo sommarsi
alla resistenza R1 del partitore quella propria della sorgente della tensione
da misurare. Per
evitare questo, si possono implementare alcuni trucchi.
|
Una soluzione semplice è quella di inserire un condensatore in
parallelo all' ingresso.
La sua funzione è quella di scaricarsi al momento dell'
acquisizione, fornendo parte dell' impulso di corrente necessario alla
carica del condensatore integrato di sample&hold.
Si dovrà utilizzare un componente a bassa perdita e a bassa
impedenza, ad esempio un multistrato ceramico.
Questa implementazione che richiede una minima aggiunta di parti è
adeguata per letture che si succedono con una cadenza tale da
permettere la ricarica completa di C1. |
Solitamente valori tra 10nF e 100nF sono adeguati. Si
tratta di un sistema poco adatto nel caso di letture molto rapide o quando si
deve tracciare un segnale di ingresso variabile: R1 e C1 costituiscono una
rete RC che è in sostanza un filtro passa basso e quindi si ha una perdita
delle variazioni oltre ad una certa frequenza.
In questo senso un valore elevato di C1 rallenta le letture, ma assorbe
eventuali picchi indesiderati.
In questo senso C1 potrà variare da 10nF a 1uF o più.
|
Decisamente migliore è la soluzione basata su un componente attivo:
basta inserire un buffer a guadagno unitario tra il partitore e il
port analogico.
Un buffer unitario, realizzato con un amplificatore operazionale:
- ha una elevata impedenza di ingresso e quindi non carica il
partitore,
- mentre ha una bassa impedenza di uscita e potrà fornire corrente
sufficiente per l' impulso di carica del condensatore e il tempo di
acquisizione sarà minimizzato.
Un buffer unitario è realizzabile con un qualsiasi operazionale
che possa funzionare a singola tensione.
La scelta di un rail-to-rail è ideale. |
In commercio esiste una vasta gamma di operazionali in package singolo, doppio e
quadruplo; ad esempio si possono citare l' MCP60x di Microchip, che può
funzionare in alimentazione singola fino a 2.7V e, nella versione singola
(MCP601) è disponibile sia nel classico DIP-8 che nel SOIC-8, ma anche nei
minuscoli SOT-23 che ne rendono possibile l' inserimento anche nei più fitti
circuiti stampati.
vanno altrettanto bene i vari TLCV2772, LT1677, OPA342, LT1366, AD8541, ecc.
Questa soluzione è vivamente consigliata ovunque sia
necessario avere una certezza della qualità della lettura analogica in quanto
rende l' ingresso dell' ADC del tutto indipendente dalle caratteristiche della
sorgente di tensione da misurare, assicurando la massima precisione nella
conversione.
Anche qui potrà essere utile inserire il condensatore C1 come filtraggio
passa basso, con capacità tra 100pF e 10nF.
Vogliamo ricordare un'altra possibilità.
Se abbiamo in gioco un solo ingresso analogico o più ingressi scanditi molto
lentamente, osserviamo che la sequenza di conversione è questa:
-
selezionare il canale di ingresso del modulo ADC
-
con questa operazione si collega l' ingresso scelto al pin
a cui è collegata la sorgente di tensione e si connette il condensatore
di s&h
-
si attende il tempo di acquisizione
-
quindi si avvia la conversione: questa operazione stacca
il condensatore dal pin di ingresso e lo collega al convertitore
Dunque, se il canale di ingresso è selezionato, il
condensatore s&h è collegato alla sorgente. Se si mantiene selezionato un
canale solo e si avviano le successive conversioni a distanze di tempo tali da
superare il tempo di acquisizione per quella determinata resistenza della
sorgente (+ la pausa necessaria tra una conversione e la successiva), il
condensatore di s&h sarà sempre caricato completamente e quindi non
occorrerà alcuna azione sul partitore.
Ugualmente se si usano più canali, avendo cura che, una volta selezionato un
canale, il microcontroller sia impegnato in altre azioni per un tempo tale da
superare il tempo di acquisizione per quella determinata resistenza della
sorgente.
|