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
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.
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.
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.)
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 ;))
@ 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?
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.
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?
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.
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)
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.
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?
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...)
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!
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
"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!
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
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?)
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