Hallo Bean,
ich wollte noch eine andere Möglichkeit zeigen, wie man die Temperatur problemlos ermitteln kann, auch wenn der Sensor nicht linear ist und zwar die lookup Tabelle.
Es hat leider einen Nachteil, man muß sich mit einer Messreihe die ADC Werte für die entsprechende Temperatur im Wasserbad ermiteln.
Es geht so, man legt eine Array im Flash an:
Das sind jetzt Werte von 0-60 Grad.Code:const int TEMP_Celsius_pos[] PROGMEM = // Positive Celsius temperatures (ADC-value) { // from 0 to 60 degrees 806,796,786,775,765,754,743,732,720,709,697,685,673,661,649, 636,624,611,599,586,574,562,549,537,524,512,500,488,476,464, 452,440,429,418,406,396,385,374,364,354,344,334,324,315,306, 297,288,279,271,263,255,247,240,233,225,219,212,205,199,193, 187, };
Auslesen kann man es dann so:
in i steht nach verlassen der Schleife die Temperatur drin.Code:for (i=0; i<60; i++) { if (ADCresult >= pgm_read_word(&TEMP_Celsius_pos[i])) { break; } }
Quelle : AVR Butterfly gccport
Gruß Sebastian
Lesezeichen