Forum: Mikrocontroller und Digitale Elektronik suche Schaltung Temperaturerfassung


von eltman (Gast)


Lesenswert?

Hallo AVR - Gemeinde

ich suche eine Schaltung zur Temperaturerfassung mit einer Auflösung von 
0,1 °C
als Controller nehme ich den Mega8 oder einen AT90S4434, als Sensor 
nehme ich einen PTC (KTY81-210)
ich habe schon einige Schaltungen mit OPV's ausprobiert ( 
Brückenschaltung)

eltman

von Daniel Kaufmann (Gast)


Lesenswert?

Mit nem KTY kannst du das getrost Vergessen. Da musst du schon was 
genaueres nehmen

von R. Kager (Gast)


Lesenswert?

Das du den KTY vergessen musst würd ich nicht sagen, wieviele Bits 
Auflösung hast den beim ADU (10 bit minimum!!)? Wennst nur +5V 
Versorgung hast musst unbedingt nen Rail to Rail OPV nehmen und wennst 
+/- Versorgung hast musst eigentlich die 0,1 °C Auflösung schon 
zusammenbringen.

von Daniel Kaufmann (Gast)


Lesenswert?

Aber die abweichungen des KTY sind zu hoch.

von Eltman (Gast)


Lesenswert?

Dank auch allen

das ich den KTY (+/- 2°C) vergessen kann hat mir mittlerweile ein
Ing. auch gesagt ich sollte lieber ein Platin Sensor (+/- 0,1°C) nehmen

hat denn einer eine passende Schaltung

Eltman

von Daniel Kaufmann (Gast)


Lesenswert?

Sag mir mal den Temperaturbereich den du haben willst.

von Eltman (Gast)


Lesenswert?

Hallo Daniel

der Temperaturbereich liegt bei 25 bis 40 °C

Eltman

von Markus (Gast)


Lesenswert?

Hallo,

nim am besten einen P1000 Platinsensor. Ist super genau!
Ein Schaltungbeispiel ist z.B unter 
http://home.t-online.de/home/Matthias.Stehr/diff.htm zu finden.

Gruß

Markus

von Schmittchen (Gast)


Lesenswert?

Normalerweise kommt bei dem Stichwort 0.1°C Genauigkeit immer sofort der 
Hinweis: "Geht nicht, oder nur mit großem Aufwand". Naja, vielleicht 
kam das bisher nicht, weil in der Originalfrage "0.1°C _Auflösung_" 
stand.
Da hier aber scheinbar trotzdem die Frage nach 0.1°C Genauigkeit 
diskutiert wird, will ich den Standardhinweis mal nachholen. (Ich habe 
sowas noch nie realisiert und beziehe mich nur auf Aussagen von Leuten, 
die sowas schon gemacht haben und sich damit auskennen).

Allgemeines:
Bei 0.1°C Genauigkeit ist die Leiterbahnführung und vor allem die 
Stabilität der Versorgungsspannung von großer Bedeutung. Auch 
Bauteileschwankungen/toleranzen (z.B. in den Meßbrücken) spielen eine 
Rolle (sonst erhältst du in den unteren Bits nur Rauschen). Es hat 
seinen Grund warum die 0.1°C-Thermometer ihr Geld kosten. Günstige 
Thermometer mit LM75, DS1820 o.ä. bieten nur eine Genauigkeit von 2-3°C 
(mit einer Auflösung von 0.5°C und dem Komfort des digitalen 
Interfaces).

Konkret:
Mit dem genannten KTY81 kannst du mit den AVR-internen 10Bit-AD-Wandlern 
im Bereich von 25°-40°C eine Auflösung von 0.015°C erreichen. 
(40°C-25°C)/2^10 = 0.015°C
Für die geforderten 0.1°C (25°C-40°C) würden auch 8Bit reichen - mit dem 
AD-Wandler-Rauschen hättest du also hier weniger Probleme.

Wozu willst du das Thermometer einsetzen? PC-Gehäuseinnentemperatur? Für 
die wenigsten Anwendungen braucht man 0.1°C _Meß_Genauigkeit, weil die 
Meßstelle sowieso nur einen Punkt messen kann (z.B. nicht den 
Prozessorkern, sondern im besten Falle nur die Oberflächentemperatur der 
CPU; daraus lassen sich zwar Rückschlüsse ziehen, aber 0.1°C ist hier 
unnötig (teuer).)

Schmittchen.

von Eltman (Gast)


Lesenswert?

Hallo

Dank euch alle

Wo bekomme ich die PT1000 Sensoren her Conrad verlagen zu viel dafür :-(

Eltman

von Eltman (Gast)


Lesenswert?

Hallo Schmittchen

Ich brauche die hohe Auflösung für einen Brutapparat.
Mit einen LM75 hab ich es auch schon versucht aber na ja...
Ich werde die Auflösung dann wohl ein wenig verkleinern
so 0,4 bis 0,5 °C müste eiglich auch noch reichen.
Den Temperaturbereich  konnte ich auch noch eingrenzen 30 bis 42 °C

Eltman

von Schmittchen (Gast)


Lesenswert?

Schade, gerade hab ich meinen Text verfaßt und wollte abschicken, dann 
war mikrocontroller.net nicht mehr erreichbar - alles weg :-(

Ok, dann nochmal in Kurzfassung:

Mit deinem knappen Budget <10EUR kommst du leider nicht sehr weit. Zur 
Sensorbeschaltung gehören noch OPVs... die Conrad-PT100x sind relativ 
günstig. Es gibts fertige Sensoren mit Kabeln usw. für einige 10EUR 
bis zu wenigen 100EUR.

Google-Groups liefert einige interessante Diskussionen zum Thema 
"PT100".

Theorie zum PT100-Sensor:
http://www.ntb.ch/Pubs/sensordemo/pdf/NTB_03_PT100.pdf

Konstruktion eines PT100-Meßverstärkers (knapp, praktisch, leicht 
lesbar):
http://www.thesunscreenman.com/download/msy0000.pdf

Wie so oft stellt sich erst beim genaueren Hinsehen heraus, daß das 
anfangs als "einfach" eingeschätze "Problem" doch umfangreicher 
ausfällt. Aber das soll ja nicht abschrecken.

Schmittchen.

von Markus (Gast)


Lesenswert?

Hallo,

Conrad ist der einizige "Distributor" wo Du die P1000 als Privatlöter 
bekommen wirst. Als Firma kannst Du mal probieren an Heraeus 
heranzutreten und die Teile als Muster zu bekommen. Alternativ kannst Du 
Dir ja mal den PT100 anschauen, vieleicht reicht der auch. Die Teile 
sind aber so teuer da Sie tatsächlich eine Platinschicht besitzen! Haben 
halt den Vorteil das Sie absolut linear sind und
einen super weiten Temperaturbereich haben. Ich glaube es waren ca. -70 
- +600.
Du solltest aber das Problem mit den OP's und dem Leiterbahnen und 
Zuleitungen wirklich nicht unterschätzen, da ist Wissen und guter Aufbau 
gefragt.

Gruß Markus

von Retro (Gast)


Lesenswert?

Was soll denn das bitte beudeuten?! Conrad ist ne Servicewüste und 
Apotheke, es gibt zig bessere Alternativen! Reichelt, RS-Components, 
usw.. alles für Privatanwender! Dass Leybold-Heraeus keine Liefermenge 
unter 1000Stk. rausgibt leuchtet ja wohl ein - obwohl da wieder die 
Möglichkeit bestünde Muster abzustauben.

Der Unterschied zwischen PT100 und PT1000 ist einzig der Wiederstand bei 
Eichtemperatur. PT100 = 100Ohm, PT1000 = 1000Ohm; vom Preis sind beide 
gleich. Präzisionsarbeit plus Edelmetall ist halt kostenintensiv. Die 
Verstärkerschaltung ist kein Problem, sie sollte aber möglichst nahe am 
Fühler selbst liegen, wenn das Signal erstmal digitalisiert worden ist 
besteht keine gefahr der verfälschung mehr. Ansonsten die Leitungen 
immer geschirmt und kurz halten! Dann sollten 0.5°C für jeden 
hinzubekommen sein.

von Markus (Gast)


Lesenswert?

Hallo Retro,

ich habe nicht behauptet im Conrad Fanclub zu sein und nutze das 
unverschämte Angebot auch nur wenns nicht anders geht. Aber wenn du 
PT1000, PT100 Sensoren als Bauteil und nicht als fertig vergossenes 
Modul suchst dazu noch Stückzahlen unter 1000 abnehmen willst wirst Du 
selbst von Heraeus an Conrad als deren General-Distributer verwiesen. 
Bei RS gibts nur Module und bei Reichelt bin ich auch nicht fündig 
geworden. Also erstmal informieren und dann bellen ;-). Aber natürlich 
lasse ich mich auch gerne eines besseren belehren. Die Preise für die 
Sensoren sind tatsächlich inzwischen gleich, ein PT100 hat 100 R ein 
PT1000 sinnigerweise 1000 R und damit einfacher genauere Messwerte 
ermöglicht (mit entsprechenden Messverstärkern und angepassten A/D 
Wanderen natürlich). Ansonsten ist es richtig das der Messverstärker 
möglichst nahe beim Sensor liegen sollte (wenige mm zuviel können schon 
für eine Verfälschung reichen) und auf geschirmte Leitungen mit einer 
einseitigen Masseanbindung des Schirms.

regards

Markus

von Retro (Gast)


Lesenswert?

Hi Markus, grad weil mir Conrad ein Dorn im Auge ist war ich so empört 
;-)
Obwohl die Preise von RS auch nicht die niedrigsten sind bekommt man die 
beste Qualität. Wie währe es denn mit diesen hübschen PT1000 Sensoren 
(http://www.rs-components.de/cgi-bin/bv/browse/Module.jsp?BV_SessionID=@@@@0924528459.1029202136@@@@&BV_EngineID=cccdadcflmilhgfcfngcfkmdgkldfhn.0&3206654948=3206654948&stockNo=3629913&prmstocknum=3629913&prodoid=202441)?! 
Zwar gibt es dort auch nur die Standardtypen aber meistens reichen diese 
ja vollkommen aus. Sonst muss man zwangsläuftig zu Bussiness-Conrad 
greifen :-\

von UBoot-Stocki (Gast)


Lesenswert?

Hi,

ich habe Euere Diskussion mit Interesse verfolgt. Insbesondere deshalb, 
weil ich vor Jahren mit der Thematik zu kämpfen hatte...

Eine Sache, die mir damals schon nicht klar war: Wenn das alles so 
kompliziert und teuer ist, wie bekommen es dann die hin, die die 
elektronischen (geeichten !) Fieberthermometer bauen und für ~ 10-20 
Euro in jeder Apotheke verkaufen ... ?

Hörst sich jetzt zwar nach Bastelei an, aber ist es nicht eine 
Alternative, so ein Teil "auszuschlachten" ?

Bin gespannt auf Euere konstruktiven Kommentare

UBoot-Stocki

von Michael (Gast)


Lesenswert?

Hallo Eltmann,

es gibt keinen Grund, Dein Thermometer nicht mit einem KTY81 
auszuführen. Platinsensoren sind zwar besser und für große 
Temperaturbereiche geeignet, hier jedoch nicht notwendig. Das 
Hauptproblem eines Siliziumsensors ist dessen Alterung. Phillips gibt 
für den KTY81-110 eine Drift von max. 1,6 Ohm nach 10000h bei 150° an. 
Das ist ein hinreichend guter Wert zumal Deine Schaltung mit max. nur 
40° 'gealtert' wird und die Drift deutlich geringer sein sollte.
Der KTY81-110 hat einen nominalen Widerstand von 1000 Ohm bei 25°. Bei 
40° sind es 1122 Ohm. Eine Änderung von 1,6 Ohm (Langzeitdrift nach 
vielen Jahren) bedeutet einen Meßfehler von 0,2°. Sofern der Anwender es 
nicht schon sowieso fordert, muß man die Meßapparatur alle paar Jahre 
neu abgleichen.

Du bezeichnest Deinen Sensor mit KTY81-210, der vermutlich 2kOhm bei 25° 
hat; mir liegt nur das Datenblatt vom -110 vor, sodaß ich mich 
nachfolgend hierauf beziehe.
Vorschlag: Bei einer Referenzspannung Vref von +5V für AD-Wandler und 
Meßbrücke, werden Sensor und zusätzlicher 1k Widerstand einerseits mit 
0V und über je 3k3 mit Vref angeschlossen. Durch den Sensor fließt damit 
ein Strom von ca. 1,16 mA. Bei 122 Ohm Widerstandsänderung (25° -> 40°) 
ergibt sich eine Spannungsänderung von ca. 140mV. Bei einem 
10bit-AD-Wandler entspricht das 28 Schritte/15°: grob 0,5° Auflösung. Da 
0,1° Auflösung gefordert sind, ist die Spannung mindestens 5-fach besser 
10- bis 20-fach zu verstärken. Ein Operationsverstärker wird mit +IN an 
den Sensor, -IN an der Teiler 3k3 / 1k angeschlossen. Ein 10k Widerstand 
wird von OPV-Ausgang auf -IN geschaltet, was eine Verstärkung von ca. 
14-fach ergibt. Im Bereich 25° - 40° liegt am Ausgang vom OPV eine 
Spannung von ca. 1,2 -> 3,2 Volt. Es müssen Metallfilmwiderstände mit 1% 
verwendet werden. Der OPV sollte eine kleine Eingangs-Offsetspannung (< 
1mV) haben. Rauschen ist bei diesen Impedanzen kein Problem; eine 
gleitende Mittelwertbildung über die letzten zehn Werte gibt eine ruhihe 
Anzeige. Soweit alles easy.

Jetzt kommt der schwierige Teil:
Zum Abgleich wird der Sensor auf 25° erwärmt, und der AD-Wandlerwert im 
EEPROM abgelegt. Ein weiterer Abgleichpunkt bei 40° wird ebenfalls im 
EEPROM abgespeichert. Aus diesen Werten muß der µP den eff. 
Temperaturwert errechnen. Du kennst ja einen Ingenieur, der schreibt Dir 
die Funktion eben 'mal auf. Wenn Du aber schon eine Apparatur hast (und 
die brauchst Du unbedingt), die 0,1° genaue Temperaturen liefern kann, 
ist es auch möglich, Abgleichpunkte in 1°-Schritten im EEPROM abzulegen 
und das Ergebnis durch lineare Interpolation zwischen diesen 
Stützstellen zu errechnen.

Wenn Du Dich dann nach vielen Stunden Arbeit über Deine funktionierende 
Schaltung freuen wirst, wird es Dir völlig egal sein, ob Du einen KTY 
für € 1 oder einen Pt1000 für € 5 einsetzen wirst (was dann immer noch 
möglich ist).

Ich hoffe, ich war nicht zu lang !(?) Gruß Michael

von Sebastian Wille (Gast)


Lesenswert?

Hi,

steigt der Widerstand des Platin-Sensors linear mit der Temperatur? Oder 
brauche ich eine Vergleichtabelle?

Und kennt jemand einen einfachen Schaltplan, wo wirklich nur ein 4433 
(o.ä.) und ein Sensor angeschlossen ist, ohne großen Schnick-Schnack?

Ein kleines Beispielprogramm in Assembler dazu wäre auch super!

Danke!

Sebastian

von Eltman (Gast)


Lesenswert?

Hallo Michael

hab erstmal Dank für deine Antwort ich werd mal sehen ob
die Zeit noch ausreicht diese Projekt weiter zutreiben.
Andere Projekt und mein Studium im Oktober haben Vorrang.


Eltman

von Peter (Gast)


Lesenswert?

Hier noch eine sehr lehrreiche Seite zu dieser Thematik:

http://home.t-online.de/home/uwe.mnich/Wissen/Messtechnik/tmKap2/tmKap223/tmKap223.html

Gruss,

Peter

von Eltman (Gast)


Lesenswert?

Hallo Michael

kannst du mir noch mal etwas über  "gleitende Mittelwertbildung"
erzählen.

Eltman

von Michael (Gast)


Lesenswert?

Hallo Eltmann,

kein Problem. Die Werte, über die der Mittelwert gebildet wird, werden 
in einem Ringpuffer (hier: feld[MAX_ELEMENTE]) gespeichert. Der 
Mittelwert ergibt sich aus der Summe_der_Werte / MAX_ELEMENTE. Anfangs 
wird das feld[] komplett gelöscht - ebenfalls die Summe. Bei Eintreffen 
eines neuen Wertes, wird der älteste von der Summe abgezogen, der neue 
Werte zur Summe addiert und an die Stelle des ältesten Wertes im Puffer 
abgelegt. Der Pufferindex wird erhöht und zeigt dann wieder auf den 
jetzt ältesten Wert. Am Ende des Puffers angekommen, wird der 
Pufferindex wieder auf 0 gesetzt. Da die Summe immer aktuell ist, ist 
der neue Mittelwert schnell errechnet.

#define MAX_ELEMENTE  10
char pufferindex;
short feld[MAX_ELEMENTE];  //short = 2 Byte
long  Summe_der_Werte;     //long  = 4 Byte

void init_puffer()
{
  for(pufferindex=0; pufferindex < MAX_ELEMENTE; pufferindex++)
    feld[pufferindex]=0;  // Einzelwerte löschen
  Summe_der_Werte = 0L;
  pufferindex = 0;
}

short berechne_mittelwert(short neuer_wert)
{
  Summe_der_Werte -= feld[pufferindex]; // alten Wert abziehen
  Summe_der_Werte += neuer_wert;  // neue aktuelle Summe
  feld[pufferindex] = neuer_wert; // ablegen
  pufferindex++;
  if(pufferindex >= MAX_ELEMENTE) pufferindex = 0; // wieder von vorne 
anfangen
  return(Summe_der_Werte / MAX_ELEMENTE);
}

Ich hoffe, der Text ist lesbar und fehlerfrei getippt!

Wenn ein neuer Meßwert vorliegt, reicht der Aufruf:
mittelwert = berechne_mittelwert(neuer_wert);

In der Regel sind alle Variablen beim Programmstart gelöscht, sodaß 
init_puffer(); entfallen könnte. Da ich tagtäglich mit Ausnahmen von 
Regeln zu tun habe: init_puffer(); schadet nicht !

Bei Meßwerten, die nicht bei 0 beginnen ist es ratsam, eine Messung zu 
machen, und die Mittelwert-Routine MAX_ELEMENTE-mal aufzurufen, um den 
Puffer mit geeigneten Startwerten zu füllen. Die Routine wirkt letzlich 
als Tiefpaßfilter: wird der Puffer zu groß gemacht, ist die Verzögerung 
entsprechend lang. Ist der Puffer zu klein, werden die Schwankungen der 
Einzelwerte sichtbar (in der Anzeige). Soweit.

Michael

von Michael (Gast)


Lesenswert?

Nachtrag

Da der Mittelwert aus Integer-Zahlen errechnet wird, muß unbedingt 
gerundet werden:

// Funktionskopf
{
char rundung;
// ...
rundung = MAX_ELEMENTE/2; // für pos. Summe
if(Summe_der_Werte < 0) rundung = -rundung; // für neg. Summe
return((Summe_der_Werte + rundung) / MAX_ELEMENTE);
}

Michael

von Immingealleld (Gast)


Lesenswert?

I’d prefer reading in my native language, because my knowledge of your 
languange is no so well. But it was interesting!

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.