Pt100 Temperatur Auslesen

Guten Abend zusammen,

ich bin noch recht neu in der µC Welt und bräuchte daher euren Rat und Unterstützung.
Es geht um das Anschließen (Schaltung) und Auslesen (Programmieren) eines konventionellen und festgelegten Pt100 (%product-title% kaufen). Der Analoge Signal wird durch einen 10-bit ADC erfasst. Genauigkeit ist erstmal nicht soo relevant. Gemessen wird in einem Kammer (Temperaturbereich: 20 .. 500°C).

Mir ist bewusst, dass unzählige Threads eigentlich dazu vorhanden ist und diese eine Schaltung für den PT100 nicht existiert - aber genau deswegen verwirrt mich das ganze auch der Vielfältigkeit an Variationen. Kann mir da jemand bitte konstruktive Hilfestellung geben wie ich, als Anfänger, sowas realiseren kann?

Vielen Dank im Voraus schonmal

Halll,
ist ein wenig undurchsichtig, was Du schreibst...
Der Link auf den Sensor beschreibt nur den Sensor- mit dem alleine kannst Du am Arduino nicht viel anfangen.
Dann schreibst Du "Der Analoge Signal wird durch einen 10-bit ADC erfasst"
Was ist denn das für ein ADC? Funktioniert der mit dem Arduino?
Wenn Du keinen ADC hast, dann brauchst Du noch einen Messwandler.
Was hat Du denn bis jetzt an Hardware?
Gruß und Spaß
Andreas

Oh hey,

mit so eine schnelle Antwort hätte ich nicht gerechnet - Danke.
Mit dem Link wollte ich meine verwendete Hardware untermauern, da die Antworten in anderen Beiträgen meist Alternativen zum Sensor beschreiben, welche doch besser geeignet wären usw..

Der besagte ADC ist bereits im Arduino Mega2560 integriert - das wäre wohl doch eine bessere Beschreibung gewesen. An Hardware habe ich ansonsten noch ein Display, welche aber eine andere Geschichte wäre.

Zusatz:
Mich würde es auch interessieren weshalb so viele wirklich simple, wie einen einfacher Spannungsteiler, und dann doch recht komplizierte Schaltungen dafür existieren - klar ist es Anwendungsbedingt, aber dass da solche große unterschiede existieren?

Grüße zurück
Marie

Einen Messumformer für einen PT100 zu bauen, der halbwegs präzise ist, ist nicht ganz einfach.
wenn du Erfahrung mit elektronischen Schaltungen hast, kannst du sowas bauen.

wenn nicht, würde ich dir zu fertigen Modulen raten, je nach Budget z.B.: Pollin: Bausatz PT100 Messwandler V2.0 oder irgendwas bei Ebay oder aus anderen Quellen.

Das programmieren an sich ist nicht so schwer.

Auf diesen Messwandler bin ich auch gestossen. Ich denke als Laie werde ich wohl nicht drum rum kommen. Vielen Dank für die Bestätigung, dann kann ich das ja ohne Bedenke das verwenden - im Datenblatt steht jedoch, dass es für bis 400 °C ausgelegt sei. Ich mutmaße mal, dass man das auch für Temperaturen bis 500 °C nutzen könnte?! Das wäre wahrscheinlich nicht ganz linear wie unterhalb davon.

Das Programmieren ist für mich jedoch eine etwas großere Hürde ^^. Ich bekomme ja für Temperatur x eine Spannung bzw. einen digitalen Wert y. Woher weiß ich nun welche tatsächliche Temperaturen anliegen. Eine Referenzmessung mit einem anderen Messgerät habe ich leider nicht.
Und zudem müsste ich ja irgendwie die Temperaturgrenzwerte festlegen bzgl. der eingelesene Spannung.

Die Pt's sind ja genormt, müsste ich über die gemessene Spannung -> daraus den Widerstand berechnen und diese Werte in ein look-up Table einfügen und so mich auf die Temperatur beziehen?

Viele Grüße

Wie so oft die Frage: Wie genau muss es denn sein?

Der Pollin Messumwandler ist ein Bausatz zum selbst zusammenlöten und abgleichen.
Eine Genauigkeit ist nicht angegeben.

Professionelle Messumwandler für pt100 kosten ab 100€ aufwärts. Da steckt richtig Aufwand drin.

Um eine Temperaturindikation "warm - heiß - sehr heiß" zu bekommen reicht der Pollin.
Um zu wissen ob es 400°C oder 420°C sind, sicher nicht.

So wie ich die Abgleichvorschrift des Pollin verstanden habe, kann man auch auf höhere Temperaturen abgleichen, wenn man sich einen passenden Abgleichwiderstand besorgt, der dem PT-100 Wert bei 500°C entspricht.

Das Ergebnis ist dann (wenn man Pollin glaubt) eine Spannung, die proportional der Temperatur ist also im Arduino einfach über Formel umgerechnet werden kann.

400Grad Messwandler zeigt keine 500Grad an. Weil er bei 400Grad schon sein Maximum erreicht hat.

PT100 heist das der Widerstand bei 100Ohm bei 0grad(273Kelvin) ist. Rechnerisch ist er dann so angelegt das er bei 0 Kelvin 0 Ohm hätte. Nur kommen irgendwann Supraleitungseffekte dazu und er hat vorher schon 0 Ohm.

Wenn er also bei 0 Kelvin 0 Ohm hat, bei 273 Klevin 100 Ohm und ansonsten linear läuft hat er bei 273Grad (546Kelvin) 200 Ohm. Ein Kelvin Temperaturdifferenz sind dann nur 0,4 Ohm Widerstandsänderung. Und das ist relativ schwer selbst zu messen. Ohne 4 Draht Messung wird man da viel zu viel Fehler reinbekommen. Allerdings für ne grobe Schätzung könnte man das schon verwenden.

Jedenfalls ist dieser geringe Delta - Widerstand pro Grad der Grund für die teuren Messwandler. Und die Messwandler werden entsprechend kalibriert um den Widerstandsbereich von sagen wir 80-180Ohm abzubilden. Entspricht dann der Temperatur von x-y...was eben im Datasheet dann steht. Vieleicht lässt es sich beim Kalibrieren erhöhen, kommt auf den Messwandler an. Ohne genaue Kenntniss schafft man das aber nicht. Daher ist davon abzuraten.

chefin:
400Grad Messwandler zeigt keine 500Grad an. Weil er bei 400Grad schon sein Maximum erreicht hat.

In der Anleitung zum Pollin pt100 Signalwandler ist recht genau beschrieben, wie er abgeglichen wird.
Die Schaltung gibt, nach überschlägiger Rechnung, auch den Abgleich auf 500°C her. Man muss in dann eben so abgleichen, dass er erst bei 500°C sein Maximum erreicht.
Wenn ich das nicht geprüft hätte, hätte ich die Möglichkeit auch nicht erwähnt.

Im übrigen ist ein PT100 leider nicht so linear wie du es beschrieben hast. Um die Nichtlinearitäten auszugleichen wird schon Schaltungsaufwand betrieben. Das wäre zwar unnötig, wenn das ganze sowieso über µC ausgewertet wird, weil einen Kennlinien korrektur über lookup table einfacher ist, wird aber meist gemacht um eine definierte Schnittstelle zu haben.

Wie gross der Aufwand ist, ist, wie schon erwähnt, stark von der gewünschten Genauigkeit abhängig, die wir nicht kennen.

Hallo,
wie genau- oder ungenau spielt doch keine Rolle.
Der Messwandler ist für -50 bis 400°C ausgelegt, bei 5v oder 10v.
Am Arduino haben wird 5v, das sind dann 1024 Werte.

Wir haben 450° Werte, das ist dann eine Auflösung von 0,44°C über den Bereich.
Also Anzeige:
0,00
0,44
0,88
1,32
1,76
2,20
2,64

u.s.w.

bei Zimmer-Temperatur:

19,36
19,80
20,24
20,68
21,12
21,56
22,00
22,44

u.s.w

jetzt legst Du den Messbereich auf 0 bis 100°C fest

Also Anzeige:
0,00
0,10
0,20
0,29
0,39
0,49
0,59

u.s.w

bei Zimmer-Temperatur:

19,34
19,43
19,53
19,63
19,73
19,82
19,92
20,02
20,12
20,21
20,31
20,41
20,51
20,61
20,70
20,80
20,90
21,00
21,09
21,19
21,29
21,39
21,48
21,58
21,68
21,78
21,88
21,97
22,07
22,17
22,27
22,36

alles Theorie…
jetzt brauchst Du einen sehr genauen Ersatzwiderstand für einen bestimmten
Temperaturbereich. Den gibt es zu kaufen.
Jetzt muß das ganze aber kalibriet werden.
Genau 0°C mit Eiswasser ist schon zweifelhaft, aber was ist mit den anderen
Werten zur Überprüfung, 5, 10, 15, 20°C?

Nur weil er bei 0°C, 0 anzeigt, heißt das noch lange nicht, das bei 7,8°C auch
7,8°C vorhanden sind. Zu viele Unbekannte…
-der Wandler, gibt er an seiner Referenzspannung tatsächlich den Widerstand
des PT nach Datenblatt aus?

  • der Ersatzwiderstand, wie hoch ist dessen Widerstand wirklich
  • die 5v des Arduino, sind das denn tatsächlich 5v?

Da kommt ein Fehler zu anderem, und es sollte mich schon wunder, wenn man
damit- OHNE Tabelle, auf ±0,5°C kommt.

Nun kann man sagen, ich brauche es nicht so genau…
Gut, und wofür dann diesen Aufwand betreiben.

Diese PTxxx werden fast immer überschätzt. PT 100, genau, toll- blah, blah.
Mit den PTxxx kann man sehr genau Temperaturen ermitteln- aber nur wenn man
erheblichen Aufwand an der Hardware- wie auch an der SoftwareSeite betreibt.
Dann mal viel Spaß dabei…
Gruß
Andreas

Hallo,

vielen Dank für die konstruktive Anmerkungen.

Der Toleranzbereich müsste ich wohl Schaltung bedingt nehmen wie es eben kommt (bis 1 °C würde ich es sher begüßen), wobei es toll wäre zu wissen auf welche Temperatur man sich tatsächlich befindet. Die Auflösung ist ja wahrscheinlich vom ADC abhängig

Wenn ich dich richtig verstehe, benötige ich lediglich für den Feinabgleich einen exakten Widerstand mit 280,98 Ohm (Delta-R Pt100 WIderstandtabelle | Delta-R) für 500 °C?

Meine größte Mammutaufgabe wäre die Programmierung. Wie gebe ich anhand davon die Temperatur aus?

Viele Grüße
Marie

Also gut.

gehen wir mal davon aus, dass deine Schaltung das macht, was du willst und sie gibt eine, zur Temperatur proportionale, Ausgangsspannung aus.
0°C = 0V
500°C = 5V

dann schaust du dir mal das Beispiel AnalogReadSerial an, das ja auch in deiner IDE enthalten ist.

Hier lernst du, analoge Werte zu lesen und auf dem PC-Monitor auszugeben.

Dein AD-Eingang ließt 10bit, du bekommst also bei 0V einen Wert von 0, bei 5V am AD einen Wert von 1023.

Wenn du nun die Temperatur ausgeben willst ist das ein einfacher Dreisatz.
500°C entsprechen 5V entsprechen 1023 bit.

Füge die Zeilen ein:

long Temperatur = (sensorValue * 500L) / 1023;  
Serial.print(Temperatur);
Serial.println("°C\n");

ok?

SkobyMobil:
Diese PTxxx werden fast immer überschätzt. PT 100, genau, toll- blah, blah.
Mit den PTxxx kann man sehr genau Temperaturen ermitteln- aber nur wenn man
erheblichen Aufwand an der Hardware- wie auch an der SoftwareSeite betreibt.
Dann mal viel Spaß dabei…
Gruß
Andreas

Ja, aber im wesentlichen benötigt es nur einen geeigneten Meßumformer der einem eine zum Meßbereich normierte Ausgangsgröße bietet zb. 0-5V, am besten in Vierleitertechnik. In der Industrie wird das bis ca. 400 Grad mit PT100 Elementen und entsprechenden Wandlern (z.b Ausgangsgröße 0-10V/0-20mA/4-20mA Genauigkeit <0,5% ) millionenfach eingesetzt. Ohne jetzt den Consumer Bereich zu kennen würde es mich doch schwer wundern wenn es nicht entsprechendes am Markt für "kleines" Geld gibt.
Man kann nicht alles für 5 €uro haben.

Die Auswertung ist wahrscheinlich jedoch, was die "relative" Genauigkeit betrifft, also entweder 410°C oder doch 422°C, nicht so berauschend?

Grüße
Marie

Ich denke, die relative Genauigkeit (jetzt ist es 2°C wärmer als vorhin) ist recht gut.
Die Absolute Genauigkeit (hats 420° oder 440°C) wird nicht so toll sein.

Aber hochgenaue Thermometer (besser 1%) schafft man nur in dem man
a) hochgenaue Komponenten verwendet
b) das gesamte System kalibriert.

Das kostet Geld. (und Aufwand)
Und die Software ist dabei wirklich das allerkleinste Problem.

Ich weiß, du hast eingangs geschrieben, dass du auf den PT100 festgelegt bist.
Aber vielleicht solltest du mal über Thermoelemente nachdenken?

Noch eine Alternative:
Anstatt eine der bekannten Schaltungen zu nehmen, die versuchen die Kennlinie zu linearisieren, könntest du auch den PT100 einfach nur mit Vorwiderstand betreiben, und mit einem 24-AD die Werte einlesen, am besten differenziell. Die Linearisierung und Umrechnung in Temperatur kann dann die SW machen (die kann das viel besser als Hardware!), weil die Kennlinie des PT100 ja bekannt ist, aber das ist wirklich eine der leichteren Übungen. Da helfen wir dir natürlich gerne.
Geeignete Kandidaten wärend der AD7714 oder der LTC2493

Um es mal generell auszudrücken: Das Problem ist, dem Arduino ein hinreichend genaues Signal zur Verfügung zu stellen. Dass dann in Temperaturen umzurechnen und irgendwo anzuzeigen, ist dann viel leichter.

Vorab vielen Dank Gunther für deine Tatkräftige Unterstüzung!

Leider nein, der Pt100 ist Anwendungs- bzw Konstruktionsbedingt ausgewählt worden.

Eigentlich spielt die absolut Temperatur für mich eine größere Rolle, da es um eine Überwachung geht und dabei eine gewisse Temperatur nicht überschreiten werden darf.

Die 24-AD ist jetzt für die Auflösung gedacht? Da die Auflösung nicht an erste Stelle steht, würde ich doch gerne den ADU vom Arduino Mega2560 mit 10 bit Wandler nehmen ..

Die Alternative wäre dann ein einfacher Spannungsteiler? Ich würde die Versorgungsspannung vom Arduino mit 5V nehmen und eine in Reihe angeschlossenen Widerstand mit bspw. 5k Ohm nehmen damit ich den Pt100 einen Strom von 1mA bestromen kann - wäre diese "Stromquelle" da eigentlich nicht so zuverlässig?

Zum Programmieren: die Umsetzung könnte man dann mit einem Look-Up-Table (linearisieren) realisieren?
Da tu ich mich noch ziemlich schwer damit, da ich noch nie einen Sensor ausgewertet habe.

Viele Grüße
Marie

Ja, das würde man dann mit einer Look-Up Table machen können.

Aber rechne dir das doch nochmal durch:

1mA Messstrom
Nimm mal 4.7k Vorwiderstand an.
Bei 0°C hat der PT 100 100 Ohm,
bei 500°C 280,9 Ohm

Das gibt die beiden Eckspannungen
104mV und 282mV, also ca. 180mV differenz.
Bei 5V / 10 bit hast du eine Auflösung von 4,88mV/digit

Das kann nicht funktionieren!

Mit 1,1V ist es zwar besser, aber bei weitem nicht ausreichend.

Die externen ADs punkten nicht nur dadurch, dass sie deutlich höher auflösen, sie sind auch noch genauer. Und du könntest eine Brückenschaltung nehmen und den AD als Differnenzmessung.
Viele Möglichkeiten.

Wie schon eingangs erwähnt: Eine Schaltung für eine präzise PT100 Messung ist nicht einfach...

bei meiner Rechnung sind es zwar 180 mV, macht es zwar nicht viel besser aber bei 1,1V Referensspannung u.U. brauchbar

ElEspanol:
bei meiner Rechnung sind es zwar 180 mV, macht es zwar nicht viel besser aber bei 1,1V Referensspannung u.U. brauchbar

Danke, hatte eine Null zu wenig geschrieben, gerechnet hatte ich sie schon.

Tut mir leid, dass ich mich erst so spät melde.
Ich habe eine Seite gefunden, indem man die Widerstände für die Brückenschaltung berechnen lassen kann: Temperaturmessung mit PT100 und NTC

Nochmal
Temperaturbereich: 0°C bis 500°C und
Spannungsbereich: 0 V bis 5 V

Ich hoffe, dass daran nichts auszusetzen ist
In der Abbildung sind die Widerstände:

R1 = 100 Ohm,
R2 = 2200 Ohm,
R3 = 1400 Ohm,
R4 => [Pt][/100] und
R5 = 2400 Ohm (für einen Messstrom von 2mA)

gewählt.

mit
UPt100 = Uref * R4 / (R4+R5)
ergibt sich eine Differenzspannung von 0,320 V zwischen 0°C und 500°C.

Die Vertärkung wiederrum: v = Uref / dU = 5 V / 0,320 V = 15,63

müsste ich dann UA nach der OP Verstärkung am Pin AIN1 vom IC (AD7714) anschließen?
bzw. woher beziehe ich die Referenzspannung für den IC?

Viele Grüße
Marie

Gesehen?

Pt100 Temperaturmessung mit HX711 - funktioniert

Da hat jemand dein Problem gelöst!

Ein fertiger Baustein mit 24bit AD und ein Code dazu auch gleich.

Zu deiner Brückenschaltung:
ja, das müsste funktionieren.
Aber wenn du eine Brückenschaltung mit Verstärker nimmst, kannst du auch wieder den Arduino-AD nehmen. Mit dieser Schaltung bekommst du eine Auflösung von ca. 1°C pro Bit, das reicht. die Genauigkeit ist sicher schlechter.