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
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!
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 ?
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
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.
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 ?
>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
@ 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
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).
@ 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ß.
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
da steht aber nicht warum gerade dieser wert las fest widerstand genutzt wird.
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
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 :-)
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
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.
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 :-)
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 :-)
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.