Forum: Mikrocontroller und Digitale Elektronik Temperatursensoren an Microcontroller (Silabs)


von Tobi D (Gast)


Lesenswert?

Hallo!

Ich hab den Microcontroller C8051FX20 von Silabs.
Ich mach ne Facharbeit zum Thema "Temperaturmessung mit 
Microcontroller". Grundsätzlich hab ichs schon fast fertig, ich kann 
zumindest die Temperatur des auf dem Chip "befindlichen" Sensors am PC 
ausgeben.

Nun zu meinem Problem:
Ich will einen zusätzlichen, externen Sensor an einen freien ADC 
anschließen. Dieser kann Spannungen von 0 bis 2,4 Volt in 12 Bit 
auslesen.

Wie kann ich also einen Sensor, z.B. einen Pt1000, dazu bringen, in 
diesem vorgefertigten Bereich eine Spannung abzugeben? Wie viel A/mA 
muss die konstante Stromquelle liefern? Wie schauts aus mit dem 
Vorwiderstand?

Ich sag im Voraus schon mal Danke, mit einigen aufschlussreichen 
Antworten wär mir sehr geholfen!

mfg, Tobi

von Andreas K. (a-k)


Lesenswert?

PT1000 ist allerdings der umständlichste Weg, es sei denn die 
spezifischen Eigenschaften dieses Sensortyps sind wirklich erforderlich.

von Tobi D (Gast)


Lesenswert?

Es kann ja auch ein Pt100 sein. Mir gehts ja eigentlich nur prinzipiell 
darum, wie man in einem vorher definierten Temperaturbereich (z.B. -50 
bis 150°C) bewerkstelligt, dass beim µC höchstens 2,4 Volt ankommen.

von Andreas K. (a-k)


Lesenswert?

Ds ist ja der Punkt. PT100/PT1000 sind zwar präzise und für grossen 
Tempteraturbereich geeignet, aber vergleichweise aufwendig zu nutzen. 
Halbleitersensoren sind einfacher auszuwerten, weil stärker 
temperaturabhängig (wenn analog) oder weil sie die Information bereits 
digital abliefern.

Wie üblich sollte also zu allererst ein sauberes Anforderungsprofil 
definiert werden: welcher Bereich, wie genau, ggf. auch Bauform. Und 
dann die passende Lösung gefunden werden.

Wer Spott ernten will definiert das dann so: möglichst grosser Bereich, 
so genau wie möglich. Leider kein Witz, so liest man das öfter.

von Igor M. (bastel-wastel)


Lesenswert?

Wenn du es dir einfach machen willst: LM335.
Pro K gibt verändert sich die Spannung am Sensor mit ca. 10mV. Das ganze 
ist relativ linear. Dem LM335 klemmst du mit einem Widerstand gegen 5V. 
Einfacher kann man die Temperatur mit dem ADC eines µCs nicht erfassen.
(Natürlich nur, wenn der Temperaturbereich ausreicht.)

von Tobi D (Gast)


Lesenswert?

Ok, dann definier ich das mal genauer: Ziel meiner Facharbeit ist, 
mehrere verschiedene Sensoren (NTC/PTC/PT ...) an je einen ADC 
anzuschließen, und daraus je eine Temperaturkurve zu erhalten. Die 
Kurven werden dann bzgl. ihrer Linearität miteinander verglichen.
Außerdem stellt sich mein Physik-Lehrer vor, dass zumindest einer der 
Sensoren gewisse Besonderheiten vorweisen kann, z.B. dass man damit bis 
zu 1000°C messen kann. Die Genauigkeit ist wieder ein anderes Thema - 
sie soll eigentlich sogar möglichst abweichend sein, weil dann die 
einzelnen Kurven viel interessanter werden.

Also: Ich brauch an die 2 Sensoren, die im "normalen" Temperaturbereich 
von -20°C bis 80°C einigermaßen präzise messen können, dürfen aber 
durchaus sehr verschieden sein. (Mit dem auf dem Chip integrierten 
Sensor wärens dann 3)
Außerdem soll ein Sensor dabei sein, der in einem weitaus höheren 
Bereich messen kann, sagen wir mal ca 800°C bis 1100°C. Wenn es Sensoren 
mit noch höherem Bereich gibt (so bis 2200°C), solange sie einigermaßen 
erschwinglich sind, wärs natürlich optimal, weil man dann z.B. 
Flammentemperaturen messen könnte. Ich schätz mal, dafür wär ein 
Thermoelement nötig, da es schon sehr hoch ist.
Die Bauweise ist also nur bei dem letzten Sensor wichtig, weil sie eben 
solche Temperaturen aushalten muss.

Ansonsten, einfach ein möglichst großer Bereich, und natürlich so genau 
wie möglich! (Kleiner Witz am Rande ;))

von Tobi D (Gast)


Lesenswert?

@ Igor:
Danke für deine Antwort!
Aber wie darf ich das verstehen, das mit 5V? Ich dachte, es muss eine 
konstante Stromquelle sein, keine Spannungsquelle?

von Andreas K. (a-k)


Lesenswert?

Schau halt mal ins Datasheet vom LM335, vielleicht wird es dann klarer. 
Das ist ja kein PT1000.

von Igor M. (bastel-wastel)


Lesenswert?

Der LM335 kann man auch "temperaturabhängige Z-Diode" nennen.
Beschaltung:
5V -> Vorwiderstand(2,7k) -> LM335 -> GND

Hierbei misst du die Spannung über dem LM335. Die gesamte Beschaltung 
des Sensor besteht also nur aus einem Widerstand. (+RC-Glied am 
AD-Wandler)

Kosten: 50Cent bei Reichelt.

von Tobi D (Gast)


Lesenswert?

Aah, Ok, vielen Dank! Ich schau mir mal das Sheet an.
Gut, dann hab ich ja schon einen Sensor gefunden!
Und wie schauts mit der Vorschaltelektronik von z.B. nem Thermoelement 
aus? Wird sicher relativ aufwendig sein, oder?

von Igor M. (bastel-wastel)


Lesenswert?

Thermoelemente geben Spannungen im µV-Bereich ab. Da ist die 
Signalauswertung ungleich aufwändiger. Zudem messen Thermoelemente nur 
einen Differenzbetrag zu einer Temperatur-Vergleichsstelle. Man braucht 
also noch einen absoluten Temperatursensor, bzw. ein entsprechendes IC, 
dass die Vergleichsstelle simuliert. Das ganze ist zu komplex um sowas 
einzusetzen. Es sei denn, man entwickelt gewerblich Messgeräte. Wenn man 
Thermoelemente einsetzen will, dann kauft man die Sensoren mit passendem 
Messgerät.

Eine weitere Möglichkeit wäre - wie oben schon geschrieben wurde - einen 
digitalen Temperatursensor einzusetzen. Das sind ICs, die die Temperatur 
messen und den Wert über eine digitale Schnittstelle (SPI, I²C) z.B. zu 
einem µC senden können. Die Teile sind teurer größer als einfache 
zweipol-Sensoren. Dafür beinhalten sie alles, um die Temperatur zu 
ermitteln. Der µC muss dann nicht mehr groß rumrechnen.

von Tobi D (Gast)


Lesenswert?

Ah, hab mir schon gedacht dass das zu aufwendig is.
Digitale Sensoren- auch ne Möglichkeit. Aber dann muss ich mich ja 
wieder mit anderen Schnittstellen auseinandersetzen - Oh Gott!
Naja mal schaun.
Und wie siehts aus mit den einfachen PTCs? Oder doch dem Pt100? Kostet 
ja alles nicht die Welt. Und eine Konstantstromquelle krieg ich mit 
Sicherheit auch hin. Also daran solls nicht scheitern. Es soll ja auch 
eine Facharbeit werdn, ich will kein Fertigteil kaufen, das die 
Temperatur anzeigt. Ich mein, wenn mich dann in der mündlichen Prüfung 
der Lehrer fragt, worums eigentlich geht, hab ich dann kein Plan.
Dazu kommt, dass mich die Materie auch wirklich interessiert. Ich glaub 
auch, dass ich schon einiges geschafft hab, indem ich den µC zum Laufen 
gekriegt hab. Aber das reicht eben noch ned ganz.

Naja, aber genug gelabert, nun zu meiner Frage: Wie würde beispielsweise 
eine Beschaltung eines PTC/NTC aussehen? (Vor allem brauch ich auch 
sowas wie Formeln, welche die einzelnen Widerstandswerte zur 
Linearisierung usw bestimmen, am besten in allgemeiner Form)

von Andreas K. (a-k)


Lesenswert?

Schau dich mal bei sprut.de um. Auch wer PICs nicht mag lernt da was 
(http://sprut.de/electronic/temeratur/temp.htm).

von Igor M. (bastel-wastel)


Lesenswert?

Formeln von nichtlinearen Sensoren sind in deren Datenblättern 
angegeben. PT100 ist linear, jedoch ist der Temperaturkoeffizient klein 
(wenig Widerstandsänderung bei einer Temperaturänderung)
Nimm lieber Halbleiterwiderstände wie KTY11-xxx. Die funktionieren 
ähnlich, der Temperaturbereich ist eingeschränkt (meist -50..150°C). 
Speziell bei den KTY ist im Datenblatt ne Formel, mit der man die 
Temperatur anhand des aktuellen Widerstandswertes ausrechnen kann. Diese 
Gleichung ist für einen µC schon relativ aufwändig zu berechen - aber es 
geht.
Beschaltung: Du musst einfach den Widerstandswert bestimmen. Entweder 
über eine Konstantstromquelle den Sensor bestromen und die Spannung 
ablesen, oder einen Vorwiderstand vor den Sensor. Dann die Spannung über 
dem Sensor messen und den Widerstandswert wie bei einem normalen 
Spannungsteiler ausrechnen.
Mit Konstantstromquelle ists wohl einfacher.

PT100, PT1000 werden genauso ausgewertet. Durch den geringen 
Temperaturkoeffizient bekommst du mit deinem ADC im µC jedoch eine 
Temperatur mit weniger Auflösung hin.

von Tobi D (Gast)


Lesenswert?

Aha, Ok.
@ Andreas: Sehr interessante Seite, hab schon viel davon gelesen! Aber 
zu Temperaturmessung hab ich noch nix gesehn, aber ich schau noch mal.
@ Igor:
Es ist ned mal nötig, die Formel vom µC ausrechnen zzu lassen, das kann 
ich in mein PC-Programm auch einbaun.
Aber woher weiß ich, welchen Wert die konstante Stromquelle haben muss?
Muss ich einfach schaun, meinetwegen hat der PTC nen Widerstand von 120 
Ohm, bei 150°C (der Maximalwert, den ich messen will). Dann ohmsches 
Gesetz, 2,4 Volt als Maximum des µC eingesetzt, und gut is?
Dann hätt ich nen Strom von 20mA. Is das korrekt so? oder muss ich 
vielleicht mehr Luft lassen? Also statt 2,4 Volt nur 2 Volt?
Wie gesagt ich kenn mich ned aus ;)

Zum Thema pt100: Wie wärs mit nem Operationsverstärker? Oder ändert das 
auch nix?

von Igor M. (bastel-wastel)


Lesenswert?

Das Problem ist folgendes: Durch den Konstantstrom erwärmst du den 
Sensor. P = I² * R. Du bekommst also einen Fehler rein. Von dem her ist 
der Strom möglichst klein zu halten. Ein kleiner Strom führt aber nur zu 
einer kleinen Spannungsänderung bei der Temperaturänderung. Man muss 
sich also für einen Kompromiss entscheiden. Die Eigenerwärmung kannst du 
aber auch eventuell wieder im Programm rausrechnen.

Ich verstehe dein Rechnungsbeispiel nicht ganz. Neus Beispiel:
Konstantstrom = 2mA.
Temperatur = x°C
Am Sensor fällt eine Spannung ab (z.B. 1,3V), welche du mit dem ADC 
misst. Durch R = U/I = 1,3V/0,002A = 650 Ohm. kannst du den 
Widerstandswert ausrechnen. Diesen Widerstandswert setzt du nun in die 
Gleichung aus dem Datenblatt ein und bekommst dadurch eine Temperatur. 
Bei einem linearen Sensor wie PT100 ist die Gleichung in der ersten 
Näherung nur eine Geradengleichung - also relativ trivial. Wenn du den 
Temperaturwert am PC berechnen kannst, dann ist die Gleichung kein 
Problem. Nichtlineare Sensoren kannst dann einfach einsetzen. Früher - 
bevor die digitale Technik so weit etabliert und günstig war wie heute - 
galt ja: Alles was nicht linear ist, ist unbrauchbar. Heute ist das kein 
großen Problem mehr.

Zum OPV: Natürlich kannst du die Spannung über dem Sensor verstärken. 
Dadurch bekommst du bei einer Temperaturänderung eine höhere 
Spannungsänderung, ABER: Bedenke, dass dein ADC nur bis zu einer 
bestimmten Spannung messen kann. Das bringt meist nichts. Zudem bekommt 
man dadurch noch Fehler rein (Offset-Spannung vom OPV, 
Bauteiltoleranzenj...)

von Tobi D (Gast)


Lesenswert?

Danke für deine Antwort!
Zu deinem Beispiel: Was ich vorher gemeint hab, war, dass es doch 
eigentlich am Besten wär, wenn man die Konstantstromquelle dem 
Messbereich des µC anpasst. Ich mein, wenn er bei 0,2mA 2V liefert, und 
das bei Raumtemperatur, kann ich vielleicht bloß bis 40° messen, und 
dann is schon 2,4V erreicht. Natürlich bloß bei einem Heißleiter. Beim 
Kaltleiter wärs genau anders rum.
Man müsste in dem Fall also einen kleineren Strom liefern. Deswegen 
vorhin meine Rechnung, die eben die Stromquelle genau an die maximale 
Spannung anpasst.


Eine ganz andre Idee (Die wahrscheinlich bescheuert is, aber nen Versuch 
wärs wert)

Falls ich mein erstes Problem gelöst hab, also nen 
Widerstandsthermometer auslesen kann, kann ich doch bezüglich 
Thermoelement folgendes machen:

Ich nehm die 2 Drähte, die als Thermoelement fungieren, und füg sie 
zusammen. Dann bau ich beide Enden in sowas wie nen Thermoblock ein, der 
ne Heizung hat (blöde Idee, ich weiß). Dessen Temperatur überwach ich 
über nen PTC oder ähnliches, und lass den Microcontroller das ganze auf 
z.B. 50°C regeln. Die Heizung is natürlich übern Relais mit dem µC 
verbunden, der z.B. jede Sekunde die Temperatur des Thermoblocks 
abfragt.
Somit hätt ich die Referenztemperatur am anderen Ende der Drähte, und 
könnte dann die Spannung verstärken. Hab ja immerhin 7 ADCs auf dam µC.
Aber egal, das is jetz ned so dringend.

Auf jeden Fall mal Danke an alle, ihr habt mir sehr geholfen!

von Arc N. (arc)


Lesenswert?

Tobi D wrote:
> Ich nehm die 2 Drähte, die als Thermoelement fungieren, und füg sie
> zusammen. Dann bau ich beide Enden in sowas wie nen Thermoblock ein, der
> ne Heizung hat (blöde Idee, ich weiß). Dessen Temperatur überwach ich
> über nen PTC oder ähnliches, und lass den Microcontroller das ganze auf
> z.B. 50°C regeln. Die Heizung is natürlich übern Relais mit dem µC
> verbunden, der z.B. jede Sekunde die Temperatur des Thermoblocks
> abfragt.

Wenn du die Temperatur des Blocks sowieso misst, braucht's die Heizung 
nicht mehr...
Absolute Thermoelement-Spannung =
Thermoelement-Spannung der Kaltstellte (NTC, PTC, PT100, etc.) + 
Thermoelement-Spannung
d.h. einmal Temperatur in Spannung umrechnen, beide Spannungen addieren,
und dann das ganze in die Temperatur umrechnen ansonsten gibt's falsche 
Ergebnisse
http://srdata.nist.gov/its90/menu/menu.html

> Somit hätt ich die Referenztemperatur am anderen Ende der Drähte, und
> könnte dann die Spannung verstärken. Hab ja immerhin 7 ADCs auf dam µC.
> Aber egal, das is jetz ned so dringend.
>
> Auf jeden Fall mal Danke an alle, ihr habt mir sehr geholfen!

Wenn schon SiLabs Controller vorhanden sind, warum dann nicht den 
C8051F350, dann hätte man z.B. die Möglichkeit direkt PT100/1000 
(interne Stromquelle) und Thermoelemente anzuschließen (für negative 
Temperaturdifferenzen braucht's noch passende Offsets)
Mögliche Eingangsbeschaltung gibt's z.B. hier
http://focus.ti.com/lit/an/sbaa134/sbaa134.pdf

von Tobi D (Gast)


Lesenswert?

"Wenn du die Temperatur des Blocks sowieso misst, braucht's die Heizung
nicht mehr...
Absolute Thermoelement-Spannung =
Thermoelement-Spannung der Kaltstellte (NTC, PTC, PT100, etc.) +
     Thermoelement-Spannung"

stimmt, da hätt ich selber draufkommen können!
Was könnte man eigentlich hernehmen als Block? Metall schließt sich ja 
aus.

     "Wenn schon SiLabs Controller vorhanden sind, warum dann nicht den
C8051F350, dann hätte man z.B. die Möglichkeit direkt PT100/1000
(interne Stromquelle) und Thermoelemente anzuschließen (für negative
Temperaturdifferenzen braucht's noch passende Offsets)
     Mögliche Eingangsbeschaltung gibt's z.B. hier"

Eine Auswahlmöglichkeit hatte ich ned; ich war bei der FH, und hab mir 
vom E-Technik-Prof den µC besorgt. Er hat einfach bei Silabs im Amiland 
angerufen, und gefragt, ob die mir ned kostenlos so nen 100€ Controller 
zur Verfügung stellen können, für ne Facharbeit... war gar kein Problem!

von Arc N. (arc)


Lesenswert?

Tobi D wrote:
> "Wenn du die Temperatur des Blocks sowieso misst, braucht's die Heizung
> nicht mehr...
> Absolute Thermoelement-Spannung =
> Thermoelement-Spannung der Kaltstellte (NTC, PTC, PT100, etc.) +
>      Thermoelement-Spannung"
>
> stimmt, da hätt ich selber draufkommen können!
> Was könnte man eigentlich hernehmen als Block? Metall schließt sich ja
> aus.

Wenn nicht absolut höchste Genauigkeit gefordert ist, kann man z.B. 
sowas nehmen http://omega.de/produkt/t2/pcc.html
für Platinenmontage mit Halterung für einen Temperatursensor oder man 
nimmt nen Standardsteckverbinder und packt den Kaltstellensensor mit ins 
Gehäuse (und kann dann das ganze in einen großen Block packen).

>      "Wenn schon SiLabs Controller vorhanden sind, warum dann nicht den
> C8051F350, dann hätte man z.B. die Möglichkeit direkt PT100/1000
> (interne Stromquelle) und Thermoelemente anzuschließen (für negative
> Temperaturdifferenzen braucht's noch passende Offsets)
>      Mögliche Eingangsbeschaltung gibt's z.B. hier"
>
> Eine Auswahlmöglichkeit hatte ich ned; ich war bei der FH, und hab mir
> vom E-Technik-Prof den µC besorgt. Er hat einfach bei Silabs im Amiland
> angerufen, und gefragt, ob die mir ned kostenlos so nen 100€ Controller
> zur Verfügung stellen können, für ne Facharbeit... war gar kein Problem!

Dann bleiben nur externe Schaltungen. Sprich Stromquelle für PT100/1000,
Differential/Instrumentation-Amp für das Thermoelement.
Andere Möglichkeit fürs Thermoelement: AD595 oder einen einfachen 
externen ADC

http://www.linear.com/pc/downloadDocument.do?navId=H0,C1,C1155,C1001,C1152,P1843,D4458

von Tobi D (Gast)


Lesenswert?

Also ich habs mal kurz ausgerechnet.
Als Beispiel nen Pt100 und 1000 genommen. Ich hab als Maximum 500°C 
genommen, sowie 2,4V zur Verfügung, auf Seiten des ADC. Dann müsste bei 
nem Pt100 eine Stomquelle 8,54mA liefern. Theoretisch wär da aber der 
Pt1000 beser, weil der mit weniger Strom auskommt, um 2,4V zu liefern 
(Erwärmung): 0,854mA. Ich hab aber keine Ahnung, ob man eine konstante 
Stromquelle baun kann, die so exakt ist. Geht das?
Weil ideal wärs schon, bei -200°C würdn ca 0,15V rauskommen. Insgesamt 
ne theoretische Auflösung von ca 0,2°C (die aber sinnfrei in extremen 
Bereichen ist)

Und zum Thermoelement: Könntest du mir erklären was ein 
Differential/Instrumentation-Amp ist? Oder nen Link wos beschrieben ist? 
(Is es ein Verstärker?)

von Arc N. (arc)


Lesenswert?

Tobi D wrote:
> Also ich habs mal kurz ausgerechnet.
> Als Beispiel nen Pt100 und 1000 genommen. Ich hab als Maximum 500°C
> genommen, sowie 2,4V zur Verfügung, auf Seiten des ADC. Dann müsste bei
> nem Pt100 eine Stomquelle 8,54mA liefern. Theoretisch wär da aber der
> Pt1000 beser, weil der mit weniger Strom auskommt, um 2,4V zu liefern
> (Erwärmung): 0,854mA. Ich hab aber keine Ahnung, ob man eine konstante
> Stromquelle baun kann, die so exakt ist. Geht das?
> Weil ideal wärs schon, bei -200°C würdn ca 0,15V rauskommen. Insgesamt
> ne theoretische Auflösung von ca 0,2°C (die aber sinnfrei in extremen
> Bereichen ist)

Die Stromquelle muss nicht genau sein ;-)
Stichwort: Ratiometrische Messung
Beitrag "Re: Sehr hoch auflösender PT100 Messverstärker"

>
> Und zum Thermoelement: Könntest du mir erklären was ein
> Differential/Instrumentation-Amp ist? Oder nen Link wos beschrieben ist?
> (Is es ein Verstärker?)
von Microchip gibt's da ein paar brauchbare AppNotes:
RTD
http://ww1.microchip.com/downloads/en/AppNotes/00687b.pdf
Thermoelement:
http://ww1.microchip.com/downloads/en/AppNotes/00684a.pdf

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.