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.
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
@ 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
@ 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
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