Für eine einfache Temperaturmessung mit einem PT1000 sind die angefügte Schaltung und das Programm gedacht. Durch einen präzisen Referenzwiderstand 1000 Ohm 0,1% kommt man ohne Abgleich aus, sofern Genauigkeit bzw. Auflösung > 1 °C liegen dürfen. Da mit ratiometrischer Messung gearbeitet wird, ist ein stabiler Wert der Referenzspannung nicht erforderlich. Um einen Meßfehler durch Eigenerwärmung des PT1000 zu vermeiden, wird die Spannung an Vref nur bei Bedarf eingeschaltet; im einfachsten Fall schaltet der µC Vref am entsprechenden Pin ein. Selbst bei Belastung mit 15 mA, was für insgesamt sechs PT1000 reichen würde, liegt die Spannung noch bei Vcc-0,2 V. (PROFI_VERSION :-) Wem das nicht geheuer ist, kann auch einen separaten Pin (hier PB.0) als Vref-Spannungsquelle verwenden. Bei längeren Zuleitungen muß auch deren Widerstand beachtet werden; R_ZULEITUNG sollte von derzeit 0 auf den entsprechenden Wert korrigiert werden. Auch wenn hier nur ein Kanal gezeigt wird, bei einem ATmega88/328 im DIL-28 Gehäuse können bis zu sechs PT1000 angeschlossen und ausgewertet werden: ADC0 – ADC5. Die Schaltung läßt sich auch auf andere µC übertragen, bei denen Vref als separater Anschluß verfügbar ist. Andernfalls muß noch ein FET als zusätzlicher, niederohmiger Schalter ergänzt werden. Wer eine bessere Auflösung benötigt, sollte einen ADC mit >= 12 Bit verwenden. Für größere Temperaturmeßbereiche ist es ferner ratsam, PT_FAKTOR anzupassen. Der hier verwendete Wert von 0,00385*1000 ist für –20 bis 100 °C brauchbar. Nähere Kommentare befinden sich am Anfang des Programms; die eigentliche Messung/Auswertung findet sich ganz unten in main(). Ich hoffe, die Berechnung ist verständlich und stimmt auch ;-)
Für Freunde der schnellen Programmierkunst noch die sehr übersichtliche Programmversion für einen Arduino Uno. Fast könnte man das gesamte Programm in einer Zeile schreiben, die Meßroutine ist aber als eigene Funktion formuliert, sodaß die Auswertung mehrerer Kanäle transparent ergänzt werden kann. Über den 'Serial Monitor' können die Meßwerte direkt auf dem PC angezeigt werden.
M. N. schrieb: > Nähere Kommentare befinden sich am Anfang des Programms; Auch, daß die Schaltung nicht funktioniert ? Der VRef-Ausgang des AVR ist keineswegs mit 2k belastbar, ohne daß die Spannung ERHEBLICH einbricht, also eine erhebliche Differenz zwischen der internen Referenzspannung (auch wenn das 5V sein sollten) und der aussen an dem 1k Widerstand anliegenden Spannung und damit Messfehler. Wenn man das so macht, MUSS an den Ausgang ein OpAmp als Spannungsbuffer, dann kann man auch die interne Referenz von 2.5 oder 1.1V verwenden, insbesondere 1.1V der moderneren AVRs hätte einen später genannten Vorteil. Besser geht es, wenn man 5V an AVCC anlegt und als Ref verwendet, aber dann liegen 2.5V am Pt1000 und damit eine hohe Verlustleitung die zu DEUTLICHEN Messwertabweichungen führt weil der Sensor einige Grad wärmer wird als die Umgebung. Und wenn man dann 10k als Vorwiderstand verwendet, um die Spannung am Pt1000 im Rahmen zu halten, ruiniert einem das wieder die Auflösung, die eh schon nicht besonders gut ist. Die Schaltung taugt so also nichts, selbst wenn die Grundidee, ratiometrisch mit Referenzwiderstand, ein bekannt guter Ansatz ist.
MaWin schrieb: > Der VRef-Ausgang des AVR ist keineswegs mit 2k belastbar, ohne daß die > Spannung ERHEBLICH einbricht, Ach, das stimmt doch garnicht. Wie geschrieben 'bricht' die Spannung an Vref bei Belastung mit 330 Ohm ( ca. 15 mA) um lediglich 0,2 V ein. Völlig UNERHEBLICH! Die Schaltung ist einfach genial und absolute Spitze, eben nur nicht von Dir ;-)
m.n. schrieb: > Ach, das stimmt doch garnicht. > Wie geschrieben 'bricht' die Spannung an Vref bei Belastung mit 330 Ohm > ( ca. 15 mA) um lediglich 0,2 V ein. Völlig UNERHEBLICH! Bei welcher Vref denn? Bei 5V oder vi 1,1V?
Bei 5 V. Daher die 15 mA über 330 Ohm. Wegen der Mawinesen und brunnenden Falken nebst Gefolge hatte ich ja darauf hingewiesen, daß man auch einen Portpin als Spanungsquelle nehmen kann. Oder man nimmt einen ext. FET, der die Vref schaltet. Steht alles oben!
m.n. schrieb: > Wie geschrieben 'bricht' die Spannung an Vref bei Belastung mit 330 Ohm > ( ca. 15 mA) um lediglich 0,2 V ein. Völlig UNERHEBLICH! Ich habe noch einmal etwas genauer gemessen: bei 15 mA sind es rund 100 mV. Böse, wie ich bin, und auf die Gefahr hin, eines Tages im Jenseits völlig ohne Jungfrau auskommen zu müssen, habe ich den Lastwiderstand bei 5 V auf 100 Ohm gesenkt. Die Spannung an Vref bricht um 0,6 V ein. Bei den verbleibenden 4,4 V an 100 Ohm ergibt sich ein Strom von 44 mA, woraus der Ausgangswiderstand von Vref mit rund 14 Ohm abgeleitet werden kann. Es gibt folglich keinen Grund, auf die oben gezeigte Sparschaltung zu verzichten, zumal dort nur 2,5 mA 'Laststrom' auftreten.
Das Einbrechen von Vref macht aber das Messen auf anderen Kanälen unmöglich, da jegliche Kalibrierungen für den A**** sind. Wenn man nur den PT1000 auslesen will, kann man die Schaltung wahrscheinlich verwenden.
Julian Baugatz schrieb: > Das Einbrechen von Vref macht aber das Messen auf anderen Kanälen > unmöglich, da jegliche Kalibrierungen für den A**** sind. Wenn man dort ebenfalls ratiometrisch mißt, geht es durchaus. Wie gesagt, an einen ATmega328 passen 6 x PT1000.
m.n. schrieb: > Ich habe noch einmal etwas genauer gemessen: > bei 15 mA sind es rund 100 mV. Mal ist es ein kleiner m.n. mal ein Grosser, typisch wenn man mit seinen dutzenden Aliasnamen durcheinander kommt unter denen man hier schreibt. Ein Pt1000 hat bei 0 GradC 1000 Ohm, bei 1 GradC 1003.9 Ohm. Am Spannungsteiler 5V mit 1k bilden sich 2.5 bzw. 2.505V, der D/A-Wandler kann das 1 GradC auflösen (0.00488V/Bit bei 5V Vref). Wenn die Gesamtversorgungssspannung des Spannungsteilers jedoch schon um 0.2V oder 0.1V von der positiven internen ARef des D/A-Wandlers abweicht, liegt die gemessene Temperatur bei -10 GradC. Der Fehler ist also 10 mal grösser als die Auflösung, ein Messergebnis ist um 10 oder 20 GradC verfälscht, je nach aktueller Laune des Bahnwiderstandes des AVR zum ARef Ausgang. Habt ihr alle in Rechnen in der Schule nicht aufgepasst ?
nimm mal ne ref strom quelle mit 0,1 bis 1mA dann gibtt es auch nicht soviel eigenerwärmung;-)
Ich wollte mal wissen, wie groß die Werte des A/D Wandlers dann tatsächlich sind. Um 1 bis 2 digit wollen wir uns mal nicht streiten. 5V und 5V-100mV 0 Grad, 1 Grad, 20 Grad Vorausgesetzt, das driftet nicht noch all zu sehr und man schränkt sich so in etwa auf diesen Bereich ein (weiss ja nicht, wofür "M. N. (msx)" es nutzen will), kann man den A/D Wert doch um die ca. "10" korrigieren und gut ists. Ist halt die "preisgünstig/dirty" Lösung.
MaWin schrieb: > Habt ihr alle in Rechnen in der Schule nicht aufgepasst ? Glücklicherweise habe ich in der Schule nicht nur Rechnen sondern auch Denken gelernt. Daher scheitert Deine Berechnung schon an der Plausibilitätsprüfung. Herbert K. schrieb: > Ich wollte mal wissen, wie groß die Werte des A/D Wandlers dann > tatsächlich sind. Um 1 bis 2 digit wollen wir uns mal nicht streiten. > 5V und 5V-100mV > 0 Grad, 1 Grad, 20 Grad Ich weiß nicht, was Deine Berechnung soll. Siehe: ratiometrische Messung.
m.n. schrieb: > Ich weiß nicht, was Deine Berechnung soll. Irgendwie war das zu erwarten, du weisst ja auch nicht, wo das Problem bei deinem Bauvorschlag liegt. Selbst wenn Herbert dir deine 10 GradC Temperaturabweichung vorrechnet.
MaWin schrieb: > m.n. schrieb: >> Ich weiß nicht, was Deine Berechnung soll. > > Irgendwie war das zu erwarten, du weisst ja auch nicht, wo das Problem > bei deinem Bauvorschlag liegt. > > Selbst wenn Herbert dir deine 10 GradC Temperaturabweichung vorrechnet. Ich schrieb doch: nicht Rechnen sondern Denken!
10 Grad hab ich nicht geschrieben. Ich hab geschrieben, Wert "10" vom A/D Wandler. Ich hab aber auch einen Fehler drin: Bei (5V-100mV) ergeben sich Schritte von ca. 0,004785 V/Bit für den A/D Wandler. Wenn ich keinen Denkfehler drin habe, ergibt sich für eine Temp. Änderung von 0 auf +20 GradC eine Wertänderung vom A/D Wandler von ca. "20". Das wäre eine Auflösung von 1°C pro Bit. Ich denke, für so eine grobe Auflösung ist das ganze doch ok. Vorteil: Minimale Bauteilanzahl. Ich denke, der Trick ist, die 1K/0,1% ins Verhältnis zum PT1000 zu setzen. Der Spannungsteiler muß nur die gleiche VRef bekommen wie der A/D Wandler. Wie hoch die tatsächlich ist, ist fast egal. "rx = R_REF * wert / (ADC_MAX-wert); // Widerstand ausrechnen" Im Kopf vom C-SourceCode stehts ja im Prinzip drin. Muß man nur mal lesen und verstehen.
:
Bearbeitet durch User
m.n. schrieb: > Ich schrieb doch: nicht Rechnen sondern Denken! Du meinst, du denkst, deine Schaltung würde funktionieren? Herbert K. schrieb: > Ich denke, der Trick ist, die 1K/0,1% ins Verhältnis zum PT1000 zu > setzen. Aref Ausgang ebenfalls messen, liegt ja unter ARef intern, und damit die ca. 10 korrigieren. Könnte helfen, bleibt die Eigenerwärmung bei 625-facher Überlast als vorgesehen.
Will man einen PT1000 ordentlich auswerten, dann kommt man um eine temperaturstabile Konstanstromquelle und eine Verstärkung (Anpassung) der Messpannung - je nach Messbereich - nicht herum. Soll es nur "halbwegs genau" werden, ist der KTY - Fühler viel besser geeignet, weil er eine größere Widerstandsänderung hat. Kennlinie berechnen und Kalibrieren muss man dann eh', den teuren PT1000 - Fühler kann man sich dann auch sparen.
:
Bearbeitet durch User
Vergesst das mit meiner Berechnung was ich 7 Beiträge hoch geschrieben habe. Leider kann ich es nicht mehr editieren / löschen. Auch das mit dem Wert "10" korrigieren. siehe 3 Beiträge hoch: ... der Trick ist das reine Widerstandsverhältnis. @MaWin: Ob es einen Einfluß von ARef Intern/Extern direkt auf ARef vom A/D Wandler gibt, müsste man mal ermitteln.... vielleicht gibt es gar keinen, denn man kann ja auch ARef extern anschließen und diese "Leitung" müßte ja intern direkt auf den A/D Wandler gehen. Ein evt. Innenwiderstand kommt vielleicht aus der internen VRef Stabilisierungschaltung Schaltung und dem internen MUXer für VRef. Ist aber nur eine Vermutung von mir.
:
Bearbeitet durch User
Herbert K. schrieb: > Ich hab aber auch einen Fehler drin: > Bei (5V-100mV) ergeben sich Schritte von ca. 0,004785 V/Bit für den A/D > Wandler. Genau, dann stimmt das Verhältnis wieder! > Wenn ich keinen Denkfehler drin habe, ergibt sich für eine Temp. > Änderung von 0 auf +20 GradC eine Wertänderung vom A/D Wandler von ca. > "20". > Das wäre eine Auflösung von 1°C pro Bit. Ich denke, für so eine grobe > Auflösung ist das ganze doch ok. Vorteil: Minimale Bauteilanzahl. Mehr wurde nicht versprochen, eher etwas weniger. Andere Sensoren liefern zwar feinere Auflösungen, bekommen aber ihr Probleme bei sehr hohen Temperaturen und müssen in der Regel abgeglichen werden. > Ich denke, der Trick ist, die 1K/0,1% ins Verhältnis zum PT1000 zu > setzen. > Der Spannungsteiler muß nur die gleiche VRef bekommen wie der A/D > Wandler. > Wie hoch die tatsächlich ist, ist fast egal. > > "rx = R_REF * wert / (ADC_MAX-wert); // Widerstand ausrechnen" > > Im Kopf vom C-SourceCode stehts ja im Prinzip drin. Muß man nur mal > lesen und verstehen. Danke, daß Du es gemacht hast ;-) Mit dem Teiler 1 k und PT1000 messe ich hier eine Raumtemperatur von 21°C. Belaste ich Vref mit zusätzlichen 330 Ohm steigt der Strom aus Vref von 2,5 auf 17,5 mA. Die errechnete Temperatur sinkt auf 20°C, ohne daß auf die GND-Leitung auf dem Board geachtet wurde. Das Ergebnis ist voll im Rahmen von Auflösung und Genauigkeit.
Atmel: "Note that VREF is a high impedance source, and only a capacitive load should be connected in a system." Vielleicht sollte man einfach vref per RR-Opamp puffern. Wobei dann die Frage bleibt: wie schalt ich den Meßstrom aus? Besonders bei mehreren Kanälen.
Bastler schrieb: > Wobei dann die > Frage bleibt: wie schalt ich den Meßstrom aus? Besonders bei mehreren > Kanälen. Sieh Dir die Schaltung ganz oben an: PB0 ist im Programm schon als Option dafür vorgesehen.
Abschließend noch ein Programm, welches einen PT1000 Widerstand im Bereich –100 -> +850 °C auswertet. Die Berechnung findet hier nicht mehr mit einem konstanten Faktor statt, sondern anhand von zwei Tabellen. Eine Tabelle rx_tab[] enthält die Widerstandswerte und die andere grad_tab[] den dazugehörigen Temperaturwert im Abstand von typ. 50 K. Wiederum ist es eine .ino-Datei (läßt sich mit Arduino IDE oder einem Texteditor öffnen), bei der die lineare Interpolation hoffentlich gut nachvollziehbar ist. Der eff. Meßbereich ist gerade bei hohen Temperaturen vom Aufbau und vom verwendeten Sensor abhängig. Ein kostengünstiger Sensor (< 2 Euro) ist z.B. hier zu finden: http://www.reichelt.de/PCA-1-1505-10/3/index.html?&ACTION=3&LA=446&ARTICLE=85054&artnr=PCA+1.1505+10&SEARCH=platin Zur Abwechselung wird hier PortB.0 als Spannungsquelle von VREF geschaltet. Wie erwähnt würde ein 12-Bit ADC eine bessere Auflösung bieten. Vielleicht benutzt Jemand ATXmega, die intern 12-Bit ADCs aufweisen, und stellt sein Programm hier zur Verfügung.
Ich hätte auch gern einen ADC mit 1024 "BIT" Auflösung :) Sprecht bitte von Digits, es sind nur 10 Bits. Axel binschonweg
Westawegen ich hier gelesen hab (google). Kann man an die Vref 2x470 (von)ohm nach unten in Reihe gegen GND anschliessen, um am ADC0 halbe Vref "abzugreifen"?
Axel R. schrieb: > Ich hätte auch gern einen ADC mit 1024 "BIT" Auflösung :) > Sprecht bitte von Digits, es sind nur 10 Bits. Du machst mich neugierig. Wo steht das?
Axel R. schrieb: > Westawegen ich hier gelesen hab (google). > Kann man an die Vref 2x470 (von)ohm nach unten in Reihe gegen GND > anschliessen, um am ADC0 halbe Vref "abzugreifen"? Wenn man den PT1000 nicht an Masse- sondern an Vcc-Potential hängt könnte man durch herabsetzen der Vref auf VCC halte durchaus einen offset erzeugen. Leider bringt einem das nicht viel weil der Wertebereich dann nur verschoben aber noch nicht ausgedehnt (verstärkt) ist.
m.n. schrieb: > Ein kostengünstiger Sensor (< 2 Euro) ist z.B. hier zu finden: > http://www.reichelt.de/PCA-1-1505-10/3/index.html?&ACTION=3&LA=446&ARTICLE=85054&artnr=PCA+1.1505+10&SEARCH=platin Maximalstrom laut Datenblatt 1mA, passt nicht zu deiner Vergewaltigungsschaltung. Bei einem Messbereich von 950 GradC wären allerdings 10K Abweichung auch egal.
Was bei der Messung in solchen Temperaturbereichen auch interessant ist: Wie verbindet man den Sensor dann am geschicktesten mit der Schaltung? Löten fällt weg, das schmilzt nur. Also Crimptechnik, nur welche Quetschverbinder nimmt man? Und welche Litzen die entsprechend bis 200..300..500° Temperaturfest sind? (Wohl etwas mit einer Ummantelung aus Glasfasergewebe?)
Paul H. schrieb: > Wie verbindet man den Sensor dann am geschicktesten mit der Schaltung? > Löten fällt weg, das schmilzt nur. Löten geht, wenn man den Anschlußdraht auf voller Länge beibehält. Die Drähte sind dünn und die übertragene Ernergie reicht nicht mehr aus, die Lötstellen zum schmelzen zu bringen. Wenn es richtig gut sein soll, wird man wohl einen fertig konfektionierten, gekapselten Sensor verwenden müssen. Aus Jux habe ich habe ich einen Sensor über ein brennendes Streichholz gehalten. > 600 °C war die Anzeige, habe das 'böse' Spiel aber gleich wieder beendet. Danach wurden wieder 22 °C Raumtemperatur angezeigt: keine Hysterese! Anders herum habe ich ihn mit Kältespray besprüht: -53 °C war das Minimum; hätte nicht gedacht, daß es so kalt wird. Ein KTY81 kam nur leicht unter -20 °C und braucht deutlich länger zum Abkühlen. Offensichtlich führen die Zuleitungen zuviel Wärme über die Anschlußdrähte nach.
Hier noch die Schaltung, mit der ich PT1000 und KTY81 gestestet habe. http://www.mino-elektronik.de/7-Segment-Variationen/LCD.htm#lcd7
Hallo, ich muss leider nochmal diesen alten Thread rausholen und zwar wie berechne ich den Faktor bei meinem Sensor (-40 bis 250 Grad) wenn ich einen Arbeitsbereich von 10-250 Grad(um genauer zu werden) haben möchte?
Meinst Du PT_FAKTOR im allerersten Programm? Das ist eine Konstante des Sensors. Alternativ kannst Du den Temperaturwert über eine Tabelle errechnen, wie es hier gemacht wurde. Um eine höhere Auflösung im eingegrenzten Bereich zu bekommen, muß man einen OPV verwenden, der das Signal so skaliert, daß der ADC optimal genutzt wird. (Irgendwo hatte ich ein Beispiel dafür; müßte ich mal suchen).
Gefunden. Anbei die Schaltung und eine Exel-Vorlage zur Berechnung der Widerstände. Die Schaltung wollte ich noch mal mit einem neueren ATtiny402 aufbauen, wobei die Temperatur per IIC/TWI abgefragt werden kann. Mal sehen.
m.n. schrieb: > Anbei die Schaltung Mit 2.5V an dem Pt1000 Sensor ? Welcher Irrsinn hat dich geritten ? http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.32
MaWins gibt es hier ja wie Sand am Meer. Ich kann nichts dafür, daß Dein Kindergarten heute geschlossen hat. Wenn Du mal erwachsen bist, kannst Du vielleicht lesen und dann die Zusammenhänge verstehen.
m.n. schrieb: > Wenn Du mal erwachsen bist, kannst Du vielleicht lesen und dann die > Zusammenhänge verstehen Ich sehe, dass du selbst nach 5 Jahren deine eigenen massiven Fehler nicht erkennst, also dumm bleibst weil vollkommen lernresistent und selbstüberheblich. Schade um die vertane Zeit dir was beibringen zu wollen, aber damit wenigstens andere Leute nicht auf deinen abstrusen Humbug (von denen es mehr gibt, wie LEDs ohne Vorwiderstand direkt an IC Ausgänge die keine Konstantstromquellen sind) reinfallen: http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.32
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.