Go Down

Topic: termistore (Read 805 times) previous topic - next topic

Nov 14, 2012, 06:03 pm Last Edit: Nov 14, 2012, 06:19 pm by mattia9305 Reason: 1
Salve a tutti.
Sono un neofita di arduino, ma tremendamente affascinato da questo mondo, per questo mi scuso anticipatamente se chiederò qualcosa di ovvio o stupido.
Ho comprato sulla baia, due termistori, che mi sembrano "adatti", per fare un pò di prove, come descritto da un piccolo manuale comprato in libreria.
Ho trovato dunque sulla baia a pochi spiccioli, un TERMISTORE NTC 0,25W 4,7 KOHM, e vi allego dunque le altre informazioni presenti nell'inserzione:
DISSIPAZIONE: 0,5 W
TEMP. LAV.: -25°C +100°C
FATT. DISS.: 9,5mW/dec C
DIELETTRICO: 100 V
RESIST. ISOL.: 100 MOHM
TOLLERANZA: 10% Impiegati nei circuiti tvc.

Seguendo quelle che sono le linee generali del manuale (dove è preso però un termistore di differente resisteza), riesco a far leggere la temperatura, ma credo, anzi sono certo, che ci sia qualche errore (non credo la temperatura in stanza sia di 12gradi centigradi, visto che sto in maglietta, e i termosifoni accesi tutto il dì).
Questo perchè ho diciamo "ricopiato" quello che era il codice esempio del manuale, che vi allego:
Code: [Select]
#include <math.h>

const int sensorPin = A0;    
int sensorValue = 0;  
float voltaggio;
float termistore;
float temp;

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

void loop() {

 sensorValue = analogRead(sensorPin);    
 voltaggio=(5.0*(float)sensorValue)/1024;
 termistore=((10000*5.0)/voltaggio)-1000;
 temp=(4100.0/log(termistore/0.0106613843));
 temp=temp-273.15;
 Serial.print(sensorValue);
 Serial.print(" -> ");
 Serial.print(voltaggio);
 Serial.print(" -> ");
 Serial.print(termistore);
 Serial.print(" (");
 Serial.print(temp);
 Serial.println(" gradi)");
 delay(1000);
}


Dove sta lo sbaglio?
Grazie a tutti.


Ah, possiedo una scheda ArduinoUno e lavoro principalmente su Xubuntu 12.04 64bit (la scheda viene riconosciuta tranquillamente), e possiedo diversi componenti (Workshop Base)!

Michele Menniti

Come hai collegato il termistore ad Arduino?
Se non sai che resistenza deve avere ad una data temperatura non puoi semplicemente applicare una formula standard con gli estremi, anche perché questi componenti non hanno un andamento lineare; potresti invece introdurre un fattore di correzione: misuri la temperatura della tua stanza con un termometro affidabile e poi aggiungi la differenza per leggere su Arduino la temperatura esatta. In realta questo criterio va bene per piccoli range di misura, p.es 0-45°C, altrimenti devi trovare il datasheet e creare un array di valori in base alla corrispondenza resistenza-temperatura.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Un pin del sensore a 5v, e l'altro, tramite resistore a GND.Tra termisore e resistore, jumper collegato ad A0..

Michele Menniti


Un pin del sensore a 5v, e l'altro, tramite resistore a GND.Tra termisore e resistore, jumper collegato ad A0..

la resistenza l'hai messa da 10K o cosa?
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

uwefed

mattia9305
Quella formula é fatta per il termistore (non so se NTC o PTC) descritto nel libro. Se cambi valore cambia anche i valori letti.

Che valore ha quello del libro? che resistenza viene messa in serie nel libro?
Ciao Uwe

Go Up