Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Ricerca personalizzata
17
voti

Progetto termostato V: Linearizzazione "ingenua" di una NTC

Indice

Introduzione

In questi ultimi articoli dedicati alle NTC e alla misura della temperatura, sara` analizzato il problema della linearizzazione, cioe` come ottenere da un componente con caratteristica non lineare, che ha una resistenza dipendente esponenzialmente dalla temperatura [1][2], una tensione piu` o meno lineare in funzione della temperatura, in modo da poter realizzare un termometro con l'uso di un semplice voltmetro.

Al giorno d'oggi un qualunque microcontrollore con un convertitore A/D puo` eseguire una eccellente linearizzazione e lettura della temperatura, e spesso e` il modo piu` semplice per realizzare un termometro. In alcuni casi tuttavia l'uso di un microcontrollore potrebbe non essere conveniente, pur desiderando avere una di tensione linearmente proporzionale alla temperatura. In altri casi, pur avendo a disposizione un microcontrollore, si vogliono evitare conti con aritmetica trascendente (funzioni esponenziale e logaritmica) e si cerca di ottere direttamente una tensione lineare con la temperatura.

Le NTC sono sul mercato dagli anni 40 [3], mentre i microcontrollori con A/D interno sono diventati disponibili solo una cinquantina di anni dopo. Nel frattempo gli ingegneri circuitali hanno avuto tempo di sbizzarrirsi in soluzioni e circuiti per la linearizzazione.

Il problema della linearizzazione e` stato affrontato con l'uso di reti resistive lineari, reti con due o piu` NTC, reti con moltiplicatori e amplificatori logaritmici, convertitori analogico digitali non lineari, oppure ancora con oscillatori che forniscono una frequenza linearmente proporzionale alla temperatura o addirittura con reti neurali. Oltre a queste soluzioni circuitali, ultimamente sono divenute di moda le linearizzazioni con un microcontrollore oppure con un PC e programmi quali LABVIEW.

In questo articolo sara` dapprima mostrato un modo "intuitivo" per fare una linearizzazione di una NTC, e sara` sviluppato un esempio, mostrando poi gli errori che risultano.

Ho chiamato il metodo "intuitivo" perche' si basa sulla osservazione delle caratteristiche grafiche e con un po' di buon senso si trova quale potrebbe essere una ragionevole approssimazione lineare, ricavando poi le formule che permettono di realizzarla.

Nell'articolo successivo (ormai questa serie sta diventando una saga), saranno invece analzzate le linearizzazioni analitche, basate su calcoli fatti sulla caratteristica per ottimizzare la linearita` in un punto o in un intervallo.

Linearizzazione a tre punti

L'idea piu` semplice che puo` venire in mente per trasformare la variazione di resistenza di una NTC in una tensione piu` o meno lineare consiste nel fare un partitore fra NTC e una resistenza, come mostrato in figura 1 e studiare la tensione V_p\, che viene generata.

La tensione di uscita del partitore e` ovviamente data dalla partizione fra resistenza ed NTC e il rapporto di partizione vale:

(1) \qquad p=\frac{V_p}{V_{al}}=\frac{R}{R+R(T)}=\frac{R}{R+R_0\,\text{e}^{\text{B}\left (\frac{1}{T}-\frac{1}{T_0}\right )}}=\frac{R}{R+R_\infty \text{e}^\frac{\text{B}}{T}}

Nel seguito si fara` uso della solita NTC da 10\,\rm{k\Omega} [4], gia` usata nei precedenti articoli. Il rapporto di partizione fra questa NTC a alcuni valori di resistenza e` mostrato nella figura seguente, calcolata al solito con EXCEL. La stessa figura e` riportata anche negli articoli [5] e [6].

Figura 2 - Partizione

Figura 2 - Partizione

La dipendenza di p=\frac{V_p}{V_{al}} dalla temperatura e` evidentemente non lineare, come ci si poteva aspettare dall'equazione (1). Pero` nella zona centrale della curva la funzione e` abbastanza simile a una retta.

Cambiando il valore della resistenza del partitore e` possibile spostare il tratto lineare, o per meglio dire meno storto, intorno alla temperatura di interesse.

Andando ad analizzare piu` in dettaglio una sola delle curve, ad esempio con R=6000\,\Omega, si vede che e` possibile approssimarla per un certo intervallo con una funzione lineare, come mostrato in figura 3.

Figura 3 - Approssimazione Lineare

Figura 3 - Approssimazione Lineare

In questo caso la scelta della resistenza e` stata casuale, e la retta e` stata piazzata "a mano" solo per mostrare il tratto quasi rettilineo del rapporto di partizione. Nell'intervallo da -15\,^\circ\rm{C} a 80\,^\circ\rm{C} l'errore massimo (letto come distanza orizzontale fra le due curve) e` dell'ordine di \pm 3.5\,\text{K}.

La cosa interessante e` che l'approssimazione rettilinea ha tre punti di errore nullo. Prendendo come gradi di liberta` la resistenza \,R del partitore e i due coefficienti della retta approssimante, si possono piazzare i tre punti di errore nullo a tre temperature convenienti per l'intervallo in cui si vuole approssimare la curva reale con una retta [7].

Per ottenere equazioni piu` semplici, le temperature a cui imporre errore nullo sono la temperatura centrale dell'intervallo T_2\,, e le altre due temperature T_1\, e T_3\, sono poste simmetricamente, al 10\,\% e al 90\,\% circa dell'intervallo stesso. Questi due valori non sono vincolanti: devono solo essere simmetrici rispetto alla temperatura centrale e piazzati vicino agli estremi dell'intervallo.

Come capita in tutte le approssimazioni e linearizzazioni, maggiore e` l'ampiezza dell'intervallo di temperatura maggiore l'errore che si ha con questa approssimazione lineare.

Le equazioni da risolvere per trovare la resistenza da mettere nel partitore e i due parametri della retta approssimante (coefficiente angolare e intercetta) sono:

(2)\quad \left \{ 
\begin{align}
p_1=\frac{R}{R+R_1}&=k\,T_1+c\\
p_2=\frac{R}{R+R_2}&=k\,T_2+c\\
p_3=\frac{R}{R+R_3}&=k\,T_3+c
\end{align}
\right .

Dove T_1\,, T_2\, e T_3\, sono le tre temperature a cui si vuole errore nullo, come definite prima, R_1\, ecc. ecc. sono le corrispondenti resistenze dell'NTC, p_1\, ecc. ecc. sono i rapporti di partizione alle tre temperature, k\, e c\, sono coefficiente angolare e intercetta della retta approssimante e infine R\, e` la resistenza da mettere nel partitore.

Risolvendo le equazioni (2) (con la condizione T_2-T_1=T_3-T_2=\Delta_T\, si ottiene

(3)\quad \left \{
\begin{align} 
R&=\frac{R_1R_2-2R_1R_3+R_2R_3}{R_1-2R_2+R_3}\\
k&=\frac{(R_1-2R_2+R_3)(R_1R_2-2R_1R_3+R_2R_3)}{2\Delta_T((R_1-R_2)(R_1-R_3)(R_2-R_3))}\\
c&=\frac{(R_1T_1-2R_2T_2+R_3T_3)(R_1R_2-2R_1R_3+R_2R_3)}{2\Delta_T((R_1-R_2)(R_3-R_1)(R_2-R_3))}
\end{align}
\right .

Le temperature di queste formule possono indifferentemente essere in kelvin oppure in gradi Celsius, cambia solo il valore dell'intercetta c\,.

Da notare che imponendo errore nullo a tre temperatura si ha, come conseguenza, che l'approssimazione lineare risulta con coefficienti che non possono essere stabiliti a priori: quello che viene viene, e bisogna accontentarsi. La cosa pero` non e` molto grave perche' se la rete di linearizzazione e` seguita da un microcontrollore non in grado di valutare funzioni trascendenti, a software e` comunque possibile trasformare la tensione in temperatura togliendo l'offset (legato al coefficiente c\,) e dividere per il guadagno (legato al coefficiente k\,). Se invece si usa un operazionale, il condizionamento del segnale e` facilmente eseguibile, come mostrato nell'esempio seguente.

Esempio numerico

Dal caso precedente, con linearizzazione fatta empiricamente e mostrata in figura 3, si vede che l'errore e` dell'ordine di qualche kelvin per intervalli di temperatura dell'ordine di un centinaio di kelvin.

Poiche' solitamente la precisione voluta deve essere migliore (frazioni di kelvin), e` necessario usare questa linearizzazione per intervalli di temperatura piu` ristretti. Proviamo ad usare lo stesso intervallo gia` utilizzato in [4], che si estende da 5\,^\circ\text{C} fino a 40\,^\circ\text{C}. In questo intervallo si impone errore nullo alle temperature corrispondenti al 10%, 50% e 90% dell'intervallo stesso, che corrispondono a T_1=8.5\,^\circ\text{C}, \; T_2=22.5\,^\circ\text{C}, \; T_3=36.5\,^\circ\text{C}. I valori di resistenza dell'NTC corrispondenti a queste tre temperature, calcolati con il modello di Steinhart e Hart, sono riportati nella tabella 1.

TABELLA 1
Temperatura (°C) Temperatura (K) Resistenza (Ω)
8.5 281.65 21359
22.5 295.65 11166
36.5 309.65 6143.6

Dalle formule (3), usando le temperature in gradi Celsius, si ricavano i valori della R e dei parametri della retta, che risultano essere:

(4)\qquad R=8636\,\Omega \quad k=0.0106\,^\circ\text{C}^{-1} \quad c=0.198

Se si fossero usati i kelvin, sarebbe cambiato solo il coefficiente c\,, diventando c=-2.694\,. Il coefficiente k\, essendo legato alle variazioni di temperatura, puo` essere considerato sia in reciproco di kelvin che di gradi Celsius.

Le relazioni lineari che in questo esempio permettono di passare dalla temperatura al rapporto di partizione e viceversa sono quindi

(5)\qquad p=k\,T+c=0.0106\,^\circ \text{C}^{-1}\, T +0.198

(6) \qquad T=\frac{p-c}{k}=\frac{p-0.198}{0.0106\,^\circ \text{C}^{-1}}

dove la variabile p\, e` il rapporto di partizione.

Se si alimenta il partitore ad esempio con la tensione V_{al}=5\,\text{V}, i coefficienti k\, e c\, vengono moltiplicati per la tensione di alimentazione e la tensione di uscita V_p\, in funzione della temperatura T\, vale:

(7)\qquad V_p(T)=V_{al}(k\,T+c)=52.93\frac{\rm{mV}}{\rm ^\circ C}\,T+0.9897\,\text{V}

mentre la relazione inversa, che permette di passare dalla tensione misurata alla temperatura in gradi Celsius e`:

(8) \qquad T=\frac{V_p-0.9897\,\rm{V}}{52.93\frac{\rm{mV}}{\rm{^\circ C}}}

La sensibilita` della misura in questo esempio e` di circa 53\,\rm{mV/K} maggiore di quella che si otterrebbe con un sensore allo stato solido, tipicamente di 10\,\rm{mV/K}

La relazione (8) puo` essere calcolata da un microcontrollore, oppure con un circuito ad operazionale, dimensionato nel prossimo paragrafo, che provvede al condizionamento del segnale, in modo da ottenere sensibilita` e inizio scala desiderati.

Altri circuiti piu` o meno complicati saranno mostrati in seguito. Con i valori di questo esempio, l'errore di linearizzazione e` mostrato in questo grafico:

Figura 4 - Errore Linearizzazione 3 punti

Figura 4 - Errore Linearizzazione 3 punti

Il comportamento di questa linearizzazione, su un intervallo limitato, e` decisamente buono, presentando un errore massimo di circa 0.3\,\rm{K} sull'intervallo da 5\,^\circ\rm{C} a 40\,^\circ\rm{C}.

La forma dell'errore residuo e` molto simile a una cubica, per cui si puo` ipotizzare che l'errore salga con il cubo dell'ampiezza dell'intervallo di temperatura. Come verifica empirica si puo` considerare che la prima approssimazione presentata si estendeva su un campo di -15\,^\circ\rm{C}\,\to\,80\,^\circ\rm{C} mentre quest'ultimo esempio va da 5\,^\circ\rm{C} a 40\,^\circ\rm{C}. Il rapporto delle ampiezze al cubo da`

(9)\qquad \left (\frac{80\,^\circ\rm{C}-(-15\,^\circ\rm{C})}{40\,^\circ\rm{C}-5\,^\circ\rm{C}}\right )^3=20

L'errore massimo (escludendo i punti estremi che sono sempre problematici) vale nel primo caso circa 3.5\,\text{K} mentre dalla figura 4 si ha circa 0.17\,\text{K}, e il rapporto degli errori vale 20.6, close enough! La dipendenza dell'errore dal cubo dell'ampiezza dell'intervallo, introdotto qui su base euristica, sara` ricavato analiticamente nel seguito.

Condizionamento analogico

Progettiamo adesso un circuito che trasformi le tensioni generate dal partitore e NTC in un intervallo adatto per essere misurato con un voltmetro. Supponiamo di avere una tensione di alimentazione di V_{al}=5\,\text{V}, e dato che l'intervallo di linearizzazione di questo esempio va da 5\,^\circ\text{C} a 40\,^\circ\text{C}, si potrebbe pensare di mappare queste tensioni nell'intervallo da 0.5\,\text{V} a 4\,\text{V}.

Nella tabella seguente sono indicati la temperatura, il corrispondente valore resistivo dell'NTC R(T)\,, la tensione di uscita del partitore con la resistenza R ottimale, di valore R=8630\,\Omega ed alimentazione a V_{al}=5\,\text{V}. La tensione di uscita del partitore alle varie temperature e` data ovviamente da

(10) \qquad V_p=V_{al} \frac{R}{R+R(T)}

Infine in tabella 2 e` anche riportata la tensione di uscita del partitore V_p\, fornita dall'equazione (7), e nell'ultima colonna e` indicata la tensione condizionata V_c\, richiesta all'uscita del circuito di condizionamento.

TABELLA 2
Temperatura (°C) Resistenza (Ω) Vp esatto (V) Vp da eq. 7 (V) Tensione voluta Vc (V)
5 25339 1.271 1.254 0.5
40 5330 3.092 3.107 4

I calcoli del circuito di condizionamento possono essere fatti sulle temperature estreme dell'intervallo, oppure su quelle usate per trovare la retta approssimante. Se si usano le temperature estreme dell'intervallo, bisogna comunque usare i valori di tensioni forniti dall'equazione (7), non quelli veri del circuito, perche' con la scelta delle temperature T_1\, e T_3\, posizionate a circa il 10\%\, e 90\%\,, alle temperature estreme si ha un errore aggiuntivo, peraltro molto piccolo, come si vede dalla tabella.

E` necessario quindi progettare un circuito che trasformi linearmente la tensione di 1.254\,\text{V} in 0.5\,\text{V} e la tensione di 3.107\,\text{V} in 4\,\text{V} secondo l'equazione

(11)\qquad V_c=A \cdot V_p+V_\text{off}

dove A\, e` l'amplificazione e V_\text{off}\, e` la tensione di scalamento che il circuito deve introdurre.

L'amplificazione del circuito e` dato dalla variazione della tensione condizionata di uscita divisa per la variazione della tensione proveniente dal partitore.

(12)\qquad A=\frac{\Delta V_c}{\Delta V_p}=\frac{(4-.5)\,\text{V}}{(3.107-1.254)\,\text{V}}=\frac{3.5\,\text{V}}{1.853\,\text{V}}=1.89

Il guadagno necessario e` maggiore di 1, e questo permette di utilizzare un normale amplificatore non invertente a operazionale, che ha un guadagno minimo di 1, mentre la tensione di offset V_\text{off}\, viene ricavata imponendo che la retta passi per uno dei due punti, ad esempio quello a 40\,^\circ\text{C}

(13)\qquad 4\,\text{V}=1.89\times 3.107\,\text{V}+V_\text{off}

da cui

(14)\qquad V_\text{off}=4\,\text{V}-1.89\times 3.107\,\text{V}=-1.87\,\text{V}

Un circuito che puo` realizzare questa funzione e` il seguente:

Il valore delle tre resistenze e` dato imponendo amplificazione e offset, con queste equazioni:

(15)\qquad A=1+\frac{R_3}{R_1/\!/R_2}=1.89 \quad V_\text{off}=-V_\text{al}\frac{R_3}{R_2}=-1.87\,\text{V}

Come molto spesso capita in ingegneria, il numero di equazioni non e` mai uguale al numero di incognite. Qui abbiamo due equazioni e dobbiamo trovare il valore di tre componenti. Si ha un grado di liberta` che puo` essere usato "a buon senso", ad esempio per ridurre il consumo del circuito, sceglieno un resistore di valore elevato e calcolando gli altri due. Il valore tuttavia non puo` essere troppo elevato, per evitare che il circuito riceva rumori indesiderati a causa di accoppiamenti capacitivi vari. Qui il rumore termico non e` un problema.

Ad esempio dalle (15) si possono ricavare i valori di R_1\, ed R_2\, in funzione di R_3\,, sostituire ad esempio R_3=100\,\text{k}\Omega e vedere se i risultanti valori delle altre due resistenze sono ragionevoli:

(16)\; \left \{
\begin{align}
R_1 & =\frac{V_{al}R_3}{V_\text{al}(A-1)+V_\text{off}}=\frac{5\,\text{V}\times 100\,\text{k}\Omega}{5\,\text{V}(1.89-1)+(-1.87\,\text{V})}=194\,\text{k}\Omega \\
R_2 & =-R_3\frac{V_\text{al}}{V_\text{off}}=100\,\text{k}\Omega\frac{5\,\text{V}}{1.87\,\text{V}}=267.4\,\text{k}\Omega
\end{align}
\right .

L'effetto delle tolleranze dei componenti e della tensione di alimentazione sulla tensione di uscita, e quindi sulla temperatura misurata puo` essere valutata con una analisi Montecarlo, oppure analiticamente per mezzo delle sensitivities, come descritto in [8] e nei tre articoli seguenti della stessa serie.

Bibliografia

[1] IsidoroKZ, Progetto Termostato I - Proprieta` delle NTC - Electroyou 2011

[2] IsidoroKZ, Progetto termostato IV - NTC: errori dei modelli e tolleranze - Electroyou 2011

[3] Becker, J. A.; Green, C. B.; Pearson, G. L.; Properties and Uses of Thermistors - Thermally Sensitive Resistors, Trans. of AIEE Vol 51, No. 11, Nov. 1946, p. 711-725.

[4] NTC Vishay, serie NTCLE100 NTC da 10kΩ

[5] Diamond J.M., Linearization of Resistance Thermometers and Other Transducers, The Review of Scientific Instruments, Vol. 41, No. 1,January 1970, p. 53-60.

[6] Tsai C.F., Li L.T., Li C.H., Young M.S.; Implementation of Thermistor Linearization Using LabVIEW, Fifth International Conference on Intelligent Information Hiding and Multimedia Signal Processing, IIH-MSP '09., Kyoto Sept 2009, p. 530-533

[7] Jamieson J., Thermistors—a simple means of getting accurate readings of temperature, Electronics Education, Vol. 1990, Issue 1, Spring 1990, p. 10-11.

[8] IsidoroKZ, Sensitivity I - Definizioni e applicazioni, Electroyou 2010.

5

Commenti e note

Inserisci un commento

di ,

Che rigore. Come sempre! Complimenti!

Rispondi

di ,

Che rigore. Come sempre! Complimenti!

Rispondi

di ,

Chi desidera imparare come si affronta in modo serio e preciso un progetto di elettronica, per realizzare un oggetto di qualità, qui trova il metodo giusto. Gli apparirà come una strada dura da percorrere, ma è quella di chi non vuole affidarsi al caso o costruire una cineseria.

Rispondi

di ,

Queste sono utili lezioni. Utili sia dal punto di vista della conoscenza che dal punto di vista pratico. Un sentito ringraziamento e complimenti per l' articolo. Lo metto subito fra i preferiti.

Rispondi

di ,

Non posso che applaudire e complimentarmi con il micione di EY. E lo faccio per tre motivi. Il primo è che questa serie di articoli affronta con coraggio e, soprattutto, con chiarezza, argomenti non semplici, anche dal punto di vista matematico. Il secondo è che questa serie ci insegna che la progettazione di un circuito di misura di precisione (che poi vuol dire: che funzioni come si deve) è molto meno banale di quel che, purtroppo, molti pensano e non va affrontata in modo superficiale. Last but not least, questa serie di articoli è, in effetti, un bell'invito ad utilizzare i termistori NTC nelle misurazioni di temperatura, troppo spesso sottovalutati (la tecnologia attuale permette di realizzare NTC con accuratezza inizale dell'ordine degli 0.1 °C su un intervallo di misura dell'ordine dei 50 °C - 70 °C -nessun trasduttore di temperatura integrato riesce a garantire tale accuratezza iniziale- e con stabilità a un anno dell'ordine dei mK).

Rispondi

Inserisci un commento

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