Ich habe hier einen Temperaturfühler, den ich aufgrund der Bauform gerne für eine Steuerung verwenden möchte. Das Problem ist: Ich weiß nicht, was es für ein Bauteil ist. Wahrscheinlich ein NTC. Ich habe bei verschiedenen Temperaturen den Widerstand gemessen (2 Beine als Anschluß, Polung ist egal). Also ich habe eine elektrische Heizplatte genommen und und mit dem Infrarottermometer die Temperatur gemessen und von Fühler den Widerstand. Das sind die Ergebnisse: Grad Ceslsius kOhm 26 330 75 80,5 80 66 90 54,5 100 42,1 110 37,3 120 28,6 130 23,7 145 17,6 150 17,9 155 16,2 160 13,6 165 11,6 170 11,3 175 10,2 180 9,0 190 9,5 200 7,0 210 6,8 220 6,0 230 6,6 Mir ist klar, daß da ein paar Meßfehler drin sein müssen. Meine Frage an die Mathebegabten: kann man aus diesen Werten sowohl die Meßfehler isolieren als auch eine Näherungsfunktion ableiten? Ich würde dann gerne 10k in Reihe schalten und per Formel (nicht per Wertetabelle) aus dem Widerstands-Meßwert (bzw. dem Spannungsabfall) näherungsweise auf dem uC die Temperatur berechnen.. geht das? Wenn ja, wie? Bin gespannt.. :-)
wie wärs wenn du die werte in excel eintippst und das ganze mit ner linearen interpolation versuchst? wenn die mittlere abweichung dir zu groß wird eben mit funktion von höherem grad
Ohne den Typ des NTCs zu kennen wird dir keiner den Messfehler sagen können. Aus den Daten kann man den nicht extrahieren, wie auch? Für die Funktion braucht man keine großen mathematischen Kenntnisse. Nimm Excel oder ähnlich und fitte per Regression ein Polynom in deine Daten.
Zwischen 26 und 75 °C ist estwas mager mit Stützpunkten, aber sowas sollte grob passen: Linear model Poly4: f(x) = p1*x^4 + p2*x^3 + p3*x^2 + p4*x + p5 p1 = 8.166e-007 (6.883e-007, 9.448e-007) p2 = -0.0005355 (-0.0006019, -0.0004692) p3 = 0.1308 (0.1192, 0.1425) p4 = -14.37 (-15.17, -13.58) p5 = 623.7 (606.8, 640.7) Goodness of fit: SSE: 85.17 R-square: 0.9991 Adjusted R-square: 0.9989 RMSE: 2.307
Hmm.... p1 = 8.166e-007 (6.883e-007, 9.448e-007) p2 = -0.0005355 (-0.0006019, -0.0004692) ...und du meinst nicht das man da etwas vernachlaessigen kann? .-) Olaf
TOM wrote: > Zwischen 26 und 75 °C ist estwas mager mit Stützpunkten, aber sowas > sollte grob passen: > > Linear model Poly4: > f(x) = p1*x^4 + p2*x^3 + p3*x^2 + p4*x + p5 > > p1 = 8.166e-007 (6.883e-007, 9.448e-007) > p2 = -0.0005355 (-0.0006019, -0.0004692) > p3 = 0.1308 (0.1192, 0.1425) > p4 = -14.37 (-15.17, -13.58) > p5 = 623.7 (606.8, 640.7) > > Goodness of fit: > SSE: 85.17 > R-square: 0.9991 > Adjusted R-square: 0.9989 > RMSE: 2.307 mit was hast du das berechnet? Excel, Matlab.... ? Ist es nicht effizienter sowas auf dem Controller mit Kennlinienfeld und linearer Interpolation zu machen. Das oben dargestellt ist natürlich um einiges genauer! MFG
du solltest im unteren temperaturbereich noch ein paar messwerte aufnehmen. im anhang findest die entsprechende excel tabelle
Wie sieht die Kurve aus? Sehr wahrscheinlich nicht linear? Interpolationspolynome schlagen sehr stark aus, fuer sowas nimmt man dann ansonsten am besten eine Spline-Interpolation. Ist die Kurve annaehernd linear kann man auch eine Regressionsgerade berechnen. Regression kann man uebrigens auch in hoeheren Graden veranstalten, aber da wird es recht aufwaendig. http://de.wikipedia.org/wiki/Lineare_Regression http://de.wikipedia.org/wiki/Spline-Interpolation
ach ja, ich habs mal mit "potenziell" probiert und nicht mit "polynomisch"
wow, ich hab nicht gedacht, daß Ihr SO begabt seid bzw. ich so unbegabt.. :-) Also ich vermute mal, daß ich mich bei 220, 180 und 145 Grad vermessen hab.. Die Werte sollte man wohl weglassen..
>>Also ich vermute mal, daß ich mich bei 220, 180 >>und 145 Grad vermessen welche formel hast du jetzt genommen wenn du die aud meinem excel dokument hast, dann sind eher die werte unter 100°C noch einmal nachzumessen
Ich hab gar keine Formel genommen, nur das Augenmaß, das besagt, daß sich die Werte stetig / gleichartig zur Temperatur ändern sollten.. Bei den Werten unter 100 Grad bin ich mir sogar sicherer, denn da hatte ich mehr Zeit zum Messen, weil die Herdplatte ja immer langsamer abkühlt..
ach ja, und für meine Steuerung interessieren mich gerade die Werte zwischen 100 und 200 Grad, deswegen habe ich in 2stelligen Bereich nicht groß gemessen.
OpenOfficeCalc schlägt diese Näherung vor, Potenzfunktion ausgewählt.
Wenn es einigermaßen genau sein soll: 1. Mehrere Zyklen fahren. Auf gute thermische Kopplung achten. Laaangsam hochheizen. 2. Zyklen in beide Richtungen messen (Aufheizen und Abkühlen). Wenn dabei nicht ähnliche Kurven rauskommen, hat man zu schnell geheizt. 3. (gemittelte) Messpunkte als Tabelle ablegen und linear interpolieren. Oder wie willst Du mit dem AVR (z.B.) ein Polynom 4. Grades berechnen (ok, kann man machen, muss man aber nicht). 4. Infrarot-Thermometer? Nimm einen Alublock, 2 Bohrungen, Wärmeleitpaste, packe da den Sensor und einen Thermofühler (vom Multimeter) rein und leg das auf die Heizplatte. Und laaangsam anheizen.
@Olaf:
>> ...und du meinst nicht das man da etwas vernachlaessigen kann? .-)
nein, du?
Das ist immer eine Frage der Genauigkeitsanforderungen, die uns ja nicht
bekannt sind.
Nur weil p1 sehr klein ist, ist noch lang nicht zu vernachlässigen
immerhin geht die Temperatur in 4. Potenz ein.
@Sebastian B.:
Matlab Curve-Fitting Toolbox
gnuplot hat auch ne fit funktion vielleicht ja auch maxima oder scilab?
> Nur weil p1 sehr klein ist, ist noch lang nicht zu vernachlässigen > immerhin geht die Temperatur in 4. Potenz ein. > ist etwas sehr kleines "hoch vier" nicht noch viel kleiner ? :-) ((1)^-4) ^4 = (1)^-16 Oder irre ich mich? MFG
Der Faktor vor der variable wird nicht potenziert sebastian...
heinz wrote:
> Der Faktor vor der variable wird nicht potenziert sebastian...
danke heinz ...
aber einen Koeffizienten (so nennt man die komischen Zahlen) der in der
Größenordnung E-07 liegt mit einer Variablen zu verrechnen... ob das
nicht im Rauschen untergeht
Die gesuchte Formel findest du bspw. Wikipedia, wenn du nach NTC suchst: http://de.wikipedia.org/wiki/NTC RH = RN * exp(b * (1/T - 1/TN)) Die Formel enthält drei Parameter RN, TN und b. RN und TN können zu einem Parameter a = RN * exp(-b / TN) zusammengefasst werden, T wird in Kelvin angegeben, also ergibt sich RH = a * exp(b / (T + 273.15)) a und b sind typabhängig. Durch Ausprobieren (oder Rechnen) findest du heraus, dass a=0.0105 und b=3100 ganz gut passen (s. Anhang). Für eine bessere Bestimmung der Parameter muss die Messung genauer sein. Dass die Kurve so gut passt, spricht dafür, dass es sich bei dem Bauteil tatsächlich um einen NTC (oder ein Teil mit ähnlicher Funktionsweise) handelt.
Ist wohl ein 330k-NTC (330kOhm Widerstand bei 20°C). Dann fällt der aber als Sensor aus, weil die üblicherweise nur bis 140-150°C gehen. Darüber hinaus altern sie stark, was bedeutet, dass sich der Widerstandswert mit der Zeit verschiebt. Besorg Dir einen PT500 oder PT1000, gibt es mäßig teuer bei Conrad, billig und robust vom Klempner aus alten Wärmemengenzählern, deren Kalibrierung abgelaufen ist. Der hat dann aber eine andere Kennlinie... ;-) Bedenke, dass Du sowieso noch umrechnen musst, weil Du ja nicht Widerstand, sondern die Spannung über einem Spannungsteiler mißt. FALLS Du das mit AVR machen willst => Tabelle und lineare Interpolation ;-) ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.