Salta la barra di navigazione [1] - Vai alla barra di navigazione [3] - Scrivimi una mail [4]

Misurare 16 temperature

Sommario - Novità - Tutorial - Progetti - Risorse - Non solo elettronica

Il prototipo che ho realizzato

Il circuito che presento in questa pagina si collega alla porta parallela di un normale personal computer e permette di digitalizzare la temperatura rilevata da 16 sensori.

Il circuito è stato originariamente pensato per un uso un po' particolare: realizzare uno strumento a basso costo per riproporre con mezzi moderni il classico esperimento dell'anello di Fourier; in seguito mi limiterò a descrivere il solo circuito elettronico.  Descriverò anche gli interventi utili per trasformarlo in un sistema di acquisizione dati per uso generale.

Il software di esempio permette di visualizzare in tempo reale le misure e di salvarle in un file di testo per successive elaborazioni; è stato sviluppato in C con il compilatore LabWindows/CVI in ambiente WinNT/2000/XP ma dovrebbe essere utilizzabile anche con gli altri sistemi operativi Microsoft a 32 bit. E' disponibile sia come eseguibile che come sorgente scaricando il file citato alla fine della pagina. Purtroppo non ho avuto tempo e occasione di scrivere un programma più dignitoso, magari anche per DOS o per Linux: spero che qualcuno in futuro supplisca a questa mia mancanza.

Descrizione del circuito

Lo schema del circuito è contenuto nel file ntcschematic.

Il trasduttore utilizzato è un NTC (termistore a coefficiente di temperatura negativo) cioè un componente la cui resistenza dipende dalla temperatura, diminuendo quando essa sale: lo specifico modello utilizzato presenta una R a 25°C di circa 47 kohm e di circa 770 ohm a 135°C. Le ragioni della scelta sono il costo basso, la sensibilità elevata e la (relativa) facile reperibilità In particolare si è scelto un componente con resistenza abbastanza elevata anche ad alta temperatura.

La connessione del circuito stampato ai 16 termistori è fatta utilizzando un flat-cable a 34 poli, identico a quello per la connessione dei floppy disk nei PC.

[ntc1] - Il trasduttore NTC serie 45 Siemens Matsushita (Epcos)

Il componente utilizzato appartiene alla serie K45 della Siemens Matsushita (attualmente Epcos): il suo particolare contenitore filettato ben si presta infatti al fissaggio tramite dadi ad un anello metallico, come richiesto dall'esperimento per cui il circuito è stato pensato io circuito. Le caratteristiche elettriche fondamentali, utili per trovare un eventuale modello equivalente, sono una R25 di 47 kohm ed un B25/100 di 4450.

Al fine di misurare la resistenza del trasduttore non si è usato il classico generatore di corrente ma si è realizzato un partitore resistivo costituito da una resistenza di 100 kohm (R3 nello schema) e dal termistore stesso connesso a massa (non indicato esplicitamente nello schema ma da collegare ad uno dei 16 ingressi presenti sul connettore J1). A questo partitore è applicata attraverso un buffer (U2B) la tensione fissa di 4.096 V ottenuta a partire dal riferimento interno del convertitore analogico-digitale MAX187. La tensione presente all'uscita dal partitore è amplificata da U2A, applicata all'ingresso dell'ADC MAX187 e quindi digitalizzata. L'ADC utilizzato ha risoluzione di 12 bit ed uscita seriale sincrona SPI compatibile. Per collegare alternativamente i 16 NTC è stato utilizzato un multiplexer analogico CMOS a 16 ingressi.

Sia gli ingressi del multiplexer che dell'ADC sono pilotati dalla porta parallela del PC Per garantire una precisione adeguata si devono utilizzare resistori con tolleranze contenute (1% o migliore) ed amplificatori operazionali di precisione.

OP293 (si noti: non LM293 che è un comparatore) è un amplificatore operazionale adatto a funzionare con alimentazione singola e con una tensione di offset abbastanza piccola; anche altri integrati, forse più facilmente reperibili, sono adeguati e direttamente sostituibile dato che il pin-out è quello standard industriale.

Il multiplexer analogico è forse il componente più problematico per quanto riguarda gli errori di misura, soprattutto se si intendono utilizzare termistori con bassi valori ohmici: la sua resistenza di chiusura (rdson) infatti costituisce un errore "sistematico" di circa 200 ohm in serie al termistore; purtroppo tale valore non è per nulla costante. Due sono le soluzioni, ovviamente non alternative, che si possono adottare:

L'alimentazione da fornire deve essere continua e compresa tra 6.5 e 12V; perfettamente adeguata risulta una batteria da 9V. Il regolatore a bassa caduta MAX603 provvede a fornire i 5 V con la stabilità e la precisione richieste da tutti gli integrati. è implementata la protezione contro l'inversione di polarità ed è presente un led indicante l'accensione, da omettere se il consumo di corrente fosse un problema.

Per la descrizione delle caratteristiche dei componenti utilizzati si rimanda ai siti dei produttori:

Il software

Tutte le operazioni di gestione del multiplexer e del convertitore sono realizzate direttamente dal PC attraverso la porta parallela. Il software di esempio allegato è suddiviso in due file:

Le formule

In questo paragrafo descrivo come passare dal numero letto dal convertitore alla corrispondente temperatura.

Il convertitore analogico digitale non fa altro che convertire la tensione presente al proprio ingresso (che deve essere compresa tra 0 e 4.095 V) in un numero intero compreso tra 0 e 4095. La conversione è quindi immediata, tenendo conto della presenza di un amplificatore operazionale U2A all'ingresso:

[ntc3] - V = N/1000 * 1/gain

V Tensione in ingresso [V]
N Numero intero generato dall'ADC, compreso tra 0 e 4095
gain     Guadagno dell'amplificatore, pari a 1 + R2/R1 (3.2 con i valori indicati nello schema)

Conoscendo la tensione applicata al partitore di tensione costituito dal R3 e dal termistore, è possibile ricavare la resistenza del termistore. Nella formula seguente si è considerata anche la rdson del multiplexer, in serie al termistore (sebbene non sia un valore rigorosamente costante, l'errore complessivo risulta di molto ridotto se si effettua la correzione indicata)

[ntc4] - R = R3*V / (4.095-V) - rdson

R Resistenza del termistore [ohm]
R3 100 kohm con i valori indicati nello schema [ohm]
rdson Resistenza di chiusura del multiplexer, valore molto variabile intorno ai 100-200 ohm [ohm]
V Tensione ricavata dalla formula precedente [V]

L'ultima formula presentata è piuttosto approssimata e permette di ricavare dalla resistenza del termistore la corrispondente temperatura:

[ntc5] - T = 1 / ( 1/298 + 1/b * log(R/R25) / b )

T Temperatura effettiva [K]
T25 Temperatura di riferimento (usualmente 25°C = 298K) [K]
R Resistenza effettiva, ricavata dalla formula precedente [kohm]
R25 Resistenza alla temperatura di riferimento [kohm]
b coefficiente dato dal produttore del termistore

Il programma utilizza come costanti i valori numerici contenuti nel "configuration file" max187.ini (se il file non è presente, sono scelte alcune costanti di default, adatte al termistore usato nel prototipo); esso è un semplice file di testo che deve risiedere nella stessa directory del programma e ad esso si rimanda per i dettagli della struttura.

Da notare che il software utilizza tali formule solo per la visualizzazione in tempo reale: se è attivato il salvataggio su file, questo contiene solo il numero in uscita al convertitore, compreso tra 0 e 4095, 16 valori per ciascuna riga. Questa scelta è motivata dalla possibilità di scrivere un secondo programma che, prelevando i numeri contenuti nel file, permetta di:

Le modifiche

Come giàscritto, il circuito è stato progettato per misurare temperature comprese tra 25 e 135°C con i termistori Siemens Matsushita della seria K45 (47 kohm a 25°C). Il circuito è però adattabile alla misura di qualunque resistenza compresa tra uno e qualche centinaio di kohm cambiando semplicemente i valori di R1, R2 ed R3.

Per la scelta di tali resistori occorre inserire nella formula della resistenza sopra riportata i valori che si desiderano rilevare e trovare i valori di gain ed R3 che mantengono l'ingresso dell'ADC tra 0 e 4 V. Ad esempio, se il trasduttore assume valori compresi tra 1 e 10 kohm è possibile lasciare R3 pari a 100 kohm, cioè molto più grande della resistenza variabile, ed impostare il R1 ed R2 in rapporto 1:10, ottenendo un guadagno di 11.

I limiti dei valori sono costituiti essenzialmente dalla necessità di:

Il circuito è adatto anche per misurare generiche tensioni continue: è sufficiente togliere la R3 lasciando scollegata l'uscita di U2B per avere il classico sistema di acquisizione dati costituito da un multiplexer analogico ed un convertitore analogico-digitale. Occorre ovviamente ricordare che la tensione di ingresso è amplificata da U2A e che quindi, scegliendo opportunamente le resistenze e l'amplificatore, è possibile misurare anche tensioni molto piccole.

Occorre tener conto di due avvertenze:

Elenco dei componenti

C1,C2 10uF tantalio
C3,C7 4.7uF tantalio
C4,C5,C6 100nF
D1 1N4148 o altro diodo per piccoli segnali
D2 LED (opzionale)
JP1 Connettore per cavo piatto 2x17 poli, passo 2.54mm
JP2 Connettore 2 poli, passo 5mm
P1 Connettore per porta parallela, tipo D, 25 poli maschio per circuito stampato
R1 22k 1%
R2 10k 1%
R3 100k 1%
R4 1k 5% (opzionale)
U1 74HC4067 (oppure 4067)
U2 OP293
U3 MAX187
U4 MAX603
R5 - R21 Termistori B57045 K45/47k/K EPCOS (Siemens Matsushita)

Alcune note:

Download

Tutto il contenuto di questa pagina, il software, lo schema del circuito ed il PCB è contenuto nel file ntc.tgz.

Max187.tgz Software in ambiente MSWindows per l'uso del circuito (sorgente ed eseguibile)
top.pdf Layout dei componenti
bottom.pdf Lato saldature del circuito stampato
Schematic.pdf Schema del circuito
ntc.htm Questo file
ntc*.gif e ntc.jpg La immagini presenti in questa pagina

Prima di realizzare i circuiti o utilizzare il software è necessario leggere le avvertenze generali.

Su questo sito è anche disponibile un circuito con simili funzionalità ma a 8 canali e funzionante senza alimentazione esterna.


EN - Pagina principale - Sommario - Accessibilità - Note legali e privacy policy - Posta elettronica

XHTML 1.0 Strict - CSS 3