Hallo liebe Mikrocontroller Gemeinde :)
Ich bin gerade dabei mir die Welt der Microcontroller näher zu bringen
und wollte mal ein Projekt mit Temperatursensoren realisieren.
- Messbereich ca.: -20 bis +250°C
- gewünschte Genauigkeit: +- 0.5K unterhalb von 100°C (+- 1K wäre auch
noch okay)
- Versorgungsspannung: 5,2V
Nach längerer Recherche in diversen Foren denke ich, dass ich für die
gewünschte Genauigkeit einen ADC benötige. Mein Favorit bisher ist der
MCP3424 (auch offen für andere Wandler oder Konzepte)
Als Vorauswahl habe ich mich jetzt mal auf folgende Sensoren beschränkt
(gerne offen für andere/bessere) und würde gerne zum lernen alle 3 mal
testen:
Thermistor NTC 100k Ohm, Thermoelement Typ T und Pt1000
(2-Anschlusskabel, Anschlusslänge von Sensor bis ADC ist weniger als
20cm)
- Erste Frage: Mit einer geeigneten Schaltung vor den Input Channels des
MCP3424 sollte ich alle 3 Sensoren auswerten können, richtig? Oder sind
da andere ADCs besser geeignet?
Den Thermistor und PT1000 würde ich über eine Spannungsteilerschaltung
auswerten. Der Vorwiderstand sollte hier wahrscheinlich ein
Präzisionswiderstand sein oder? So wie im Schaltplan eingezeichnet
sollte das eine ratiometrische Messung sein, hab ich das richtig
gemacht?
- Der MCP Chip hat jetzt ja noch eine interne Referenzspannung (2.048V ±
0.05%), das hab ich noch nicht ganz verstanden wofür die gut ist und ob
ich die irgendwie geschickt nutzen kann.. Kann mir da jemand auf die
Sprünge helfen?
Das Thermoelement Typ T induziert mir eine Spannung, welche der ADC
direkt auswerten kann. Zur Berechnung der Temperatur benötige ich dann
noch die Temperatur der Cold-Junction die ich mittels Thermistor/PT1000
o.ä. bestimmen kann.
Laut einem öfters zitierten Elektronik Kompendium
(http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.32) muss ich
jetzt mittels Tabelle (!?) die Temp. Der Cold-Junction in eine Spannung
wandeln (bsp. 20°C entspricht 0,833 mV) dann rechne ich diese auf meine
am ADC gemessene Spannung drauf (bsp. 8,550 mV) macht 9,383 mV und diese
wandele ich wieder in eine Temp. Um --> irgendwas zwischen 202 und 203
°C.
- Diese Methode scheint mir etwas überholt, gibt’s da was besseres? Ich
denke hier wird die Programmierung sonst sehr umständlich :/
Da ich als Maschinenbauerin (mit wenig µC Erfahrung) noch ziemlicher
Laie bin würde ich mich sehr über eine Rückmeldung freuen was meine
Planung angeht. Bin über jede Hilfe dankbar 😊
Hoffe ihr habt alle Infos die ihr braucht, sonst einfach nachfragen!
Vielen Dank an alle die sich schonmal diesen langen Text hier
durchgelesen haben^^
LG Lisa
Lisa schrieb:> Nach längerer Recherche in diversen Foren denke ich, dass ich für die> gewünschte Genauigkeit einen ADC benötige
Na ja, für -20 bis +250 mit 0.5K braucht man eine Auflösung von 540,
also täte es ein 10 bit A/D Wandler auch.
Lisa schrieb:> Mein Favorit bisher ist der MCP3424
Der misst gegen eine absolute interne Spannungsreferenz. Zumindest dein
NTC liegt aber an der schwankenden 5V Versorgung. Jede Abweichung
zwischen den 5V und den 2.048V geht also ins Messergebnis ein. Und man
kommt an die interne Referenz nicht ran, um sie als Versorgung für den
NTC nutzen zu können. Besser wäre es, ratiometrisch gegen die 5V zu
messen, das kann der MCP aber nicht.
Zur Messen per Thermoelement könnte man ihn nehmen, muss aber den PGA
einschalten und der bringt einen erheblichen Fehler mit sich, da bleibt
von den 18 bit nicht mehr viel übrig. Ein einfacher (10 bit) A/D Wandler
mit vorgeschalteten PRÄZISEN OpAmp-Verstärker könnte da genauere
Ergebnisse liefern.
https://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.32
Lisa schrieb:> Laut einem öfters zitierten Elektronik Kompendium> (http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.32) muss ich> jetzt mittels Tabelle (!?) die Temp. Der Cold-Junction in eine Spannung> wandeln (bsp. 20°C entspricht 0,833 mV) dann rechne ich diese auf meine> am ADC gemessene Spannung drauf (bsp. 8,550 mV) macht 9,383 mV und diese> wandele ich wieder in eine Temp. Um --> irgendwas zwischen 202 und 203> °C.>> Diese Methode scheint mir etwas überholt, gibt’s da was besseres? Ich> denke hier wird die Programmierung sonst sehr umständlich :/
Gerade die dse faq sagt dass die von dir beschriebene Methode Spannungen
zu addieren nichts taugt:
"Weil die Spannung des Thermoelementes unlinear mit der Temperatur
steigt, addiert man zur Kaltstellentemperatur nicht etwa die
Klemmenspannung des Thermoelementes nach Tabelle umgerechnet hinzu,
sondern sucht ausgehend von der Kaltstellentemperatur in der Tabelle bei
welcher Differenztemperatur man die gemessene Spannung bekommen würde:"
MaWin schrieb:> Der misst gegen eine absolute interne Spannungsreferenz. Zumindest dein> NTC liegt aber an der schwankenden 5V Versorgung. Jede Abweichung> zwischen den 5V und den 2.048V geht also ins Messergebnis ein.
Man könnte den CH1- in die Mitte eines 100k : 100k Spannungsteilers
legen, dann reduziert sich die Abhängigkeit von der 5V
Spannungsversorgung.
MaWin schrieb:> Besser wäre es, ratiometrisch gegen die 5V zu> messen, das kann der MCP aber nicht.
Für ratiometrische Messungen nehme ich gerne den ADS1100https://www.ti.com/product/ADS1100, nicht zu verwechseln mit dem
ADS1110, der hat wieder eine interne Referenz und kann keine
Ratiometrie.
Hallo Lisa,
Du schreibst, Du möchtest Erfahrungen in der Welt der Mikrocontroller
machen.
Dann mache sie doch einfach! Es ist ja nicht die Welt etwas
diesbezüglich aufzubauen, wenn es nicht gerade edel, mit Platine sein
muss (vielleicht zuletzt). Eignende Erfahrungen sind immer die besten.
Eine kleine Anmerkung hierzu noch: Du bewegst Dich aber hier in erster
Linie in der Analogen Welt "bis" zum ADC bzw. suche Dir einen Prozessor,
Board mit 12bit z. b.:"Blue pill" oder so. Auch wenn diese ADC's nicht
so gut sind reichen sie.
Lege einen besonderen Wert auf die Versorgung deiner Analogen Schaltung.
Da reicht kein Spannungsteiler oder ein Widerstand besonderer Güte aus,
um eine gute Genauigkeit zu bekommen. Hier muss die Brücke stimmen,
keine Eigenerwärmung, kein Rauschen. Du willst 0,5% das hört sich
schlicht an, aber auf 120°C, so nie.
Aufgrund des Temperaturmessbereichs solltest Du als erstes vielleicht
Dich auf einen Sensor festlegen. NTC und Thermoelement ist "pi mal
Daumen" im Bastelmodus. Der PTC hat die Genauigkeit (Klasse+ teuer) und
den Bereich.
Eine andere Lösung ist natürlich der Sensor an sich. zB.: MCP9808--I2C
fertig bis < 125°C, günstig. Teuer, gute Feuchtigkeitssensoren (0~80°C).
Danach kannst Du sicher auch die anderen Sensoren untersuchen.
Peter
Danke euch für die schnelle Rückmeldung und die viele Hilfe!
MaWin schrieb:> Der misst gegen eine absolute interne Spannungsreferenz.
Ah okay, das macht Sinn, dann fällt der wieder raus.
MaWin schrieb:> Gerade die dse faq sagt dass die von dir beschriebene Methode Spannungen> zu addieren nichts taugt:
Zitat dse faq:
"
- Beispielrechnung Thermoelement Typ K:
- Gemessen 2,230 mV
- Kaltstellentemperatur 22 °C [entspricht 0,879 mV laut Tabelle]
- 2,230 mV + 0,879 mV = 3,109 mV
- 3,109 mV = 76 °C
- NICHT rechnen: 55 °C [das wären die 2,230 mV] + 22 °C = 77 °C"
heißt doch, Spannungen addieren ist richtig, falsch wäre die gemessene
Spannung in 55°C umrechnen und auf die 22°C Kaltstellentemp aufaddieren?
Oder hab ich hier einen Denkfehler?
MaWin schrieb:> Ein einfacher (10 bit) A/D Wandler> mit vorgeschalteten PRÄZISEN OpAmp-Verstärker könnte da genauere> Ergebnisse liefern.
Okay einen einfachen A/D Wandler hab ich im Atmega328 (10 BIT +/-2LBS),
dann probiere ich es vllt erstmal damit? Mit OpAmps hab ich mich noch
nie beschäftigt, daher muss ich erstmal ein wenig recherchieren um zu
verstehen wie die funktionieren. Dann habe ich sicherleich weitere
Fragen dazu an euch :P
Chris schrieb:> Für ratiometrische Messungen nehme ich gerne den ADS1100> https://www.ti.com/product/ADS1100
Danke!! Den schaue ich mir mal genauer an :) hast du zufällig auch nen
Tip für einen mit mehr Eingängen? (4 wäre optimal) Fände ich ganz
elegant, sonst kann man natürlich auch mehrere der ADS1100 nehmen für
mehrere Sensoren.
LG Lisa
Peter schrieb:> ADS1115
Der hat wieder eine interne Referenz und kann nicht ratiometrisch. Man
kann aber mehrere ADS1100 parallel an den I2C-Bus hängen, es gibt den
ADS1100 nämlich mit 8 unterschiedlichen I2C-Adressen ADS1100A0 bis
ADS1100A7
>PT1000 würde ich über eine Spannungsteilerschaltung
Ich nicht. Nimm einen ADC mit eingebauten Stomquellen und PGA.
Beispielschaltungen siehe deren APP-Notes.
Hi Lisa,
ich habe für ein bereits realisiertes Projekt ein brauchbares
Thermometer zusammen gesetzt.
Ist zwar primär für Raumtemperatur gedacht, misst aber 0 bis 110 grad
mit Auflösung von 0,12 grad und ist kalibriert bis auf etwa +-1 grad
genau. Eventuell gehts auch besser wenn du mind eine genaue
referenztemperatur hast.
Messwerte werden mittels median verfahren gemittelt um rauschen etc zu
reduzieren.
Zutaten:
Atmega168 mit interner oder wahlweise externer Referenz.
Lm35 Sensor
Ubliche Analogbeschaltung.
Das komplette Projekt (hard/Software) findest du hier:
Beitrag "Röhrenuhr IV-18"
Die temperaturermittlung passiert im wesentlichen in der funktion
read_temperature() welche in der Datei temperature.c zu finden ist, die
Initialisierung des ADC findest du in init.c
Gruss tobi
Hi,
frage mich gerade warum kostet ein gutes Messgerät mehrere Hundert
Euros? (nicht ernsthaft).
Wenn ich einfach ein ADS 1100, der mit Radiometrie, ein PTC (Version
egal), irgend eine Versorgungsquelle, die sogar brummen kann
(Radiometrie!!) und mit einer Anzeige zusammen zimmere und das gleiche
habe.
Ernsthaft?
Schaltungen ohne Abgleich im Temperaturbereich halte ich (Ausnahme IC
Laser getrimmt)für sehr ungenau.("Unsinn"). Ausnahme: dynamische
Temperaturmessung bis 100°C (Elektor).
Lisa deine Schaltung, mit Spannungsfolger bzw. Kompensation (Datenblatt
MCP3424) und Du hast ein Ergebnis.
Tobis Genauigkeit liegt eher bei +-2°C, nach meiner Erfahrung.
Man muss auch die Messgenauigkeit wiederholt darlegen können!!
Peter
Peter schrieb:> Man muss auch die Messgenauigkeit wiederholt darlegen können!!
Man muß gar nichts...meine Raumtemperatur lese ich am Steuergerät der
Heizung ab und das ist es auch schon. Wenn das Aussenthermometer 25°C
sagt, dann wird mir eben richtig warm. Wenn ich die Raumtemperatur auf
z.B. auf 19°C einstelle, dann ist es ungemütlich auf dem Sofa und da ist
es mir egal, ob das nun 292 oder 293 Kelvin sind. Alles Andere ist
relativ, auch wenn aus technischer Sicht gewisse Parameter möglichst gut
und stabil sein sollten.
Gruß Rainer
@Peter:
Welche Erfahrung? Hast du meine Uhr nachgebaut oder beziehst du dich auf
allgemeine Erfahrung mit dem LM35?
Ich denke schon, das es genauer geht. Ich verwende LM35CZ, die etwas
genauere Version.
Nach meiner Erfahrung kommt es bei meiner Schaltung auf die Genauigkeit
der Kalibrierung und der Referenzspannungsquelle im yC an.
Die Referenzspannung im yC hat eine leichte Temperaturabhängigkeit.
Gemessen steigt die Spannung um ca 5 mV an, wenn ich den yC gegenüber
Raumtemperatur um 40 grad erwärme. Das spielt in meiner Anwendung kaum
eine Rolle (bei ca 60 Grad Raumtemperatur hätte ich andere Probleme
g).
Wenn nicht die Raumluft-Temperatur gemessen wird, wird der Einfluss der
Temperaturdrift hier sogar noch geringer. Außerdem kann eine externe
Referenzspannung verwendet werden.
Damit verbleibt die Kalibrierung.
Diese ist bei meiner Schaltung insbesondere bei Verwendung der Referenz
im yC wichtig, da die Referenzspannung leider einer Exemplarstreuung
unterliegt.
Die Kalibrierung sollte möglichst genau bei bekannten und präzise
bestimmten Temperaturen (z.B. 0 und 100 Grad) erfolgen.
Zusätzlich kann in der SW noch eine Feinjustierung erfolgen.
gruß
tobi
Peter schrieb:> Du solltest deine Heizkosten am Ende des Jahres kontrollieren. 1°C kann> zu viel sein.
Ich habe einen Gastank im Garten und muß den seit Jahrzehnten 3x pro
Heizperiode füllen (je 1000). Da brauche ich nichts überprüfen...und
wenn mir die im Wohnzimmer angezeigten 19°C zu kalt sind, dann stelle
ich das Ding höher! So einfach :-)
Gruß Rainer
Hallo Tobi,
etwas abweichend vom Lisa's Thema,
aber nein, nicht dein Aufbau sondern ein Eigener. Ist sicher auch schon
20 bis 30 Jahre her und die guten hat man damals auch nicht bekommen, zu
teuer. Sieht man von den Copper und BB OP's ab, ist heute vielleicht
eine bessere Genauigkeit zu erreichen. Leider liegt mir an Layouts
nichts mehr vor.
Im privaten Bereich bleibt Dir nur EIS_Wasser und Flüssig_Gasübergang
und ein sehr gutes altes Messinstrument. Da hast Du schon +-0,3°C
Abweichung um 0 Grad und sicher > 0,5 -0,7°C Abweichung um 100°C, die
bekommst du nicht weg. Ich kenne auch keinen Klimaschrank ("normal!!"
kosten soviel wie ein Mittelklassewagen) der nicht ein zwei Grad
schwingt, ob -70°C oder 0°C egal. normal braucht das auch keiner.
Exemplarstreuung, aus diesem Grund habe ich damals auf die Dynamische
Temperaturmessung zurückgegriffen. Erst durch den Nachbau dann durch den
Einsatz von LTC1043 wesentlich verkleinert. Es blieb aber beim
Kalibrierungsfehler.
@Lisa
es gibt auch noch ein Adafruit Max31856 Thermoelemente mit SW.
@Rainer
habe ich leider nicht verstand.
Peter
Hallo Lisa,
540 Schritte (~10bit) heißt nicht, dass man direkt einen einfachen ADC
in uC nehmen kann.
Sie sind 10-bit in Atmege zum Beispiel, aber Effective Number of Bits
(ENOB) wird deutlich geringer... Grob 2-3 bits im Daumenregel.
Das heißt die wahre Datei du nimmst wird ungenauer.
Hier bist du mit 13 bit oder höher im sicheren Bereich.
Deswegen gibt es dedizierte ADCs im Markt dafür :-)
Ich habe gesehen es gibt AD7124-4 oder -8 für Temperatur Messungen.
Ratiometric oder Absolute, beide Möglich.
Falls nötig, kann es auch durch Diagnosis für Funktionale Sichere
Anforderungen anpassen.
Es gibt Funktionen für NTC, RTD und TE (z.B. Typ T oder K).
Oder es gibt LTC2983 / 2984 usw.
Das sieht aber eher als sehr angefertigte Lösung. Also, wie Plug und
Play.
Lisa schrieb:> MaWin schrieb:>> Ein einfacher (10 bit) A/D Wandler>> mit vorgeschalteten PRÄZISEN OpAmp-Verstärker könnte da genauere>> Ergebnisse liefern.>> Okay
Nix Okay...
Mawin will auf die früher übliche rein analoge Kompensation per OpV
hinaus. Das kann man noch immer machen, es funktioniert - aber es ist
nicht der Stand der Technik. Der heißt etwa so: AD-Wandlung per
hochauflösendem ADC und danach erst das Abziehen des Offsets und
Applizieren der gewünschten Spreizung im Digitalen.
Nebenher gesagt: Für sowas benutze ich seit langem den AD7714. Der ist
für sowas immer noch gut geeignet, obwohl er mittlerweile nicht mehr der
Neueste ist.
W.S.
Hi,
warum kann man keinen "einfachen ADC" des Prozessor benutzen, für
welchen Nutzer sind diese dann implementiert worden.
Mir fällt da die Autoindustrie ein, oder glaubst Du das separate ADC
eingebaut werden, mehr als selten. Zu teuer.
Mal abgesehen von der Tatsache das auch 12bit'er am Start sind, wie ST32
(im Bastelrahmen). Es kommt doch darauf an wie Du deine Schaltung
aufbaust und die möglichen Referenzen oder evtl. OP's nutzt. Mal
abgesehen von den Möglichkeiten über die SW.
Wenn Lisa Ihr Projekt Blockweise aufbauen will muss auch jeder Block
einmal im Focus stehen. Es gibt zahlreiche Sensoren Exampels von
"Herstellern".
Lisa schrieb:> Ich bin gerade dabei mir die Welt der Microcontroller näher zu bringen> und wollte mal ein Projekt mit Temperatursensoren realisieren.AD7124-x und LTC2983 passen die zu ihren Projekt?
Lisa hat sich inzwischen sicher schon ausgeklinkt.
Ich denke Max 31856 (alle Thermoelemente) oder besser Max 31865 (4
Leiter) (~4 Euro)wären eine gute Wahl.
Peter
Lisa schrieb:> jetzt mittels Tabelle (!?) die Temp. Der Cold-Junction in eine Spannung> wandeln (bsp. 20°C entspricht 0,833 mV) dann rechne ich diese auf meine> am ADC gemessene Spannung drauf (bsp. 8,550 mV) macht 9,383 mV und diese> wandele ich wieder in eine Temp. Um --> irgendwas zwischen 202 und 203> °C.
Temp-Sensor Tabellen findest du bei Afug-Info für NTC und PT Typen
Waren mir eine große Hilfe
http://www.afug-info.de/Download/tab/NTC/http://www.afug-info.de/Download/tab/PT-X-100-500-1000/