PT1000 mit DS2450 Messen

Hallo,

ich suche nun schon eine Weile um mit 1-Wire die Temperatur in einem Solarkollektor zu messen (Heizungssteuerung). Der Sensor muss wohl ein PT1000 werden.

Habe schon den Ansatz mit dem DS2438 und dem „MESSUMFORMMODUL PT1000 10V 0 - 160°C“ angeschaut.
Dies hat aber meiner Meinung nach Nachteile (Leitungswiderstand wird nicht berücksichtigt, Kosten des Messumformermoduls).

Meine Idee kam von einem Fertigmodul (teuer über 70€), welches einen PT1000 (über 2-, 3- oder sogar 4-Drahtanschluss) mit einem DS2450 misst. Leider finde ich dazu aber keinen Bauplan.

Würde mir (kaum Elektorkenntnisse) es so vorstellen

+5V
| |
| |
| |
| |
| |
P |
T |"Gleich lange Leitung (hoch aufs Dach und zurück)
1 |
0 |
0 |
0 |
| |
| |
| |
| |–wiederstand (z.B. 100Ohm)–GND
A A
1 2
DS2450
|
GND

Durch mein beschränktes Verständnis in Sachen Elektronik komme ich auf folgende Formel:
A1 gibt mir die relevante gesamt Spannung zurück.
Die Spannung am PT1000 ist demnach (A1-A2).

Der Strom am PT1000 beträgt (A2 V/100 Ohm) A.

Also ist der Widerstand vom PT1000 (A1-A2)/(A2/100).

Sind meine Annahmen hier richtig? Ist der Wiederstand mit 100Ohm sinnvoll dimensioniert? Gibt es evtl Probleme wenn ich den DS2450 mit der gleichen Spannungsquelle betreibe wie den PT1000?

Bin für alle Antworten dankbar.

Hmmm, ich bin ja kreativ, aber aus deiner Zeichnung werd ich nicht schlau wie du verschalten willst.

Ich beschreibe mal wie es sein sollte:

Du schaltest den PT1000 und einen Widerstand in Serie, ans eine Ende kommt GND, ans andere VCC. In die Mitte( also den Punkt wo sich der Edst. und PT1000 berühren kommt der Eingang des DS2450.

VCC sollte gut stabilisiert sein, idealer wäre eine eigene Refferenzspannungsquelle zu verwenden und nicht die 1Wire Versorgung.
Sinnvollerweise noch ein paar kleine Glätteungskondensatoren dran um ggfls Störungen der langen Leitung und vom Bus zu unterdrücken.

Die Spannung am Eingang DS2450 ergibt sich aus der Spannungsteilerregel.
Den Widerstand würde ich ebefalls mit 1K wählen.-

Hast du Röhren oder Flachkollektoren ?
Also wenn die Anlage halbwegs dimensioniert ist ( keine Pumpenabschaltung wegen Überhitzung) kannst auch direkt einen DS18B20 an den Kollektor hängen.

Läuft hier seit 3 Jahren astrein. - habe aber quasi nie Anlagenstillstand, und damit höchstens mal 130° Grad am Kollektor.

Blitzschutz darfst nicht außer acht lassen !! Der Kollektor ist schließlich eine ziemlich exponierte Stelle.
Wenns blöd geht ziehst dir da Überspannungen direkt ins Herz deiner Haussteuerung.
Ich werde darum demnächst den Kollektorsensor auf Funk umstellen.

mit solaren Grüßen
bb

Vielen Dank soweit.

Vom DS18B20 bin ich abgekommen wegen den evtl. zu hoher Temperaturen.
Geht der DS18B20 kaputt bei zu hohen Temperaturen (z.B. 200°C) oder kann er nur keine Temperatur/bzw. die maximal Temperatur ausgeben?

Wie hast du den DS18B20 in den Kollektor geschraubt. Gibt es da spezielle Hülsen zu kaufen?

Kollektoren werden erst noch angeschafft (Neubau).

Könnte man zum Blitzschutz nicht evtl. einfach über solche Telefon-Überspannungsschutz-Geräte lösen?

Zur Lösung mit dem PT1000 muss mann nicht noch den Widerstand der Leitung (zum PT1000 und zurück) berücksichtigen? Der Kann sich ja grade durch Erwärmung auf dem Dach ändern.

Könnte ich nicht auch einfach mit einem anderen Eingang die Referenzspannung messen und in meine Berechnungen mit einbeziehen?

Grüße
harry

Also meiner liefert Ergebnisse bis rauf zu 160°.
Spezifiziert ist er aber nur bis 125°. Was darüber rausgeht, your own risk.
Wie gesagt ich hab Flachkollektoren und alles so ausgelegt das es keinen Stillstand gibt. da geht die Temp nicht höher als 120-130.
Bei anderer auslegung, insbesondere bei Röhren kannst aber weit über 200 kommen.

Tja die Wege des Blitz sind unergründlich.

Den Widerstand der Leitung kannst ignorieren, sind ja nur wenige Ohm.
d.h. ca. Faktor 100 kleiner als der Widerstandsänderung des PT1000

Die Versorgung mitmessen kannst machen wennst es sehr genau haben willst (paar Grad auf oder ab sind beim Kollektorfühler aber egal) bedenke aber der DS2450 bezieht sein interne Referenz ggfls. auch aus der Versorgung - müßte man im Datenblatt mal genau nachlesen.

Kalibrieren (d.h. vergleich mit Referenzmessung udn dann definieren von Korrekturfaktoren) mußt aber sowiso.

Schau mal auf meine Seite, ich hab mir vorm Wärmetauscher im Puffer noch einen Bypass im Solarkreislauf gelegt.
Damit ist mir die genauigkeit Kollektortemperturmessung mehr oder weniger egal, ich beziehe alles auf die Temp im Kollektorvorlauf.

gruß
bb

Hallo harry,

ich habe PT1000 an den Vor und Rücklauf der Solaranlage geklemmt , in Reihe dazu einen 1kOhm Widerstand gegen GND und dazwischen den Eingang des DS2450. Die Leitungswiderstände ignoriere ich dabei und damit messe ich die Temperaturen für meine Zwecke genau genug.
Als Formel dient mir das hier:

$Vges = GetValue(45739 /*[1-Wire\SolarBoard\Lichtsensor\VDD]*/);
$V = $IPS_VALUE * 0.0000688; // 16bit DS2450  0.00006922
$R = $V /($Vges - $V)*999;
$t = (($R/1000 - 1)*(255.8723+($R/1000 - 1)*(9.6+($R/1000 - 1)*0.878)));

Gruß

Hallo Harry,

per PT1000 kannst du sehr gut einen Solarkollektor abnehmen. Halbleitersensoren wie die DS18x20 Sensoren sind hier nicht geeignet, da diese nach Überschreiten der Sperrschichttemperatur, wie ein normaler Transistor, einfach kaputt gehen. Nachdem es kein passendes Modul für 1-Wire gibt, hab ich einen entsprechenden Messwandler für 1-Wire entwickelt.
Hier findest du den Messwandler für den Temperaturbereich von 0-200°C.

Grüße

andrge

Hallo,

also den fertigen Messwandler finde ich etwas zu teuer (dafür bekomme ich ja fast schon eine komplette billige Solarsteuerung).

Attain sieht deine Schaltung so wie die in meinem Anhang aus? Nutzt du 5V? Zur Bedeutung deiner Variablen:
$Vges = Gesamtspannung gelesen von VCC in meiner Zeichnung
$V = Spannung am analogen Eingang
$R = Widerstand des Sensors (Warum ist heir in der Glecihung 999 und nicht 1000?)
$t = Temperatur

Ist das soweit richtig?

Grüße

Harry

schaltung.jpg

Hallo Harry,

soweit alles richtig.

weiß ich nicht mehr so genau.Ich glaube das habe ich nachgemessen. Auch war die ermittelte Spannung nicht die, die rechnerisch rauskommen müßte, deswegen die Anpassung in der Zeile $V.

Gruß

Ich hole mal diesen alten Thread aus der Versenkung…

Ich muss auch einen PT100 Sensor 1-wire fähig machen. Der Sensor ist fest verbaut, daher habe ich keine Alternative auf andere Temperatursensoren zurück zu greifen.

Ich habe den Sensor, wie dharry skizziert, angeschlossen, jedoch mit einem 5k Ohm Widerstand. Den Eingang des DS2450 habe ich auf 16-bit und 2,55V eingestellt. Die Umrechnung erledige ich folgendermaßen:


<?

$Vges = GetValue(12315 /*[1-wire\DS2450 A/D Wandler\VDD]*/ );
echo " Vges: ".$Vges;

$V = GetValue(39393 /*[1-wire\DS2450 A/D Wandler\Status Port 0]*/) *(0.000078/2); // Umrechnung 16bit DS2450  
echo "       V: ".$V;

$R = $V /($Vges - $V)*5000; //Widerstandswert des PT100 ermitteln
echo "       R: ".$R;

$t = ($R - 100)/(0.00385*100); //Umrechnung PT100
echo "       T: ".$t;

SetValue(27273 /*[Temperatur]*/ ,$t);
 
?>

Gibt folgende Ausgabe:


Vges: 4.9699997901917       V: 1.277757       R: 1730.3263525821       T: 4234.6139028107

Die Werte für Vges und V stimmen. Der Widerstand kann natürlich unmöglich sein. Irgendwo habe ich hier einen Denkfehler, vielleicht kann mir hier jemand helfen?

Danke schonmal!

U=5V
Rges =~5100 Ohm
Iges = 5V/5100
Urvor = Iges*5000 Ohm

Deine Messung kann am 5kOhm nicht 1,2 Volt sein.

Der Spannungsabfall am Widerstand muß den größten Anteil der Spannung haben…

Dreh mal die Reihenfolge der Widerstände um, oder das ist Dein Fehler, dass die Reihenfolge 5V–PT100-5kOhm–GND nicht so ist.

Gruß Helmut

ok, hatte die Reihenfolge mal testweise geändert und nicht zurück geändert. Neue Ausgabe:


 Vges: 4.9699997901917       V: 3.729882       R: 15038.418243414       T: 38801.086346529

Aber so richtig weiter bringt mich das jetzt auch noch nicht…

Das Verhältnis 5000 zu ~100 muß sich in den Spannungen wiederspiegeln.

Ich könnte mir vorstellen, dass eine Widerstandsmessung andere Werte hervor bringt.

Deine gemessenen Spannungswerte passen nicht zu 5000 Ohm und 100 Ohm…

Mess doch mal mit einem Multimeter die Widerstände einzeln aus.

Nachtrag: Du hast 2,5V als Ref und bekommst 3,72… Volt ???
Gruß Helmut

so, ich habe gestern eine Menge rumprobiert und musste mich jetzt erstmal ein bisschen sortieren (hätte ich vielleicht mal machen sollen, bevor ich hier frage…)

also ich habe (jetzt) einen 4,7k Widerstand „hinter“ den PT100 geschaltet und messe die Spannung V zwischen Widerstand und PT100. Den Port des DS2450 habe ich wieder auf 5,10V hochgestellt (16-Bit).

5V ----- PT100 ----- (Anschluss DS2450, Port 0) ------- 4,7k ------ GND



$Vges = GetValue(12315 /*[1-wire\DS2450 A/D Wandler\VDD]*/ );
echo " Vges: ".$Vges;

$V = GetValue(39393 /*[1-wire\DS2450 A/D Wandler\Status Port 0]*/) *(0.000078); // 16bit DS2450
echo "       V: ".$V;

$R = $V /($Vges - $V)*4700;
echo "       R: ".$R;

$t = ($R - 100)/(0.00385*100);
echo "       T: ".$t;

SetValue(27273 /*[1-wire\Temp]*/ ,$t);


Ausgabe:


 Vges: 4.9699997901917       V: 4.885764       R: 272604.91944998       T: 707804.98558436

Per Multimeter messe ich die gleichen Spannungen und bei nicht angelegter Spannung auch die richtigen Widerstände (4,7k und ca. 112).

Sorry, für das Durcheinander…

Meine Rechnung für die Werte sehen so aus:

$Vpt100 = $Vges - $V;
echo "       Vpt100= ".$Vpt100;

$Iges = $V / 4700 ;
echo "      Iges= ". $Iges ;

$R = $Vpt100 / $Iges;
echo "       R= ".$R;

Ich würde mal vorschlagen Du drehst die Widerstände, nimmst Uref wieder auf 2,5V

Dann müßte die Rechnung aber angepasst werden

$Vpt100 bekommst Du dann genauer,

$Iges ist dann ($Vges-$Uvt100) / 4700

$Rvt100 ist dann $Vpt100 / $Iges

Versuch das mal.
Gruß Helmut

PS: der 4700 Widerstand sollte dann genauer ausgemessen werden um etwas genauer zu rechnen.

Hallo,

ein Anmerkung zur Messung.
Bei Messumformer für PT Elemente wird ein Strom (glaube 1mA, damit sich das Element nicht zur sehr erwärmt) durch das Element getrieben.

Der Spannungsabfall am PT wird hochohmig gemessen, somit lässt sich die Messung sehr genau durchführen.

Natürlich ist der Schaltungsaufwand höher, aber wie ich Helmut kenne findet er bestimmt eine einfache Lösung…-)

Gruss Christian

Edit. http://www.mikrocontroller.net/attachment/2598/PT100-Messwertverst_er.pdf

Hallo Christian,
ich pers. würde in einem 1Wire-Netzwerk den DS18B20 nehmen.

Auch Der erwärmt sich, meine Empfehlung, wenn er nicht sowieso an etwas Rohr anliegt, ein Stück Metall als Wärmespeicher.

Die Schaltung ist auch in einem Schaltungsbeispiel von hier für einen PT1000 zu finden, geht auch oder einen FET als Konstantstromquelle.

Aber der Thema-Schreiber hatte nicht wissen wollen, was es alles so gibt. :wink:

Gruß Helmut

ok, dann will ich nichts gesagt haben… -)

Ich wollte Dich nicht zurechtweisen, verzeih mir. Sollte nicht so rüberkommen.

Ich hoffe hmeier bekommt es hin.

Gruß Helmut

So, ich habe jetzt die Widerstände gedreht und alles wie beschrieben verschaltet. Leider war meine Temperatur jedoch zu hoch, was ich in folgendem Schritt korrigiert habe:


$V = GetValue(39393 /*[1-wire\DS2450 A/D Wandler\Status Port 0]*/) *(0.000069/2);

Im Prinzip wird mir jetzt die Temperatur richtig angezeigt, allerdings schwankt diese sehr.

bei ca. 25 Raumtemperatur wird gemessen 24,3/24,7/24,9/25,2/25/25,6…

Deshalb habe ich jetzt schon den Durchschnittswert der letzten Messungen genommen, was zwar schon zu einer Glättung geführt hat, aber so richtig perfekt ist es noch nicht…

Trotzdem schonmal danke für die Mithilfe!

Naja, ist doch schonmal was.

Ein Stützkondensator am DS2450 und einen am PT100 könnten auch noch beruhigen.

Aber die Zahlen von oben zeigen eher, dass er sich erwärmt.

Gruß Helmut