www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Präzisions Temperaturmessung


Autor: Malte Struebert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Malte Struebert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dominic Thomé (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;
        }

    }

}

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schöne Sachen zum Thema gibts auch bei LT.

Autor: Tassilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dominic Thomé (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Tassilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Malte (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dominic Thomé (Gast)
Datum:
Angehängte Dateien:
  • aa.txt (74,6 KB, 220 Downloads)

Bewertung
0 lesenswert
nicht 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

Autor: Dominic Thomé (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.