Dopo aver imparato a pilotare le nixie con Arduino, oggi vediamo come leggere i dati provenienti dal sensore temperatura.
Il sensore scelto, specifico per sistemi di raffreddamento a liquido, è un termistore da 10Kohm. Tale sensore è quindi una resistenza il cui valore cambia in base alla temperatura misurata; il valore nominale (10Kohm nel nostro caso) è quello che il sensore presenta alla temperatura di 25°.
Utilizziamo quindi un PIN analogico di Arduino per leggere la tensione ai capi del sensore e quindi dedurre la sua resistenza. Aggiungiamo una resistenza di pull-down sempre da 10K secondo lo schema:
Per convertire il valore letto dall’ADC (analog to digital converter) di Arduino nel valore di temperatura, utilizziamo l’equazione di Steinhart-Hart:
l’equazione lega il valore di temperatura assoluta (T, in gradi Kelvin) al valore della resistenza (R) e a 3 parametri che dipendono dal particolare termistore. Per termistori da 10K, i valori tipici sono:
- a =0.001129148
- b =0.000234125
- c = 0.0000000876741
Possiamo quindi scrivere una funzione che calcola il valore di temperatura in °C (temperatura Kelvin – 273,15) partendo dal valore letto via analogRead() (RawADC):
double Thermistor(int RawADC) { long Resistance; double Temp; Resistance = 10000.0*((1024.0 / RawADC) - 1); Temp = log(Resistance); Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp)); Temp = Temp - 273.15; return Temp; } |
Ho preparato uno sketch (disponibile su Github) che, ogni due secondi, legge la temperatura da un termistore collegato al pin A0 e la visualizza sul serial monitor: