Hi Leute!
Ich habe hier einen PT500, den ich gerne messen würde. Zum Einsatz kommt
der 12 Bit Wandler in einem MSP430.
Ist folgende Variante praktikabel:
1
Versorgung
2
|
3
Vorwiderstand
4
|
5
----+------------+---------- OPV --- 12Bit ADC
6
| |
7
Festwiderstand Messobjekt
8
| |
9
uC | |
10
----- | |
11
P1.0 |- |
12
| |
13
P1.1 |-------------------
14
|
15
|
16
-----
Jetzt würde ich abwechselnd P1.0 auf low oder High-Z schalten, wodurch
jeweils nur ein Widerstand mit Strom versorgt wird.
Durch einen Vergleich der beiden Widerstände könnte ich doch nun das
Messobjekt bestimmen, oder? In der Variante würden doch auch die Drifts
und die Toleranz in der OPV-Schaltung rausfallen, oder täusche ich mich?
Der Leckstrom in die Pins hinein beträgt laut DB 50nA, also
vernachlässigbar.
Meint ihr, dass ich damit sinnvolle Ergebnisse erzielen kann, oder ist
da irgendwo ne Krücke drin, die ich grad nicht erkenne?
Ich habe es jetzt mal ausprobiert - generell geht es ja ersmtal so, aber
über die Qualität kann ich natürlich keine großen Aussagen machen.
Was ich mal getan habe: Den ADC-Wert mit der Portpin-Variante verglichen
mit den Werten, die rauskommen, wenn ich die Widerstände direkt an GND
anschließe.
Bei einem Pin kommt ein Delta von 26 ADC-Zählern raus, beim anderen ein
Delta von 24.
Es ist also schon ein "relativ großer" Widerstand in den IO-Pins. Jetzt
weiß ich natürlich nicht, ob beide sich gleich verhalten, also mit der
Temperatur und so. Ich würde ja erstmal davon ausgehen. Ergo müsste doch
eine Temperaturdrift auch beide gleichermaßen betreffen, oder? Und das
Ergebnis somit wieder stimmen.
Oder würde es sich anbieten, einen kleinen FET anstelle der Pins direkt
zu nehmen? Ein BSS123 oder so.
Was meint ihr?
Grad mal den Pin gemessen - der Widerstand nach GND im low-Zustand
beträgt 23,6 bzw. 23,8 Ohm - das ist ja doch recht nah beieinander.
Hat nicht jemand mal eine Meinung dazu? ;-)
OK Leute...ich hoffe immernoch, dass sich mal jemand meldet...
Ich habe mit der Geschichte jetzt ein wenig herumgespielt, jedoch ist
das doch nicht so optimal - und da wäre ich echt froh, wenn jemand nen
Rat hätte, woran es liegen könnte.
Ich habe jetzt abwechselnd einen 500Ohm Widerstand dran und schalte dann
im Sekundentakt um auf den anderen, zu messenden Widerstand.
Zwischen der Zeit, wo der Widerstand umgeschaltet wird bis zum
Samplingbeginn des ADCs vergehen rund diese Sekunde. Also der Sampling C
sollte sich schon lange auf den neuen Wert aufgeladen haben.
Ich mache jetzt gerade einfach folgende Rechnung im uC:
R_Messwiderstand = (ADC-Wert_Messwiderstand * 5000) /
ADC-Wert_Referenzwiderstand
5000 wegen 500Ohm plus Nachkommastelle.
Jetzt habe ich zum Vergleich gerade einen 750 Ohm Widerstand drin, aber
mein uC spuckt mir einen Widerstandswert von 730 aus, also knapp 20 zu
wenig.
Es ist so, dass mit steigendem Messwiderstand auch der Fehler steigt.
Bei einem 900 Ohm Widerstand sind es bereits 40 Ohm Differenz.
Wo soll ich hier anfangen den Fehler zu suchen?
ADC-Fraguist schrieb:> OK Leute...ich hoffe immernoch, dass sich mal jemand meldet...
na dann mach ich mal den Anfang ;-)
ADC-Fraguist schrieb:> R_Messwiderstand = (ADC-Wert_Messwiderstand * 5000) /> ADC-Wert_Referenzwiderstand>>> Wo soll ich hier anfangen den Fehler zu suchen?
Am besten nochmal über deine Berechnungsformel nachdenken. Dieser
Dreisatz würde stimmen, wenn der ADC-Wert proportional dem Wert des
jeweiligen Widerstands wäre. Ist er aber nicht, denn du baust einen
Spannungsteiler. Dein ADC-Wert pro Einzelmessung ist also
ADC_wert = Versorgung/Referenzspannung * 2^12 * R_m /(R_v + R_m)
und hängt nichtlinear vom gemessenen Widerstand R_m ab.
Die Abhängigkeit vom Vorwiderstand R_v kürzt sich auch nicht bei der
Quotientenbildung der beiden ADC-Werte, Dreisatzrechnung liefert hier
nicht das gewünschte Ergebnis.
ADC-Fraguist schrieb:> Wenn ich als Messwiderstand auch 500 Ohm reinmachen, dann zeigt er mir> auch genau 500 an.
Klar: wenn du zwei mal den selben ADC-Wert hast und beide durcheinander
dividierst, kommt 1 raus. Aber die Berechnung bei unterschiedlichen
ADC-Werten muss den Spannungsteiler berücksichtigen.
Ich fürchte, mit deiner Vergleichsmethode schaffst du nicht wirklich
einen Genauigkeitsvorteil gegenüber einer sauber aufgebauten
Standardbeschaltung des Pt500.
Hallo,
deine Schaltung kann überhaupt nicht lineare Ergebnisse liefern - durch
die zu messenden Widerstände fliesst ja kein konstanter Strom, sondern
der ist vom zu messenden Widerstand abhängig. Du kannst dir höchstens
die Abweichungen berechnen und das im Programm korrigieren.
Gruss Reinhard
Hai!
ADC-Fraguist schrieb:
> Meint ihr, dass ich damit sinnvolle Ergebnisse erzielen> kann,
Nein.
> oder ist da irgendwo ne Krücke drin, die ich grad nicht> erkenne?
Ja. Wenn es sich wirklich um ein Pt500 handelt, dann ist
die Empfindlichkeit ungefaehr 1 Ohm/K (ca. 0.4%/K). Das
bedeutet: 10 Ohm Messfehler = Temperatur 10° falsch gemessen.
Da ist Dein Daumen deutlich genauer...
Platinwiderstaende sind schoen und haben eine Menge Vorteile,
aber sie haben auch (mindestens) einen Nachteil: Die Mess-
empfindlichkeit ist ziemlich klein.
Standardloesung: Messbruecke + OPV.
Ich will nicht ausschließen, dass man Deine Lösungsidee
irgendwie so hinfrickeln kann, dass man ohne OPV auskommt,
aber ich würde die Frickelei nicht wollen.
Korrektur: Habe übersehen, dass Du ja offenbar einen
OPV vorgesehen hast. Um so besser. Nun also nur noch
Messbrücke mit 0.1%-Widerständen aufbauen.
Grusz,
Rainer
OK Leute!
Ihr habt mir die Augen geöffnet, danke!
Achim S. schrieb:> Ich fürchte, mit deiner Vergleichsmethode schaffst du nicht wirklich> einen Genauigkeitsvorteil gegenüber einer sauber aufgebauten> Standardbeschaltung des Pt500.
Macht Sinn. Also: Mir geht es nicht um die supergenauen Messwerte, wenn
es um Grad daneben liegt, dann isses in Ordnung. Den PT500 nehme ich
auch nur, da er bereits vorhanden ist. Auf den Vergleich kam ich, da in
der Schaltung noch ein OP eines 4-fach-Typen frei ist. Hierbei handelt
es sich um einen MCP6004, welcher ja nicht so dolle ist. Daher der
Vergleich, wodurch alle Verschiebungen durch Temperatur und auch
Widerstandstoleranzen in der Verstärkerschaltung rausfallen sollten. Um
jetzt nochmal an der Vergleichsrechnung anzuknüpfen...wenn ich es jetzt
so aufbauen würde:
1
Versorgung
2
|
3
JFET-- <- BF245 o.ä.
4
| |
5
Widerstand zur Stromeinstellung
6
|
7
----+------------+---------- OPV --- 12Bit ADC
8
| |
9
Festwiderstand Messobjekt
10
| |
11
uC | |
12
----- | |
13
P1.0 |- |
14
| |
15
P1.1 |-------------------
16
|
17
|
18
-----
dann wäre ich doch eigentlich alle Probleme los, oder? Da hätte ich
einen konstanten Strom, welcher sogar mit der Temperatur wandern kann,
da er ja für beide Rs gilt. Immernoch vorausgesetzt, P1.0 und P1.1
verhalten sich identisch, was aber anzunehmen ist. Alternative zum JFET
wäre ein LM334 oder irgendwas in der Richtung.
Ich habe als Versorgung 3V, also ist ggf. die Sättigungsspannung am JFET
zu hoch. Als Messstrom muss ich mich leider auf 100 bis 200uA begrenzen,
eher 100, da ich hier nicht verschwenderisch sein kann.
Ist die KSQ hier die Lösung?
Reinhard Kern schrieb:> durch> die zu messenden Widerstände fliesst ja kein konstanter Strom
Mit jetzt gezeigter Lösung ja dann schon.
Rainer Ziegenbein schrieb:> Standardloesung: Messbruecke + OPV.
Klar, ginge auch, aber wie gesagt, der OPV ist schon dürftig.
Also, wenn ich hierbei wieder was nicht mit in Betracht gezogen habe,
dann seid so gut und sagt es mir. Weil ich denke, das ist doch jetzt
absolut praktikabel, oder? Das einzige was mir hier einen Fehler
reinbringt ist dann mein 500Ohm Vergleichswiderstand.
ADC-Fraguist schrieb:> Das einzige was mir hier einen Fehler> reinbringt ist dann mein 500Ohm Vergleichswiderstand.
Widerstandsmässig schon, aber wenn du nicht aufpasst, ist dein Pt500
kein Messfühler, sondern selbst eine Heizung. Ich würde so Pi mal Bauch
sagen, mehr als 2 mA dürfen nicht durchfliessen, damit die
Eigenerwärmung nicht das Ergebnis verfälscht.
Gruss Reinhard
ADC-Fraguist schrieb:> Vorgesehen hatte ich 100uA, also sehr wenig.
Machst Du Witze?
U = R * I
= 500 Ohm * 0.1mA
= 50mV
Das entspricht etwa einer Empfindlichkeit von 0.1mV (!!)
je Kelvin. --> Vergiss es.
Da ist doch noch ein OPV hinter.
Die 100uA sind absolut praktikabel - arbeitet schon in einer anderen
Schaltung mit besserem OP und genauen Widerständen optimal.
ADC-Fraguist schrieb:> Ich habe hier einen PT500, den ich gerne messen würde. Zum Einsatz kommt> der 12 Bit Wandler in einem MSP430.
Es geht nur eines von beiden.
Entweder willst du den PT500 messen (!!!) zwecks Temperaturmessung -
Oder du willst den 12 Bit Wandler in deinem MSP einsetzen.
Beides zusammen geht nicht.
Wenn du tatsächlich Temperaturen messen willst, dann nimm einen
richtigen ADC.
Wenn du gerne abgleichst und mit krummen Kennlinien dich befassen
willst, dann nimm einen CMOS-OpV für den PT500 und einen beliebigen µC,
denn da kommt's dann auch nicht mehr drauf an.
Alle paar Tage kommt hier so ein Thema rein und die TO's sind zu bequem
zum vorherigen Suchen und zu deppert zum vorherigen Durchkalkulieren
ihrer grandiosen Ideen.
W.S.
Klar geht beides zusammen. Ich sagte doch, ich brauche es nicht so genau
und der PT500 is schon drin, also kann ich ihn auch benutzen. Und ein OP
is auch noch frei.
Was spricht also dagegen? Die Kennlinie des Pts ist nicht linear, klar,
aber das lässt sich mit nem Ersatz-Polynom 3. Grades einfach in Software
erschlagen.
Ich muss ja nur erstmal den Widerstandswert in den uC bekommen. Mit zwei
Grad Auflösung bin ich zufrieden. Da reicht der ADC.
irgendwie finde ich deine Herangehensweise nicht ganz schlüssig.
Einerseits investierst du einigen Aufwand in deine Schaltungen um "Drift
und Toleranz" zu reduzieren. Aber wenn genauere Alternativen
vorgeschlagen werden (die Standardbeschaltungen halt) erklärst du, dass
du es ja gar nicht so genau brauchst.
Zu deinen Schaltungenideen: der prinzipielle Ansatz, Fehler durch
Vergleich mit einem Referenzwiderstand zu eliminieren, ist ja nicht
schlecht. (Das macht übrigens die von Rainer vorgeschlagene Messbrücke
auch). Aber du solltest nicht bei der prinzipiellen Betrachtung aufhören
sondern die tatsächlichen Fehler konkret durchrechnen. Dann erkennst du,
dass welche Maßnahmen wirklich sinnvoll sind.
Eine Sensor-Empfindlichkeit von ~0,2mV/°C und ein OPV mit einigen mV
Offset passen einfach nicht zusammen. Wenn du die Wirkung der
Offsetspannung mal mit einer konkreten Formel auf ein Stück Papier
schreibst würdest du auch sofort erkennen, dass der Offset sich bei der
von dir geplanten Korrektur nicht herauskürzt: deine Herangehensweise
hilft also nicht gegen die OPV-Drift.
Der Vergleich mit dem Festwiderstand würde dir allerdings bei deiner
butterweichen Stromquelle helfen - die wird voraussichtlich wild
driften, und wenigstens dieser Fehler fällt durch den Vergleich mit dem
Festwiderstand in erster Näherung raus (einfach mal nachrechnen).
Wenn du statt einer Standardschaltung bei deinem Entwurf bleiben willst,
dann pack die wichtigen Punkte an:
1) geh mit dem Strom mindestens auf 1 mA (oder mehr). Völlig Wurst ob
du anderswo schon mal mit 100 µA glücklich wurdest. Du willst den Strom
doch ohnehin schalten: mit einem Dutycycle <1% und einer On-Zeit im
ms-Bereich, stört der höhere Strom doch niemanden. Damit werden alle
Fehler des OPV um eine Größenordnung uninteressanter, das ist sehr viel
wirksamer als alle bisher von dir durchdachten Maßnahmen.
2) mach eine differentielle Messung an beiden Enden des Widerstands (ich
hoffe, dein ADC kann das). Selbst wenn der IO-Port niederohmig sein
sollte schaltet er auf das digitale GND durch. Der interne Digital-GND
eines µC ist eine miserable Bezugsspannung für eine empfindliche
Analogmessung.
3) nutze zumindest eine halbwegs hochohmige Stromquelle. Der Vergleich
mit dem Festwiderstand eliminiert zwar die Drifts der Stromquelle, aber
die weiche Kennlinie der Stromquelle wird dadurch nicht korrigiert.
4) achte beim Einbau des Sensors darauf, dass du auch wirklich die
Temperatur des Messobjekts bekommst, nicht die der Zuleitungen.
Um die Nichtlinearitäten der Pt-Kennlinie musst du dir dann erst sehr
viel später Gedanken machen.
Hallo Achim!
Vielen Dank für deine ausführliche Antwort!
Achim S. schrieb:> irgendwie finde ich deine Herangehensweise nicht ganz schlüssig.> Einerseits investierst du einigen Aufwand in deine Schaltungen um "Drift> und Toleranz" zu reduzieren.
Ich war eigentlich der Meinung, dass das gerade fast garkein Aufwand ist
und ich damit dennoch recht praktikable Ergebnisse erzielen kann. Eine
KSQ, welche abwechselnd einen Referenzwiderstand und einen
Messwiderstand bestromt. Beide werden vom gleichen Verstärkungsnetzwerk
an den ADC weitergegeben - somit sind Toleranzen/Drifts der Schaltung
für bei identisch und fallen quasi raus. Das war jetzt zumindest der
letzte Plan.
Achim S. schrieb:> Aber wenn genauere Alternativen> vorgeschlagen werden (die Standardbeschaltungen halt) erklärst du, dass> du es ja gar nicht so genau brauchst.
Ich kann mir denken, dass die gewöhnlichen Schaltungen zur Auswertung
wesentlich besser geeignet sind, jedoch erfordern sie auch andere
Bauteile. Ich habe hier halt noch OPs frei (welche aber eher schlecht
sind) und dieser PT500 ist eben auch vorhanden. Eine Genauigkeit von 2
Grad ist für mich völlig ausreichend, Nachkommastellen brauche ich
nicht. Das ganze soll halt ein guter Kompromiss werden, mit den
vorhandenen Mitteln noch das Beste rauszuholen.
Achim S. schrieb:> Zu deinen Schaltungenideen: der prinzipielle Ansatz, Fehler durch> Vergleich mit einem Referenzwiderstand zu eliminieren, ist ja nicht> schlecht.
Juhu, nicht nur Tadel :-)
Achim S. schrieb:> Das macht übrigens die von Rainer vorgeschlagene Messbrücke> auch
Bei einer Messbrücke brauche ich aber doch auch einen guten OP mit guten
Widerständen, oder? Wenn ich stets nen Offset zwischen den Eingängen
habe, dann komme ich ohne kalibrieren auch nicht aus.
Achim S. schrieb:> Eine Sensor-Empfindlichkeit von ~0,2mV/°C und ein OPV mit einigen mV> Offset passen einfach nicht zusammen.
Das ist mir klar.
Achim S. schrieb:> Wenn du die Wirkung der> Offsetspannung mal mit einer konkreten Formel auf ein Stück Papier> schreibst würdest du auch sofort erkennen, dass der Offset sich bei der> von dir geplanten Korrektur nicht herauskürzt: deine Herangehensweise> hilft also nicht gegen die OPV-Drift.
Das verstehe ich leider nicht, ich wäre dir sehr dankbar, wenn du mir
das vielleicht erklären könntest. Wieso habe ich trotzdem einen Fehler?
Achim S. schrieb:> Der Vergleich mit dem Festwiderstand würde dir allerdings bei deiner> butterweichen Stromquelle helfen - die wird voraussichtlich wild> driften, und wenigstens dieser Fehler fällt durch den Vergleich mit dem> Festwiderstand in erster Näherung raus
Das hatte ich auch gehofft.
Achim S. schrieb:> geh mit dem Strom mindestens auf 1 mA (oder mehr)
Muss ich nochmal schauen, was ich da machen kann.
Achim S. schrieb:> Damit werden alle> Fehler des OPV um eine Größenordnung uninteressanter, das ist sehr viel> wirksamer als alle bisher von dir durchdachten Maßnahmen.
Weil das Nutzsignal nicht so nah an den unerwünschten Spannungspegeln
dran ist?
Achim S. schrieb:> mach eine differentielle Messung an beiden Enden des Widerstands (ich> hoffe, dein ADC kann das)
Leider nicht, wie gesagt, ist eher die Variante, in der ich noch das
Beste aus dem Gegebenen machen möchte.
Achim S. schrieb:> Selbst wenn der IO-Port niederohmig sein> sollte schaltet er auf das digitale GND durch. Der interne Digital-GND> eines µC ist eine miserable Bezugsspannung für eine empfindliche> Analogmessung.
Stimme ich absolut zu!
Achim S. schrieb:> nutze zumindest eine halbwegs hochohmige Stromquelle. Der Vergleich> mit dem Festwiderstand eliminiert zwar die Drifts der Stromquelle, aber> die weiche Kennlinie der Stromquelle wird dadurch nicht korrigiert.
Was bedeutet das? Was meinst du mit "weicher Kennlinie wird nicht
korrigiert"? Hat es was damit zu tun, dass der Ausgangsstrom der KSQ
auch geringfügig von der zu treibenden Last abhängig ist?
Gruß und danke!
ADC-Fraguist schrieb:> Das verstehe ich leider nicht, ich wäre dir sehr dankbar, wenn du mir> das vielleicht erklären könntest. Wieso habe ich trotzdem einen Fehler?
Dein Ansatz ist, die beiden gemessenen Spannungen zu dividieren, um den
Fehler loszuwerden. Das funktioniert bei multiplikativen
(Verstärkungs-)fehlern. Das funktioniert nicht bei additiven
(Offset-)fehlern.
Also im Idealfall (keine Fehler):
U1=100µA * R_m
U2=100µA * R_v
Ausgewertet wird U1/U2 = R_m/R_v
Wenn der Strom driftet erhältst du:
U1=110µA * R_m
U2=110µA * R_v
U1/U2 = R_m/R_v liefert dir immer noch das korrekte
Widerstandsverhältnis -> Drifts der Stromquelle werden korrigiert.
Wenn der Offset driftet erhältst du:
U1=100µA * R_m + U_off
U2=100µA * R_v + U_off
U1/U2 = (100µA * R_m + U_off)/(100µA * R_v + U_off) der Offsetfehler
fällt nicht heraus, er wird höchstens zum Teil kompensiert (je nachdem,
wie weit R_m und R_v voneinander entfernt sind)
ADC-Fraguist schrieb:> Hat es was damit zu tun, dass der Ausgangsstrom der KSQ> auch geringfügig von der zu treibenden Last abhängig ist?
ja, das hatte ich gemeint. Wobei ich beim konkreten Nachdenken jetzt
auch zum Schluss komme, dass der Effekt wohl bei einer 100µA JFET-Quelle
vernachlässigbar wäre. (Die Quelle wäre nicht so "butterweich" wie ich
auf den ersten Blick vermutet habe.)
ADC-Fraguist schrieb:> Weil das Nutzsignal nicht so nah an den unerwünschten Spannungspegeln> dran ist?
Nein: weil das Nutzsignal 10 mal größer wird und alle additiven
Störungen (Offset des OPV, Rauschen des µC-internen digital-GND) sich
relativ zum Nutzsignal nur noch ein Zehntel so stark auswirken.