Forum: Mikrocontroller und Digitale Elektronik Präzisions Temperaturmessung


von Malte Struebert (Gast)


Lesenswert?

Hallo,

ich möchte gerne ein Präzisions Temperaturmessgerät entwickeln.
Als Sensor soll ein NiCr-Ni Sensor mit einem Temperaturbereich von
0-1150°C eingesetzt werden.

Hat jemand Informationen (Webseiten o.ä.) darüber wie eine
Messschaltung bzw. die Anbindung eines solchen Sensors an einen
AD-Wandler auszusehen hat bzw. was man alles für eine Präzisionsmessung
beachten muß?

Gruß
Malte.

von Gerhard Gunzelmann (Gast)


Lesenswert?

Hallo Malte

da gibts ein paar fertige IC's: z.B. AD594 von Analog devices, und
eines von Maxim. Selber entwickeln ist nicht einfach, da NiCrNi-Draht
eine Spannung liefert und nicht wie PT100 seinen Widerstand ändert.


Gerhard

von Malte Struebert (Gast)


Lesenswert?

Hi,

das ist mir schon klar, ich wollte mich aber grundsätzlich mal mit der
Materie befassen um das ganze besser zu verstehen.

Gibt es vieleicht ein paar gute Info Seiten über solche Sensoren mit
Kennlinien oder ähnlichem?

Da die NiCr Sensoren ja grundsätzlich spannungen im mV bereich haben
ist ja auch der Eingangswiderstand der Messchaltung nicht irrelevant...
mich interessiert halt wie sowas grundsätzlich präzise gemessen werden
kann.

Aber danke schonmal für die Info...

Gruß
Malte.

von Peter D. (peda)


Lesenswert?

Was ist denn bei Dir "präzise" ?

10° Genauigkeit kann man mit etwas Aufwand erreichen.
Darunter hast Du als Bastler kaum Chancen in einem so großen
Temperaturbereich.


Peter

von Gerhard Gunzelmann (Gast)


Lesenswert?

Hallo Malte

versuchs doch mal bei Analog Devices und MAXIM, evtl haben die ja bei
den Datenblättern der Bauteile was zu dem theoretischen Teil des
Problems stehen, ist halt wohl auf englisch.


Gerhard

von Gerhard Gunzelmann (Gast)


Lesenswert?

Noch was Malte

Peter Dannegger hat Recht: mit selber gebauten Lösungen kann man zwar
lernen zu verstehen, wie das zeug funktioniert, aber wie eichste das ?

Nach meiner Erfahrung geht das noch am Besten mit PT100. Da gibts
Tabellen mit den Widerstandswerten in Abhängigkeit von der Temperatur.
da kannste den Fühler in kochendes Wasser stecken, den Widerstand
messen, in der Tabelle nachsehen, dann haste die Temperatur, PT100 an
die Schaltung anschließen und auf den richtigen Wert einstellen. der
Spaß hört aber schnell auf, weil auch der PT100 nicht ganz linear ist.


Gerhard

von Gast (Gast)


Lesenswert?

Hallo zusammen,

zugegeben, die Thermoelementemessung ist nicht ganz einfach. Wenn man
die Messgenauigkeit in den Bereich besser 1°C treiben will ist
allerdings ein nicht unerheblicher Mathematischer Aufwand auf der
Softwareseite notwendig. Unmöglich ist es aber nicht. TE-Messung ist
quasie mein tägliches Brot und da schaffen wir problemlos eine
Genauigkeit des Messgerätes von 0,1°C. (16 Bit AD-Wandler, sehr genaue
Referenz, umfangreiche Polynomberechnung). Bitte aber beachten, das ist
die Genauigkeit des Gerätes und nicht die des Systems, bestehend aus
Thermoelement und Gerät. Diese ist immer schlechter, denn die von einem
Thermoelemente abgegebene Spannung ist zwar in der Norm EN 60584-1
genormt, nur weiss das nicht jedes Thermoelement.
Ein Thermoelement verhält sich wie eine Spannungsquelle. Der
Innenwiderstand ist dabei nicht so schlecht wie man vermuten könnte. Er
liegt im Bereich von einigen Ohm und übersteigt nur selten 100 Ohm. Dies
bedeutet, dass die Messsignalaufbereitung zunächst nicht all zu
anspruchsvoll ist. Ein Eingangswiderstand mit einigen 100 KOhm ist
ausreichend. Wichtiger ist, dass der Messverstärker einen kleinen
Offset hat (den kann man aber auch abgleichen) und was noch wichtiger
ist eine kleine Offsetdrift.
Ganz wichtig ist zu wissen, dass die Spannung die ein Thermoelement
abgibt, proportional der Temperaturdifferenz zwischen Messstelle und
Vergleichstelle ist. (Die Vergleichstelle ist dort, wo die Drähte des
Thermoelementes mit der Messschaltung verbunden werden.) Hat z.B. die
Messstelle 200°C und die Vergleichstelle 25°C, so wird man eine
Spannung messen, die 175° repräsentiert. Wäre die Vergleichstelle auch
200°C heiss, so würde überhaupt keine Spannung abgegeben. Man muss also
für eine Temperaturmessung zwei Messungen durchführen.
1.) Spannung des Thermoelementes messen
2.) Temperatur an der Vergleichstelle ermitteln (macht man meist mit
einem NTC) und diese Temperatur in eine äquivalente Spannung
umrechnen.
3.) Die Spannung aus (1) mit der Spannung aus (2) addieren und dann
nach der EN 60584-1 in die Temperatur umrechnen. Das ist alles.

Weiterführende Infos findet man sicher im Internet. Empfehlen würde ich
für das Verständnis würde ich den Klassiker "Halbleiter
Schaltungstechnik" von Titze/Schenk. Dort findet man eigentlich alles.
Diese Schwarte liest sich zwar nicht wie ein Roman, aber man liest darin
immer öfters.

Was das Abgleich anbelangt (Eichen tun nur die Eichbehörden) ist echt
nicht ganz einfach. Da kommst du um einen sehr präzisen Spannungsgeber
nicht herum. Der kostet, wenn er etwas taugen soll, allerdings gleich
mehr als 1000 Euro.

In diesem Sinne, viel Erfolg.

von Dominic Thomé (Gast)


Lesenswert?

Hatte vor kurzem das lgeiche vor, und auch gemacht .....
Hatte zuerst einen stinknormalen OP verwendet, ja, dumm gelaufen, der
hate eine Uoffset von einigen mV, was dann etlichen °C entspricht.
Nun mit einem LT1014 (Reichelt, 6,3 €) geht es ganz gut.
Wie kann ich eigentlich am besten externe Störungen (Peaks der
Motorsteuerung) am besten rausfiltern, hat da mal einer einen Tip.

Ich bin mal so frei :
Polynome Berechung der Temperatur :
#include "mte.h"
double multi (double what, int often) {
  while (--often > 0)
    what=what*what;
  return what;
}

double polygone (double local,double b1, double b2, double b3) {
  return (  b1*local+
        b2*multi(local,2)+
        b3*multi(local,3)
      );
}
double  calcThermoCouple (int  value,double vref,char which,int reftemp)
{
  double local = (value/1023.0)*(vref); // in mV because OPAMP have
G=101
  double ret=reftemp;

  //convert local into correct mV-Level
  if (local<0) local=0;
  else local =local*1000.0/101.0;
  switch (which) {
    case KTYPE: // K-Typ
      ret = polygone(local,25.4176,-9.15598E-2,1.50829E-3);
      break;
    case JTYPE: // J-Typ
      ret = polygone(local,20.0416,-9.81011E-2,8.25592E-4);
      break;
    case TTYPE : // T-Typ
      ret =  polygone(local,27.3747,-0.608074,9.68019E-3);
      break;
    case RTYPE : // R-Typ
      ret =  polygone (local,136.086,-45.3369,0.128384);
      break;

      default:
      ret=value;
  }



  return (ret+reftemp);
}



Und hier die Header:
#ifndef MTE_H
#define MTE_H
#include <inttypes.h>
double multi (double what, int often);
double polygone (double local,double b1, double b2, double b3);
double  calcThermoCouple ( int value,double vref, char which,int
reftemp);
enum ThermoCoupleType {    MINTYPE,
              NONE,
              JTYPE,
              KTYPE,
              TTYPE,
              RTYPE,
              MAXTYPE };
int8_t EGT1Type;
int8_t EGT2Type;
int8_t EGT3Type;
int8_t EGT4Type;

#endif


Und hier noch als Java-Test zum kurzen anschauen und vergleichen:
/*
 * mte.java
 *
 * Created on 13. November 2003, 11:54
 */

/**
 *
 * @author  Thome
 */
public class mte {

    /** Creates a new instance of mte */
    public mte() {
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        double a1,a2,a3,vmax,vmaxalt;
        a1=3.93982/100;
        a2=1/100000;
        a3=4.01235/1000000000;
  vmaxalt=0;
        for (int i=0;i<=1023;i++) {
            vmax = a1*i + a2*(i*i) + a3*(i*i*i);
            System.out.println("Temp : " +i + " GradC    Utemp:
"+vmax+ " mV" + "delta :"+ (vmax-vmaxalt));
      vmaxalt=vmax;
        }

    }

}

von crazy horse (Gast)


Lesenswert?

schöne Sachen zum Thema gibts auch bei LT.

von Tassilo (Gast)


Lesenswert?

Hi Dominic,

>(Peaks der Motorsteuerung) am besten rausfiltern, hat da mal einer
>einen Tip

Versuche es mal mit einem MAX280!

Hast Du eine Diff-messung oder eine geben GND?

Liebe Grüße
Tassilo

von Dominic Thomé (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
Die Messung geht gegen GND. Warum ausgerechnet Hardware ?
Überdenke gerade die Messituation in Formeiner Softwarelösung. Mal
kucken was dabei rauskommt, bin ja schliesslich geizig und das Layout
schon fertig ;) Hier mal als Bild noch mit dem LM324 anstatt LT1014.

Dominic

von Tassilo (Gast)


Lesenswert?

Hi Dominic,

eine Messung gegen GND ist bei TC's immer schlecht. - wie Du siehst!!

Software seitig würde ich einen Mittelwertfilter und die Gültigkeit der
Werte abfragen! - Wenn ein Wert extrem daneben ist, dann schmeiß ihn in
den Mülleimer!!!

z.B. 20,5°C ; 20,9°C ; 20,3°C ; 500°C ; 20,5°C


Liebe Grüße
Tassilo

von Jan (Gast)


Lesenswert?

Hallo Malte !!

Schau doch mal auf der Homepage der Fa. JUMO (www.jumo.net). Dort
gibt's ANs zum Thema Thermoelemente , Widerstandsthermometer und
Regelungstechnik zum Download.

Gruss

Jan

von Malte (Gast)


Lesenswert?

Hallo,

hmm das es nicht einfach wird ist mir klar... ich hätte halt schon
gerne eine messgenauigkeit im bereich von 1-2°C

Wie exakt lässt sich denn die Temperatur mit hilfe eines standard ICs
(wie eben von Maxim oder Analog Devices) bewerkstelligen?

Klar das kommt dann letztendlich auf den AD Wandler an aber wie exakt
wären denn diese ICs?

Die Firma Greisinger z.B. stelle ja recht präzise instrumente her,
leider erfüllen die günstigeren nicht meinen Funktionsumfang den ich
gerne hätte und die anderen sind etwas zu teuer. Ausserdem interessiert
mich ja die Technik an sich. Von daher scheue ich auch evtl. auftretende
Mehrarbeit nicht.

Wie detailiert geht denn der Tize/Schenk auf so sachen wie
Temperaturkompensation u.ä. ein?

Gruß
Malte.

Gruß
Malte.

von Dominic Thomé (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Malte,
das kannst Du Dir ganz leicht selbst ausrechnen.
Einfach den Javakompiler anwerfern und das kleine Javaprogrämmchen(für
K-Typ) laufen lassen. Dann weisst Du in etwas wieviel mV Du pro °C
erhälst. Im Schnitt sind es 0.05mV pro °C, also wirklich nicht viel.
Ich habe mal die Ausgabe von mte.java als Anhang drangehängt.
Also 1°C ist sicherlich theoretisch kein Problem, in der Praxis kommen
dann die Probleme wie ich sie dank meiner Blauäugigkeit habe ;)

Dominic

von Dominic Thomé (Gast)


Lesenswert?

Hi Tassilo,

an den Mittelwertfilter habe ich auch schon gedacht, genauso wie an die
Gültigkeitsprüfung. Bei der Gültigkeitsgeschichte ist es nur blöd, daß
innerhalb weniger Messpunkte große Temperaturdifferenzen auftreten
können. Aber das sollte ja dann pro Messblock geprüft werden können.

Wenn ich Dich richtig verstehe, soll ich 'einfach' nur den OP als
Differenzverstäker betreiben und meine Probleme lösen sich in
wohlgefallen auf ? Klingt logisch, da dann auf beiden Eingängen der
hoffentlich die gleiche Störgröße einwirkt. Dann habe ich dummerweise
doppelt soviele Leitunen, das freut den Kunden überhaupt nicht :(

Dominic

von crazy horse (Gast)


Lesenswert?

auf dich werden noch ganz andere Probleme zukommen, von denen du bis
jetzt wahrscheinlich nicht einmal gewusst hast, dass die existieren:-)
als da wären:
-jede Verbindung zweier verschiedener Metalle erzeugt eine
Kontaktspannung
-jede Verbindung zweier verschiedener Metalle ist selbst schon wieder
ein Thermoelement
einfach mal ein Thermoelement an einen mittelprächtigen OP anklemmen
und Präzision erwarten, dass kann nichts werden.
Zur Drift kommen Rauschen und Fehler des ADCs dazu.
An die Kaltstellenkompensation hast du gedacht?

von Nico (Gast)


Lesenswert?

Hallo,
für diese Aufgabe eignet sich der OP MAX 4238 bzw. MAX 4239 sehr gut;
da:
Geringe Offset Spannung: 0.1 µV
Geringer Drift:          10 nV/°C

Oder der MAX 6675 mit integrierter Kaltstellenkompensation und
digitaler Schnittstelle (SPI).
Eventuell vorhandene Störungen würde ich mit Hilfe eines
Tiefpassfilters (FIR) in Software herausfiltern.

Gruß Nico

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.