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
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
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
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?
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
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
@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
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
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
Hallo Ralf, mich interessieren die Dieagramme, könntest Du uns vielleicht eine PDF zur Verfügung stellen? Danke Bernhard
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.