Forum: Mikrocontroller und Digitale Elektronik Tabelle für PT1000 berechnen


von Jürgen C (Gast)


Lesenswert?

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

von Sonic (Gast)


Lesenswert?

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!

von Stefan G. (steg13)


Lesenswert?

lass b und c weg, dann wirds einfacher.
Stell die Formel nicht um, lass die Tabbelkalkulation die Tabelle 
ertellen.

von Jürgen C (Gast)


Lesenswert?

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

von PeterL (Gast)


Angehängte Dateien:

Lesenswert?

obs stimmt, musst du selbst nachrechnen ;-) (das Ganze halt x10)

von Andreas W. (Gast)


Lesenswert?

Hier gibts ein JavaScript zur Berechnung:

http://www.pfoertner-messtechnik.de/div/nuetzlich.htm

von CH (Gast)


Lesenswert?

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

von Jürgen C (Gast)


Lesenswert?

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

von Stefan G. (steg13)


Lesenswert?

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.

von Andreas W. (Gast)


Lesenswert?

...die umgestellte Formel steht doch in dem Script [ function RT(R,R0) ]

http://www.pfoertner-messtechnik.de/div/sensors.js

von KlaRa (Gast)


Lesenswert?


von Stefan G. (steg13)


Lesenswert?

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

von Falk (Gast)


Lesenswert?

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

von Jürgen C (Gast)


Lesenswert?

Hallo,
danke nochmal, ich konnte mit eurer Hilfe mein Problem lösen.
Macht euch bitte keine Arbeit mehr.

Viele Grüße

Jürgen

von Bernhard S. (bernhard)


Lesenswert?

Hallo Jürgen,

wie hast Du Dein Problem gelöst?

Sitze gerade vor dem selben ;)

Gruß

Bernhard

von Hans-jürgen H. (hjherbert) Benutzerseite


Lesenswert?

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 -

von S. (Gast)


Lesenswert?

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.

von Steffen I. (echo)


Lesenswert?

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

von Michael W. (wiebel42)


Lesenswert?

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

von Matze N. (hupe123)


Lesenswert?

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ß

von Thilo M. (Gast)


Lesenswert?

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.

von Matze N. (hupe123)


Lesenswert?

Und wo hast du die Formel her?

von Thilo M. (Gast)


Lesenswert?

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...

von Thilo M. (Gast)


Lesenswert?

Puh ...
hab's wiedergefunden:
http://www.oliverbetz.de/pt100/pt100.htm

von Matze N. (hupe123)


Lesenswert?

Und wie rechne ich von meinem ADC Wert auf den Widerstand zurück um den 
Fehler zu kompensieren?

Gruß

von Thilo M. (Gast)


Lesenswert?

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.

von Jürgen (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Matze N. (hupe123)


Lesenswert?

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.

von Raimund R. (corvuscorax)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.