Temperatursensor KTY 81 -222

Der Widerstand $R_T$ des Sensors ist von der Temperatur abhängig. Der Widerstand wird in Reihe mit einem Hilfswiderstand $R_H=10 k\Omega$ angeschlossen. 

Der Arduino misst die Spannung $U_T$ des Sensors und gibt ihn als einen Zahlenwert $X$ zwischen 0 und 1023 heraus.

Aus ${U_T \over 5} = {X \over 1023}$ folgt $U_T = {5 \over 1023}  \cdot X$. Da über den analogen Port so gut wie kein Strom abfließt, gilt: $I = {U_T \over R_T} ={U_H \over R_H}$, wobei $U_H = 5 - U_T$ ist.

So erhält man den Widerstand des Sensors aus:  $R_T = {U_T \over {5-U_T}}\cdot R_H$. 

Die Zuordnung Widerstand zu Temperatur liest man aus dem Datenblatt heraus:

Zuordnung laut Datenblatt (Fehler bis 2 K)
$R_T$ 1510 1646 1790 1941 2020
$T$ -10 0 10 20 25

Zwischen zwei Werten wird ein linearer Verlauf angenommen.

Die Geradengleichung durch zwei Punkte stellt man mit Hilfe der Zwei-Punkte-Formel auf:

$m={ {\Delta y} \over  {\Delta x}}=  {{y_1 – y_0} \over {x_1-x_0}} = {{y – y_0} \over {x-x_0}}$. Es gilt also:  $y = {{y_1 – y_0} \over {x_1-x_0}} \cdot{(x-x_0)} + y_0$

Liegt der berechnete Widerstand $R_T$ zwischen zwei Widerständen $R_1$ und $R_0$, so gilt für die Paare $(R_1 | T_1)$ und $(R_0 | T_0)$:

$T =  {{(T_1-T_0)} \over {(R_1-R_0)}} \cdot (R_T-R_0) + T_0$

Die Gerade zwischen 20 C und 25 C lautet: $T(R)= {5 \over 79} \cdot (R-1941) + 20$

 

Quelltext
int X_T;
float U_T, R_T, T_R;
const int R_H = 10000;
/*
Zuordnung Widerstand zu Temperatur laut Datenblatt Seite 8  
*/
 
int R[] ={ 990,1040,1146,1260,1381,1510,1646,1790,1941,2020,
          2100,2267,2441,2623,2812,3009,3214,3426,3643,3855,
          3955,4048,4208,4323};
int T[] = {-55,-50,-40,-30,-20,-10,0,10,20,25,
  			30,40,50,60,70,80,90,100,110,120,
  			125,130,140,150};          


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


void loop(){
X_T = analogRead(A0);
U_T = (float(X_T)*5/1023);
R_T = float(R_H)*U_T/(5-U_T);
for(int i=0; i <= sizeof(R); i=i+1){
 if(R_T<R[i]){
  T_R = (R_T-R[i-1])*(T[i]-T[i-1])/(R[i]-R[i-1]) + T[i-1];
   break;
 } 
}

Serial.print(X_T);
Serial.print(" Roh ");
Serial.print(U_T);
Serial.print(" V ");
Serial.print(R_T);
Serial.print(" Ohm ");
Serial.print(T_R);
Serial.println(" Celsius ");
delay(500);



}

Temperatursensor KTY 81 222 Datenblatt