Forum: Mikrocontroller und Digitale Elektronik KTY Temperatursensor mit einem I2C Display auslesen.


von K. F. (einsteiger94)


Lesenswert?

Liebe Nutzer,

ich habe einen Arduino Uno mit einem I2C Display und einem KTY Sensor.
Nun möchte ich den Messwert über das Display auslesen, leider finde ich 
nichts konkretes im Internet.
Mein Display ohne Sensor kann ich programmieren.

Wie sieht der Sketch für die Ausgabe eines Messwertes aus?
Oder gibt es gute Beispiele/Erklärungen?

Ich wäre über Hilfe sehr dankbar.



Mit freundlichen Grüßen.

von Jojo S. (Gast)


Lesenswert?

dein alter Thread ist noch da, nur ins Offtopic verschoben worden:
Beitrag "Arduino als Temperaturschalter mit Relais und KTY-Sensor."
Da wurden ja schon viele Anregungen gegegeben. Anfragen zu fertigen 
Hausaufgaben führen hier schnell zu verbalen Attacken...

von K. F. (einsteiger94)


Lesenswert?

Hallo,

ja, meine andere Frage ist noch vorhanden.
Leider komme ich mit den Antworten nicht unbedingt weiter.
Ich möchte keine fertigen Hausaufgaben, sind ja auch keine.
Die Thematik des Arduino ist mir einfach neu.

Es würde mir nur sehr helfen, wenn ich so etwas sehen könnte, wie das 
funktioniert, zusammenhängt und aussieht, um das Ganze zu verstehen.

Mit freundlichen Grüßen.

von Falk B. (falk)


Lesenswert?

@ Kai F. (einsteiger94)

>Es würde mir nur sehr helfen, wenn ich so etwas sehen könnte, wie das
>funktioniert,

Für den Temperatursensor brauchst du noch einen Widerstand, um damit 
einen Spannungsteiler zu bauen. Den klemmst du an GND/VCC vom Arduino. 
Der Mittelabgriff geht an einen Analogeingang. Den kann man leicht 
einlesen. Danach einfach noch umrechnen (Spannung -> Temperatur) und 
anzeigen.

von c-hater (Gast)


Lesenswert?

Kai F. schrieb:

> Leider komme ich mit den Antworten nicht unbedingt weiter.

Das liegt nicht an den Antworten, sondern an deiner Haltung der 
vollständigen Verweigerung jedes eigenständigen Lernens. Du willst 
einfach nur, daß andere für dich machen, was du haben willst, weil du 
schlicht stinkendfaul bist.

So ein Verhalten ist komplett asozial und darf nicht unterstützt werden. 
Das ist auch zu deinem Besten...

: Wiederhergestellt durch Moderator
von K. F. (einsteiger94)


Lesenswert?

Gibt es für den KTY Sensor eine spezielle Umrechnung?
Jeder Sketch bei Google sieht anders aus.

Dankeschön.



Mit freundlichen Grüßen.

von Harald W. (wilhelms)


Lesenswert?

Kai F. schrieb:

> Gibt es für den KTY Sensor eine spezielle Umrechnung?

Sicherlich. Dafür reicht aber die Kenntnis der Grundrechnungsarten aus.

von K. F. (einsteiger94)


Lesenswert?

c-hater schrieb:
> Kai F. schrieb:
>
>> Leider komme ich mit den Antworten nicht unbedingt weiter.
>
> Das liegt nicht an den Antworten, sondern an deiner Haltung der
> vollständigen Verweigerung jedes eigenständigen Lernens. Du willst
> einfach nur, daß andere für dich machen, was du haben willst, weil du
> schlicht stinkendfaul bist.
>
> So ein Verhalten ist komplett asozial und darf nicht unterstützt werden.
> Das ist auch zu deinem Besten...



Ich gehe davon aus, dass du anscheinend schon Fahrradfahren konntest, 
bevor du laufen gelernt hast.



Mit freundlichen Grüßen.

: Wiederhergestellt durch Moderator
von K. F. (einsteiger94)


Lesenswert?

Dankeschön.

Muss man sonst noch etwas beachten?
Man verbindet ja nur den Arduino mit dem Vorwiderstand und dem KTY 
Sensor.
Wie wird dann der Analogwert eingelesen?
Mit einem "int" Befehl?

Danach gibt man die Formel ein und sendet das Ergebnis an das Display?

lcd.print("Test"); -----Dieses Wort wird bei diesem Bsp. ausgegeben.
                        Setzt man dann einfach die Variable "int" ein?

Ich kenne mich diesbezüglich wirklich nicht aus.




Mit freundlichen Grüßen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Du suchst dir einen 'Sketch', (ich verbinde das eher mit Comedy 
Sendungen, aber egal) mit dem du den AD Wandler auslesen kannst und 
verbindest den mit deinem LC-Display, so das du Rohwerte des ADC auf dem 
Display hast. So etwas wird es sicher geben.

Dann rechnest du ein bisschen mit Hilfe des Datenblattes für den Sensor 
und findest heraus, welche Rohwerte des ADC mit welcher Temperatur 
korrelieren.

Zuerst solltest du dich aber mit den Eigenheiten des ADC vertraut 
machen, also Abtastrateneinstellung und Einstellen der Referenzspannung. 
Ohne das gehts nun mal nicht, bzw. du bekommst nur merkwürdige Werte 
heraus.

von c-hater (Gast)


Lesenswert?

Kai F. schrieb:

> Ich gehe davon aus, dass du anscheinend schon Fahrradfahren konntest,
> bevor du laufen gelernt hast.

Ganz sicher nicht. Aber:

Ich habe das Laufen gelernt, indem ich es selber einfach versucht 
habe. Natürlich bin ich dabei massenhaft auf die Fresse gefallen (auch 
wenn ich das nur aus Erzählungen weiß). Aber das hat mir offensichtlich 
jedesmal gezeigt, wie ich es nicht machen sollte. Also habe ich es das 
nächste Mal anders probiert und irgendwann konnte ich tatsächlich 
laufen.

Und ich habe auch das Radfahren dadurch gelernt, daß ich es selber 
probiert habe. Ja, ich bin auch dabei noch ein-, zweimal heftig auf die 
Fresse gefallen. Aber auch das hat mir nur gezeigt, wie man es nicht 
machen sollte. Und ich habe es das nächste Mal dann auf andere Weise 
probiert. Und irgendwann konnte ich dann tatsächlich Fahrrad fahren.

So (und nur so) funktioniert Lernen nunmal. Nur Vollpfosten glauben, daß 
man durch stupides Abkupfern was Lernen könnte. Natürlich gehört auch 
Abkupfern zum Lernen, aber nur dann, wenn es verstehend passiert. 
Copy&Paste generiert keinerlei Verständnis.

von K. F. (einsteiger94)


Lesenswert?

c-hater schrieb:
> Kai F. schrieb:
>
>> Ich gehe davon aus, dass du anscheinend schon Fahrradfahren konntest,
>> bevor du laufen gelernt hast.
>
> Ganz sicher nicht. Aber:
>
> Ich habe das Laufen gelernt, indem ich es selber einfach versucht
> habe. Natürlich bin ich dabei massenhaft auf die Fresse gefallen (auch
> wenn ich das nur aus Erzählungen weiß). Aber das hat mir offensichtlich
> jedesmal gezeigt, wie ich es nicht machen sollte. Also habe ich es das
> nächste Mal anders probiert und irgendwann konnte ich tatsächlich
> laufen.
>
> Und ich habe auch das Radfahren dadurch gelernt, daß ich es _selber_
> probiert habe. Ja, ich bin auch dabei noch ein-, zweimal heftig auf die
> Fresse gefallen. Aber auch das hat mir nur gezeigt, wie man es nicht
> machen sollte. Und ich habe es das nächste Mal dann auf andere Weise
> probiert. Und irgendwann konnte ich dann tatsächlich Fahrrad fahren.
>
> So (und nur so) funktioniert Lernen nunmal. Nur Vollpfosten glauben, daß
> man durch stupides Abkupfern was Lernen könnte. Natürlich gehört auch
> Abkupfern zum Lernen, aber nur dann, wenn es verstehend passiert.
> Copy&Paste generiert keinerlei Verständnis.


Ich lerne täglich selbstständig und ich bin hier nicht aus Spaß 
angemeldet!

Wenn Sie ja wissen wie schwer das Lernen ist, dann seien Sie doch so 
sozial und teile ihr exorbitantes Wissen mit bedürftigen, anderenfalls 
sollten Sie sich wohl ein anderes Forum suchen.



Mit freundlichen Grüßen.

: Bearbeitet durch User
von Der Checker (Gast)


Lesenswert?

aldder die kennlinie eines kty ist nicht linear man. Du musst krasse 
Bereich definieren und dann mehrere referenz messungen in deinem bereich 
machen. Sowas nennt man Linearisierung, hast nicht in der schule 
aufgepasst, oder was?
Weil Du korrek bist, noch ein Tipp man: Mache mehrere Messung und rechne 
Mittelwert aus.

von PittyJ (Gast)


Lesenswert?

Also ich habe mit google sofort ein kty81 Arduino Beispiel gefunden. Mit 
Schaltplan und SW.

Aber warum nimmst du den? Ich verwende lieber I2C-Sensoren, z.B: LM73. 
Der macht alles selber und man kann die Temperatur digital abfragen. 4 
Leitungen direkt anlöten, und gut ist.
Da braucht man auch kein Kalibrieren oder Korrekturkurven mehr.

von K. F. (einsteiger94)


Lesenswert?

Hallo,

meinst du den hier?
---------------------------------------------

float kty(unsigned int port) {
         float temp              = 82;
         ADCSRA = 0x00;
         ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
         ADMUX = 0x00;
         ADMUX = (1<<REFS0);
         ADMUX |= port;

         for (int i=0;i<=64;i++)
         {
                 ADCSRA|=(1<<ADSC);
                 while (ADCSRA & (1<<ADSC));
                 temp += (ADCL + ADCH*256);
         }

         temp /= 101;
         temp -= 156;
       return (temp);
 }

 float read_temp = kty(0);
 print(read_temp);

---------------------------------------------

Wir haben die Projekte so verteilt und daran ist leider nichts mehr zu 
machen.
Aber gut zu wissen für die Zukunft.

Dankeschön.



Mit freundlichen Grüßen.

von Wolfgang (Gast)


Lesenswert?

K. F. schrieb:
> Danach gibt man die Formel ein und sendet das Ergebnis an das Display?

Bevor du irgendeine Formel eingibst, musst du erstmal verstehen, wie der 
Zusammenhang zwischen Messwerten und Temperatur ist. Dann kannst du 
überlegen, wie du den Zusammenhang mit einer Formel beschreiben kannst. 
Wenn das alles klar ist, gilt es einen Algorithmus zu ersinnen, der es 
dem µC erlaubt, diese Umrechnung ausreichend genau durchzuführen. Und 
erst dann kommt die Umsetzung in ein Programm.

Viel Spaß

von HildeK (Gast)


Lesenswert?

Jetzt muss man nur noch wissen, dass die KTY-Sensoren nichtlinear sind, 
sie haben eine Abhängigkeit 2.Ordnung zwischen Temperatur und 
Widerstandswert.

Durch den Aufbau eines Spannungsteilers aus einen normalen Widerstand 
und dem KTY kann man bei geeigneter Wahl des Widerstands eine recht gute 
Linearisierung über einen weiten Temperaturbereich (-40°C ... +100°C) 
erreichen.
Beim KTY81/120 z.B. sind 2.4kΩ ein ganz guter Wert.

von Gerhard O. (gerhard_)


Lesenswert?

Der Seite von Sprut nach sollten es eher 2.7K sein. Ich habe mit diesem 
Wert selber eine sehr gute Übereinstimmung (1Grad) mit einem angeklebten 
Lm35 Sensor erreicht. Sein Vorschlag den ADC 64 mal auslesen, 
LSB-Korrektur addieren und dann durch 101 dividieren, und endlich die 
Offset zu subtrahieren, ist sehr einfach in die Praxis umzusetzen. Ich 
finde seinen Vorschlag durchaus sehr nützlich. Für viele praktische 
Anwendungen ist die Genauigkeit des KTY81-110 durchaus gut genug. Mit 
der Mittelwertbildung von 64 ADC Konvertierungen bekommt an als Bonus 
noch etwas mehr Auflösung.

Hier noch einmal der Link wo das alles sehr ausführlich erklärt wird.

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


Mfg,
Gerhard



HildeK schrieb:
> Jetzt muss man nur noch wissen, dass die KTY-Sensoren nichtlinear sind,
> sie haben eine Abhängigkeit 2.Ordnung zwischen Temperatur und
> Widerstandswert.
>
> Durch den Aufbau eines Spannungsteilers aus einen normalen Widerstand
> und dem KTY kann man bei geeigneter Wahl des Widerstands eine recht gute
> Linearisierung über einen weiten Temperaturbereich (-40°C ... +100°C)
> erreichen.
> Beim KTY81/120 z.B. sind 2.4kΩ ein ganz guter Wert.

von HildeK (Gast)


Lesenswert?

Gerhard O. schrieb:
> Der Seite von Sprut nach sollten es eher 2.7K sein.

Ja, ich hatte mich aber auf den /120 bezogen, bei Sprut ist der /110 
verwendet worden und das ergibt einen etwas abweichenden Wert.
Den Widerstandswert hatte ich auf Basis der typischen Datenblattwerte 
alle 10° dadurch ermittelt, indem ich die Summe der quadratischen Fehler 
minimiert habe, um eine Geradengleichung für den Zusammenhang zwischen 
gemessener Spannung und Temperatur zu erhalten.
Aber auch die 2k7 von Sprut würden beim /120 nur an den Rändern einen 
etwas größeren Fehler produzieren - vermutlich aber immer noch kleiner, 
als die im Datenblatt genannten Toleranzen des Sensors selber, die 
speziell an den Bereichsrändern durchaus schon groß sind.

von Gerhard O. (gerhard_)


Lesenswert?

HildeK schrieb:
> Gerhard O. schrieb:
>> Der Seite von Sprut nach sollten es eher 2.7K sein.
>
> Ja, ich hatte mich aber auf den /120 bezogen, bei Sprut ist der /110
> verwendet worden und das ergibt einen etwas abweichenden Wert.

Das erklärt alles. Ich arbeitete bis jetzt nur mit den 110ern. Ist 
eigentlich toll wie niedrig man den Linearitätsfehler mit dieser Methode 
bekommt. Man müsste eigentlich ein brauchbares Thermometer mit dem 
ICL7107 Wandler ohne uC erstellen können.


Gruß,
Gerhard

von HildeK (Gast)


Lesenswert?

Gerhard O. schrieb:
> Man müsste eigentlich ein brauchbares Thermometer mit dem
> ICL7107 Wandler ohne uC erstellen können.

Ja, geht! Vor Jahrzehnten habe ich mal einige davon erstellt - mit 
Sensor TSU102 im einseitig zugeschmolzenen Glasrohr, mit ICL7126, LC 
Display und 9V-Batterie. Ich glaube, ich habe die Batterien noch nie 
gewechselt und die Teile sind immer noch gelegentlich im Einsatz ...
Den optimalen Widerstand hatte ich damals zu 2450Ω berechnet und 2k4 
eingebaut.

Wie gut die sind, ist mangels ausreichender Referenz schwer zu sagen, 
aber der Abgleich mit Eiswasser und kochendem Wasser (ja, 
luftdruckabhängig) schien gut genug zu sein, dass eine 'Fiebermessung' 
im Mund ein vertrauenserweckendes Ergebnis ergab.

von Gerhard O. (gerhard_)


Lesenswert?

HildeK schrieb:
> Gerhard O. schrieb:
>> Man müsste eigentlich ein brauchbares Thermometer mit dem
>> ICL7107 Wandler ohne uC erstellen können.
>
> Ja, geht! Vor Jahrzehnten habe ich mal einige davon erstellt - mit
> Sensor TSU102 im einseitig zugeschmolzenen Glasrohr, mit ICL7126, LC
> Display und 9V-Batterie. Ich glaube, ich habe die Batterien noch nie
> gewechselt und die Teile sind immer noch gelegentlich im Einsatz ...
> Den optimalen Widerstand hatte ich damals zu 2450Ω berechnet und 2k4
> eingebaut.
>
> Wie gut die sind, ist mangels ausreichender Referenz schwer zu sagen,
> aber der Abgleich mit Eiswasser und kochendem Wasser (ja,
> luftdruckabhängig) schien gut genug zu sein, dass eine 'Fiebermessung'
> im Mund ein vertrauenserweckendes Ergebnis ergab.

Danke für den Erfahrungsbericht. Das würde mich mal reizen.
Das einseitig zugeschlossene Glassrohr ist eine gute Idee. Man könne 
dann den Ausgang vielleicht mit Epoxydharz abdichten. Wie hast Du das 
angestellt?

Gerhard

von Karl H. (kbuchegg)


Lesenswert?

K. F. schrieb:
> Hallo,
>
> meinst du den hier?

Siehst du. Das ist das eigentlich traurige an vielen Leuten, die hier im 
Forum aufschlagen und einen Arduino programmieren wollen. Die Arduino 
Mannschaft hat euch eh schon fast alles was ein bisschen schwer ist und 
Datenblatt-Recherche erfordert abgenommen. Das ist alles dokumentiert 
aber ihr kennt es trotzdem nicht. Schon mal was von der Funktion 
"analogRead()" gehört? Du musst sie nur verwenden und schon hast du den 
kompletten Teil "Wie benutze ich meinen Analog Digital Wandler?" 
erledigt.

Was koennte einfacher sein, als mit dem KTY und einem Widerstand einen 
Spannungsteiler aufzubauen, mittels analogRead den Wert vom ADC 
auszulesen und den ganz einfach mal aufs LCD zu geben. Erwaermen oder 
kuehlen des KTY muss zu einer Wertaenderung fuehren. Die Umrechnung in 
eine Temperatur kommt spaeter.

Das kriegt man auch hin, wenn man nur Laufen kann und noch nicht 
radfahren. Aber: man lernt auch nicht radfahren, indem man anderen dabei 
zusieht, sondern indem man sich selbst aufs Rad setzt und macht!

von Bülent C. (mirki)


Lesenswert?

Karl Heinz schrieb:
> Siehst du. Das ist das eigentlich traurige an vielen Leuten, die hier im
> Forum aufschlagen und einen Arduino programmieren wollen.

agree

Karl Heinz schrieb:
> Die Arduino
> Mannschaft hat euch eh schon fast alles was ein bisschen schwer ist und
> Datenblatt-Recherche erfordert abgenommen. Das ist alles dokumentiert
> aber ihr kennt es trotzdem nicht. Schon mal was von der Funktion
> "analogRead()" gehört? Du musst sie nur verwenden und schon hast du den
> kompletten Teil "Wie benutze ich meinen Analog Digital Wandler?"
> erledigt.

Hier liegt der Knackpunkt. Man wird immer bequemer. Wie oft wollen Leute 
mit einem Arduino LED's blinken lassen? Da kann ich nur mit dem Kopf 
schütteln. Man sollte es erstmal ein paar Grundschaltungen aufbauen und 
einstudieren (ohne einem Arduino oder Atmega oder sonst irgendeinem 
Mikrocontroller/Board)

von Harald W. (wilhelms)


Lesenswert?

HildeK schrieb:

> der Abgleich mit Eiswasser und kochendem Wasser (ja,
> luftdruckabhängig) schien gut genug zu sein, dass eine 'Fiebermessung'
> im Mund ein vertrauenserweckendes Ergebnis ergab.

Die "Fiebermessung" ist auch ein guter Kalibrierpunkt, da dieser
Punkt viel näher am meist benutztem Meßbereich liegt. Auch sehr
alte Quecksilberthermometer sind meist auf ein bis zwei Zehntel
Grad genau, solange die Quecksilbersäule nicht unterbrochen ist.
Man steckt Sensor und Thermometer unter die Armbeuge, und liest
anchliessend ab.
Gruss
Harald

von HildeK (Gast)


Lesenswert?

Gerhard O. schrieb:
> Man könne
> dann den Ausgang vielleicht mit Epoxydharz abdichten. Wie hast Du das
> angestellt?

Mit Schrumpfschlauch über wasserfestem Tesafilm.
Das Glasrohr war so ca. 7cm lang und es muss ja am Kabeleingang nicht 
unbedingt wasserdicht sein. Man muss ja nur den vorderen Teil in eine 
Flüssigkeit tauchen. Natürlich geht durch das Glasrohr die Einstellzeit 
etwas hoch.
Den Sensor habe ich einfach mit ein wenig Wärmeleitpaste am 
zugeschmolzenen Teil des Glasrohres angebracht. Das Anschlusskabel 
konnte mit der Isolation ein Stück in das Röhrchen eingeführt werden. 
Den Sensor war recht klein - kleiner als eine 3mm LED.
Diese Röhrchen kannte ich aus dem Chemieunterricht und waren in einem 
Geschäft für Chemie-Laborbedarf zu bekommen - heute sicherlich irgendwo 
in einem Online-Shop zu finden.

Da hat übrigens jemand viele Datenblätter von TI gescannt und 
zusammengefasst. Auf S.21 ist übrigens der 2k4 zur Linearisierung 
genannt ...
http://electronicsandbooks.com/eab1/manual/Electronic%20Component%20Databook%20Datasheet/Brand/Texas%20Instruments/Data%20Book/1987%20Texas%20Instruments%20Silicon%20Sensors%20TDS252%20c20080712%20%5B84%5D.pdf

von Gerhard O. (gerhard_)


Lesenswert?

Danke fuer Deine Infos und den tollen Link. Dieses Handbuch kannte ich 
noch nicht. Werde mir mal den Inhalt näher ansehen.

Habe gerade mal gestöbert. Mir scheint fast, NXP hat sich von T.I. etwas 
"inspirieren" lassen:-)

Ich versuchte vor vielen Jahren einen AD590 mit Schrumpfschlauch 
abzudichten, aber es war ums "verrecken" nicht dicht zu bekommen. Jedes 
Mal wenn ichs ins Wasser tauchte war es mit der Herrlichkeit zu Ende.

Das mit der Trägheit des Sensors ist natürlich nicht so schön. Aber man 
kann damit leben.


Gruß,
Gerhard




HildeK schrieb:
> Gerhard O. schrieb:
>> Man könne
>> dann den Ausgang vielleicht mit Epoxydharz abdichten. Wie hast Du das
>> angestellt?
>
> Mit Schrumpfschlauch über wasserfestem Tesafilm.
> Das Glasrohr war so ca. 7cm lang und es muss ja am Kabeleingang nicht
> unbedingt wasserdicht sein. Man muss ja nur den vorderen Teil in eine
> Flüssigkeit tauchen. Natürlich geht durch das Glasrohr die Einstellzeit
> etwas hoch.
> Den Sensor habe ich einfach mit ein wenig Wärmeleitpaste am
> zugeschmolzenen Teil des Glasrohres angebracht. Das Anschlusskabel
> konnte mit der Isolation ein Stück in das Röhrchen eingeführt werden.
> Den Sensor war recht klein - kleiner als eine 3mm LED.
> Diese Röhrchen kannte ich aus dem Chemieunterricht und waren in einem
> Geschäft für Chemie-Laborbedarf zu bekommen - heute sicherlich irgendwo
> in einem Online-Shop zu finden.
>
> Da hat übrigens jemand viele Datenblätter von TI gescannt und
> zusammengefasst. Auf S.21 ist übrigens der 2k4 zur Linearisierung
> genannt ...
> 
http://electronicsandbooks.com/eab1/manual/Electronic%20Component%20Databook%20Datasheet/Brand/Texas%20Instruments/Data%20Book/1987%20Texas%20Instruments%20Silicon%20Sensors%20TDS252%20c20080712%20%5B84%5D.pdf

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.