www.mikrocontroller.net

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


Autor: Jürgen C (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Stefan Gemmel (steg13)
Datum:

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

Autor: Jürgen C (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: PeterL (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
obs stimmt, musst du selbst nachrechnen ;-) (das Ganze halt x10)

Autor: Andreas W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier gibts ein JavaScript zur Berechnung:

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

Autor: CH (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jürgen C (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan Gemmel (steg13)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas W. (Gast)
Datum:

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

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

Autor: KlaRa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jürgen,
schau mal hier nach.
http://www.heraeus-sensor-nite.de/cgi-bin/show.fpl...

Gruss Klaus.



Autor: Stefan Gemmel (steg13)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jürgen C (Gast)
Datum:

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

Viele Grüße

Jürgen

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jürgen,

wie hast Du Dein Problem gelöst?

Sitze gerade vor dem selben ;)

Gruß

Bernhard

Autor: Hans-jürgen Herbert (hjherbert) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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-Repos... -
http://de.wikipedia.org/wiki/GNU_Octave -
http://homepages.uni-tuebingen.de/juergen.schweize... -

Autor: S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Steffen I. (echo)
Datum:

Bewertung
0 lesenswert
nicht 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_re...

(ganz unten die formel)

MfG Echo

Autor: Michael Waiblinger (wiebel42)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matze Niemand (hupe123)
Datum:

Bewertung
0 lesenswert
nicht 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:
-10  960,859
-5  980,444
0  1000
5  1019,527
10  1039,025
15  1058,495
20  1077,935
25  1097,347
30  1116,729
35  1136,083
40  1155,408
45  1174,704
50  1193,971
55  1213,21
60  1232,419
65  1251,6
70  1270,751
75  1289,874
80  1308,968
85  1328,033
90  1347,069
95  1366,077
100  1385,055
105  1404,005
110  1422,925
115  1441,817
120  1460,68

Danke und gruß

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich benutze diese Formel:
r = R/R0-1;
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.

Autor: Matze Niemand (hupe123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wo hast du die Formel her?

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Puh ...
hab's wiedergefunden:
http://www.oliverbetz.de/pt100/pt100.htm

Autor: Matze Niemand (hupe123)
Datum:

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

Gruß

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
Rconst = 385/(ADC_Ende-ADC_Null);
Die Spanne (ADC-Werte) entsprechend 385 Ohm berechnet.
Nun mit
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.

Autor: Jürgen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Matze Niemand (hupe123)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Raimund Rabe (corvuscorax)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.