Nun, ich hab die Werte aus dem Datenblatt in eine EXCEL Tabelle übertragen, ein Diagramm daraus gemacht und dabei festgestellt, das das Temperatur / Werteverhältnis der KTY alles andere als linear war.
Also bin ich hergegangen und hab mit verschiedenen Vorwiderstandswerten mir immer wieder neue Kurven berechnen und zeichnen lassen.
Mit einem 2,2k Ohm Widerstand war die Temperatur / Werte kurve der linearen Funktion am nächsten. Das kommt natürlich auch auf die verwendete Spannung an.
Meine Berechnungsformel Schaut in C so aus.
Die einzelnen Abschnitte sind natürlich in definitionen bzw. Funktionen enthalten, werden aber prinzipiell so abgearbeitet.Code:// Vordefinitionen der Kalibrierungsfaktoren im EEPROM eeprom signed int ee_tempzero[2]={249,249}; /* (249) A/D Wandlerwert für 0°C "(A/D Wandler - X) *290 / tempfakt" */ eeprom signed int ee_tempfakt[2]={461,461}; /* (461) Teilerfaktor für Temperatursteilheit "(A/D Wandler - tempzero) *290 / X" */ ...... si_tempzero[0]=ee_tempzero[0]; si_tempzero[1]=ee_tempzero[1]; si_tempfakt[0]=ee_tempfakt[0]; si_tempfakt[1]=ee_tempfakt[1]; ....... // Berechnung von 2 Temperaturen li_temp1=((li_temp1-si_tempzero[0])*290)/si_tempfakt[0]; li_temp2=((li_temp2-si_tempzero[1])*290)/si_tempfakt[1]; ........ // Einlesen der Temperaturen in einen String ohne Nachkommastellen ltoa (li_temp1,uc_stringbuffer); strcat (uc_sendbuffer,uc_stringbuffer);
Bei mir läuft das einwandfrei.
Versuchs vielleicht mal vorerst ganz ohne Berechnungen und gib mal nur den A/D Wert direkt aus. Und wenn das klappt, dann füge die Berechnungsformel ein.
So kannst DU feststellen ob der A/D Wandler zickt, oder ein Fehler bei der Berechnung gemacht wurde.
Diese KTY Sensoren haben eine krasse Serienstreuung. Um eine Kalibrierung wirst Du also nicht herumkommen.
Ich hab zuerst eine Kalibrierung auf 0°C vorgenommen (Eiswasser) und dann mit 98°C ( kochendes Wasser ) kalibriert und meine es passt so einigermassen.
Von 10 Sensoren, die ich gekauft hab, hatten gerade mal 2 annähernd gleiche Werte.
Lesezeichen