Sei sulla pagina 1di 6

NTC E MISURA DELLA TEMPERATURA CON ARDUINO

Una NTC (Negative Temperature Coefficient – resistenza a coefficiente di temperatura


negativo) è una resistenza che cambia il suo valore con il variare della temperatura. In teoria
tutte le resistenze variano il loro valore con la temperatura ma le NTC lo fanno in maniera
sostanziale (anche 100 ohm per grado centigrado) mentre le normali resistenze cambiamo
molto poco.

Figura 1 Esempio di NTC modello Vishay TDC 210

Esistono due tipi differenti di resistenze sensibili alla temperatura, le NTC che all’aumentare
dei gradi centigradi diminuiscono gli Ohm e le PTC (positive temperature coefficient) che
all’aumentare dei gradi aumentano anche gli Ohm.
Di solito le NTC vengono usate per misurare la temperatura mentre le PTC vengono usate
come dispositivo di protezione ad esempio nei trasformatori.
Di seguito un elenco delle caratteristiche fanno scegliere una NTC al posto di altri sensori:

È il sensore più economico disponibile sul mercato;


Può essere facilmente impermeabilizzato;
Funzionano a qualsiasi tensione (di solito a 3 o a 5V);
Rispetto alle termocoppie non richiede amplificatori per funzionare ma può essere
collegata direttamente al microprocessore;
Sono molto precise, infatti hanno un’accuratezza di ±0,25°C;
Sono molto robuste e affidabili

L’unico punto negativo è che per essere implementate su un microprocessore quest’ultimo


deve avere integrato un convertitore analogico/digitale ADC (analog digital converter).
La semplicità di questo componente lo ha reso molto popolare in tutti quei circuiti che hanno
bisogno di un elemento di feedback per accendere o spegnere una ventola di
raffreddamento.
Ad esempio il circuito seguente usa una NTC e 2 transistor per comandare il motore di una
ventola quando la temperatura della NTC supera un certo valore. Può essere usato
all’interno di un alimentatore o in un amplificatore per raffreddare i transistor.
Il costo di tutti i componenti per realizzare questo circuito non supera i 3 €.

venerdì 15 marzo
Misurare la temperatura 2013 Elettronica

con Arduino Pertile 1


ELENCO COMPONENTI
R1 = 15K @ 20°C n.t.c. Thermistor
R2 = 1K5
R3 = 1K
R4 = 270R
R5 = 22K
R6 = 680R
R7 = 470R
C1 = 100µF 25V
D1 = LED
Q1 = BC547
Q2 = BD140
M1 = Ventola 12V 700mA max.

Figura 2 Semplice circuito con NTC per controllare una ventola

CARATTERISTICHE DELLA NTC TDC 210

Elenchiamo di seguito le caratteristiche della NTC da 1k prodotta da Vishay ricavate dal


datasheet:

Resistenza a 25°C: 1k ±5%


Valore Beta B: 3000 ±5%
Costante di tempo termica: 10 sec
Range di misurazione: -55°C – 105°C
Diametro: 5mm
Lunghezza 18mm

COLLEGARE UNA NTC AD ARDUINO

Una NTC può essere collegata ad Arduino utilizzando soltanto una resistenza aggiuntiva di
pari valore. Ad esempio in laboratorio abbiamo collegato una NTC da 1k ad un Arduino UNO
attraverso una resistenza da 1k. Questo è possibile perché all’interno del microcontrollore
ATMega 326 è presente un convertitore analogico – digitale (ADC Analog to Digital
Converter) che converte i valori di tensione da 0 a 5 V in valore numerico.

Figura 3 Collegamenti della basetta Arduino con una NTC. Viene usato il pin A0 come ingresso.

venerdì 15 marzo
Misurare la temperatura 2013 Elettronica

con Arduino Pertile 2


LETTURA DELLA NTC CON PARTITORE RESISTIVO

Per misurare la temperatura si sfrutta una NTC che cambia il suo valore in Ohm. Questo
valore non può essere letto direttamente dal nostro microprocessore perché non ha integrato
un ohmetro. Questo processore però ha incorporato un convertitore Analogico/Digitale (ADC)
a 10 bit (1023 valori diversi); ecco che quindi possiamo collegare la NTC a una resistenza
realizzando un partitore resistivo che creerà una tensione proporzionale al valore di
temperatura.

Figura 4 Partitore resistivo applicato alla porta A0 di Arduino

La tensione presente sul terminale ADC si può calcolare in questo modo:

Questo ci permette di calcolare la tensione su A0 ma bisogna calcolare la corrente che


attraversa le due resistenze collegate in serie:

che sostituito nella formula di prima dà:

Dove 5 è la tensione di funzionamento del microcontrollore.


La tensione dunque presente ai capi del convertitore ADC è proporzionale, come si vede
dalla formula, al valore della NTC e quindi al valore della temperatura. Più precisamente
quando la temperatura aumenta il valore Vadc diminuisce e viceversa.

venerdì 15 marzo
Misurare la temperatura 2013 Elettronica

con Arduino Pertile 3


NTC E CONVERTITORE ADC

La tensione Vadc arriva al convertitore ADC che la confronta con 1023 valori diversi e ne
restituisce un numero proporzionale. Questo valore si calcola in questo modo:

Sostituendo opportunamente i valori calcolati precedentemente con quest’ultima formula si


ricava che il valore in Ohm della NTC può essere calcolato in questo modo:

È interessante notare che il valore calcolato della resistenza NTC non dipende più dalla
tensione di alimentazione ma solamente dalla resistenza R1 collegata in serie da 1kohm e
dal valore misurato dal convertitore ADC che può essere un valore compreso tra 0 e 1023.
Il problema da risolvere ora è quello di riuscire a ricavare un valore di temperatura partendo
dal valore in Ohm della NTC.

LEGGE DI STEINHART-HART

Nel 1968 gli ingegneri John Steinhart e Stanley Hart pubblicarono una ricerca in cui
mostravano come ricavare la temperatura di una NTC nota la sua resistenza. La formula
fornisce una buona precisione ed è la seguente:

In cui: T = Temperatura da calcolare (in gradi Kelvin);


T0 = Temperatura di taratura della NTC (di solito 25°C, 298,15°K);
B = Valore caratteristico della NTC ricavato dai datasheet (per una resistenza
da 1k, B=3000);
R = Resistenza della NTC alla temperatura da misurare;
R0 = Resistenza della NTC alla temperatura T0 (di solito 1k o 10k).

Bisogna fare attenzione che il risultato di questa formula è in gradi Kelvin e quindi bisognerà
sottrarre 273,15 per ottenere i gradi centigradi.
Con questo sistema di misurazione si ottiene un grado di precisione di ± 0,5°C.

venerdì 15 marzo
Misurare la temperatura 2013 Elettronica

con Arduino Pertile 4


MISURA DELLA TEMPERATURA CON ARDUINO

Il microcontrollore ATmega 328 di Atmel possiede un convertitore A/D che ben si presta a
essere collegato ad una NTC per misurare la temperatura.
// Calcola la temperatura di una NTC (TDC 210)
// collegata a massa usando una funzione
// (+5V)---R---(pinA0)---ntc---(gnd)
#define Ro 1000 // Valore NTC a 25°C
#define NTCPIN A0 // Pin di collegamento NTC
#define Tnom 25 // Temperatura nominale NTC
#define B 3000 // Coeff. Beta della NTC (dai datasheet)
float Temp;

// Settaggio velocità dati seriali


void setup() {
Serial.begin(9600);
}

// Ciclo infinito, programma principale


void loop() {
Serial.print("Temp=");
Serial.println(misTemp());
delay(1000);
}

// Funzione che misura la temperatura


float misTemp() {
Temp = analogRead(NTCPIN);
Temp = Ro/((1023/Temp)-1);
Temp = Temp / Ro; // (R/Ro)
Temp = log(Temp); // ln(R/Ro)
Temp = Temp/B; // 1/B * ln(R/Ro)
Temp = Temp + 1.0 / (Tnom + 273.15); // + (1/To)
Temp = 1.0 / Temp; // Invert
Temp = Temp - 273.15; // convert to C
}

Figura 5 Esempio di misura di temperatura

venerdì 15 marzo
Misurare la temperatura 2013 Elettronica

con Arduino Pertile 5


TERMOREGOLAZIONE DELLA TEMPERATURA CON ARDUINO

A questo punto risulta molto facile realizzare un dispositivo per termostatare un piccolo
ambiente in cui è presente una resistenza da 30Ω per riscaldare l’aria e una NTC da 1k per
“sentire” la temperatura.

Calore

R 30Ω NTC

Figura 6 Piccolo ambiente termostatato realizzato all'interno di


un ovetto Kinder

Figura 7 Schema elettrico di collegamento del termostato ad Arduino

venerdì 15 marzo
Misurare la temperatura 2013 Elettronica

con Arduino Pertile 6