Forum: Mikrocontroller und Digitale Elektronik Temperaturmessung + KTY + Dimensionierung


von Hansel (Gast)


Lesenswert?

Hallo,
ich möchte an meiner Heizungsanlage Temperaturen (Vorlauf, Rücklauf, 
Kessel, Brauchwasser) messen.
Dazu möchte ich KTY-Sensoren nehmen, die ich mit Wärmeleitpaste in 
Kupferröhrchen einsetze. Mein Controller ist ein AVR Mega 32. Wie 
dimensioniere ich KTY (1000 oder 2000 Ohm ?) und Widerstände ?
Schonmal danke

von Sonic (Gast)


Lesenswert?

Ich würde über einen 1000-Ohm-KTY einen Konstantstrom von 1mA schicken 
und per Vierleiterschaltung das Ganze auf den ATmega32 schicken. Am µC 
eine Verstärkung x10 und differentielle Messung einstellen, Interne 
Referenz (2.56V), dann sollte das gehen. Hab' die Kennlinie nicht im 
Kopf, aber evtl. muss die Referenzspannung noch angepasst werden, um den 
gewünschten Messbereich mit max. Auflösung zu kriegen. Dann noch 
Mittelwertbildung mit Double oder Float, dann wird's recht genau!

von Branko Golubovic (Gast)


Lesenswert?


von Hansel (Gast)


Lesenswert?

Schonmal vielen Dank für Eure Hilfe.
Wie stelle ich denn die Verstärkung und differentielle Messung ein, und 
wie realisiere ich das mit der Konstantstromquelle ?

von Stefan (Gast)


Lesenswert?

Hallo,

ich habe meine Heizungsregelung (Heizungsmischer, Solarpumpe, 
Speicher-Umwälzpumpe, etc.) komplett selber gebaut. Ich würde Dir raten 
keine PTC, sondern NTC Fühler zu nehmen, da die Widerstandsänderung bei 
PTC Fühlern pro Grad recht klein ist und so für solche Zwecke eine nur 
unzureichende Auflösung hinbekommst. Ich habe für jeweils 8 NTC Fühler 
einen Tiny26 benutzt, welche vom Hauptprozessor direkt in Grad abgefragt 
werden können. Aussenbeschaltung ist lediglich ein Widerstand pro 
Fühler.

Gruß
Stefan

von Sonic (Gast)


Lesenswert?

Als Konstantstromquelle kannst du eine Stromspiegelschaltung (CA3046 => 
Transistorarray) mit Spannungsregler als Konstantspannungsversorgung 
benutzen. Wie der ADC eingestellt wird ist im jeweiligen Datenblatt 
recht gut beschrieben.
Ich habe wie Stefan einen pt100 (NTC) für eine Heizungsregelung an einer 
Nebelmaschine benutzt. NTCs haben auch den Vorteil, dass sie bei 
Leitungsbruch in die richtige Richtung (max. Temperatur) ausfallen, und 
so die Regelung die Heizung abstellt.

von Hansel (Gast)


Lesenswert?

Hallo,
aber ich könnte doch auch an meinem AVR32 die 8 NTC + Widerstände direkt 
anschliessen, oder muss ich einen anderen Prozessor (Tiny o.ä.) 
zusätzlich verwenden ? Wie dimensioniere ich den Widerstand ?

von Branko Golubovic (Gast)


Lesenswert?

>aber ich könnte doch auch an meinem AVR32 die 8 NTC + Widerstände direkt
>anschliessen, oder muss ich einen anderen Prozessor (Tiny o.ä.)

Ja kanns du mit ATmega32 und 8 stück KTY81,und genauso wie du am Anfang 
geschrieben hast.

      AVCC
       |
       |
       R
       R   R=2,7K 1% für KTY81-110(1000 Ohm)
       R   oder R=5,4K 1% für KTY-210(2000 ohm)
       |
ADCIN---
       |
       |
       K
       T
       Y
       8
       1
       |
     AGND


KTY81 ist so Konstruiert dass mit einam Widerstand von 2,7Kohm eine
lineare Temperatur-Spannung Kennlinie gibt, nicht aber mit Eine 
Strommquelle.

KTY81-110
       AVCC( mV )  R(Ohm)  Vref=    NULLTEMP=
  5000  2700    3,975V  298

Temperatur
(°C)  Rt(Ohm)  I(mA)  Uadc( V )  ADCW  ADCtemp   Messfehler
                                            (x0,5°C)  (°C)
-30  623,5  1,504  0,938  241  -57  1,5
-20  683,5  1,478  1,010  260  -38  1
-10  747,5  1,450  1,084  279  -19  0,5
0  815  1,422  1,159  298  0  0
10  886  1,394  1,235  318  20  0
20  961  1,366  1,312  338  40  0
30  1040  1,337  1,390  358  60  0
40  1122,5  1,308  1,468  378  80  0
50  1208,5  1,279  1,546  398  100  0
60  1298,5  1,250  1,624  418  120  0
70  1392,5  1,222  1,701  438  140  0
80  1490  1,193  1,778  458  160  0
90  1591  1,165  1,854  477  179  -0,5
100  1696  1,137  1,929  496  198  -1
110  1803,5  1,110  2,002  515  217  -1,5
120  1908,5  1,085  2,071  533  235  -2,5
130  2004  1,063  2,130  548  250  -5

Wenn Aref geschickt gewält ist(in dem Fall 3,975V),entspricht 
Temperaturänderung von +-0,5°C, enderung von +-1LSB bei ADCW.

Code Beispiel:
#define NULLTEMPERATUR 298

char adc_in;
unsigned int Temp;
.
.
signed int read_KTY81(char adc_in)
{
signed int temperatur;
temperatur=read_adc(adc_in);
temperatur-=NULLTEMPERATUR;
return temperatur;
}
.
.
 Temp=read_KTY81(adc-in);

 Printf("Temperatur1=%d,%-d\xf8\x43";Temp/2,abs((Temp%2)*5));
                             ^^^^
       //Temperaturanzeige mi °C

Temperaturmessung ist in Bereich von -20°C bis 100°C Linear, und
die Auflösung ist 0,5°C.

Konstantstromquelle,Verstärkung x10 und differentielle Messung ist 
Quatsch.
Dass brauch du nicht,ganz in gegenteil.Mit Konstantstromquelle bekommst 
du
nichleneare Temperatur-Spannung Kennlinie weil Temperatur-Widerstand 
verlauf von KTY81 nicht linear ist.Das heist, Messwerte muss du über 
Software linearisiern.

Rkty = R25 * (1 + (dT * a) + (dT2 * b))
a=0,0788K^-1
b=0,000019K^-2

Auserdem ist eine Konstantstromquelle viel mehr temperaturabhängig als 
ein
Metall-Schicht Widerstand.

Grüße Branko






von Thorsten (Gast)


Angehängte Dateien:

Lesenswert?

@ Sonic
wie meinst Du das, die NTCs würden bei Leitungsbruch in die richtige 
Richtung ausfallen? NTC haben ja einen negativen 
Temperaturkoeffizienten, d.h. mehr Temperatur -> weniger Widerstand. Ein 
open gibt dann die minimale, nicht die maximale Temperatur zurück. Von 
daher würde ich einen PTC vorziehen, oder sehe ich das falsch?
@ Hansel
Wenn Deine Anforderungen an die Auflösung nicht so gewaltig sind, 
könntest Du meine Schaltung hier übernehmen (siehe Bild). Der KTY wird 
über einen Spannungsteiler gemessen, die Speisung erfolgt über einen I/O 
Pin, dessen Ausgangsspannung gleichzeitig als Referenz dient. Dadurch 
wird eventuelle Drift der Referenz ausgeglichen, ausserdem ist der 
Bauteileaufwand sehr gering und Du kannst die Sensorspeisung vom AVR 
ein- und ausschalten lassen (prima für batteriebetriebene Geräte, um den 
Stromverbrauch in Grenzen zu halten). Dafür kannst Du halt nicht die 
gesamten 10bit des ADC ausnutzen. Eventuell könnte man die Referenz noch 
über einen Spannungsteiler anschliessen, um die Auflösung zu verbessern.

Gruss,
Thorsten

von Sonic (Gast)


Lesenswert?

Hast recht, Thorsten, der pt100 ist'n PTC! Sind zwar nicht ganz billig, 
aber Industrienorm und in allen möglichen Bauformen zu kriegen. Gibt's 
auch als pt1000 (1000 Ohm bei 0°C).

von Brummsummsel (Gast)


Lesenswert?

@ Hansel

Was hälst Du vom Einsatz eines (oder mehrerer) LM75 ???
Messwert stimmt bis auf +-1Grad genau, ohne rumzubasteln. Linearisierung 
ist nicht nötig. Ausserdem ist der ATmega32 mit I2C ausgerüstet. Was 
will man mehr....billig ist er auch noch.

Gruß.

von Amir B. (sticky)


Lesenswert?

Branko Golubovic wrote:
>>aber ich könnte doch auch an meinem AVR32 die 8 NTC + Widerstände direkt
>>anschliessen, oder muss ich einen anderen Prozessor (Tiny o.ä.)
>
> Ja kanns du mit ATmega32 und 8 stück KTY81,und genauso wie du am Anfang
> geschrieben hast.
>
>       AVCC
>        |
>        |
>        R
>        R   R=2,7K 1% für KTY81-110(1000 Ohm)
>        R   oder R=5,4K 1% für KTY-210(2000 ohm)
>        |
> ADCIN---
>        |
>        |
>        K
>        T
>        Y
>        8
>        1
>        |
>      AGND
>

kurze frage dazu!

wie kommt man darauf bei einem kty81-210 einen doppelt so großen 
widerstand zu nehmen?

denn im tutorial steht folgendes.

>Die Größe des zweiten Widerstandes im Spannungsteiler richtet sich nach
>dem Wertebereich, in dem der Sensor seinen Wert ändert. Als Daumenregel
>kann man sagen, dass der Widerstand so gross sein sollte wie der
>Widerstand des Sensors in der Mitte des Messbereichs.

>Beispiel: Wenn ein Temperatursensor seinen Widerstand von 0..100 Grad von
>2kΩ auf 5kΩ ändert, sollte der zweite Widerstand eine Grösse von etwa
>(2+5)/2 = 3,5kΩ haben.

der wertebereich des kty-81 210 geht von min: 980 bis max: 4400
also laut tut:

(980+4400)/2=2,7kohm

schöne grüße

von Gerhard. (Gast)


Lesenswert?

Hier ist eine gute Link zum KTY Thema.

http://www.sprut.de/electronic/temeratur/temp.htm

von Amir B. (sticky)


Lesenswert?

da steht aber nicht warum gerade dieser wert las fest widerstand genutzt 
wird.

von Gerhard. (Gast)


Lesenswert?

Hallo Amir,

mit dem KTY(81-120) laesst sich Dein Messproblem leicht loesen.

Die Hauptsache ist, dass Dein ADC eine ratiometrische Messung ausfuehrt 
indem VREF=VDD konfiguriert wird. Es ist also falsch eine stabilisierte 
VREF Spannung zu verwenden.

Mit einem 2.7K Widerstand linearisiert den Spannungsverlauf. Der 
Rechenaufwand wird relative klein wenn man wie in dem unten stehenden 
Artikel beschrieben aus jeweils 64 ADC Messungen den Mittelwert bildet 
und dann mit 101 dividiert. Das ergibt nach Abzug von 150 direkt Grad 
Celsius Eichung. Wie man Anhand einer Rechnung mit EXCEL sehr schoen 
sehen kann ist die Liniearitaet erstaunlich gut. Kleine Offest Fehler 
lassen sich mit dem 150 Offset leicht korrigieren.

Hier ist das Anhand eines Thermometer Projektes genau beschrieben :

http://www.sprut.de/electronic/pic/projekte/thermo/thermo.htm

mfg,
Gerhard

von Roger P. (hpa)


Lesenswert?

Hallo zusammen,

will gerade was ähnliches machen versteh aber nicht wie es zu dem Offset 
von 150 bzw. der Auflösung von 7,712 mV/°C kommt. Kann mir das mal 
jemand erklären? Achja, ich benutze den KTY81-210, vielleicht ist es ja 
bei dem anders?

Danke schon mal :-)

von Gerhard. (Gast)


Lesenswert?

Hallo Roger,

Hier ein Auszug von der Link:

...Temperatur-Messung
Als Sensor sollte ein billiger PTC benutzt werden. Wie man den (im 
Bereich von -20°C bis +120°C) als quasi-linearen Temperatursensor 
benutzen kann,  ist schon an anderer Stelle beschrieben worden. Der PTC 
liefert in dieser Schaltung eine Spannung, mit einem 
Temperaturkoeffizient von 7,7125 mV/K. Bei einem Temperaturanstieg um 1 
Grad steigt die vom PTC abgegebene Spannung also um 7,7125 mV.
Der ADC des PIC mißt (ohne besondere Maßnahmen) externe Spannungen mit 
einer Auflösung von 4,883 mV/digit. Eine Änderung der Eingangsspannung 
um 4,883 mV verändert den vom ADC ausgegebenen Zahlenwert also um 1.

Aus diesen beiden Zahlen ergibt sich, dass die Änderung des 
ADC-Ergebnisses um 1 einer Temperaturveränderung um 0,633 Grad 
entspricht. Deshalb ist es nötig, das ADC-Ergebnis im PIC durch den 
Korrekturwert 1,579 zu dividieren (oder mit 0,633 zu multiplizieren), um 
ein Ergebnis zu erhalten, das sich bei einer Temperaturveränderung um 1 
Grad um den Wert 1 ändert. Diese Zahl kann aber noch nicht direkt 
angezeigt werden, da sie um ca. 150 über der Temperatur in °C liegt 
(Offset).
Wenn man aber noch diese 150 subtraiert, und die Zahl aus dem binären 
Zahlensystem in eine Dezimalzahl umrechnet, hat man eine Anzeige in °C.

Der Linearitätsfehler des PTC liegt im interessierenden 
Temperaturbereich (0°C..+100°C) bei unter 1 Grad, allerdings wird der 
ADC an der Grenze seiner Auflösung betrieben. Deshalb sollte der ADC die 
Sensorspannung mehrfach messen, und dann aus diesen Messungen der 
Durchschnitt gebildet werden, um Rauschen zu unterdrücken.

Schwankungen der Beteriebsspannung zwischen 4,0V und 6,0V wirken sich 
praktisch nicht auf die Meßgenauigkeit aus, da PTC und ADC aus der 
gleichen Spannung versorgt werden...

Obwohl die Beschreibung die Hauptpunkte beschreibt, kommt warscheinlich 
das Verstehen erst wenn Du Dich mit der Materierie einmal praktisch 
befasst.

Als Anhaltspunkt hast Du ja die Baubeschreibung in der Link. Wenn Du Dir 
das erst mal baust und dann mit dem Programm experimentierst, dann kommt 
das richtige Verstehen automatisch weil praktische Befassung etwas total 
anderes ist, wie einfach durchlesen.

Es ist auch wichtig sich mit den Datenblaettern der Bauteile vertraut zu 
machen.

Auch ist es wichtig dass Du Dich mit der Materie des uC Programmieren 
und Verstaendnis seiner Peripherien erst einmal vertraut machst. Bei 
Deinem Projekt ist es es wichtig dass Du versteht wie der AD-Converter 
des uC funktioniert bzw. zu gebrauchen ist.

Vergiss nicht Dich durch die entsprechenden Tutorials (hier im Forum) 
durch zu arbeiten. Nur Mut! Es wird schon gehen. Es geht vielen so dass 
man am Anfang nicht das richtige Bild sieht. Die Hauptsache ist, einmal 
anzufangen. Alles andere ergibt sich dann mit der Zeit. Jeder macht das 
mehr oder weniger am Anfang durch.


mfg,
Gerhard

von Karl H. (kbuchegg)


Lesenswert?

Roger Petri wrote:

> will gerade was ähnliches machen versteh aber nicht wie es zu dem Offset
> von 150 bzw. der Auflösung von 7,712 mV/°C kommt. Kann mir das mal
> jemand erklären? Achja, ich benutze den KTY81-210, vielleicht ist es ja
> bei dem anders?

Das hier

Rkty = R25 * (1 + (dT * a) + (dT2 * b))

ist die Gleichung, wie sich der Widerstand des PTC abhängig von der 
Temperatur verändert. Die stammt aus dem Datenblatt des PTC (und ist auf 
einer der von dir verlinkten Seite zu finden)

Jetzt nimmst du deine Eingangswiderstandsbeschaltung her, löst alle 
Serien und Parallel Schaltungen auf und erhälts damit eine Gleichung, 
wie sich der Gesamtwiderstand deiner Schaltung in Abhängigkeit der 
Temperatur verändert. Daraus kannst du errechnen welche Spannung sich 
ergeben wird.

Dann schnapst du dir ein Excel und machst dir mal eine Tabelle wo du die 
Temperatur in eine Spannung umrechnung lässt, und lässt das mal für 
Temperaturen von -20 bis +100 Grad durchrechnen.

Und dann wirst du die oben angegebenen Werte wiederfinden.

von Roger P. (hpa)


Lesenswert?

Hallo Karl-Heinz und Gerhard,

Danke für Eure Antworten. Es ist nicht so dass ich bisher nur die 
Theorie gepaukt habe. Ich hab die Schaltung hier schon auf ein 
Steckbrett aufgebaut und messe momentan auch schon die Spannung die am 
NTC abfällt und lasse sie mir im Terminal anzeigen. Funktioniert soweit 
auch Bestens :-). Da ich ja ber nicht die Spannung bzw. die Digits 
angezeigt haben möchte, suche ich nach den Umrechnungsformeln um auf die 
Temperatur zu kommen. Hab mich jetzt schon mal ein bisschen weiter 
eingelesen und festgestellt, dass es den KTY81 auch in einer Version 
gibt die bei 25°C 1000 Ohm hat. Meiner hat 2000 Ohm was dann natürlich 
auch zu anderen Spannungsabfällen führt. Ich versuch mal detailierter zu 
beschreiben was ich machen will.

Im 1. Schritt möchte ich einen Aussenthermometer bauen der einen 
Temperaturbereich von -30°C bis +50°C messen kann. Zur Verfügung habe 
ich dafür einen Atmega8 bzw. Atmega8535 (für später) und einen 
KTY81-210.

Momentan habe ich einen Poti (eingsetellt auf 2k7) in reihe zum KTY81 an 
VTG und Ground vom STK500 angeschlossen. Eine Leitung zwisdhen NTC und 
Widerstand geht zum A/D - Wandler vom Atmega8.

Jetzt hab ich aus dem Datenblatt des KTY die Wiederstandswerte bei -30°C 
und +50°C abgelesen und mir die Sapnnungsabfälle ausgerechnet. Das sind

bei -30°C -> 1,56V und bei
+50°C -> 2,333 V

d.h. mein Messbereich liegt bei DeltaU = (2,33V - 1,56V) = 0,77V

So, jetzt hab ich mir gedacht ich kann ja noch den guten alten 3 Satz 
und da ja alles nahezu linear ist, rechne ich mir mal aus wie die 
Spannungsdifferenz für 1°C ist. D.h. also 0,77V/80°C = 9,625mV/°C

Ich hab das gerade nochmal quergecheckt mit den Werten des KTY81-110 und 
das sieht gar nicht so schlecht aus. Jetzt bräuchte ich nur ein paar 
Tipps wie ich das im Programmcode so umsetze dass nicht mehr 415 Digit, 
sondern 13,5°C oder gar negative Werte im Terminalfenster erscheinen 
:-).

Bisher hab ich einfach nur die Beispielprogramme vom Tutorial Thema ADC 
und Festkommaarithmetik kopiert und ein bisschen mit den Werten 
gespielt. Eigentlich will ich in Assembler programmieren aber die 
Umrechnungen mit Division und Zweierkomplement usw. schrecken mich ein 
bisschen ab. Hab schon mal ein bisschen programmiert bin aber kein 
Experte.

Im zweiten Schritt soll die Temperatur dann auf einem 7-Segment LED 
Display angezeigt werden und ganz viel später soll es eine Wetterstation 
mit mehreren Sensoren und Funkübertragung werden ;-). Aber eins nach dem 
anderen ...

Jetzt wäre ich erstmal danbar wenn mir jemand hilft die Temperatur im 
Terminalfenster zu sehen :-)

von Karl H. (kbuchegg)


Lesenswert?

Roger Petri wrote:

> So, jetzt hab ich mir gedacht ich kann ja noch den guten alten 3 Satz
> und da ja alles nahezu linear ist, rechne ich mir mal aus wie die
> Spannungsdifferenz für 1°C ist. D.h. also 0,77V/80°C = 9,625mV/°C


Wow. Hast dir aber jetzt wirklich Mühe gegeben.
Ich hätt das ganz anders gemacht :-)

Unter der Voraussetzung, dass der Temperatur/Widerstandsverlauf 
hinreichend linear ist:

Ich hätt mir mein Zimmerthermometer genommen, abgelesen und nachgesehen, 
welchen ADC Wert ich kriege.
Zb.   23 Grad, ADC: 856
Dann hätt ich ein Glas Eiswasser genommen, den PTC da reingehängt (in 
einem Plastiksackerl, will ja keinen Kurzen) und gewartet, bis der PTC 
sich abgekühlt hat
zb.   0 Grad, ADC: 128

Tja. und damit hab ich 2 Punkte meiner Geraden:

     Temp = k * ADC + d

muss nur noch k und d bestimmen

     23 = k * 856 + d      ( der ADC sagt zu 23 Grad 856)
      0 = k * 128 + d      ( der ADC sagt zu 0 Grad 128)

aus der letzten Gleichung ergibt sich sofort d = -128 * k
in die erste GLeichung eingesetzt

     23 = k  856 - k  128
     23 = 728 * k

oder
     k = 23 / 728 = 0.03159

mit d = -128 * k ->  d = -4.0439

Wenn du also einen ADC Wert hast, errechnet sich die Temperatur zu


     Temp = 0.03159 * ADC - 4.0439

> Bisher hab ich einfach nur die Beispielprogramme vom Tutorial Thema ADC
> und Festkommaarithmetik kopiert

Wäre eine Möglichkeit, alle Wert zb. mal Tausen zu nehmen und dafür bei 
der Ausgabe wieder ein Komma an der richtigen Stelle einfügen

     Temp = 31 * ADC - 4044

> gespielt. Eigentlich will ich in Assembler programmieren aber die
> Umrechnungen mit Division

Division brauchst keine. Nur Multiplikation und Subtraktion. Müsste man 
bei deiner realen Umrechnung mal klären, ob sich das mit dem 
Wertebereich (wenn man alles mal 1000 nimmt) noch ausgeht.

> und Zweierkomplement usw. schrecken mich ein
> bisschen ab.

Aber ganz ehrlich.
Ich würd sowas in C schreiben. Mich schreckt nämlich die Rechnerei in 
Assmebler auch immer ab :-)

von Axel (Gast)


Lesenswert?

Hallo Leute,

falls es noch hilft: im Anhang ist eine gerechnete Schaltung u.a. für 1 
Kelvin pro LSB mit minimaler Beschaltung und Arithmetik.

Viele Grüße

Axel

von Axel (Gast)


Angehängte Dateien:

Lesenswert?

hier jetzt hoffentlich der Anhang schwitz...

von Tom K. (xpac)


Angehängte Dateien:

Lesenswert?

UUURALT.......;)

hab mich aber auch gerad damit beschäftigt.

Die Lösung von Sprut.de mit dem 2700 Ohm ist doch sehr speziell.

Natürlich....die Geradengleichung ......wie oben schon beschrieben.
Damit geht es wunderbar.

Hab mal ein Excel-sheet zusammengebastelt, damit kann man etwas 
rumspielen.

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.