Hi,
leider erneut ein Beitrag wie Tausend andere zum Thema Temperaturmessung
mit PT100 an einen Operationsverstärker. Ich versuche seit Tagen weiter
zu kommen, aber es klappt nicht. Ich hab drei E-Techniker gefragt und
alle können mir warum auch immer nicht weiterhelfen...
2 PT100 Sensoren sind an einen MCP6004T OpAmp angeschlossen, welcher
wiederum an den integrierten 12bit ADC von einem SAME70 MCU
angeschlossen ist. Der ADC kann von 0V bis VREF (hier 3,3V) konvertieren
und stellt den analogen Input linear auf diesen Bereich dar ("The
conversion is performed on a full range between 0V and the reference
voltage carried on pin VREFP. Analog inputs between these voltages
convert to values based on a linear conversion").
Ich hab das folgende Schaltnetz und was auch schon auf 2 Platinen zum
Testen bestückt ist. Derjenige, der das entworfen hat, ist nicht mehr da
und ich quäle mich durch den Code und was sich dabei gedacht wurde. Im
Code wird der digitale Wert, welcher der ADC ausgibt, wie folgt
berechnet. Die Multiplikation mit 10 ist zum Darstellen von der ersten
Nachkommastelle als Integerzahl. 140, 170 und 14 sind magisch rein
gewürfelt. Dazu ist mir beim Testen aufgefallen, dass adc_val2 und
adc_val1 eine Differenz haben, obwohl die Sensoren nebeneinander stehen
und der Wert dann identisch sein sollte. Der Offset ist auf beiden auf
512 laut ADC eingestellt. Auch wenn man die Sensoren austauscht, ändert
sich nichts an den Werten.
1
uint16_tt1=(read_adc(ch1)-140)/14*10
2
uint16_tt2=(read_adc(ch2)-170)/14*10
Ich bin mithilfe der Forenbeiträge und vor allem dieser Seite
http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.32 auch schon
weiter gekommen, aber ich schaffe es trotzdem nicht. Der Schaltplan in
Figure 4 von https://www.ti.com/lit/pdf/slyt442 entspricht auch meinem
vorliegenden, bis dass R5 nicht vorhanden ist und der Verstärkerausgang
nicht zurück an den nicht-invertierenden Eingang gekoppelt ist. Ich habe
diese Excel Tabelle RTD_Linearization_v7 auch gefunden, würde mir aber
ehrlich gesagt nur weiterbringen wenn man eine neue Platine bestückt.
Was für eine Output-Range hat jetzt der OpAmp und wie hoch ist der
Verstärkungsfaktor? Ich bin schon längst am verzweifeln....
Schau dir mal genau deinen Schaltplan an.
Dann zeichne ihn noch einmal, direkt mit einem PT100 als veränderlichen
Widerstand. Dann erkennst du dein Problem. Löse auch deinen Käfer in
Schaltzeichen auf.
Dann sehen wir weiter.
Burak S. schrieb:> Die Multiplikation mit 10 ist zum Darstellen von der ersten> Nachkommastelle als Integerzahl.
Dann muß diese zuerst erfolgen. Was einmal an Auflösung weg ist, bleibt
weg. Oder rechne alles in float.
Gibt doch erstmal die ADC-Rohwerte aus und rechne sie z.B. in Excel um.
Harald W. schrieb:> Burak S. schrieb:>>> pt100_mcp6004t.jpg>> Warum nennst Du Deine PT100 NTC? Das sind eher PTCs.
Ja, der Schaltplan ist nicht von mir, wie gesagt. Es werden aber PT100
Sensoren benutzt.
Ove M. schrieb:> Schau dir mal genau deinen Schaltplan an.> Dann zeichne ihn noch einmal, direkt mit einem PT100 als veränderlichen> Widerstand. Dann erkennst du dein Problem. Löse auch deinen Käfer in> Schaltzeichen auf.> Dann sehen wir weiter.
Meinst du, die fehlende Verbindung zwischen NTC1 und 1IN+ vom OpAmp? Die
Linie ist nicht eingezeichnet.
Peter D. schrieb:> Burak S. schrieb:>> Die Multiplikation mit 10 ist zum Darstellen von der ersten>> Nachkommastelle als Integerzahl.>> Dann muß diese zuerst erfolgen. Was einmal an Auflösung weg ist, bleibt> weg. Oder rechne alles in float.> Gibt doch erstmal die ADC-Rohwerte aus und rechne sie z.B. in Excel um.
Ja, das stimmt, danke. Die ADC Rohwerte habe ich mir auch mal
ausgegeben, aber kann nur schwer damit was anfangen. Bei 25-26°
Raumtemperatur sind die Rohwerte ca. 420 und 470. Richtung 0° Grad geht
es dann auf ein Wert von ca. 100, bei 35° Richtung 700.
Ich bin jetzt eben auf den nicht invertierenden Verstärker mit Offset
gestoßen, was ja genau meine Abbildung entspricht
(https://www.mikrocontroller.net/articles/Operationsverst%C3%A4rker-Grundschaltungen#Nichtinvertierender_Verst%C3%A4rker_mit_Offset).
Ich habe das mal auf die schnelle ausgerechnet mit Beispielwerten für
den PT bei 0 Grad und 100 Grad (100 Ohm und 138,51 Ohm) und komme auf
eine Ausgangsspannung von -161,612V für 100 Ohm und -160,359V bei 138,51
Ohm. Das hört sich aber bisschen extrem an...Die Verstärkung wäre
51,999:
Die Offsetspannung U_o wäre
Die Ausgangsspannung bei U_e = 0,0648V (für 100 Ohm):
Ich habe es gelöst :-) :-) :-)
Ich habe die Offsetspannung in meiner Beispielrechnung falsch berechnet
bzw. den falschen Widestand eingesetzt:
Die Offsetspannung U_o wäre
Somit kommt für
raus bei 100 Ohm für 0 Grad und
bei 138,51 Ohm für 100 Grad. In einer Excel Tabelle alles automatisch
berechnen lassen, somit komme ich auf ein ADC Wert von
bei 100 Ohm und
bei 138,51 Ohm.
Als ungefähre lineare Funktion
, die ich dann auf meinen ausgelesenen ADC Werte anwenden kann und somit
habe ich die Temperatur.
Allerdings musste ich noch im ADC Register die Offsets anpassen, warum
das entstanden ist, kann ich nicht sagen...
Ich bin zufrieden :) :) :)
Burak S. schrieb:> bei 138,51 Ohm für 100 Grad. In einer Excel Tabelle alles automatisch> berechnen lassen, somit komme ich auf ein ADC Wert vonADC0=87ADC_{0} => 87 bei 100 Ohm undADC138=1655ADC_{138} = 1655 bei 138,51 Ohm.
Willst Du keine negativen Temperaturen messen? Ansonsten müßtest Du bei
der gewählten Schaltung noch ca. 80 Ohm in Reihe zum PT100 schalten und
alles neu berechnen. Alternativ auch R6/R18 verkleinern. Der OPV ist
zwar rail to rail, ich würde aber nicht unbedingt am Anschlag arbeiten,
es sei denn es geht ausschließlich um Messungen ab Zimmertemperatur.
Viel Erfolg noch!
Uuu B. schrieb:> ich würde aber nicht unbedingt am Anschlag arbeiten,
Ob der Ersteller die unlinearität im unteren Bereich genutzt hat den
"Bauch" aus der PT Kennlinie zu ziehen?
Nach meinen Berechnungen (ohne Offset und linearen OP) gibt Adc-Wert
*100/156 genaue zehntel Grad von 0-30° aus. Darüber wird's zu wenig (bei
100° fehlen 1,7° und bei 220 Grad fehlen schon 10°)
Uuu B. schrieb:> Willst Du keine negativen Temperaturen messen? Ansonsten müßtest Du bei> der gewählten Schaltung noch ca. 80 Ohm in Reihe zum PT100 schalten und> alles neu berechnen. Alternativ auch R6/R18 verkleinern. Der OPV ist> zwar rail to rail, ich würde aber nicht unbedingt am Anschlag arbeiten,> es sei denn es geht ausschließlich um Messungen ab Zimmertemperatur.> Viel Erfolg noch!
Vielen Dank! Nein, negative Temperaturen brauchen wir nicht. Eigentlich
reicht sogar der Bereich zwischen 0°C und 50°C. Die 80 Ohm wären
zusätzlich zu den 4k9 vor PT oder nach PT? Das wäre dann aber für
negative Temperaturen?
Da nur bis 50°C relevant sind und auch 100°C noch ca. bei 1,3V sind,
arbeitet der OPV doch im normalen Bereich, oder nicht?
Das Platinen-Layout wird noch mal gefixt und hier würde ich dann auch
vorschlagen, dass man das so durchführt wie über die R7_Linearization
Excel Tabelle vorgegeben ist. Dann hat man da etwas festes und es ist
nachvollziehbar. Hier könnte ich von z.B. im OPV Output Range von 0,25V
bis 3,275 Volt arbeiten, damit ich 0,25V Puffer am Anfang und Ende habe,
oder was meint ihr (s. Datasheet "Maximum Output Voltage Swing", oder
ist das falsch?)
A. H. schrieb:> Ob der Ersteller die unlinearität im unteren Bereich genutzt hat den> "Bauch" aus der PT Kennlinie zu ziehen?> Nach meinen Berechnungen (ohne Offset und linearen OP) gibt Adc-Wert> *100/156 genaue zehntel Grad von 0-30° aus. Darüber wird's zu wenig (bei> 100° fehlen 1,7° und bei 220 Grad fehlen schon 10°)
Bin da etwas verwirrt - ist die PT-Kennlinie allgemein im unteren
Temperaturbereich ungenauer als im oberen? Wie kommst du auf 100 und 156
für die Berechnung?
Datasheet OpAmp MCP6004T:
https://ww1.microchip.com/downloads/en/DeviceDoc/MCP6001-1R-1U-2-4-1-MHz-Low-Power-Op-Amp-DS20001733L.pdf
Burak S. schrieb:> Hier könnte ich von z.B. im OPV Output Range von 0,25V> bis 3,275 Volt arbeiten, damit ich 0,25V Puffer am Anfang und Ende habe,> oder was meint ihr (s. Datasheet "Maximum Output Voltage Swing", oder> ist das falsch?)
Den im DB angegebenen "Maximum Output Voltage Swing" würde ich nicht
voll ausnutzen. Die Angabe gilt nur für Vdd=5.5V und "0.5V input
overdrive". Das hier habe ich dazu gefunden:
https://electronics.stackexchange.com/questions/534140/what-is-input-overdrive.
Für eine Betriebsspannung von 3.3V sieht das vermutlich anders aus.