Hallo, ich messen mit einem PTC KTY 81-210 über einen Spannungsteiler Temperaturen oder eigentlich den Widerstand und rechne den dann in die Temperatur um. Dafür benutze ich eine Polynomische Gleichung 4ten Grades. Das ist im "normalen" Temperaturbereich auch sehr genau. Aber ab 100 Grad wird es ungenau. Ich wolle dann Interpolieren aber das scheint den Rahmen des Butterflys zu sprengen. Versucht habe ich das mit sechs (für jeden Sensor einen) 16 Bit Array[190] (-40 bis 150 °C) Wenn ich dann den Butterfly starte bekomme ich nur noch wirre Zeichen auf dem LCD. Wie mach ihr den sowas? Ich hätte halt gerne eine Abweichung <= 1°C mfg Flo
Hallo Florian, eine Abweichung von unter 1°C ist mit dem KTY81 nur durch Vergleichsmessung mit einem genauen Thermometer und einer Wertetabelle möglich. Für den KTY81-120 (den meinst du wohl, oder?) wird im Datenblatt für 100°C ein Messfehler von +/-5°C angegeben. Wenn du über den gesamten Messbereich eine hohe Genauigkeit brauchst, musst du einen anderen Sensor verwenden, z. B. AD590 oder Pt100 o. ä. Gruß, Alexander
Nee ich meine schon den KTY 81-210. 'http://www.ortodoxism.ro/datasheets/philips/KTY81-251.pdf Eine Wertetabelle habe ich erstellet und daraus eine Funktion mit der ich die Temperatur errechne. Aber da der Sensor ja nicht linear ist passt das nicht über den ganzen Bereich. Ich habe dann für jeden Sensor eine Wertetabelle über den ganzen Bereich in 1°C schritten erstellt. So müsste es ja auf jeden Fall passen. Nur weiß ich nicht wie ich das am besten verarbeite. Wo soll ich das ablegen? Das sind ja 200 16bit werte mal sechs Sensoren. Zwischen den Werten könnte man dann noch Interpolieren, so müsste es schon recht genau werden. Aber wie?
Florian wrote: > Wo soll ich das ablegen? Das sind ja 200 16bit werte mal sechs Sensoren. > Zwischen den Werten könnte man dann noch Interpolieren, so müsste es > schon recht genau werden. Konstantenfelder kann man meines Wissens bei den AVRs im Flash-Speicher ablegen - also einfach entsprechend großen µC nehmen.
@ Florian (Gast) >Dafür benutze ich eine Polynomische Gleichung 4ten Grades. Das ist im ?? Das ist ein Polynom 4. Grades. >Versucht habe ich das mit sechs (für jeden Sensor einen) 16 Bit >Array[190] (-40 bis 150 °C) Wenn das mal nicht Overkill ist. Das braucht 6x190x2=2280Byte. Wenn du es falsch machst landen die Im RAM, die der Butterfly wahrscheinlich gar nicht hat. >Wie mach ihr den sowas? >Ich hätte halt gerne eine Abweichung <= 1°C Dann nimm einen digitalen Temperatursensor. Mit KTY81 so eine Aufwand zu betreiben ist schlicht Unsinn. Nimm ein Polynom 2., 3. oder 4. Grades, mach damit ne 2, 3, oder 4. Kalbibrierung und gut. Dann kommst du vielleicht auf +/-2K Genauigkeit. MFG Falk
Das Polynom hast Du doch aus dem Datenblatt errechnet, oder? Ob der Sensor dann linear oder nichtlinear ist, sollte dann egal sein, da diese Funktion ja die ganze "Kurve" beschreibt (außer, Du hast nur Stützstellen im "unteren" Temperaturbereich genommen, dann natürlich nicht ...). Wenn Du nun ALLE Stützstellen zur Erzeugung einer Funktionsgleichung nimmst (also von -50 bis 150 Grad Celsius), kommt bestimmt eine recht unhandlebare Funktionsgleichung raus. Also erzeuge Dir für mehrere Temperaturbereiche anhand der Stützstellen quasi eigene Funktionen, die sind dann für den Meßbereich besser und (wahrscheinlich) auch nicht so hochgradig, also z.B. - wenn (ADCW <= 250) nimm Funktionsgleichung 1 (entspricht z.B. Meßbereich -50 bis -10 Grad Celsius) - wenn (ADCW > 250 && ADCW <= 500) nimm Funktionsgleichung 2 (entspricht Meßbereich -9 bis 30 Grad Celsius etc. (Genauigkeits)Probleme wird es aber im Übergangsbereich der Meßbereiche geben, z.B. also mal die eine und mal die andere Funktionsgleichung genommen wird. Warum also überhaupt Wertetabelle abspeichern? Laß das Käferchen doch ruhig Dein Polynom durchrechnen; die Wenigsten brauchen wirklich jeden Takt, "à la zeitkritisch".
in der einfachen Spannungsteiler-Schaltung hast du sowieso nur einen begrenzten A/D-Wandlerbereich. (-40 bis 150 °C) bekommst du in 1 Byte als Funktionswert (Offset z.B. -50, also Tabellenwerte zwischen -90 und 100), Lesen der Tabelle in eine int-Variable und wieder 50 addieren. Dann schaust du noch, welcher Wandlerbereich überhaupt genutzt wird in diesem Temperaturbereich, und nur für den brauchst du dann die Tabelle. Under/Overflow natürlich abfangen, macht also geschätzte 400Byte für die Tabelle.
1 | Florian Wrote: |
2 | |
3 | Hallo, ich messen mit einem PTC KTY 81-210 über einen Spannungsteiler |
4 | Temperaturen oder eigentlich den Widerstand und rechne den dann in die |
5 | Temperatur um. |
6 | |
7 | Dafür benutze ich eine Polynomische Gleichung 4ten Grades. |
Also meine Meinung nah ist die KTY einfachste und billigste Temperatursensor für Temperaturerfassung mittel einen µC mit ADC. Entwicklung solche Sensoren stammt aus ende 70. Jahren und damals war keine Rede von Mikrocontollern und Linearisierung durch Polynomische Gleichung X-ten Grades. Ich erinnere mich noch an ELV Temperaturmessmoduln auf Basis von ICL7106/7 als Digital-Millivoltmeter für Temperaturbereich von -10 bis 110°C , natürlich ohne µC. KTY81-110 ist so konzipiert dass in Kombination mit einem 2k7 oder 3k (6k für 81-210) Widerstand in weiteren Temperaturbereich von-10 bis 110°C einen nahezu lineares Temperatur-Spannung verlauf hat(siehe Anhang). Umständliche Umrechnung ADCwert-> Widerstandwert->Temperatur ist einfach falscher Einsatz. Das eine Linearisierung von KTY mit gut dimensioniertem Widerstand nicht notwendig ist, ist leider nicht bekannt oder mit dem Zeit verloren gegangen ist. KTY in Kombination mit dem Widerstand als Spannungsteiler ist linear, oder besser gesagt Linearisierungsfehler ist um Größeordnung kleiner als von Hersteller eingegebene Messgenauigkeit. MFG Branko
Hi, @Lutz: Ich habe das Polynom erst aus dem Datenblatt erstellt aber das war nicht sehr genau, habe dann die Werte selber gemessen. Damit ist es schon recht genau jetzt +-1°C im bereich von -20 bis 110 °C aber nie mehr als +-2,5°C abweichung. Das mit mehreren Formeln ist eine Idee. Da bin ich nicht drauf gekommen, werde ich mal testen. @crazy horse: Tut mir leid, aber das habe ich nicht verstanden. Danke an alle für die Antworten. Mfg Florian
Mein Spannungsteiler besteht ja auch aus 3K3 und KTY und damit habe ich dann die Wertetabelle gemessen und das Polynom erstellt.
@ Florian: Ähm .... Hab ich das jetzt richtig verstanden: Du hast die Widerstandswerte bei unterschiedlichen Temperaturen selbst gemessen, also z.B. bei 25 Grad 2008 Ohm, bei 26 Grad 2025 Ohm etc? Wenn dem so ist, bin ich seeeeehr erstaunt. Dann hättest Du neben einem gut kalbrierten Referenzthermometer auch ein gutes Multimeter für die Widerstandsmessung (na gut, der Offset wäre vermutlich konstant in dem kleinen Meßbereich) benötigt, was eher unwahrscheinlich ist. Mit welcher Methode hast Du denn das Polynom aus dem Datenblatt errechnet? Newtonsches Interpolationspolynom? In welchem Meßbereich und mit wieviel Stützstellen? Da würde ich mich schon sehr wundern, wenn Deine Meßreihen besser sind als die des Herstellers. Aber das würde heute bei mir schon gut reinpassen ... @ Branko: Was mich so ein bischen wundert: Die Widerstandsgerade ist ja nicht so traumhaft gerade in dem Temperaturbereich (zumindest nicht im Datenblatt). Nach Deiner Tabelle sind das aber nahezu perfekte Werte. Die Meßschaltung ist ja daneben zu sehen, das ist gut. Ist der Vorwiderstand von den Temperaturänderungen auch betroffen oder ist er außerhalb der Temperaturänderungen untergebracht?
Also meiner Meinung nach solltest du die Idee mit der Tabelle weiter führen. Deine Werte auf dem Display waren ohne den Code zu kennen warscheinlch in der Form falsch das der Controller sich Daten hinter dem Array geholt hat. Dies passiert wenn dein Messwert nicht mit der Tabelle abgeglichen wird. -Tabelle erstellen in Excel mit der im Datenblatt gegebenen Funktion -Umrechnen bei welchem Digit welche Temperatur gemessen wird -den Relevanten Bereich herausfiltern ( z.B. µC kann von 0-1024 Digits relevant ist aber nur der Bereich von 280-780 dann mußt du von deinem Messwert 500 abziehen da das Array ja bei 0 beginnt) -das array als const deklarieren und mit den Werten aus der Excel tabelle füllen. Vorteil: extrem schnell, sehr genau, und einfach einfach Nachteil: Bischen Speicher im ROM verloren
@Lutz Offensichtlich has du mich nicht verstanden. Ich habe von linearen Temperatur-Spannung verlauf geredet, nicht über Temperatur-Widerstand, diese bleibt leicht Parabolisch wie in Datenblatt steht. Widerstand-Spannung verlauf eines Spannungsteiler ist Hyperbolisch(Uadc=Uavcc*(Rt/Rt+R) und benimm sich wie Umkehrfunktion für Parabolisches Kennlinie-Verlauf eines KTY: T-R(KTY, Parabolisch) * R-U(Spannungsteiler R/Rkty, Hyperbolisch) =T-U(nahezu Linear). Das ist kein Zufall sonder ist die KTY-Kennlinie so ausgewählt das in Kombination mit einem Widerstand von 2k4 bis 3k einen linearen Temperatur-Spannung verlauf hat und dadurch war möglich mit einfachem Voltmeter(damals ICL7106/07) Temperatur zu messen ohne etwas "per Software" linearisieren zu müssen. Vor mehr als 20 Jahren habe ich selbst so ein Thermometer gebastelt (ELV Projekt). Diese Tatsache ist leider mit dem Zeit verlorengegangen.
1 | Andi Wrote: |
2 | Also meiner Meinung nach solltest du die Idee mit der Tabelle weiter |
3 | führen. |
Das ist natürlich Unsinn(sieche Erklärung oben).
@ Branko Golubovic (branko)
>Das ist natürlich Unsinn(sieche Erklärung oben).
Meine Rede. Was man früher (tm) mit einem einfachen Spannungsteiler
gemacht hat und eine praktisch vollkommen ausreichende Genauigkeit
ergab, muss heute mit SuperHightec perfektioniert werden, koste es was
es wolle. ;-)
MfG
Falk
@ Branko: >Offensichtlich has du mich nicht verstanden. Nicht so ganz, aber ich war auf dem richtigen Weg. >Widerstand-Spannung verlauf eines Spannungsteiler ist >Hyperbolisch(Uadc=Uavcc*(Rt/Rt+R) und benimm sich wie Umkehrfunktion für >Parabolisches Kennlinie-Verlauf eines KTY: >T-R(KTY, Parabolisch) * R-U(Spannungsteiler R/Rkty, Hyperbolisch) >=T-U(nahezu Linear). Jetzt glaube ich zu verstehen, wie Du es gemeint hast: Die "Linearitätsfehler" von Widerstand und KTY sind entgegengesetzt sowie gleich groß und heben sich daher gegenseitig auf. Deswegen fragte ich auch >Ist der Vorwiderstand von den Temperaturänderungen auch betroffen oder ist >er außerhalb der Temperaturänderungen untergebracht? Wenn ich das Prinzip nun richtig vertanden habe, sehe ich aber den Nachteil, das der Widerstand die gleiche Temperatur wie der KTY haben muß; er muß also mit ins Meßfeld. Das kann, abhängig von der konkreten Anwendung, ein Nachteil sein. So braucht man dann 3 Adern statt 2 zum Meßfeld (AVCC, ADC-IN und AGND). Wenn das egal ist: Super Meßprinzip!
Servus, also ich hab den 220er genommen mit den 3,3k Vorwiderstand. Leider passt der Wert überhaupt nicht mit den Werten im Datenblatt überein. klugscheissmodus an Warum weils keine konstanten 1mA über den Sensor laufen. Also ist deine Spannung am Sensor nicht nur von der Temp, sondern auch von dem Strom abhängig. Ich werd am WE dann eine Konstantstromquelle dazusetzten, damit ich die Werte aus dem Datenblatt nehmen kann. klugscheissmodus aus Bin mal gespannt obs dann stimmt das ganze. Wenn ich drandenk schreib ich mal nochwas dazu. Wenns so ist kann ich dir ja mal den Schaltplan von mir geben. Nur so als Tipp für die Berechnung. Du kannst ja ausrechnen wie "Fein" der AD Wandler arbeitet. Ich glaub ein Schritt war so um die 0.005V dann kannst du dir ja ausrechnen wieviel Spannung bei -55 Grad am Sensor anliegt bzw. 0 Grad dann kannst du ja einfach drauf losrechnen. Ich glaub...hab die unterlagen net da...das so um die 360 Werte vom AD Wandler sind. Umgerechnet auf die 205 Grad bereich kannst dirs Rausrechnen welche Temp du hast. MfG Matthias
Lutz Wrote:
1 | Wenn ich das Prinzip nun richtig vertanden habe, sehe ich aber den |
2 | Nachteil, das der Widerstand die gleiche Temperatur wie der KTY haben |
3 | muß; |
Warum ? Das ist ein Fixwiderstand! Fixwiderstand soll einen Fixwert haben wie i Excel Tabelle steht. Das hat mit Temperatur nicht zu tun sofern Widerstand ein kleiner Temperatur-Koeffizient hat. Also sein Platz ist auf Platine. MfG Branko
In der Tat, ich hab mal eine eigene Exceltabelle mit U_ADC = f(R) mit R aus dem Datenblatt des KTY erstellt: Von 0 bis 100 Grad super linear, hätte ich nie gedacht. Das ganze noch irgendwie kalbrieren (z.B. per Software mit Offset für ADCW) und gut is. Das muß ich mir noch mal in Ruhe zu Gemüte führen, da gibt´s bestimmt was pfiffiges. Daß das ganze so einfach ist, praktisch ohne Rechenleistung ... . >Das eine Linearisierung von KTY mit gut dimensioniertem Widerstand nicht >notwendig ist, ist leider nicht bekannt oder mit dem Zeit verloren >gegangen ist. Wirklich schade. Heute versucht man tatsächlich mehr Lösungen mit Software als mit elektrotechnischem Wissen zu finden, und das mit allen sich daraus ergebenden Konsequenzen.
@Lutz Vielleicht hilft dir das weiter: Beitrag "Re: KTY81 am mega128 berechnen" Besser daraus ist das die Messung unabhängig von Versorgungsspannung ist. MfG Branko
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.