Hallo Leute,
ich habe in ein paar älteren Unterlagen folgende Formel zur Bestimmung
des Widerstandwertes eines PT1000 am ADC eines Mikrocontrollers
gefunden.
Die Auflösung des ADC ist z.B. 1024.
Folgende Formel wird dort genannt.
Zur Verdeutlichung noch die folgende Schaltskizze.
Eigentlich ist es eine Messbrücke mit 3x 1000 Ohm Widerständen und dem
PT1000, die Spannung welche am ADC anliegt ist die Ausgangsspannung
eines Subtrahierverstärkers, entspricht also quasi der Diagonalspannung.
Ich habe die Skizze also stark vereinfacht.
1
----------Uref
2
|
3
|
4
|
5
-
6
| | 1000 Ohm = R
7
| |
8
-
9
|
10
| ---- ADC Eingang
11
|
12
-
13
| | PT1000 => R(T)
14
| |
15
-
16
|
17
|
18
|
19
------- GND
Meine Frage ist nun wie man auf diese Formel kommt, stehe leider auf dem
Schlauch und komme nicht weiter.
Marco
Marco K. schrieb:> Meine Frage ist nun wie man auf diese Formel kommt, stehe leider auf dem> Schlauch und komme nicht weiter.>
Die beiden Widerstände bilden einen Spannungsteiler.
Kennt man die Eingangsspannung des Spannungsteilers (bei dir URef) und
die Werte der beiden Widerstände, dann kann man die Spannung am Ausgang
des Spannungsteilers (bei dir ist das die Spannung, die dann zum ADC
geht) berechnen.
Bei dir ist die Situation umgekehrt.
Du kennst von einem Widerstand nicht den Wert.
Du kannst aber die Ausgangsspannung des Spannungsteilers messen. Daraus
lässt sich dann über die entsprechend umgestellte Spannungsteilerformel
der fehlende Wert des Widerstandes errechnen.
Der Rest ist dann nur noch: die Umrechnung vom ADC Wert in eine
Spannung ebenfalls formelmässig ausdrücken, alles in eine gemeinsame
Formel zusammenfassen, vereinfachen, Brüche kürzen, etc. bis du
irgendwann bei der angegegebenen Formel (hoffentlich) landest.
Marco K. schrieb:> Folgende Formel wird dort genannt.>> R(T) = R * ((ADCwert/1024) + 0,5) / (0,5 - (ADCwert/1024))
Kann ich nicht glauben. Wenn der ADCwert = 512 ist, kommt eine Teilung
durch Null heraus, wenn er größer als 512 ist, gibt es negative
Widerstandswerte.
Beides kann nicht sein.
Frager schrieb:> Kann ich nicht glauben. Wenn der ADCwert = 512 ist, kommt eine Teilung> durch Null heraus, wenn er größer als 512 ist, gibt es negative> Widerstandswerte.> Beides kann nicht sein.
Ihr habt natürlich recht das war mein Fehler, die Vereinfachung die ich
vorgenommen habe ist nicht gültig.
Anbei nun die unvereinfachte Schaltung.
R4 ist der PT1000.
Die 2,5V mit welcher die Brücke gespeist wird sind auch die
Referenzspannung für den ADC.
In der Formel ist auch die Verstärkung des Subtrahierverstärkers noch
mit drin. Die beträgt in meiner Zeichnung G=10.
R(T) = R * ((ADCwert/(1024*G)) + 0,5) / (0,5 - (ADCwert/(1024*G)))
Über die normale Spannungsteiler Gleichungen bin ich nicht auf diese
Gleichung gekommen.
Woher kommen die 0,5?
Danke
Die obere Schaltung ist besser. Nur ein einzelner Widerstand zum PT1000
als Spannungsteiler. Gespiesen von der ADC Referenz.
Die Gleichungen sind wirklich trivial. Von der Spannung her rechnet man
auf den Widerstand zurueck.
ADC : = R/(R+R(T)) fuer R(T) unten und R oben.
ADC ist das Verhaeltnis 0..1, unterteilt in 2^16 oder so.
Umdrehen auf R(T) := R/ADC - R
Und vom Widerstand auf die Temperatur mit der inversen formel des
PT1000.
Ist eh klar, daß 2.5V dividiert durch 2kOhm = 1.25 mA sind!
Und das bei einem PT1000 mit empfohlenen wenigen 100yA!
Ist die Referenzspannung der Brücke eh getaktet?
Um welche Genauigkeit geht es da? Und welchen Temperaturbereich?
1 Grad oder schlechter ??
Mario
Gespeist wird das ganze über eine Kombination aus Spannungsreferenz 4040
und einem Impedanzwandler. Die Referenzspannung ist nicht getaktet,
allerdings werden dauernd mehrere PT1000 über Analogschalter zu- bzw.
abgeschaltet(mehrere Kanäle an einem ADC Eigangspin)
Die Eigenerwärmung wirkt sich also nicht so stark aus. Genauigkeit
sollte etwa +-0,5 Grad oder besser erreichen. Temperaturbereich etwa 5
bis 140°C.
Für mich ist diese Gleichung leider nicht trivial.
Gruß
Hast du bei mehreren Kanälen schon mal einen AD7714 oder 7794 überlegt?
Die können mit einem simplen Spannungsteiler und einem ad780 locker 5
Kanäle, und diese Genauigkeit mit links. Externer Aufwand eine 780 o.ä.
und ein Widerstand pro Kanal.
lg Mario
Mario EDUARDO schrieb:> Hast du bei mehreren Kanälen schon mal einen AD7714 oder 7794> überlegt?> Die können mit einem simplen Spannungsteiler und einem ad780 locker 5> Kanäle, und diese Genauigkeit mit links. Externer Aufwand eine 780 o.ä.> und ein Widerstand pro Kanal.
Danke, den werde ich mir mal ansehen.
Wäre trotzdem nett wenn jemand etwas zur Gleichung für die oben stehende
Schaltung sagen könnte.
Danke
Grundsätzlich ist es Quatsch, für so eine R-Vergleichsmessung
eine externe Referenz zu bemühen! In einer (richtigen) Berechnung
kürzt sich die Referenzspannung heraus!
Viel wichtiger ist es, einen temperaturstabilen
Vergleichswiderstand zu wählen!
Die drei Brückenwiderstände sollen übrigens 0,1 prozentige sein.
Die Referenzspannung kommt in der Formel nicht vor.
Oldie schrieb:> In einer (richtigen) Berechnung> kürzt sich die Referenzspannung heraus!
Ich wäre Dir dankbar wenn Du mir diese richtige Berechnung zeigen
könntest.
Danke
Ich nehme an, du willst die Brückenspannung wissen:
Die Spannungen verhalten sich wie die Widerstände:
Linke Seite:
Uref / U2 = (R1+R2)/R2 umforman nach U2
U2 = (Uref*R2)/(R1+R2)
Rechte Seite:
Uref / U4 = (R3+R4)/R4 umforman nach U4
U4 = (Uref*R4)/(R3+R4)
Die Differenz bilden:
U2-U4 = (Uref*R2)/(R1+R2) - (Uref*R4)/(R3+R4)
Werte einsetzen:
R2=RTD, R1=R3=R4=1kOhm
U2-U4 = (Uref*RTD)/(1000+RTD) - (Uref*1000)/(1000+1000)
U2-U4 = (Uref*RTD)/(1000+RTD) - (Uref/2)
Hoffe, ich hab mich nicht vertan ...
lg, Mario
Die allgemeine Gleichung zum Spannungsteiler inkl. Herleitung welche wie
von Mario schon genannnt zu Ud = U0 * ( (R2*R3 - R1*R4) / ((R1+R2) *
(R3*R4)) ) führt ist mir bekannt.
R(T) = R4 ist der PT1000.
Nach R4 aufgelöst erhalte ich.
R4 = -( (R3*(Ud*(R1+R2) - U0*R2)) / (Ud*(R1+R2)+U0*R1) )
Oder wenn R1 = R2 = R3 = 1000 = R
R(T) = R4 = ( R*(U0-2*Ud) / (2*Ud+U0) )
Ud wäre dabei negativ da die Zeichnung oben ungünstig war.
Wie komme ich aber dann auf diese Gleichung??
R(T) = R * ((ADCwert/(1024)) + 0,5) / (0,5 - (ADCwert/(1024)))
Danke
die Rechnung von Mario passt schon mal. Diese Differenzspannung wird
ungefähr um den Faktor G verstärkt:
U_ADC = G U_Ref (RTD/(R0+RTD)-1/2)
Wenn der ADC die selbe Referenzspannung verwendet wie die Brücke, dann
gilt
U_ADC = ADCWert/1024*U_Ref
beide gleichsetzen, dabei kürzt sich U_Ref
ADCWert/1024 = G (RTD/(R0+RTD)-1/2)
Durch G dividieren und das 1/2 mit + auf die andere Seite
ADCWert/(1024 G) + 1/2 = RTD/(R0+RTD)
die linke Seite kürze ich ab jetzt mit (...) ab.
(...) (R0+RTD) = RTD
Ausmultiplizieren:
(...) R0 + (...)RTD = RTD
(...) R0 = RTD (1- (...))
aus 1-(...) wird (1/2-ADCWert/(1024 G))
das musst du noch durchdividieren, dann bist du bei deiner Formel.
Macht es doch nicht so kompliziert!
Nimm einfach die Versorgungsspannung U+ des µC als
Ref-Spannung für den internen ADC und als Speisespannung
für einen Spannungsteiler aus festem Vorwiderstand Rv und
dem Pt1000.
Durch diesen Spannungsteiler fließt ein Strom
I = U+ / (Rv + Rt)
An diesen Widerständen fällt jeweils eine Spannung ab:
Am Vorwiderstand: Uv = Rv * I
Am Pt1000: Ut = Rt * I
Beide Gleichungen nach I aufgelöst:
I = Uv / Rv
I = Ut / Rt
also: Uv / Rv = Ut / Rt
nach Rt aufgelöst:
Rt = Rv * Ut / Uv
ADC_max = U+ der Max-Wert des ADC = z.B. 1024
ADC_mess = Ut der vom ADC an Rt gemessene Wert
ADC_max-ADC_mess = Uv der sich für Rv ergebende ADC-Wert
Also: Rt = Rv * ADC_mess / (ADC_max - ADC_mess)
=========================================
Danke Achim S für die Herleitung. Jetzt ist mir klar wie die Gleichung
zustande kommt.
Mario hatte weiter oben angemerkt dass diese Schaltung nicht zu
gebrauchen wäre falls die Versorgungsspannung der Brücke nicht getaktet
wäre, da der Strom in der Brücke um über den Faktor 10 zu hoch wäre.
Welche PT1000 Schaltung wäre dann empfehlenswert wenn ich nur einen
einzigen PT1000 am ADC hätte?
Einfach nur den PT1000 und einen ausreichend großen Vorwiderstand?
Wenn ich Versorgungsspannung des Mikrocontroller als Uref nutzen würde,
also die 3,3V dann bräuchte ich um die 100µA zu erreichen ja einen
Vorwiderstand von etwa 32k Ohm?
Gruß
Marco K. schrieb:> Welche PT1000 Schaltung wäre dann empfehlenswert wenn ich nur einen> einzigen PT1000 am ADC hätte?
Schaltungen für PT-Sensoren sind immer aufwändiger, da diese
nur eine Wertänderung von 0,4% je Grad haben. Andere Sensoren
sind da deutlich steiler. Wenn Du sowieso einen µC hast, wäre
ein Sensor mit Digitalausgang sicherlich einfacher.
Marco K. schrieb:> Einfach nur den PT1000 und einen ausreichend großen Vorwiderstand?
Dann kommt es tatsächlich auf den ADC und die gewünschte
Temperaturauflösung an. Rechne dir aus, welche Temperaturänderung du
brauchst, damit der ADC um einen Wert weitergeht.
Bei Oldies Vorschlag (1k Vorwiderstand, hoher Strom) und einem 10bit ADC
wären es ziemlich genau 1°, bei deiner Brückenschaltung mit
Nachverstärkung wären es 0,1°.
Bei einem einfachen Spannungsteiler mit 32k wären es über 270° - da
kommst du um eine Nachverstärkung und/oder einen höher auflösenden ADC
nicht rum.
Harald W. schrieb:> Andere Sensoren> sind da deutlich steiler.
das stimmt. Wenn du nur in einem kleinen Temperaturbereich messen
willst, dann nimm dir einen integrierten Sensor wie z.B. LM35 - sehr
viel einfacher auszuwerten als Pt1000.
Leider ist der PT1000 schon in dem Teil welches ich vermessen möchte
drin, also da kann ich nichts machen.
Als Mikrcontroller wollte ich einen STM32 verwenden, da habe ich 12Bit
ADCs also 4096 Abstufungen.
Eine Temperatur Auflösung zwischen 0,1 und 0,5° wäre nicht schlecht.
Ich hoffe, ich kann in Kürze und Präzision erklären, warum ich nichts
von diesen (durchaus mathematisch richtigen) Überlegungen mit "ich hab
eh 1024 oder 2048 Werte" halte:
Diese 10 bzw 12 Bit Wandler bzw diese Überlegung setzt voraus, daß 0
Grad Temperatur genau 0 Volt bzw dem Registerwert 0x00 entsprechen und
die maximal zu messende Temperatur dem maximalen Registerwert
entsprechen.
Dies bekommst du NUR dadurch hin, daß du mit einer externen Beschaltung
die Meßwerte so hintrimmst. Jede externe Beschaltung kostet prinzipiell
Qualität bzw Genauigkeit.
Du nimmst also einen Genauigkeitsverlust hin, um mit 12 Bit
durchzukommen !!
Bei einem 7714 hast du 5 pseudoratiometrische Kanäle.
Einen 780 o.ä. brauchst du sowieso, da das Meßergebnis von der Qualität
der Refernzspannung abhängt (Genauigkeit und Rauschen).
Ich habe - ganz simpel - pro Kanal einmal 10kOhm nach oben gegen 2.5
Volt genommen, und den PT1000 nach unten. Das ist einfach. Hat aber
sicher den Nachteil, daß das bzgl 0.1 Grad Genauigkeit hart an der
Grenze ist, und die Steilheit mager ist. Ich messe bei Kaffeemschinen
auch im Bereich 0-130 Grad, wirklich wichtig ist bei mir der Bereich
85-110 Grad, und da kann man ja die Werte mit einem genauen Meßgerät ja
nachmessen.
Wenn du die Sache lege Artis machen willst, worst du um einen 7793 bzw
7794 mit einer ratimetrischen Messung nicht rum kommen.
Die 10 bzw 12 Bit taugen, um die Temperatur auf einem Kühlkörper zu
messen und dann den Lüfter einzuschalten ... ;-)
Mario
Um mich in die Pt1000-Auswertung mit einem µC und eingebautem,
oder externem ADC einzuarbeiten habe ich mir mal eine Tabelle
(Excel/open Office Calc) aufgebaut.
Sie geht natürlich von einer ratiometrischen Messung
aus, um mich nicht mit Offset-Drift und anderen Fehlerquellen
von Referenzspannungen und Operationsverstärkern rumzuärgern.
Für die Genauigkeit und Stabilität der Messergebnisse ist dann
nur noch der Pt1000, der Vergleichswiderstand Rv, der ADC und die
saubere Berechnung der Temperatur aus den Pt1000-Parametern (das
geht auch mit angemessener Ganzzahlrechnung!) verantwortlich.
Die Ergebnisse für verschiedene Vorwiderstände Rv und ADC-
Auflösungen sind in der Grafik zu sehen.
Fazit:
Für Rv = 1000 Ohm, dem Rth des Pt1000 bei 0 °C
bekomme ich eine gute Auflösung für Temperaturen unter 0 °C,
die sich bei höheren Temperaturen schnell verschechtert.
Für Rv = 3900 Ohm, dem Rth des Pt1000 bei 850 °C
bekomme ich eine bessere Auflösung für Temperaturen oberhalb
von 100 °C, während sie bei tieferen Temperaturen nicht mehr
ganz so gut ist.
Für einen Rv > 3900 Ohm (hier: 10 kOhm), wird die Auflösung in
allen Temperaturbereichen nur noch schlechter.
Obere 3 Bilder:
Mit einem 10-Bit-ADC lässt sich mit Rv = 1000 Ohm nur unterhalb
von 0 °C die Temperatur auf +/-1 °C auflösen.
Die 3 Bilder darunter:
Sie zeigen, dass ein 12-Bit-ADC mit Rv = 3900 Ohm schon
Temperaturen bis 150 °C auf +/-0,5 °C auflösen kann.
(mit Rv = 1000 Ohm bis 200 °C) Darüber wird es bald ungenau.
Die unteren 3 Bilder:
Für die Auflösung von +/-0,1 °C ist schon ein 15-, oder
16-Bit-ADC erforderlich.
Marco K. schrieb:> Genauigkeit> sollte etwa +-0,5 Grad oder besser erreichen. Temperaturbereich etwa 5> bis 140°C.Marco K. schrieb:> Als Mikrcontroller wollte ich einen STM32 verwenden, da habe ich 12Bit> ADCs also 4096 Abstufungen.> Eine Temperatur Auflösung zwischen 0,1 und 0,5° wäre nicht schlecht.
Bitte unterscheide zwischen Auflösung und Genauigkeit. Aber wie Du
selber zeigst, sind 0,5 °C mit einem 12 Bit ADC im gewünschten Bereich
zu erreichen.
Oldie schrieb:> saubere Berechnung der Temperatur aus den Pt1000-Parametern (das> geht auch mit angemessener Ganzzahlrechnung!) verantwortlich.
Bei einem STM32 nimm einfach float oder auch double; die Mikrosekunde
sollte doch als 'Phasenverschiebung' zwischen zwei Messungen nicht
stören ;-)