Temperatursensor PT100, Gradanzeige im Webvisu in Codesys

u.stemler

Level-1
Beiträge
17
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich nutze codesys und raspi.
ich habe den Temperatursensor PT100 (-50 - 150 Grad, 4-20 ma, 24 Volt) an der Analogkarte, Eingang 1, von Horter angeklemmt und bekomme einen Wert von ca 4 Volt. Was soweit auch ok ist.
Was muss ich im Webvisu im Anzeigeinstrument eingeben, dass ich den Digitalwert in Grad Celsius angezeigt bekomme?

Viele Grüße
Udo
 
ich habe den Temperatursensor PT100 (-50 - 150 Grad, 4-20 ma, 24 Volt) an der Analogkarte, Eingang 1, von Horter angeklemmt und bekomme einen Wert von ca 4 Volt. Was soweit auch ok ist.
Was muss ich im Webvisu im Anzeigeinstrument eingeben, dass ich den Digitalwert in Grad Celsius angezeigt bekomme?

Also irgendwie passt das noch nicht zusammen, finde ich.

PT100 ist ein Temperaturabhängiger Widerstand, von Hause aus hat der in der Regel keinen Stromausgang. Gleichzeitig misst Du aber scheinbar eine Spannung? :confused:

Wenn Du weißt, wie warm es an Deinem Sensor ist kannst Du den Wert den Du misst umrechnen - einfach mit dem Messbereich skalieren.
 
Ich hab jetzt bei Horter keine Eingangskarten für PT100 gefunden. Die normale Analogeingangskarte kannst Du ivm einem PT100 nur über einen 0(2)...10V oder 0(4)...20mA Transmitter einsetzen. Der direkte Anschluss eines PT100 an die Analogkarten wird nicht funktionieren, weil die Auflösung grottenschlecht wäre und der PT durch den Meßstrom eine nennenswerte Eigenerwärmung erfahren würde.
Alternativ kannst Du über einen NTC nachdenken. Die haben eine steilere Kennlinie und sind mit geringen Genauigkeitsansprüchen im Spannungsteiler einsetzbar.

Mach mal 'ne Skizze!!!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich habe her mal drei Bilder und einen link zur Analogkarte
pt100-1.jpg

pt100-2.jpg
http://www.ebay.de/itm/Temperature-...e=STRK:MEBIDX:IT&_trksid=p2060353.m2749.l2649

pt100-3.jpg
http://www.horter.de/blog/i2c-analog-input-5-kanaele-10-bit/

Das gelbe Kabel geht vom Transmittermodul, Bild2, VOUT +, zur Analogkarte an Eingang 1.
Der Eingang 1 wird in Codesys auch angezeigt mit dem Wert um 430. Müssten 430 von 1023 Bit sein.
Ich habe das so verstanden: 0 Bit müssten - 50 Grad und 1023 Bit müssten 150 Grad sein.
Messbereich geht von -50 bis 150 Grad.
Wenn ich den Thermofühler in die Hand nehme, geht der Wert 430 auch hoch, als fühlt er Temperatur.
Diesen (wahrscheinlich) Bitwert möchte ich in Codesys, Webvisu mit einem Anzeigegerät als Grad Celsius ausgeben lassen.

Ich hoffe, ich kann mich hier verständlich machen.

Viele Grüsse
Udo
 
Also zuerst mal denke ich das Dein Temperatur Bereich bei 0^C beginnt und bis 100^C geht.
Das ist der Bereich den dein Messumformer kann.
Also bedeutet das 0V = 0^C und 10V=100^C.
Jetzt benötigst du noch die Auflösung deiner Karte für den Bereich 0V bis 10V.
Dann ein wenig Dreisatz und du bist schon da.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Udo,
ich fasse hier mal die Antworten aus diesem Thread zusammen und ergänze sie etwas. Doch zunächst ein Tipp. Bitte such Dir mal Unterlagen zum Thema Temperaturmessung mit PT-Widerstandsthermometern, Messumformer und analoge Eingangsklemmen/-karten raus und arbeite diese durch. Du hast hier so einiges durcheinander gebracht. Außerdem ist es für uns wenig hilfreich, wenn Du Bilder von einem Messumformer anhängst, der Link aber auf einen verweist, der zwar auch für einen PT100 gedacht ist, aber einen Strom und nicht wie der auf Deinen Bildern eine Spannung ausgibt.
Doch nun zum Thema. Du möchtest einen PT100 über einen Messumformer an eine analoge Eingangsklemme anschließen. Dies ist, wie Morymmus in Beitrag #4 schon schrieb ein temperaturveränderlicher Widerstand, die Angaben 24V und 4-20mA sind dort völlig falsch. Lediglich der Messbereich (-50° - 150°) ist von Bedeutung und welcher PT (Hier PT100) es ist sind wichtig. Der Messbereich des Sensors ist aber nur solange wichtig, solange der Messumformer den gleichen oder einen größeren Messbereich abdeckt. In Deinem Fall bedeutet dies, dass der maximale Messbereich durch den Messumformer auf 0° - 100° begrenzt ist, was Dr.MirakulixX in seinem Post #8 schon festgestellt hat. Für die anschließende Berechnung ist dann der Messbereich des Messumformers und die Auflösung der Eingangskarte entscheidend.
Laut Handbuch hat Deine Karte eine Auflösung von 10Bit, das heißt sie gibt Werte von 0-1023 oder in Hex von 0Hex - 3FFHex aus. Um jetzt von dem Wert den Dir die Karte liefert musst Du den Wert über einen einfachen Dreisatz skalieren, wie wollvieh in #3 und #7 schon festgestellt hat.
So, jetzt kommt Mathe. Die Formel lautet in -deinem Fall.
Maximaler Messbereich / Maximaler dezimaler Zahlenbereich * Zahlenwert der Eingangskarte

Um bei Deinem Beispiel mit der Zahlenwert von 430 zu bleiben bedeutet dies:

100° - 0° = 100° Messbereich
1023 maximaler dezimaler Zahlenbereich
Messwert = 430

100 / 1023 * 430 = 42°

Was mich bei der ganzen Geschichte nur irritiert ist, dass der Sensor bei Raumtemperatur schon einen Messwert 420 an der Karte ergibt und dieser dann noch steigt wenn Du den Sensor berührst, weil dann wärst Du ein echt heißer Typ. Bei Deinem Durcheinander hast Du Deinen Messumformer der 0-10V ausgibt aber nicht aus versehen an eine Eingangskarte für 4-20mA gehängt, oder?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Nach 5 mal hinsehen hab ich jetzt auf Deinem Foto auch gesehen, das der Meßbereich des Transmitters bei -50° beginnt, sofern der Chinese die 5 mit Edding vornedrangemalt hat.
Dann wäre die Temperatur bei einem Analogwert von ~430 immer noch

150/1024*430-50~ 13°C

Stimmt also auch nicht ganz. Im Idealfall machst Du eine eigene Sensorkalibrierung mit der Eiswasser/siedendes Wasser-Methode. Diese beiden Temeperaturen sind mit einem akzeptablen Fehler bekannt und reproduzierbar.
Alternativ kannst Du auch mit zwei Präzisionswiderständen 100Ohm und 138Ohm, welche Du statt des PT100-Sensors anklemmst, kalibrieren.
 
Zuletzt bearbeitet:
Und wenn ich vom Ebay-Angebot mit einem MB von -50...150°C ausgehe, komme ich auf:

200/1024*430-50~34°C

Das Fehlerpotential wird also durch die Raterei nicht kleiner. Schon ein einzelner Widerstand im Bereich zwischen 100Ohm und 138Ohm kann die Sache aufklären. (Einpunktkalibrierung unter Annahme linearer Kennlinie und bekannter Endwerte.)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin wieder da.
Ich werde den PT100 mit einem 100 und 138 Ohm Widerstand kalibrieren.

Wo trage ich in Codesys die o.g. Formel (200/1024*430-50) ein, damit ich den Temperaturwert bekomme.

Nochmal vielen Dank für Eure Rückmeldungen.
udo
 
Im Code, der zur Auswertung der Temperatur anscheinend erst noch geschrieben werden muß.
Temperatur:=200/1024*(Analogeingang-50);
Dabei muss die Variable "Analogeingang" mit dem Analogeingang verknüpft werden. Der Wert "Temperatur" ist dann der Wert, der im weiteren Programmablauf benutzt wird.
Die Formel muss dabei noch angepasst werden mit den Ergebnissen der Kalibrierung, sodass der Temperaturwert dann bei Anschluss des 100 Ohm Widerstands auch wirklich 0 ist bzw. bei 138 Ohm 100.
Alternativ kann es sein, das die Analogkarte bereits eine Anwenderskalierung ermöglicht, dann kann die Kalibrierung dort passieren und die Formel im Code bleibt unverändert.
 
Zuletzt bearbeitet:
Hallo weißnix_,
noch nicht ganz wach gewesen? Wenn ich mich nicht völlig täusche hat Deine Formel an zwei Stellen leider einen Fehler. Erstmal muss er (Achtung, Klugscheißerei!!!) durch 1023 und nicht durch 1024 teilen und dann dürfen die 50 nicht in der Klammer abgezogen werden, weil das ja 50° sind und nicht der Eingangswert um 50 reduziert werden soll. Soweit die "Punkt vor Strich" Regel von der CPU beachtet wird sollte die Formel so aussehen:

200/1023*Analogeingang-50
 
Zuletzt bearbeitet:
Der GND stimmt. Ich habe es nochmal kontrolliert.
Ich warte auf die Widerstände, dann werde ich den PT100 kallibrieren.

Wo trage ich die o.g. Formel in Codesys ein.
Oder brauche ich ein Modul von Oscat_Basic.
Und wenn, welches Moduel brauche ich .
Ich hatte es mit dem OSCAT_BASIC.TEMP_NI probiert, bin aber nicht weiter gekommen.
Wenn ich die Formel direkt irgendwo eingeben könnte, wäre mir lieber, da ich dann auch noch andere Sensoren (Abstandsmesser usw.) nach diesem Prinzip nutzen könnte.

Viele Grüße
Udo
 
In einer grafischen Programmiersprache wie FUP könnte die Umsetzung der Formel etwa so aussehen:
Unbenannt.PNG

Dabei sollte Temperatur dann als REAL deklariert sein.
 
Zurück
Oben