Hier eine kleine Möglichkeit, die Temperatur anhand des gemessenen
Widerstandes zu berechnen (Platin-Temperaturkoeffizienten):
1 | /* Diesen Block am Anfang global initialisieren.
|
2 | double const A = 3.9083E-3;
|
3 | double const B = -5.775E-7;
|
4 | double const C = -4.183E-12;
|
5 | double const R0 = 100; // Widerstand bei 0°C
|
6 | double T = 0; // Temperatur bei 0°C
|
7 | */
|
8 |
|
9 | double PT100_Temp (double R) // Temperaturberechnung -30 .. 500°C ausreichend genau
|
10 | {
|
11 | T = ((-A*R0)+(sqrt(((A*R0)*(A*R0))-(4*B*R0*(R0-R)))))/(2*B*R0);
|
12 | return T;
|
13 | }
|
Zwischen -30°C und 400°C ist die Berechnung ausreichend genau, obwohl
die DIN IEC 751 nur Temperaturen >0°C zulässt.
Ist ein bischen 'Krieg der Klammern' geworden, aber der Compiler
optimiert die Rechenzeit auf 2.5µs @ 16MHz.
Für Verbesserungen bin ich jederzeit dankbar.