Hallo, ich möchte(muss) mir eine Tabelle für die Temperaturermittlung mit PT1000 Sensoren berechnen. Dazu muss ich die folgende Formel nach "t" auflösen: R(Temperatur) = R * (1 + A * t + B * t² + C * (t-100) * t³) Da diese Aufgabe meine Kenntnisse in Mathematik übersteigt bin ich auf fremde Hilfe angewiesen. Leider konnte mir der Mathelehrer meines Sohnes auch nicht weiter helfen und ich hoffe nun, das mir hier geholfen werden kann. Viele Grüße Jürgen
Da kann dir ein Mathematiklehrer nicht helfen??? ERSCHRECKEND!!! Pisa lässt grüßen!!! Formeln umstellen sollte so schlimm nicht sein. Aber um's vorweg zu nehmen: ICH MACH's AUCH NICHT!
lass b und c weg, dann wirds einfacher. Stell die Formel nicht um, lass die Tabbelkalkulation die Tabelle ertellen.
Hallo Stefan, ich brauche ja eben die umgestellte Formel um mit einer Tabellenkalkulation die Temperatur berechnen zu lassen. Auf die Tabelle wird dann über den Index auf den entsprechenden Temperaturwert zugegriffen. Die Formel für den positiven temperaturbereich konnte ich schon umstellen, nur bei der obigen Formel komme ich nicht mehr weiter. Vieleicht kann (mag) mir doch einer helfen. Ein nützlicher Link würde auch reichen. Viele Grüße Jürgen
naja die formel auf folgende form zu vereinfachen dürfte kein problem sein 0 = x + x^2 + x^3 + x^4 --> 0 = (x+ x^2)(1 + x^2) --> 0 = x + x^2 und 0 = 1 + x^2 --> 0 = 1 + x und -1 = x^2 --> x = -1 und x = j x = -j mit den konstanten gibts halt eitwas schreibarbeit, da hab ich keine lust... aber mit diesem weg kommst du ans ziel... mfg CH
Hallo, vielen Dank für eure Hilfe. Die XLS von PeterL ist genau was ich gesucht habe. Der Link von Andreas W ist auch sehr interresant. Den Lösungsweg von CH kann ich heute nicht mehr nachvollziehen, ich werde es aber trotzdem noch versuchen. Also nochmals vielen Dank und gute Nacht. Jürgen
Hab eben versucht die Formel umzustellen, ist mir dann aber zu kompliziert geworden. Da mein Matheprof nicht mehr lebt, kann ich ja zugeben, dass ich es nicht mehr kann :-) Warum auch lass Excel aus der Temp. den Widerstand berechnen. In der Spalte Widerstand suchst du den passenden Wert und einen kleineren und einen größeren Wert. Dann den Zwischenwert durch eine Geradengleichung ermitteln. Oder lass die Konstante c weg. Dann hast du etwa 1%-2% Abweichung. So genau kannst du gar nicht messen.
...die umgestellte Formel steht doch in dem Script [ function RT(R,R0) ] http://www.pfoertner-messtechnik.de/div/sensors.js
Hallo Jürgen, schau mal hier nach. http://www.heraeus-sensor-nite.de/cgi-bin/show.fpl?area=Technologie,PTEigenschaften&lng=d&tpl=Frame Gruss Klaus.
Ich glaube Jürgen wollte speziell die Formel aus Wiki haben http://de.wikipedia.org/wiki/Pt100 Im Bereich unter 0 °C verwendet man ein Polynom 4. Grades: R = R0 ·(1 + a ·T + b · T2 + c · (T − 100 °C)· T3) a = 3,9083 · 10-3 / °C b = -5,775 · 10-7 / °C2 c = -4,183 · 10-12 / °C4
Ich denke Stefan hat Recht, das Polynom 2. Ordnung ist hier vollkommen ausreichend. Und der Fehler ist dabei ganz sicher kleiner als 2%, denn C ist gerade mal in der Grössenordung 10^-12!!!! Dann isses nur ne einfache quadratische Geleichung (Mathematik Klasse 7 oder so) R = R0( 1 + A*T + B*x^2) R/R0 = 1 + A*T +B*T^2 0 = 1-R/R0 + A*T +B*T^2 -> Normierung p = A/B q = (1-R/R0)/B Mit den bekanntlich zwei Lösungen T1 = -p/2 + sqrt ( (-p/2)^2-q ) T2 = -p/2 - sqrt ( (-p/2)^2-q ) Google ist dein Freund. MFG Falk
Hallo, danke nochmal, ich konnte mit eurer Hilfe mein Problem lösen. Macht euch bitte keine Arbeit mehr. Viele Grüße Jürgen
Hallo Jürgen, wie hast Du Dein Problem gelöst? Sitze gerade vor dem selben ;) Gruß Bernhard
Das Programm GNU Octave herunterladen. (gibt es für Linux und für Windows) Dann eingeben (Cut & Paste) : help polyfit q t = [ -200 -150 -100 -50 0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 ] r = [ 18.49 39.71 60.25 80.31 100 119.4 138.5 157.31 175.84 194.07 212.02 229.67 247.04 264.11 280.9 297.39 313.59 329.51 345.13 360.47 375.51 390.26 ] u3 = polyfit( t, r, 3 ) u4 = polyfit( t, r, 4 ) v3 = polyfit( r, t, 3 ) v4 = polyfit( r, t, 4 ) Siehe: http://www.gnu.org/software/octave/ - Die Homepage http://wiki.octave.org/ - Das octave WIKI http://www.iterating.com/products/GNU-Octave-Repository/forum - http://de.wikipedia.org/wiki/GNU_Octave - http://homepages.uni-tuebingen.de/juergen.schweizer/Octave.html -
Hallo, so ein Polynom vierten Grades analytisch zu lösen is nicht ganz so einfach... ich hab mich neulich mal daran versucht, wobei allerdings der Term zweiter Ordnung null war. Nach einem Tag habe ich mich dann frustriert an eine numerische Lösung gemacht, genauso wie oben geschehen... Gruss S.
Moin, stand vor demselben Problem. Hab dann die optimierte Formel 4. Grades aus Wikipedia in meinen µC geschrieben, funzt wunderbar. http://de.wikipedia.org/wiki/Linearisierung_von_resistiven_Sensoren (ganz unten die formel) MfG Echo
Ich verstehe nicht ganz wo das Problem überhaupt lag, eine Tabelle legt man doch an um die Gleichung eben NICHT lösen zu müssen. Numerisch wäre ein 8-Bitter damit auch doch eine Zeit beschäftigt. Das tolle an einer Tabelle ist ja eben das man sie in beide Richtungen verwenden kann. Das hat aber ja auch bereits steg13 in seiner ersten Antwort angedeutet. -wiebel
Hi, ich wollte eben mal Octave ausprobieren, er gibt mir allerdings, wenn ich für t=[-200 usw. einfüge den fehler t = [ -200 -150 -100 -50 0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 ] error: number of columns must match (6 != 16) aus. Für r das hier: r = [ 18.49 39.71 60.25 80.31 100 119.4 138.5 157.31 175.84 194.07 212.02 229.67 247.04 264.11 280.9 297.39 313.59 329.51 345.13 360.47 375.51 390.26 ] error: number of columns must match (2 != 10) Kann mir da jemand helfen? Hintergrund ist Berechnung für den PT1000 aus diesen Werten:
1 | -10 960,859 |
2 | -5 980,444 |
3 | 0 1000 |
4 | 5 1019,527 |
5 | 10 1039,025 |
6 | 15 1058,495 |
7 | 20 1077,935 |
8 | 25 1097,347 |
9 | 30 1116,729 |
10 | 35 1136,083 |
11 | 40 1155,408 |
12 | 45 1174,704 |
13 | 50 1193,971 |
14 | 55 1213,21 |
15 | 60 1232,419 |
16 | 65 1251,6 |
17 | 70 1270,751 |
18 | 75 1289,874 |
19 | 80 1308,968 |
20 | 85 1328,033 |
21 | 90 1347,069 |
22 | 95 1366,077 |
23 | 100 1385,055 |
24 | 105 1404,005 |
25 | 110 1422,925 |
26 | 115 1441,817 |
27 | 120 1460,68 |
Danke und gruß
Ich benutze diese Formel:
1 | r = R/R0-1; |
2 | T = (r*(255.8723+r*(9.6+r*0.878))); |
Wobei R0 der Widerstand bei 0°C ist und R der gemessene Widerstand. Die Rechenzeit hält sich in Grenzen, der PT1000 ist eh' nicht so schnell, dass da blitzartig was passieren könnte. In einem Temperaturregler läuft das schon mehrfach recht gut.
Matze Niemand schrieb:
> Und wo hast du die Formel her?
Gute Frage! :)
Aus den Tiefen des Netzes, ich guck' mal ob ich die Quelle
wiederfinde...
Und wie rechne ich von meinem ADC Wert auf den Widerstand zurück um den Fehler zu kompensieren? Gruß
In meinem Fall habe ich zwei Widerstände zum Kalibrieren benutzt. Einer für 0°C (1000 Ohm), einer für 100°C (1385 Ohm). Der Null-Grad-Punkt (ADC_Null) und der 100-Grad-Punkt (ADC_Ende) wird jetzt gemessen. Dann mit
1 | Rconst = 385/(ADC_Ende-ADC_Null); |
Die Spanne (ADC-Werte) entsprechend 385 Ohm berechnet. Nun mit
1 | R = 1000+((Messwert-ADC_Null)*Rconst); |
den aktuellen Widerstand berechnen. Das war's. ;) Ach ja: ich bilde einen Mittelwert aus 100 Messwerten und dämpfe das Signal noch zusätzlich. Das Messignal muss natürlich entsprechend aufbereitet werden, bei mir -35°C...130°C entsprechen 0...5V.
Hallo, ich berechne meine Tabelle mit folgender Formel: Der Adwandler des Mega128 wird im Differemtial-Modus betrieben ADCWERT = Ergebins aus der AD-Wandlung (0 - 1024) VREF = Refernzspannung des AD-Wandlers (3,4V) GAIN = Verstärkung des AD-Wandlers beim Mega128 einstellbar (10) VNEG = Spannung am Negativen Eingang des AD-Wandlers (1,22V) RVOR = Wiederstand des Spannungsteilers (2700 Ohm) VCC = Versorgungsspannung des Spannungsteilers (5V) 3367,821441-@WURZEL(11342221,26-((((((ADCWERT * VREF)/(GAIN * 512))+VNEG)*RVOR)/(VCC-(((ADCWERT*VREF)/(GAIN*512))+VNEG)))/10-100)/5,80 2E-05) Das Ergebnis wird noch auf eine Stelle nach dem Komma gerundet und mit 10 multipliziert in einer Tabelle mit 1024 werten gespeichert. Die Hardware ist im Anhang beschrieben.
Danke für die großartige Hilfe, die ihr mir gegeben habt. Ich wollte allerdings den PT1000 über einen OPV verstärken und dann einfach den ADC des µC verwenden. Wird auch gehen, denke ich. Zur Fehlerberechnung nochmal: Ich habe mir die Mühe gemacht und mal ausgerechnet wie der Fehler ist, wenn man von von "nicht linearität" und von "linearität" ausgeht. Mit den Formel (nicht linearität) hat man bei einem 10bit ADC einen Fehler von ca. 0,9%. Ohne die Formeln (linearität) hat man einen Fehler von ca. 1,32%. Messbereich von 10°C bis 100°C. Ist also eigentlich zu vernachlässigen und man könnte sich den ganzen Rechenaufwand auch schenken :) Mal schaun, was ich draus mache.
Sorry, haben diesen Thread erst jetzt gesehen und kann eine recht ausführliche Excel-Tabell (für Pt100, Pt500 und Pt1000) beisteuern - falls es noch irgend jemanden interessiert/hilft. Zur Erklärung sei zu sagen, daß die (änderbaren) Werte sich wie folgt erklären: Ic: Konstantstrom durch den Pt-Sensor g1: Gain des ersten OpAmps, der die Pt-Spannung um diesen Wert verstärkt. g2: Gain des zweiten OpAmps, der auch den Offset um diesen Wert verstärkt. o2: Offset des zweiten OpAmps, um bei 0°C auch 0V auszugeben. Die Werte sind default-mäßig so gewählt, daß ein Temp-Bereich von -200°C bis etwa +266°C einer Spannung von -8,15...V bis +10V entspricht. Durch das verändern der Gain und Offset-Werte läßt sich eigentlich jeder nur denkbare Ausgangsspannungsbereich für den nachfolgenden ADC als auch der zu messende Temperaturbereich (z.B. bis zum Maximum der meisten Pt-Elemente bei 850°C) einstellen. Interessant für die Programmierung ist dann die Formel für die eingezeichnete Trendlinie in den Diagrammen. Wem es auffällt, wird sicherlich feststellen, daß die Funktion für positive Temperaturen (nur) ein Polynom 2. Ordnung ist, während für negative Temperaturen sich ein Polynom 4. Ordnung ergibt. Dies ist jeweils am zweiten und dritten Diagramm eines jeden Tabellenblattes erkennbar.
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.