Forum: Mikrocontroller und Digitale Elektronik Tempmessung mit KTY81


von Oliver K. (oliver-tmp)


Lesenswert?

Hallo,

ich messe mit einem Mega8 eine Temperatur in 0,25° Schritten (0-100°).

Als Grundlage für die Messung habe ich folgene Seite genommen:
http://www.sprut.de/electronic/pic/projekte/thermo/thermo.htm

Wenn man den KTY81 in Reihe mit einem 2,7k Widerstand schaltet dann
soll sich die Spannung um 7,7125mV / °C ändern. Ich wollte mit dem
Mega8 eine Auflösung von 0,25° haben.

Aref = 7,7125mV / 4 * 1024
Also habe ich Aref auf 1,9744V eingestellt.
Bei 100° fallen 1,9290V ab - also bin ich dann noch unter Aref drunter
(mehr als 100° werden nicht benötigt).

Um vom ADC-Wert dann auf die Temperatur zu kommen habe ich den Wert
durch 4 geteilt und dann 150 abgezogen.

Als 2,7k Widerstand habe ich ersteinmal einen 2,74k genommen und
parallel dazu einen 220k Regler. Dann mit Eiswasser den Anzeigwert auf
0,5°C eingestellt (wenn oben Eis und drunter Wasser, so wird das Wasser
ja bestimmt ein klein wenig über 0° sein).

Alles soweit so gut - nur scheint die Temperatur umso höher sie wird
umso mehr abzudriften. Also muss ich irgendwo einen Fehler gemacht
haben.

1)
Was könnte ich falsch gemacht haben?

2)
Da ich gerne die Temperatur ohne zusätzlichen Einstellregler
kalibrieren möchte habe ich noch eine Frage:
Kann man die Temperatur wirklich damit kalibrieren indem man einen
konstanten Wert auf die Temperatur draufschlägt / abzieht? Also z.B.
der ausgelesene Wert + 1°. Müsste man diese Kalibrierung nicht eher
prozentual machen - also z.B. ausgelesener Wert + 10%? Der 2,7k hat ja
auch Toleranzen.

Vielen Dank schon mal.

Oliver

von Philipp (Gast)


Lesenswert?

abo

von DL4MCV (Gast)


Lesenswert?

Die Kennlinie des KTY ist nicht linear, vor allem nicht in einer
einfachen Spannungsteilerschaltung, da sich mit der Widerstandsänderung
des KTY ja auch der Strom ändert. Da wird am sinnvollsten ein
Lookup-Table sein (z. B. im EEPROM).

Eine Auflösung von 0.25°C wird nicht viel Sinn ergeben, eine
Genauigkeit von 3°C ist schon schwierig zu errreichen.

Schau Dir mal im Datenblatt die Toleranzen und die Kennlinie an. Um ein
genaues Thermometer zu bauen, brauchts schon ein bisschen mehr Aufwand.


Ciao

Maurice

von Thomas S. (Gast)


Lesenswert?

Desweiteren kann in Eiswasser alles von -20 .. +10 GRad erzeugt
werden....Je nachdem, ob der Fühler am Eis anliegt oder nicht.
Ganz so einfach ist das alles nicht.
Kennlinie linearisieren, kann ggf. auch digital erfolgen.
Ein KTY ist für ca. 1 Grad gut , alles andere ist eh gelogen.

Gruß und viel Spaß
Thomas

von Oliver K. (oliver-tmp)


Lesenswert?

Laut der o.g. Seite sollen Fehler unterhalb 1K entstehen bei
Reihenschaltung mit einem 2,7k Widerstand. Bei meiner Schaltung
enstehen nach obenhin - bei z.B. 80° - bis zu 5° Unterschied.

Wie sieht es aus mit dem Kalibrieren? Kann man nun wirklich einfach was
draufaddieren bzw. abziehen oder sollte man lieber prozentual was
draufaddieren bzw. abziehen?

von Bernhard S. (bernhard)


Lesenswert?

Hallo Oliver Kleinert,

mit dem KTY konnt ich auch schon einige Thermometer realisieren,
Genauigkeit lag bei ca. 2K in einem bestimmten kleinen
Temperatur-Bereich (40-80°C).

Viel mehr Genauigkeit ist bei einem Widerstand und einem 12 Bit ADC
leider nicht möglich.

Bernhard

von Thomas (Gast)


Lesenswert?

Naja - 12 BIT sind doch perfekt - da haperts wohl eher am KTY ;-)

von Kola (Gast)


Lesenswert?

Oliver,

Ob du was konstantes addieren musst, oder was prozentuales, hängt von
deinen Fehlern ab. Da gibt es OffsetFehler, Linearitätsfehler,
Stetigkeitsfehler, und so weiter. (Google ist dein Freund).

Den korrekten Wert über eine LookupTable zu ermitteln, finde ich
einfacher. Trotzdem muss man sich Gedanken über die auftretenden Fehler
machen.

Schau mal unter den genannten Fehlern, und unter Kalibrierung
weiter...ist gar nicht so kompliziert

Mache nicht elektrisch, was du mit software lösen kannst!

Kola

von TOM (Gast)


Lesenswert?

@Bernhard
>> Viel mehr Genauigkeit ist bei einem Widerstand und einem 12 Bit ADC
leider nicht möglich.

Wie kommst du darauf, rechnerisch ist doch eine höhere Genauigkeit
möglich?

Gruß

Thomas

von Ralf W. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich hab ein Programm geschrieben mit dem man die Widerstände für die
Linearisierung berechnen kann. Es basiert auf der Application Note SC17
General Temperatur Sensors von Philips. Ist zwar nicht sonderlich
professionell, aber vielleicht kannst du es ja brauchen bzw. irgendwer
anders.
Man braucht allerdings die .Net2.0 Runtime von Microsoft.

Kurz zum Programm.

Auf dem Register KTY-Series Data kann man die Daten der verwendeten KTY
Sensoren nach Datenblatt eingeben. Für den KTY81-110 habe ich das schon
gemacht.

Auf dem Register Resistor Calculation. Kann man die Widerstände
berechnen. Dies wurde mit den Formeln aus dem og. Datenblatt
realisiert.
Mit den Feldern Ra, Rb, Rc legt man seinen Temperaturbereich fest.(zB
-20, 25, 50)
 Dies ist wichtig da man durch die nichtlineare Änderung der KTY immer
 nur einen kleinen Teil der Kurve linear bekommt.
In das Feld Vs trägt man die gewünschte Betriebsspannung ein(zB 5,0).
In das Feld Is trägt man den Strom ein der bei Rb fliessen soll(zB
0,001).
Danach auf den Button Calculate drücken.
Der Ergebnisse werden in den Feldern Rl, Rs und Rp angezeigt.
Rl ist der Widerstand für eine Paralellschaltung mit dem KTY. Wenn mein
englisch mich nicht drügt. Steht im Datenblatt das man den auch für die
Serienschaltung nehmen kann.
Mit den Widerständen Rs und Rp kann man eine kombinierte Serien-
Paralellschaltung aufbauen. Dabei liegt Rs in Serie zu den paralellen
KTY und Rp. Sieht man im übrigen auch im og. Datenblatt.

Auf dem Register Malen kann man sich die Ergebnisse aus den
Berechnungen anschauen. Dazu muss man auf den Button Draw auf dieser
Seite drücken. Natürlich nachdem man was berechnet hat.
Die gelbe Linie ist die Kennlinie des KTY laut den Werten aus dem
Datenblatt.
Die rote Linie zeigt die liniearisierte Kennlinie bei Paralellschaltung
mit Rp.
Zu den Labels links neben dem Draw Button.
Das linke Label zeigt die Temperatur. Dast rechte den Widerstand.

Die grüne Linie zeigt die Liniearisierung mit Rs und Rp. Allerdings
habe ich hier nicht den Widerstand berechnet sondern die Messspannung.
Diese ist dann so skaliert, das sie in den Wertebereich der beiden
anderen Kurven passt.
Ungefähr so:
Uangezeigt= Rx * (Rb/ Umess) (Umess bei Rb)
Das heisst bei Rb=1000r kann man die zu erwarteten Spannungswerte
direkt ablesen. Muss diese dann aber durch 1000 teilen.
Die schwarzen Linien sollen nur helfen die Krümmung der Linien besser
zu sehen.
Für eine Serienschaltung habe ich keine Kurve berechnet.

Dabei sieht man schön, das man eigentlich nur einen geringen
Temperaturbereich ohne grosse Fehler und mit geringen Aufwand messen
kann.
Die Paralellschaltung dürfte zu aufwendig sein (Konstantstrom).
Am besten schneidet die Serien- Paralellschaltung ab. Die dürfte nicht

zu aufwendig sein.

gruss ralf

von Ralf W. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

sorry an alle die dieses Programm schon geladen haben. Mir ist leider
erst jetzt aufgefallen, das diese Version fehlerhaft ist.
Auf dem Register Resistor Calculation befinden sich UpDown Controls
die nicht richtig funktionieren. Das habe ich behoben.
Nochmals sorry.

Für die Diagramme habe ich NPlot verwendet. Erhältlich hier:
http://www.nplot.com/

Den Quellcode würde ich auch zur Verfügung stellen. Bin aber nicht
unbedingt stolz drauf.

gruss ralf

von Bernhard S. (bernhard)


Lesenswert?

Hallo Ralf,

mich interessieren die Dieagramme,

könntest Du uns vielleicht eine PDF zur Verfügung stellen?


Danke

Bernhard

von Ralf W. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Bernhard,

Eine Druckfunktion habe ich nicht programmiert. Sorry. Aber warum
benutzt Du das Programm nicht einfach. Da kannst Du mit den Werten
spielen und bekommst dann gleich ein Diagramm.

Ich könnte höchstens Screenshots machen. Oder vielleicht die
berechneten
Werte in eine Textdatei schreiben lassen (Tabellenkalkulation).
Müsstest halt nur sagen für welchen Werte und welche Kurve.
zB so:
   Ta -20  (Ra)
   Tb  25  (Rb)
   Tc  50  (Rc)
   Vs  5.0V
   Is  0.001mA  (bei Tb)
Ich hänge einfach mal Screens für og. Werte mit an.

gruss Ralf

von Bernhard S. (bernhard)


Lesenswert?

Hallo Ralf,

das Programm kann ich bei meinem betagten und altersschachen PC nur mit
Krampf installieren.

Könntest Du uns mal zwei Beispiele zur Verfügung stellen (0 bis 100°C)

1. Version mit einem Widerstand von +5V an den KTY
(lege mal bitte einen günstigen Widerstandswert fest z.B. 1k)

2. Version mit einer Konstantsromquelle von +5V an den KTY
(bitte den Strom selbst festlegen. z.B. 1mA)

Beide Varianten sollen von einem 10Bit ADC abgefragt werden.
(Referenzspannung 2,048V)

Danke

Bernhard

von Marco S (Gast)


Angehängte Dateien:

Lesenswert?

Auswirkung der Quantisierungsstufen des ADC auf die Temperaturmessung.

Gehen wir mal von folgender Voraussetzung aus: Wir nehmen einen
KTY10-6. Dieser wird durch eine Kennlinie Rt=R25*(1+a*dt+b*dt^2) und
dt=t-25 beschrieben. Nun gehen wir von 5V über einen 2100 Ohm
Widerstand auf den PTC, welcher andererseits gegen Masse angeschlossen
ist. Die Spannung am PTC führen wir dem 10-bit-ADC eines
Mikrocontrollers zu. Da diese Spannung im Temperaturbereich von -40 bis
+120 °C mehr als 3 V erreicht, lassen wir den ADC mit einer
Referenzspannung von ebenfalls 5 V laufen. Nun erhalten wir
Wertdiskrete Zahlen. Diese lassen sich mit obiger Kennlinenformel
zurück nach der gesuchten Temperatur rechnen. Im Anhang wird der
Unterschied zwischen angezeigter und reeller Temperatur dargestellt.
Die dargestellten Abweichungen ergeben sich lediglich aus der
Quantisierung des ADC, denn der Rest ist in der Simulation ideal
angenommen.

In der Realität würde z.B. der 10-bit-ADC durch das Rauschen keine
idealen 10-bit repräsentieren. Auch weiss man nicht, ob der
Vorwiderstand genau 2100 Ohm hat und der KTY sich streng an die
Kennlinenformel hält.

Wesentlich bessere Werte erhält man, indem man die Schaltung
dahingehend ändert, daß man sie mit einem Differenzverstärker
ausstattet. Dieser bringe den Spannungshub des PTC auf den vollen
Eingangsbereich des ADC.

Gruß
Marco

von Ralf W. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Bernhard,

zu Version1:
Diese Schaltungsvariante habe ich nicht programmiert, aber ich hab
mal so gerechnet.
 Rserie = 2917r (nächster Normwert 2940r)
 bei   0° ca. 1,085V  ca. 1,33mA
 bei  50° ca. 1,475V  ca. 1,21mA
 bei 100° ca. 1,829V  ca. 1,08mA
Der AD Wert ändert sich im Schnitt um 3 - 4 je K.

zu Version2:
Iconst = 1mA,  U stellt sich je nach Widerstand selbst ein.
 Rpar = 2917r (nächster Normwert 2940r)
 bei   0° ca. 0,64V
 bei  50° ca. 0,857V
 bei 100° ca. 1,074V
Der AD Wert ändert sich im Schnitt um 2 je K.
Das Diagramm dafür ist im Anhang(rote Kurve).

Was Marco uns sagen wollte ist man braucht es mit den Widerständen
nicht zu übertreiben, weil eh noch andere Fehler eine Rolle spielen.
In dem Datenblatt SC17 sieht man auch das dort für die Auswertung
immmer noch OPV's nachgeschaltet wurden. Ausserdem kann man durch
Abgleich der OPV's bei Ta und Tc noch geringere Fehler erhalten.
Kommt halt auf die Anwendung an wieviel Aufwand man treiben will oder
muss.


gruss ralf

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
Noch kein Account? Hier anmelden.