LoRaWAN UDP Packet Forwarder 1
17.12.2024
Elektronik | Funk | Software
Der Technik-Blog
Der PT1000 ist ein analoger Temperaturwiderstand, der überwiegend in der Industrietechnik und bei Präzisionsmessungen eingesetzt wird. Damit der PT1000 sehr genaue Messwerte liefern kann, wird dazu ein sehr empfindlicher Messwandler benötigt, der den Messstrom gering hält und gegebenenfalls auch Leitungswiderstände berücksichtigt. In diesem Artikel geht es um das Messen der Temperatur mit einem PT1000 über einen Operationsverstärker mit dem Arduino Uno. Hinweis: Dieses Projekt versteht sich als ein einfaches Experiment, was eine Temperaturmessung mit dem PT1000 ermöglicht. Für eine Präzisionsmessung ist diese Schaltung daher nicht geeignet.
Beim PT1000 handelt es sich um einen PTC-Widerstand. Dies bedeutet wiederum, dass der innere Widerstand mit steigender Temperatur zunimmt. PT100/PT1000 werden sehr gerne in der Industrie verwendet, da diese Temperaturfühler sehr genaue Messwerte liefern, eine lange Lebensdauer haben und auch gleichzeitig sehr einfach ausgetauscht werden können. Ein weiterer Vorteil dieser Sensoren ist die Linearität. Das bedeutet, dass sich die Ausgangsspannung der Messwandler-Schaltung durchgehend recht linear verhält und somit ohne den Einsatz aufwendiger mathematischer Formeln vom Mikrocontroller verarbeitet werden kann.
Der primäre Unterschied zwischen den beiden Typen ist der Innenwiderstand. Der PT100 hat bei 0 Grad Celsius genau 100 Ohm, der PT1000 hingegen hat bei 0 Grad Celsius genau 1000 Ohm. Obwohl beide Sensoren recht präzise arbeiten, gibt es einige Unterschiede und auch Kriterien, woran der passende Typ ausgewählt wird.
Der PT100
Die Auswertung von einem PT100 ist aufwendiger als die vom PT1000, weil sich der Widerstand nur um den Faktor 1/10 gegenüber dem PT1000 ändert. Für die Auswerteeinheit bedeutet dies, dass der Spannungsunterschied viel geringer ist. Störende Einflüsse wie der Leitungswiderstand oder der Messstrom, der durch den PT100 geht, wirken sich viel massiver aus als beim PT100. Dennoch gibt es Gründe, warum der PT100 verwendet wird, wie zum Beispiel der größere Messbereich. Treten im Messbereich Temperaturen von mehr als 200 Grad Celsius auf, ist der PT100 definitiv die bessere Wahl, da meistens auch in so großen Messbereichen die Temperatur mit einer Auflösung von einem Grad ausreichend ist.
Der PT1000
Der PT1000 hat eine deutlich höhere Auflösung als der PT100. Bei 20 Grad Celsius hat dieser Fühler bereits einen Widerstand von fast 1078 Ohm. Im Vergleich zum PT100 hätte dieser erst 107,8 Ohm, was erst ein unterscheid vom 7 Ohm bei 20 Grad Celsius machen würde. Mit einem einfachen Spannungsteiler und einen R2 von 10 Kiloohm, könnte man die Temperaturänderung an der zweiten Nachkommastelle bei 5 Volt Spannung bereits erkennen, was mit einem PT100 ohne Verstärkung nicht mehr möglich wäre. Außerdem ist auch aufgrund des höheren Innenwiderstands der Messstrom viel niedriger und der Leitungswiderstand durch die Messleitungen ist weniger störend.
Generell eignet sich also der PT1000 für kleine Messbereiche (-40 bis +200 °C) besser als der PT100.
Am Markt gibt es verschiedene Sensoren mit 2 bis 4 Leitungen. Die einfachste und günstigste Version ist die 2-Leiter Version. Bei dieser Variante befindet sich der Messwiderstand in einem Gehäuse und wird über die zwei Anschlussleitungen hinausgeführt. Gerade beim PT100 spielt der Leitungswiderstand eine große Rolle. Kommt es zu einem Sensortausch oder wird die Leitung verlängert bzw. verkürzt, ändert sich auch der Leitungswiderstand. Dies kann wiederum zu einem falschen Messwert führen. Um Messfehler aufgrund des Leitungswiderstandes auszuschließen, wurde eine 3- oder 4-Leiter Version entwickelt. In dieser Schaltung wird je nach Typ eine oder beide Leitungen zum Widerstand parallel geführt. In der Auswerteeinheit befindet sich dann zusätzlich eine Messeinheit, die den Leitungswiderstand zum Fühler ermittelt und diesen entsprechend in die Korrektur einfließen lässt. Bei der 3-Leiter Version wird eine Seite gemessen und bei der 4-Leiter Version werden beide Leitungswiderstände ausgewertet. In der Regel wird die 3-Leiter Version am häufigsten und sogar bei Präzisionsmessungen verwendet. Die 4-Leiter Version wird eher selten verwendet, da diese kaum Unterschiede gegenüber der 3-Leiter Version bringt.
Bekannt ist, dass sich der Widerstand in Abhängigkeit von der Temperatur ändert. Da man mit einem Mikrocontroller aber keinen Widerstand messen kann, sondern nur analoge Spannungen, wird ein entsprechender Wandler benötigt. Der einfachste Wandler ist ein klassischer Spannungsteiler. Dazu wird zum PT1000 ein Widerstand mit einer festen bekannten Größe in Serie geschaltet. In der Mitte von den zwei Widerständen wird dann die Spannung gemessen, die sich dann in Abhängigkeit der Temperatur am PT1000 ändert. Weitere Infos zum Spannungsteiler gibt es hier. Da sich aufgrund von einem zu hohen Strom der PT1000 selbst erwärmen könnte, muss der zweite Widerstand entsprechend hoch sein. 10 Kiloohm sind ein guter Kompromiss aus Spannung und Strom für diese Anwendung. Zusätzlich hat man mit einem 10 Kiloohm Widerstand in Serie zum PT1000 bei 0 Grad Celsius etwa 1/10 der Betriebsspannung als Messspannung.
Ein Beispiel: Die Betriebsspannung des Spannungsteilers beträgt 5,0 Volt. Die Temperatur beträgt zu diesem Zeitpunkt genau 0 Grad Celsius (1000 Ohm am PT1000). In der Mitte vom Spannungsteiler eine liegt dann eine Spannung von etwa 0,450 Volt an. Steigt die Temperatur auf 20 Grad Celsius (etwa 1080 Ohm am PT1000) an, so steigt auch die Ausgangsspannung vom Spannungsteiler auf etwa 0,490 Volt an. Wie sich anhand des Beispiels schon erkennen lässt, ist der Spannungsunterschied nicht sehr groß, was am Arduino bei einer Auflösung von 10-BIT zu erheblichen Problemen führt.
Nachdem die Spannungsänderung für den A/D-Wandler im Arduino für eine brauchbare Auflösung zu gering ist, wird ein entsprechender Verstärker benötigt, der Linear zur Eingangsspannung ist. Der folgende Schaltplan zeigt einen entsprechenden Messwandler mit einem LM358 Operationsverstärker.
Die gesamte Schaltung wird über den 5V-Pin vom Arduino versorgt. Die ersten beiden Widerstände (R1,R3) bilden die Referenzspannung von etwa 0,45 Volt und sind mit dem Pin 2 vom LM358 verbunden. Angenommen die aktuelle Temperatur am PT1000 beträgt 0 Grad Celsius, so würde der zweite Spannungsteiler (R2, PT1000) ebenfalls eine Spannung von etwa 0,45 Volt am Pin 3 abgeben. Der LM358 vergleicht jetzt beide Spannungen und gibt den Spannungsunterschied über den Pin 1 an den Arduino weiter. Steigt die Temperatur am PT1000, so steigt auch die Ausgangsspannung vom LM358 deutlich an. Über diese Schaltung erreicht man jetzt eine deutlich höhere Spannungsänderung in Abhängigkeit von der Temperatur als nur mit einem einfachen Spannungsteiler. Dadurch ist der Arduino jetzt in der Lage, die Temperatur in einer höheren Auflösung zu verarbeiten. Über die Widerstände R2 & R4 kann der Messbereich eingestellt werden. Tauscht man den Widerstand R4 aus, so ändert sich auch die Ausgangsspannung am LM358. Übrigens wird dieses Verfahren als ratiometrische Messung bezeichnet.
Die Schaltung kann direkt an den 5V-Pin vom Arduino Spannungsregler angeschlossen werden. Der Spannungsausgang von der Schaltung ist mit dem analogen Input A0 verbunden. Die folgende Schaltung zeigt den gleichen Aufbau inklusive des Anschlusses an den Arduino:
Nachdem die Schaltung fertig aufgebaut wurde und mit dem Arduino verbunden wurde, ist es an der Zeit, den Beispielcode hochzuladen. Wenn der Sketch am Board ist, wird der Serial Monitor geöffnet. Dort sollte jetzt ein Spannungswert und ein Temperaturwert angezeigt werden. Der Temperaturwert stimmt aktuelle noch nicht, da die Schaltung noch nicht kalibriert ist. Die Spannung zeigt den aktuell gemessenen Wert am Pin A0 an. Für die Kalibration und somit auch richtige Anzeige der Temperatur müssen in der Software zwei Parameter angepasst werden:
vt_factor: Das Verhältnis zwischen Temperatur und Spannung
offset: Korrektur des Temperaturwertes
//More Information at: https://www.aeq-web.com/ //Version 1.0 | 03-DEC-2020 const int PT1000_PIN = A0; const float vt_factor = 1.88; const float offset = 0; float temp_c; void setup() { Serial.begin(9600); } void loop() { int sensorvalue = analogRead(PT1000_PIN); float voltage = sensorvalue * (5.0 / 1023.0); temp_c = (((voltage * 100) / vt_factor) + offset); Serial.print(voltage); Serial.print(" V Temp: "); Serial.println(temp_c, 1); delay(500); }
Für das Einmessen der Schaltung wird ein Referenzwiderstand benötigt, der möglichst genau sein sollte. Der PT1000 hat bei einer bestimmten Temperatur einen bestimmten Widerstandswert. Dadurch ist es auch möglich, der Schaltung jeden Temperaturwert zu Simulieren. Ein handelsüblicher 1 Kiloohm Widerstand hat meistens nicht exakt 1000 Ohm, sondern einige Ohm Abweichung. Beim Testaufbau für diesen Artikel betrug der 1 Kiloohm Widerstand laut Ohmmeter nur rund 980 Ohm. Um jetzt der Schaltung null Grad Celsius zu simulieren, wurde ein kleines Potentiometer von rund 500 Ohm in Serie zum 1 Kiloohm Widerstand geschaltet. Durch das kleine Potentiometer kann der Gesamtwiderstand auf 1000 Ohm genau eingestellt werden. Möchte man der Schaltung jetzt einen anderen Temperaturwert wie 100 Grad Celsius simulieren, so wird das Potentiometer nach oben gedreht auf genau 1385 Ohm. Die folgende Schaltung wird anstelle des PT1000 an den entsprechenden Anschlussklemmen des Messwandlers angeschlossen. Dadurch kann eine Temperatur im Bereich von null bis über 100 Grad Celsius durchgehend simuliert werden:
Nachdem die gesamte Schaltung aufgebaut und an den Arduino angeschlossen wurde, sollte mit dem PT1000 bei Raumtemperatur eine Spannung von etwa 0,9 Volt anliegen. Da alle Widerstände gewisser Toleranzen unterliegen, muss die Schaltung immer einmalig kalibriert werden. Anstelle des PT1000 wird jetzt der Referenzwiderstand auf verschiedene Werte eingestellt und mehrmals an die Schaltung angeschlossen:
1. Spannung bei 0 Grad
Zuerst wird der Referenzwiderstand exakt auf 1000 Ohm eingestellt. Dem Arduino wird jetzt eine Temperatur von genau null Grad Celsius vorgetäuscht. Jetzt muss die angezeigte Spannung notiert werden. Beim Testaufbau betrug diese Spannung 0,52 Volt.
2. Spannung bei 100 Grad
Im nächsten Schritt wird eine Temperatur von 100 Grad Celsius simuliert. Dazu wird der Referenzwiderstand von der Schaltung abgeschlossen und exakt auf 1385 Ohm eingestellt. Anschließend wird der Widerstand wieder angeschlossen und die angezeigte Spannung notiert. In diesem Fall wurden 2,40 Volt gemessen.
3. Temperatur-Spannungs-Faktor berechnen
Damit der Arduino weiß, welche Spannung welcher Temperatur entspricht, gibt es einen entsprechenden Umrechnungsfaktor. Zieht man jetzt die Spannung bei 0 Grad (0,52 V) von der Spannung bei 100 Grad (2,40 V) ab, so ergibt sich der Wert 1,88. Dieser Faktor wird jetzt als vt_faktor im Code definiert. Anschließend wird der Sketch erneut hochgeladen.
4. Offset Einstellen
Der Offset kann sowohl bei 100 Grad als auch bei 0 Grad eingestellt werden. Je nachdem, was am Referenzwiderstand eingestellt ist, wird jetzt der Offset so eingestellt, dass im Serial Monitor die gemessene Temperatur exakt der simulierten Temperatur entspricht. Anschließend ist der Kalibriervorgang abgeschlossen.
5. PT1000 anschließen
Der PT1000 kann jetzt anstelle des Referenzwiderstandes an die Schaltung angeschlossen werden. Der Arduino sollte jetzt die richtige Umgebungstemperatur anzeigen.
Diese Schaltung ist eine sehr einfache Lösung zur Temperaturmessung mit einem PT1000 am Arduino. Die Genauigkeit liegt daher bei etwa +- 0,5 Grad Celsius. Das ständige Umherspringen der Kommastelle wird unter anderem vom AD-Wandler und von Spannungsschwankungen verursacht. Um dies zu verbessern, könnte die Schaltung mit einem weiteren Operationsverstärker und einer Spannungsstabilisierung ausgestattet werden. Alternativ kann statt dem Arduino auch ein anderer Mikrocontroller wie der ESP32 verwendet werden, da hier der AD-Wandler eine wesentlich höhere Auflösung hat. Aber Achtung: Der LM358 kann nicht mit 3,3 Volt, wie es der ESP32 zur Verfügung stellt, betrieben werden!
PT1000 Sensoren können nicht direkt analog mit einem Mikrocontroller gemessen werden. Wie baut man einen Messwandler mit dem LM358 für den PT1000 und Arduino?
WeiterlesenDer PT100 ist ein sehr präziser industrieller Temperatursensor. In diesem Artikel geht es um den Bau eines Messverstärkers zum Einlesen eines PT100 am Arduino
WeiterlesenAEQ-WEB © 2015-2024 All Right Reserved