Wie dem Titel schon zu entnehmen ist, bin ich aktuell für ein aktuelles Projekt, auf der Suche nach einer einfachen Möglichkeit einen Platin Temperatursensor auszuwerten. Jetzt habe ich allerdings wieder mal das Problem, das die ganze Recherche mich total durcheinander gebracht hat und ich einfach nicht weis wie ich das Problem lösen soll. Meine Anforderungen an die Anwendung: - Genauigkeit im Bereich 0,1°C ist ausreichend - Temperaturbereich -15°C - +200°C - Bis zu 4 Sensoren! Das ganze soll in eine uC Anwendung (XMega, 3,3V), wenn es geht mit so wenig wie möglich Bauteilen, wenn es sich also vermeiden lässt keine OpAmp Schaltung. Nett wäre also eine Schaltung mit nem Sigma Delta ADC AD7792/3/4/5 AD7711 LTC24xx ADS1248 (von TI spez. als Temperatur ADC gelistet) ADS114x Da der uC an einem Schaltnetzteil + Linearreglar läuft, wie kommt man am besten an die benötigten Ref Spannungen? Kennt jemand Schaltungsbeispiele für die ADCs + PT? Wie würdet Ihr das ganze lösen? Vielen Dank & Grüße MK
Hallo Matthias, Deine Genauigkeitsanforderung ist schon hoch. Ich denke , 0,1°C Genauigkeit wirst Du nicht erreichen. Eine aktuelle Lösung wäre eine ratiometrische Messung mit einem SigmaDelta-ADC. Ich habe das mal mit einem MCP3551 umgesetzt. Dazu gibt es auch eine AppNote von Microchip. Die Schaltung ist ziemlich einfach. Suche einfach nach der AppNote. Es wird auch schwer, den Nachweis führen zu können, daß die Genauigkeit im Einsatz vorhanden ist, da ein Thermometer in dieser Genauigkeit schon ziemlich teuer ist. Gruß, Johannes
Nachtrag: AppNote AN1154 von Microchip Gruß, Johannes
Wie lang wären denn die Leitungen zu den Pt100 ? Deine Genauigkeit muß ja besser als 0.05% sein, kannst du die Schaltung kalibrieren oder muß es right-out-of-the-box so genau sein. Der Widerstand ändert sich von 94.12 bis 175.84, also um 86%, um ca. 0.04 pro 0.1 GradC. Wenn der Pt100 mit 0.1V beaufschlagt wird ist deine zu messende Änderung 40uV. Machbar ist das als einfache Spannungsteilerschaltung, aber die absolute Präzision zu erreichen ohne Kalibrierung wird eher nix.
Hallo Johannes, danke schonmal für den Tipp, hab mir das App Note mal angeschaut, auch ein recht interesannter IC, einizger Nachteil, man bräuchte 4 Stück, ein 4 Channel IC wäre besser. Immerhin habe ich dafür dank der App Note nun verstanden, das ich differentielle Inputs benötige :-D Warum sollten 0,1°C Auflösung unrealistisch sein? 0,1°C = 0,4 Ohm beim PT1000 Selbst für einen Temperaturbereich von 1000°C und einer Auflösung von 0,1°C reichen 14Bit, bei einem 24BIT ADC könnte man also locker 10BIT abschneiden. Und mein Temperaturbereich ist ja nur 215° breit. Grüße Matthias
Hallo MaWin Leitungslängen sind im Bereich 20cm max. Zum Kalibrieren hätte ich einen TSIC 206. Wobei die absolute Temperatur gerne um 1°C verschoben sein darf. Wichtiger ist den realtive Temperaturanstig im 0,1° Bereich messen zu können.
>Warum sollten 0,1°C Auflösung unrealistisch sein? >0,1°C = 0,4 Ohm beim PT1000 > >Selbst für einen Temperaturbereich von 1000°C und einer Auflösung von >0,1°C reichen 14Bit, bei einem 24BIT ADC könnte man also locker 10BIT >abschneiden. >Und mein Temperaturbereich ist ja nur 215° breit. Aufloesung und Genauigkeit sind nicht identisch. Mach dir keine grauen Haare, und lass die Genauigkeit bei 1 Grad, auch wenn du 0.01 Grad auflosen kannst. Ich wuerd die Aufloesung trotzdem auf 0.01 Grad spezifizieren.
> Warum sollten 0,1°C Auflösung unrealistisch sein? > Wobei die absolute Temperatur gerne um 1°C verschoben sein darf. Wenn man schon zum Auseinanderhalten von Auflösung und Genauigkeit mehr Lebensjahre braucht als du alt bist, darfst du in Ruhe davon ausgehen, daß du es mit der Genauigkeit nicht mehr hinkriegen wirst. Immerhin sparst du dir rauszufinden wo du Pt100 bekommst die genauer sind als DIN/10tel und das hintenüberfallen wenn du deren Preis hörst.
Hallo Matthias, eine Auflösung von 0,1°C ist kein Problem. Natürlich ist das Signal des PT1000 stärker und deswegen leichter auszuwerten. Ich habe allerdings die Erfahrung gemacht, daß man Analoglayouts besser als 12bit nicht mehr so ohne weiteres aus dem Ärmel schüttelt, wenn man nicht explizite Erfahrung in der Analogtechnik hat. Was die ratiometrische Messung angeht, so ging es mit der AppNote auch mehr ums Prinzip. Es gibt sicher auch 4-Kanal-S/D-ADC mit denen das Prinzip zu realisieren ist. Gruß, Johannes
@MaWin tjaja mein Betriebsstundenzähler in Jahren zählt 24 ja und? Sorry, hatte mich mit der Genauigkeit etwas unglücklich ausgedrückt, also nochmal fürs Protokol, was im Startpost gemeint war ist die ------ Genauigkeit der Auflösung ------ Und nachdem ich letzte Nacht 4 Stunden Schlaf hatte, um 7 wieder Raus musste und 12 Stunden auf Arbeit war, dürfen solche Fehler gerne mal passieren :-) So jetzt würde ich sagen Back to Topic :-) Was nun ja feststeht ist, das mit einem 16BIT differential Sigma Delta ADC und einem PT1000(tausend) die Anforderungen zu decken sein müssten. Da meine Welt eher die digitale als die Analoge ist, hätte mir jemand einen Tip wie hoch Vref zu wählen und woher zu beziehen ist, wenn man in einer uC Umgebung welche 230V -> Schaltnetzteil -> Linearregler gespeist ist, arbeitet. Danke :-)
Der Begriff ------ Genauigkeit der Auflösung ------ ist würdig für die Einreichung als "krummster Fachbegriff des Jahres"
Hallo, ich würde vorschlagen, im Gegensatz dazu die Auflösung der Genauigkeit zu definieren. Gruss Reinhard
Wir können jetzt natürlich noch ewig über falsch gewählte Begriffe sinnieren oder auch mal wieder zurück auf den Boden und zum Thema kommen. Ich als Hobbyist habe einen falschen Begriff gewählt.... Asche auf mein Haupt, Salz in meine Wunden und ab mit mir in die Hölle :-) Der Witz ist dabei, ich habe mittlerweile 20 Threads zum Thema Temperatursensor gefunden, wo leute von Ggenauigkeit sprechen aber Auflösung meinen, dürfen mir alle in die Hölle folgen, wa :-D Scheiß Umgangssprache halt, trotzdem weiß doch jeder was ich meine.... Vll. doch noch jemand eine Antwort zum Thema Vref von 3 Posts weiter oben?
Matthias K. schrieb: > Was nun ja feststeht ist, das mit einem 16BIT differential Sigma Delta > ADC und einem PT1000(tausend) die Anforderungen zu decken sein müssten. PT1000 sind mit den oben genannten ADCs unnötig > Da meine Welt eher die digitale als die Analoge ist, hätte mir jemand > einen Tip wie hoch Vref zu wählen und woher zu beziehen ist, wenn man in > einer uC Umgebung welche 230V -> Schaltnetzteil -> Linearregler gespeist > ist, arbeitet. Vref wird entweder direkt vom Referenzwiderstand abgeleitet oder man nimmt die interne Referenz des ADCs und macht zwei Messungen ADC -> AD7792/3/4/5 Auflösung mit der internen Vref und Stromquelle mit 210 uA: 94.12 Ohm bis 175.84 Ohm ~ 19 mV bis 37 mV Interne Referenz ~ 1.17 V d.h. "nur" Verstärkung 16 möglich 0.385 Ohm/°C * 210 uA ~ 80 uV/°C RMS Rauschen 0.13 uV ~ 0.86 uV p-p -> Auflösung 1/93 °C (mit anderer Referenz und Verstärkung entsprechend höher)
Matthias K. schrieb: > doch noch jemand eine Antwort zum Thema Vref von 3 Posts weiter > oben? für eine absolute Messung begrenzt Vref die Genauigkeit, also kommen nur ultrastabile ICs dafür in Frage. Bei ratiometrischer Messung (Vergleich mit Festwiderstand, wie auch immer verwirklicht) gilt das Gleiche für den Widerstand, während Vref sich rauskürzt und daher nur für die Dauer der Messung stabil sein muss. Gruss Reinhard PS die Hölle ist der richtige Ort, um über Auflösung zu diskutieren. Der Punkt ist, dass gerade bei der Temperatur eine absolute Genauigkeit sehr schwer zu erreichen ist, also schmeisst man sich auf das was einfach geht, hohe Auflösung. Und dann sitzen die Leute im Wohnzimmer und sind stolz, dass ihr Funkthermometer ihnen mitteilt, dass draussen 22,368 Grad Celsius herrschen. Also ist Frühling.
Hallo, wo wir bei diesem Thema sind, hätte ich auch mal eine Frage. Hat von euch schon mal jemand 12bit über einen Messbereich von 0-100°C hinbekommen, so daß die Zehntelstelle ohne Filter nicht gewackelt hat? Gruß, Johannes
Stabil 12 Bit für den 100 Grad Bereich ist nicht schwer. Sind ja auch nur etwa 0,02 C an Auflöung, oder etwa 13-14 Bit für den Widerstand. Gemacht hab ich das schon mal so: per 4 Leitertechnik an ein gutes Multimeter von (HP 3457), und die Umrechnung in Temperatur hat dann der PC gemacht. Das sollten aber auch die oben genannten AD Wandler hinbekommen, wenn man einigermaßen darauf achtet, das man sich nicht zu viel HF Störungen z.B. vom Handy einfängt.
Hallo Ulrich, das mit den Störungen war aber genau das Problem. Der Aufwand für Stör- und Rauschunterdrückung war deutlich größer als die eigentliche Messchaltung. Das ganze lief allerdings auch im Industriellen Umfeld. Am Ende hat der digitale Filter es gerichtet. Mich würde aber mal interessieren, ob es schon mal jemand ohne hinbekommen hat. Das es mit einem Multimeter und anschließender Umrechnung geht, glaube ich gerne. Gruß, Johannes
Johannes V. schrieb: > Hallo, > > wo wir bei diesem Thema sind, hätte ich auch mal eine Frage. Hat von > euch schon mal jemand 12bit über einen Messbereich von 0-100°C > hinbekommen, > so daß die Zehntelstelle ohne Filter nicht gewackelt hat? Ohne welche(n) Filter? Vor (analog) oder nach dem ADC (digital)? Johannes V. schrieb: > Hallo Ulrich, > > das mit den Störungen war aber genau das Problem. Der Aufwand für Stör- > und Rauschunterdrückung war deutlich größer als die eigentliche > Messchaltung. Das ganze lief allerdings auch im Industriellen Umfeld. Am > Ende hat der digitale Filter es gerichtet. Mich würde aber mal > interessieren, ob es schon mal jemand ohne hinbekommen hat. Ja. s. Rechnung von oben zu den AD7793/AD7794 bzw. Beitrag "Re: hochauflösende Temperaturmessung" (Mantel-Thermoelemente + PT100-Kaltstelle)
Hallo Arc Net, ich meinte ohne einen digitalen, in meinem Fall ohne Median-Filter.Ich habe auch beobachtet, daß viele käufliche Digitalthermometer mit etwas ähnlichem arbeiten. Ich meine dies daran zu erkennen, wie die angezeigte Temperatur in gleichmäßigen Schritten einem Temperatursprung nacheilt. Gruß, Johannes
Die meisten der langsamen Sigma-Delta AD wandler haben schon absichtlich ein sehr gut Unterdrückung von 50 Hz und 100 Hz Störungen. Da braucht man eigentlich keine weitere digitale Filterung oder Median-bildung dahinter, wenn man eine lange Wandlungszeit (z.B. 0,25 s) wählt. Filter braucht man ggf. als HF Filter am Eingang. In einer nicht so gestörten Umgebung kann es ggf. auch mal ohne gehen, bzw. mit nur einem Kondensator. Je nach Gerät kann es schon mal sein, das da auch noch ein Digitaler Filter drinsteckt - einige Keathly Multimeter (5-6 Stellen) bieten das an, kann man da aber auch abschalten.
Hallo Matthias K., Du hast in deinem Anfangspost geschrieben, dass du einen XMega verwendest. Dieser hat integrierte 12 bit AD-Wandler mit optionalem Verstärker. Ich mache mit einem Xmega 256A3B und PT1000 eine Temperaturmessung mit einer Auflösung von 0,1K - 0,3K und einem Messbereich zwischen ca. -60°C bis +520°C. Im Bereich von -60°C bis 100°C liegt die Auflösung bei bei 0,1K über 100°C Steigt sie dann auf 0,2K, ab 400°C dann auf 0,3K. Zur Temperaturumsetzung verwende ich eine Tabelle mit 4096 integer-Werten (es ist ja reichlich Speicher vorhanden). Leider konnte ich die absolute Genauigkeit über den gesamten Bereich noch nicht überprüfen aber zur Zeit ist sie für meine Anwendung ausreichend. Eine Kalibrierung im gewünschten Bereich ist aber unerlässlich. Die Ergebnisse der AD-Wandlung zappeln ohne Softwarefilter um + - 1 d.h. die Anzeige bei 0°C schwankt zwischen -0,1°C , 0°C und + 0,1°C. Mit Mittelwertbildung lässt sich das Zappeln fast vollständig verhindern. MFG Jürgen
> so daß die Zehntelstelle ohne Filter nicht gewackelt hat? Blödsinnsanforderung. Es gibt immer einen Filter, eben um Störungen abzuhalten, ob der nun analog oder digital realisiert ist. Relevant ist nur, daß sich die Anzeige nach einer gewissen Zeit einpendelt (und die Zeit ist viel kleiner als die Temperaturänderungsgeschwindigkeit), also nicht nur in 10er Schritten anzeigt... Sicher bekommt man stabile 0.1 GradC hin, macht jedes chinesische Zimmerthermometer, sogar ganz ohne expliziten A/D-Wandler http://www.ti.com/lit/an/snoa328/snoa328.pdf ob Auflösung oder Genauigkeit sollte ja nun in diesem Thread hinreichend geklärt sein.
Nabend Zusammen, vielen Dank für die rege und sachliche Teilnahme :-) @Arc Net, danke für die Beispielrechnnung. @Reinhard, danke für die Erklärung Und ich will weder die Hölle noch das Wetter auf das tausendstel genau messen :-D Wie gesagt auf das Zehntel reicht schon. Da ich ja kein Geheimnis daraus machen will, was das ganze wird. Ich habe einen Wasser/Druck Kessel 300ml mit 1500W Heizung und Ventil Die Sensoren brauche ich für eine Regelung welcher ich eine KI verpassen möchte. Hinter dem Kessel sind Kupferrohre und eine Austrittsdüse. An dieser Austrittsdüse soll bei Bedarf immer eine konstante Wassertemperatur zur Verfügung stehen. Daher muss die Reglung entscheiden können okay Kessel hat aktuell 77,7°C Heizung muss für 23,7 Sekunden laufen um am Austritt auf 96,5°C zu kommen. Daher ist auch die absolute Temperatur weniger wichtig, da mit einem TSIC306 eingemessen wird und auf den Bedarf passend eingestellt wird. @Jürgen Klingt ja sehr interessant und vielversprechend. Hast du von deinem Aufbau einen Schaltplan und solltest du in C programmieren die passende Source dazu? Grüße
Hallo Matthias, mit C kann ich leider nicht, aber in Bascom sieht die initialisierung des Analogports so aus: "Config Adca = Single , Convmode = Signed , Resolution = 12bit , Dma = Off , Reference = Intvcc , Event_mode = None , Prescaler = 32 , Ch0_gain = 4 , Ch0_inp = Diffwgain , Mux0 = &B00000011" "Reference = Intvcc" bedeutet, dass die Versorgungsspannung geteilt durch 1,6 als interne Referenz verwendet wird. Dadurch erfolgt die AD-Messung ratiometrisch, so dass die höhe der Versorgungsspannung keinen Einfluss auf das Messergebnis hat. Um die Abweichungen durch Änderung der Betriebstemperatur zu kompensieren verwende ich einen Eingangsport mit einem möglichst temperaturstabilen Referenzwiderstand. MFG Jürgen
Hallo Jürgen, danke für das Beispiel. Wenn ich das richtig verstanden haben nimmst du die Vcc was über eine Induktivität und mit Kapazitäten Avcc ergibt. Dieses Avcc dient auch als Versorgung für Spannungsteiler-PT1000 welche an den pos. Diff. Channel(0,85V - 1V) geht und für den Referenzspannungsteiler(613 Ohm zu 470 Ohm >> 1,43V) welcher an den neg. Diff. Channel geht. Da ich noch keinen PT1000 hier habe, habe ich mal Versucht das ganze mit einem Poti nachzustellen. (900-1100 Ohm) Allerdings habe ich das Problem, dass sobald ich dieses Glied dann mit Port 2 (pos. Diff Chan) verbinde, dieser auf GND gezogen wird. Hat da jemand ne Erklärung für? Dient der Varistor als Schutz in der Beschaltung? Habe diesen weggelassen, da er ja sowieso hochohmig sein müsste. Config des XMegas ist aktuell: ADCA.CTRLA = 0x01; //Enable ADC ADCA.CTRLB = 0x10; //12 bit Signed ADCA.REFCTRL = 0x02; // Interne 1V bandgap als Referenz ADCA.PRESCALER = ADC_PRESCALER_DIV64_gc; // 64er Prescaler ADCA.CH0.CTRL = 0x13; //Diff. mit Gain 16x ADCA.CH0.MUXCTRL = 0x10; // PORTA:2 pos + PORTA:4 neg
Johannes V. schrieb: > Hallo Arc Net, > > ich meinte ohne einen digitalen, in meinem Fall ohne Median-Filter.Ich > habe auch beobachtet, daß viele käufliche Digitalthermometer mit etwas > ähnlichem arbeiten. Ich meine dies daran zu erkennen, wie die angezeigte > Temperatur in gleichmäßigen Schritten einem Temperatursprung nacheilt. Mit einem minimal komplexeren Filter könnte man so was verhindern... Adaptiver (exponentieller) Mittelwert (meine zumindest das der so heißt)
1 | diff = | new - output | |
2 | if diff > largeThreshold then |
3 | output = new |
4 | else if diff > mediumThreshold then |
5 | output = ((expConstMed - 1) output + new) / expConstMed |
6 | else |
7 | output = ((expConstSmall - 1) output + new) / expConstSmall |
Sind die expConst jeweils Zweierpotenzen reichen Shifts.
Nachlaufende Messwerte sind meistens dann zu sehen wenn der Meßwert einfach beruhigt wird. Man definiert dazu ein Delta (wann darf der neue Messwert auf die Anzeige gebracht werden) und das kann dann einfach so aussehen.
1 | if (measVal > AdcVal) { |
2 | (measVal - AdcVal > AdcWindow) ? (AdcVal = measVal) : (AdcVal += 1); |
3 | } else if (measVal < AdcVal) { |
4 | (AdcVal - measVal > AdcWindow) ? (AdcVal = measVal) : (AdcVal -= 1); |
5 | }
|
...
Hallo Matthias K., > Dieses Avcc dient auch als Versorgung für Spannungsteiler-PT1000 welche > an den pos. Diff. Channel(0,85V - 1V) geht und für den > Referenzspannungsteiler(613 Ohm zu 470 Ohm >> 1,43V) welcher an den neg. > Diff. Channel geht. ich habe leider die Widerstandswerte falsch angegeben; nimm anstelle der 613 Ohm einfach 820 Ohm, das ergibt dann einen Messbereich von ca. von -56 bis 530°C > Dient der Varistor als Schutz in der Beschaltung? ja, ich habe auch längere Fühlerleitungen > ADCA.CTRLA = 0x01; //Enable ADC > ADCA.CTRLB = 0x10; //12 bit Signed > ADCA.REFCTRL = 0x02; // Interne 1V bandgap als Referenz änder zu: ADCA.REFCTRL = 0x01 //internal Vcc/1,6 > ADCA.PRESCALER = ADC_PRESCALER_DIV64_gc; // 64er Prescaler > ADCA.CH0.CTRL = 0x13; //Diff. mit Gain 16x ändern zu: Diff. mit Gain 4x > Allerdings habe ich das Problem, dass sobald ich dieses Glied dann mit > Port 2 (pos. Diff Chan) verbinde, dieser auf GND gezogen wird. > Hat da jemand ne Erklärung für? evtl. JTAG Fuses? oder Portkonfiguration(inputt, Pull Up../ down) > ADCA.CH0.MUXCTRL = 0x10; // PORTA:2 pos + PORTA:4 neg
Hallo Jürgen man sollte es nicht glauben, ich hatte die Port Einstellung 1000 mal kontrolliert. Nachdem du es jetzt nochmals erwähnt hast und 5 Kaffee später musste ich doch tatsächlich feststellen, dass der komplette Port A als Ausgang definiert war :-S Naja Schaltung läuft jetzt. Herzlichen Dank :-) Jetzt gehts an Widerstände anpassen. Kann mir jemand bei der Formel für den Spannungsteiler der mittleren Schaltung helfen. Vereinfacht müsste diese doch so aussehen !? |-----( 10k ) --- uC -- GND (pos. Diff Channel) V+ ---(2,7k)--- |-----(0,8k - 1,4k)--- GND Die Rechte Parallelschaltung liegt dann im Bereich von ca. 740 - 1230 Ohm. Rges in folge dessen bei ca. 3440 - 3930 Ohm. Ergibt am Spannungsteiler eine Spannung von 0,71V - 1,03V (bei V+ =3,3V) So und wo ich nicht mehr weiter komme, wie Teilt sich die Spannung über die zwei GND Stränge auf? Angenommen der PT1000 ist bei 0°C und 1000 Ohm, also wiederrum Rges von 11k. Teilt sich die Spannung dann in 1/11 über uC und 10/11 direkt zu GND auf?
Matthias K. schrieb: > So und wo ich nicht mehr weiter komme, wie Teilt sich die Spannung über > die zwei GND Stränge auf? Angenommen der PT1000 ist bei 0°C und 1000 > Ohm, also wiederrum Rges von 11k. Teilt sich die Spannung dann in 1/11 > über uC und 10/11 direkt zu GND auf? Oh mein Gott... Vergesst den Teil bitte ganz schnell wieder.... Klar über beide läuft die selbe Spannung mit einem unterschiedlichen Strom.... Wald und Bäume und so......
Hallo Matthias, im Anhang ist noch eine Tabelle mit den berechneten Werten für die Widerstände : GND --- 470 Ohm--- Vneg --- 820 Ohm --- AVcc GND --- PT1000---- Vpos(AD-Port) --- 2700 Ohm --- AVcc Die Berechnung mache ich mit QPW. Gruß Jürgen
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.