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 ADS1100 https://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
Der ADS1119 käme noch infrage https://www.ti.com/product/ADS1119 da kann man interne Referenz abschalten und Vdd nehmen
>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
Das ist richtig, aber es lassen sich mit geringen Anpassungen auch andere Sensoren verwenden.
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
Hallo Lisa, schau mal hier, von Adafruit Max31865 als Referenz. Fix und fertig. https://learn.adafruit.com/adafruit-max31865-rtd-pt100-amplifier/arduino-code Peter @Rainer Du solltest deine Heizkosten am Ende des Jahres kontrollieren. 1°C kann zu viel sein.
@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
Peter schrieb: > @Rainer > habe ich leider nicht verstand. ...mach dir keine Sorgen, ich habe genug :-)
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/
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.