Rilevamento temperatura ad590

Ciao ragazzi, premettendo che sono alle prime armi con arduino vorrei chiedervi se avendo un sensore di temperatura ad590 con uscita in corrente è possibile, dopo averlo condizionato per portare in uscita un tensione da 0-5V, rilevare la temperatura.

Il sensore comporta una variazione di 1uA per grado..sapreste in indicarmi la formulina da mettere nel programma? Grazie in anticipo :slight_smile:

@Teamswish05: ... eppure non è il tuo primo post ... dovresti sapere che nella sezione in lingua Inglese si può scrivere SOLO in Inglese ... quindi, cortesemente, la prossima volta presta più attenzione.

Guglielmo

P.S.: Il tuo post è stato spostato nell'opportuna sezione del forum "Italiano"

Il sensore varia la sua uscita in corrente nella ragione di 1μA per °K.

Come è noto, lo 0°K corrisponde a -273.15°C, quindi a 0°C la corrente in uscita sarà 273.15μA, mentre a 20°C sarà 293.15μA.

Applicando sull'uscita un resistore di precisione da 10k 0.1%, la tensione a 0°C sarà V = R * I = 10000 ohm * 273.15 μA = 2.7315 V, mentre a 20°C sarà 2.9315 V

cyberhs:
Il sensore varia la sua uscita in corrente nella ragione di 1μA per °K.

Come è noto, lo 0°K corrisponde a -273.15°C, quindi a 0°C la corrente in uscita sarà 273.15μA, mentre a 20°C sarà 293.15μA.

Applicando sull'uscita un resistore di precisione da 10k 0.1%, la tensione a 0°C sarà V = R * I = 10000 ohm * 273.15 μA = 2.7315 V, mentre a 20°C sarà 2.9315 V

Forse non mi sono spiegato bene, io ho gia condizionato il sensore per temperature che variano da -20 a 40 gradi.. a -20 gradi avrò una tensione di 0v mentre a 40 gradi avrò una tensione d uscita di 5v.. ora il mio intento sarebbe quello di trasformare questa uscita che varia da 0 a 5v in un valore di temperatura, in modo da poterlo visualizzare su un display collegato all'arduino

int val = analogRead(A0);

float t = val * 60.0 / 1023 - 20.0;

Usa map :wink:
In quel modo fai la proporzione dei tuoi 0/1023 per arduino che sono 0 e 5 V alla temperatura di -20 e 40 gradi
Ciao!

Esempio:

int val= analogRead(A0);
float t = map(val,0,1023,-20,40);

No, la funzione map restituisce solo interi, mentre immagino che voglia apprezzare anche i decimi di grado.

Si potrebbe, però, usare map usando i decimi di grado, quindi usando -200 e 400.

int val = analogRead(A0);

float t = map(val, 0, 1023, -200, 400) / 10.0;

cyberhs:
No, la funzione map restituisce solo interi, mentre immagino che voglia apprezzare anche i decimi di grado.

Si potrebbe, però, usare map usando i decimi di grado, quindi usando -200 e 400.

int val = analogRead(A0);

float t = map(val, 0, 1023, -200, 400) / 10.0;

Sì è vero :wink: