PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Temperaturmessung mit KTY10



Roberto
18.03.2005, 14:33
Hallo Leute

Habe da einen KTY10 am Mega8
Mit Spannungsteiler:
Mit 2,2K von +5V auf den ADC und von dort dann mit dem KTY10 gegen Masse.

Brauche nur eine einfache Temperaturmessung für einen Ventilator...

Jetzt hatte ich bei der Schaltung lange das Problem, dass ich nur eine Anzeige von 1023 hatte.
Am testboard ging es komischerweise...
Bis ich draufkam, dass ich am Board den Pin ARef auf +5V hatte.
Komischerweis wird überrall aber nur beschrieben, dass AVCC auf +5V kommt und Aref nicht ??


Aber zu meiner eigentlichen Frage :

Jetzt habe ich beim ADC einen Wert von 500, bei einer Temp. von ca.22 Grad

Wie kann ich jetzt diese Werte in Grad Celsius umrechnen?
Von dem KTY10 habe ich die Daten, dass er:
bei
20Grad = 1926 Ohm
25 Grad = 2000 Ohm
35 Grad = 2151 Ohm
50 Grad = 2389 Ohm
100 Grad = 3273 Ohm
u.s.w.


Welche Formel könnte ich da jetzt verwenden, dass ich so einigermassen jetzt die Grade angezeigt bekomme ???

Bitte um Hilfe :-)

PicNick
18.03.2005, 15:09
scheinen je 5 Grad ca 74 Ohm zu sein.
Aufzeichnen, schauen, ob linear, dann faktor, wenn nicht, wohl am besten eine Tabelle, soviele Grade brauchst du ja nicht.
Sieht nach Arbeit aus

Manf
18.03.2005, 16:23
Die Widerstandsänderung des KTY 10 über der Temperatur ist etwas nichtlinear. Das kann gerade durch den Betrieb im Spannungsteiler ausgeglichen werden.
Setzt man die Werte von 20 25 35 50 und 100 Grad ein und bestimmt im Spannungsteiler die Spannungsänderung in mV pro °C, dann ergeben sich für die Hilfswiderstände 2,2k 3,9k 4,7k 6,8k 8,2k die angegebenen Kurven. Die blaue ist für 6,8k.
Manfred

Roberto
18.03.2005, 17:22
Hallo

Ja, aber wie bekomme ich das in eine Formel, dass das so einigermassen mit den Grad passt ?

Habe die 500 ja schonmal durch 22 geteilt.
Dann bekomme ich schonmal 22 Grad, aber bei 50 Grad habe ich nur ca. 23 Grad...

Wie bekomme ich das in eine Formel ?

Die Tabelle für den KTY10 hab eich ja....
Das obige waren ja nur ein paar Beispiele laut Tabelle..

Wie geschrieben...:
500 = ADC Wert bei ca. 22 Grad ist ca. 2000 Ohm beim KTY10

Da müsste man ja irgendwie ein Formel machen können ??

schmic20
18.03.2005, 20:13
Hallo,

also eine Formel wird wegen der Nicht-Linearität etwas ungenau. Besser ist es, wie von PicNick schon angedeutet, eine Meßreihe aufzunehmen (z.B. alle 10°C), diese Daten in einer Tabelle abzulegen, und dann im Programm ermitteln was der Sensor gerade liefert, in der Tabelle nachschauen welche 2 Werte am nächsten liegen und zwischen diesen beiden Werten linearisieren. So wird das in der Meßtechnik normalerweise gemacht.

Eine Möglichkeit für eine Formel will ich Dir trotzdem geben:
1. Du tust den Sensor in Eiswasser (das hat 0°C) und schaust welchen Messwert der ADC einliest. Den Wert nennen wir mal "Zero".
2. Du tust den Sensor in kochendes Wasser (Das hat auf Meereshöhe 100°C) und schaust nach welchen Messwert der ADC dann hat. Den Wert nennen wir "Kochend"
Die Formel für Grad Celsius lautet dann:
3. Dann liest Du in deinem Programm später den aktuellen Messwert ein. Den nennen wir mal "Aktual"

Daruas ergibt sich die Formel:

Aktual - Zero
-------------------- * 100 = Temperatur in Grad Celsius
Kochend - Zero

Zu beachten ist allerdings, dass das Ergebnis dann als Gleitpunktzahl vorliegt und wegen der Nicht-Linearität etwas ungenau ist. Wenn Du damit leben kannst?

Du musst ausserden darauf achten, dass der Strom durch den Sensor, den Sensor nicht erwärmt, weil das Dein Meßergebnis verfälscht. Das bedeutet, je größer der Vorwiderstand desto geringer ist der Strom durch den Sensor und umso kleiner ist der Temperaturfehler durch die Eigenerwärmung,
a b e r ,
desto kleiner ist die Spannungsänderung pro °C.
Du musst also einen Kompromiss finden mit den Du leben kannst.

Viel Spass noch beim probieren.

Viele Grüße
Michael

Manf
18.03.2005, 20:14
Die blaue Kurve geht waagerecht, das heist der Meßwert steigt um den gleichen Wert pro °C. Angeblich 6,5mV pro°C.

Bei einer Temperatur muß man dann noch den Wert selbst aufnehmen, um zu wissen welcher Grundwert dazukommt. Bei einem Hilfswiderstand im Spannungsteiler von 6,8kOhm an 5V wäre die Spnnung dort 1,104V.

Von diesem Wert aus 6,5mV pro °C.
Manfred

Roberto
18.03.2005, 20:54
mmmmhh..

@Michael

Wie sich der KtY10 in mit den Temperaturen verändert, habe ich eh in einer Tabelle (Siehe oben)
(0Grad = 1645Ohm 100 Grad= 3273 Ohm)
Bei 22 Grad habe ich mit dem Spannungsteiler ca. 500 am ADC also halbe Betriebsspannung als 2,5V am ADC Eingang.

Wie viel Volt ich jetzt am ADC habe, wenn der KTY 10 3273 Ohm hat und der Widerstand noch immer 2,2K Ohm hat... müsste man auch irgendwie ausrechnen können..
Kenne mich mit Formel aber nicht so aus ;-)

Aber irgendwie müsste man ja aus diesen Werten irgendwie eine Formel herrauskriegen, die ich im Mega8 eingeben kann.....?!
Ein paar Grad auf oder ab ist nicht so tragisch (keine Tabelen)
Brauche auch nur ca. die Werte von 20-60Grad)

Aber mir scheint das ist doch nicht so einfach, sonst könnte ja hier jemand eine Formel reinschreiben ;-)

Manf
18.03.2005, 21:09
In Worten ist es oben beschrieben, in einer Formel sieht es so aus:

T (U) = 20 °C + ((U - 1,104V) / 6,5mV ) °C

das gilt für den Spannungsteiler mit 6,8k

Allgemein gilt

T (U) = Tref + ( (U - Uref) / (dU/dT) )

Manfred

Roberto
18.03.2005, 21:29
Danke :-)

Aber irgendwie stehe ich noch immer im Wald.
(Habe da nix mit Formeln am Hut :-( )

Du rechnest da mit 6,8 K und vermutlich den 1926OHm vom KTY10 bei 20Grad und den 5V.

Wie kommt man da auf 1,104 V ?
(irgendwie komme ich da mit so Spannunsteiler nicht zu recht :-( )

Ich habe aber einen 2,2k mit dem KTY 10 (1926Ohm bei 20 Grad) und 5 V
Was bekomme ich da raus?

Sorry, wenn man mir alles vorkauen muss ;-)

Manf
18.03.2005, 21:40
Mit dem Widerstand Rv gegen 5V und dem Widerstand Rt gegen Masse ist die Spannung am Spannungsteiler:
U = 5V * Rt / (Rt + Rv)

2,334V für Rv = 2,2k

Ich habe es für die angegebenen Temperaturen und verschiedene Vorwiderstände in EXCEL eingegeben, um einen linearen Temperaturgang zu erhalten.

Du möchtest höchstwahrscheinlich eine maximale Empfindlichkeit erhalten und wählst deshalb den Vorwiderstand so groß wie den Widerstand des Thermofühlers.
Manfred

Roberto
18.03.2005, 22:40
Hallo Manfred

Irgendwie komme ich mit deiner Formel noch nicht zurecht .

Was ist da das 20 Grad und was das U?
Ist das U dann die 5V ?

Habe jetztmal die V/Grad errechnet.
Der KTY hat 1645 Ohm bei 0 Grad und 3273 Ohm bei 100 Grad.
Da müssten bei einem RV von 2,2 K eigentlich 16,28Ohm /Grad (Rt)
sein ?!
Das währen nach meiner Rechnung dann 0,036V/Grad ?!
Stimmt das ?

Manf
18.03.2005, 23:31
Die 16,28 Ohm / °C sind der Mittelwert der Widerstandsänderung zwischen 0°C und 100°C, unabhängig von Rv.

Die mittlere Spannungsänderung mit Rv=2,2k ist 8,5mV /°C.
(So wie im Bild oben. )
Manfred

Roberto
18.03.2005, 23:45
Ja, habs jetzt mit Exel probiert

Da habe ich bei 20 Grad :0,0097V/Grad
Bei 100 Grad: 0,0085V/Grad

Also müsste das so heissen:?!

T (U) = 20 °C + ((U - 2,334V) / 0,0085V ) °C

Ist U die 5V ?
Und wie ist das mit den 20 Grad ?
bei 20 Grad habe ich ja einen ADC-Wert von ca. 500 !

???

Roberto
19.03.2005, 00:46
Hallo Manfred.

Jetzt habe ich mir selber eine Formel Erfunden :-)

Und zwar :
Temp= ((ADC*0.004678)/0.0094)
Die 0.004678 sind die Volt / ADC-Wert
Die 0.0094 sind die 0.0094V/Grad bei ca. 20Grad

Jetzt habe ich aber schon wieder ein Problem.

Das mal rechnen mit 0.xxx geht irgendwie nicht. ?!

Zur Probe habe ich mal probiert

Dim Ad0 As Integer
Dim A As Integer

Ad0= GetAdc(0)
A = 0.5
Ad0 = Ad0*A

LCD Ad0

Warum kann ich da nicht mit 0.5 rechnen????
(kommt 0 raus)
Das gleiche mit *2 geht ? nur das Komma mag er nicht ?? :-(

19.03.2005, 05:16
Hallo

Irgendwie alles Sche...

Die Werte vom KTY10 passen auch nicht so recht.
Ohne Beschaltung hat der KTY 10 :1990 Ohm bei 22 Grad
In der Schaltung mit einem 2,2K nur 1200 Ohm :-(

Laut der Formel müssten das dann 1,76V am Adc sein.
Gemessen sind es aber dann 2,73 V
Also alles wieder anders unter Spannung :-(

Jetzt weis ich, warum da alle mit den Dallas Sensoren oder ähnlichen , herrummachen... (Für Temperatur)

Das Rechnen mit den Komma habe ich derzeit so gelöst, dass ich alles mal mit 10000 multipliziere und dann wieder durch 100000.

Nicht schön, aber vermutlich hat da Bascom Probleme mit den Kommas :-(



Dim Ad0 As Word
Dim A As Long

Ad0 = Getadc(0)
A = Ad0 * 10000
A = A * 49
A = A / 94
A = A / 10000


Locate 1 , 1
Lcd "Temp = " ; A

19.03.2005, 05:18
Hallo

Irgendwie alles Sche...

Die Werte vom KTY10 passen auch nicht so recht.
Ohne Beschaltung hat der KTY 10 :1990 Ohm bei 22 Grad
In der Schaltung mit einem 2,2K nur 1200 Ohm :-(

Laut der Formel müssten das dann 1,76V am Adc sein.
Gemessen sind es aber dann 2,73 V
Also alles wieder anders unter Spannung :-(

Jetzt weis ich, warum da alle mit den Dallas Sensoren oder ähnlichen , herrummachen... (Für Temperatur)

Das Rechnen mit den Komma habe ich derzeit so gelöst, dass ich alles mal mit 10000 multipliziere und dann wieder durch 10000.

Nicht schön, aber vermutlich hat da Bascom Probleme mit den Kommas :-(



Dim Ad0 As Word
Dim A As Long

Ad0 = Getadc(0)
A = Ad0 * 10000
A = A * 49
A = A / 94
A = A / 10000


Locate 1 , 1
Lcd "Temp = " ; A


Werde also die Temperaturen und Werte ausmessen müssen :-(

m.f.G. Roberto.... (der schon wieder nich eingeloggt ist)

Manf
19.03.2005, 08:07
Ja, habs jetzt mit Exel probiert

Da habe ich bei 20 Grad :0,0097V/Grad
Bei 100 Grad: 0,0085V/Grad

Also müsste das so heissen:?!

T (U) = 20 °C + ((U - 2,334V) / 0,0085V ) °C

Ist U die 5V ?
Und wie ist das mit den 20 Grad ?
bei 20 Grad habe ich ja einen ADC-Wert von ca. 500 !

???

Nein, U ist die gemessene Spannung am Spannungsteiler.

In der nächsten Versionen der Formel (um 1:46Uhr) feht der konstante Anteil der Temperatur zu erkennen am "plus" Zeichen.
Manfred

Roberto
20.03.2005, 00:09
Hallo

Habe mir das jetzt so gelöst :-)


Dim Ad0 As Word
Dim A As Long

Ad0 = Getadc(0)
A = Ad0 - 491
A = A * 63
A = A / 100
A = A + 22

LCD A


0,63 (63/100) ist der ADC-Wert pro Grad Celsius zwischen 22 und 90 Grad
491 ist der ADC-Wert bei 22 Grad

20.03.2005, 09:41
hallo,
mir hat die seite sehr geholfen...
ist für ein PIC beschrieben aber ich habe es ohne probleme für einen MEGA8 mit BASCOM hin bekommen.

20.03.2005, 09:42
sch...
den link vergessen....

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

Roberto
20.03.2005, 20:02
Danke für den Link.

Ganz nette Sachen :-)

Jetzt gehts ja eh mit dem KTY10 und fürs einschalten von einem Lüfter reicht es so. auch :-)

Wenn ich es nochmal machen würde, würde ich da einen LM35 nehmen.
Der macht 10mV pro Grad.
Hatte ich mal wo anders verwendet.
Conrad hatte den aber nicht lagernd ...

Danke für ur hilfen ;-)

18.04.2005, 09:52
mit den von dir genannten Zahlen ergibt sich die Formel:
Ohm= 17*Grad+1570

Meissner
18.04.2005, 14:56
Hallo zusammen,

das Problem eine Gleichung zu ermitteln kann auch auf etwas einfachere und vor allem professionelere Art und Weise gelöst werden.

1. Bekannte Werte in Exel eingeben
2. Einen lieninen Graph erstellen und die gewünschte Linie Markieren
3. Mit der rechten Maustaste auswählen: Trendlinie Hinzufügen
4. In Optionen Gleicheung in Diagram darstellen wählen
5. Im Typ: Regressionstyp auswählen (abhängig von der Linie)
6. OK Drucken

Nun wird im Diagramm die Trendlinie mit der entsprechender Formel dargestellt. Hier muss solange mit den Trendlinie gespielt werden, bis diese genau die gewünschte Linie entspricht. Alle die in Matheuntericht nicht gerade gefehlt haben kommen sicherlich damit zurecht.

Ist die Formel bekannt muss diese zuerst in Einzelschritte zerlegt werden. Bascom kann nur eine mathematische Funktion auf einmal ausführen!

Kleiner Tip am Rande: Versucht nur mit Ganzzahlen zu rechnen der Prozessor dankt euch dafür. Hierfür muss die Formel erneut angepasst werden. (Hier ist Bruchrechnung gefragt)

Mit dieser Verfahensweise könnt Ihr so ziemlich alle Kennlinien ermitteln und in mathematische Formeln umwandeln, und das lestige und Speicherraubende tabelarische Wertabspeicherung kann vermieden werden.

Je größer der Wertebereich der vorhandenen Linie und je kleicher der gesuchter Bereich der Werte ist, desto exakter kann die mathematische Formel für diesen Bereich ermittelt werden.

Gruß
Marius Meissner

19.04.2005, 15:15
hatte auch so ein problem, daß die messung nicht lienear waren. hab mir dann eine softwareanpassung gemacht.
hab einfach die temp werte ausgemessen, und alle 2,5 grad verwende ich einen anderen teiler, der mit die wert des ADC teilt.
das hat am besten funktioniert, zumal ich damit 2 aquarien temp-regle.
soll in meinem fall schon genau und zuverlässig laufen, sonst fischsuppe oder so.
ist etwas arbeit, aber es geht schon.
hab die werte einzeln rausgemessen.

schamp
13.06.2005, 18:08
Hallo zusammen !

Hab ähnliches Problem mit den "Temp. / Widerstands-Entsprechungen" und wollte deswegen nicht gleich einen neuen Thread erstellen.
Ist evtl. auch etwas unpassend hier im Bascom Unterforum, da ich in C progge. Sind jetzt aber eigentlich auch eher allgemeinere Fragen zu dem Thema.

Will auch Temperatur messen und zwar mit nem PT1000.
Hab mir jetzt überlegt, nachdem ich hier scho einige Threads durchstöbert hab, eine Art "Look-Up" Tabelle in 5°-Schritten (damits nicht ganz soviele Werte sind...) zu erstellen mit den Widerstandswerten des PT1000 aus dem Datenblatt.
Für Zwischenwerte wollt ich einfach linear Interpolieren (also quasi Geradengleichung aufstellen und einsetzen).
Das ganze, weil ich dem kleinen mC die krasse Formel von der PT1000-Kennlinie nicht aufzwingen will.

Aber es bleibt halt immer noch das Problem mit den Gleitkommazahlen.. wie könnt ich diese vermeiden ? Die Formel bzw. Gleichung wird beim Interpolieren auf jedenfall schonmal um einiges einfacher.

Und wie kann ich, wenn ich dann so eine Tabelle mit den Widerstandswerten hätte, vom gemessenen ADC-Wert (ist in meinem Fall von 0h bis 3FFh, 10 Bit) auf diese Widerstandswerte rückschließen ??
Damit ich dann die Temperaturen berechnen kann...

Denk ich da jetzt etwas zu kompliziert ??? :D

Gruß
schamp

menior
13.06.2005, 18:26
ich habe selber nen KTY10 , die werden nicht via formel berechnet, dafür nimmt man eine korrekturtabelle.

schamp
14.06.2005, 08:38
ahja.. :-k
Ein KTY10 wird genauso ne Kennlinie haben...

Hab halt jetzt bei mir zu gegebener Temperatur den jeweiligen Widerstandswert des PT1000