mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik NTC - Frage zum Verständnis


Autor: Maik (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte einen NTC als Temperaturfühler an den ADC eines µCs hängen. 
Dazu würde ich einen Spannungsteiler mit 100K und dem NTC 47K aufbauen.

Wenn ich nun im Datenblatt nachsehe stellen sich mir folgende Fragen:

1. Auf Seite 3 steht bei 47K der Typ wäre 4012, mit einem 
Widerstandswert bei 25°C von 3455 Ohm (+- 3%) Wieso ist der dann mit 47K 
angegeben? Wenn er doch bei 25°C bestimmt wird?

2. Also weiter auf Seite 10.
- T(°C) ist die Temperatur
- B25/100 ist mir nicht ganz klar, B25 wird der Widerstand bei 25°C 
sein. Was bedeutet die 100?
- Was bedeutet RT/R25 was gibt dieses Verhältnis an?
- und was bedeutet das alpha % / K ?

3. Wenn ich in meinem µC die Temperatur in Abhängigkeit von gemessenm 
Widerstand (Spannung) berechnen will. Muss ich wohl eine Formel 
erstellen. Wie kann ich dort am besten vorgehen? Ich hätte jetzt die 
Tabelle aus dem Datenblatt in EXCEL eingetragen und mir die Formel 
ausgeben lassen. Ist das der richtige Weg oder geht das einfacher?

Danke für Eure Antworten
Maik

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich glaube da bringst Du war durcheinander. Auf Seite 3 stehen in der 
ersten Spalte die von Epcos angebotenen NTC´s dieser Serie (1k - 470kOhm 
@ 25°C). Die zweite Spalte gibt den characteristischen Temperaturverlauf 
an, diesen kannst du dir in den hinteren Tabellen anschauen und die 
Werte z.B. für deine Lookup-Table nutzen oder anber du benutzt den Wert 
aus der dritten Spalte (B-Wert) und berechnest den Kurvenverlauf R=f(T) 
nach einer Formel (Formel steht u.a. im Tabellenbuch, Tieze/Schenk, 
I-Net etc.)

Bei der Umsetzung würde ich dir empfehlen, den Kurvenverlauf 
stückchenweise zu liniearisieren und dann als Tabelle abzulegen. Der 
aktuelle Temperaturwert kann dann mit der Formel :

f(x) = f_0 + ((f_1 - f_0 / x_1 - x_0) * (x - x_0)) berechnet werden.

          f  ^
             |
         f_1 +                     *
             |                    /
             |                   /
         f(x)+                  /
             |                 /    teil-linearisierte Strecke
             |                /
             |               /
         f_0 +              *
             |
             |
             --------------+-----+--+------> x
                         x_0     x  x_1

Autor: Christian Funke (funke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

zu 1. und2.: Also der Typ heißt 4012, gehst du nun auf Seite 10, und 
guckst in der Spalte "4012" nach, so findest du hier das 
Verhältniss(Rt/Rt25) zwischen Grundwert (47k) und dem Wert bei der 
jeweiligen Temperatur. Sprich bei 50°C (Rt/Rt25 = 0.33229) hast du einen 
Widerstandswert von 15,61763 kOhm, da 47k * 0.33229 = 15,61763k ist. Auf 
Seite 21 findest du zudem eine Legende wo B25/100 erklärt wird, es 
handelt sich hierbei um den sogenannten B-Wert, wobei es sich hier um 
die Materialkonstante handelt.
Alpha in (%/K) ist der Temperaturkoeffizient, der sich natürlich im 
Laufe der Erwärmung stetig ändert, da NTC's bekanntlich eine 
nichtlienare Kennlinie haben, im Gegensatz zu z.B. Festwiderständen oder 
Platin-PTC's.
Alpha- und B-Wert sind so lange uninteressant für dich, wie du dich an 
die Tabelle hälst. Willst du genauere Werte, z.B. bei 47,52°C, so musst 
diese Werte benutzen und in der Formel Rt=Rn * e^(B*((1/T)-(1/Tn)) 
einsetzen. Rn und Tn sind jeweils Nennwiderstand und Nenntemperatur, 
sprch 47k bei 25°C.

Hoffe das hilft schon mal, und es ist verständlich genug

Autor: Maik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke für Eure Ausführungen. Jetzt ist mir einiges klarer.

@Gast
Bei der stückweisen Linearisierung muss ich im µC einen recht hohen 
Aufwand treiben. Da ist mir die Berechnung der e-Funktion sympatischer. 
Ich hoffe auch genauer.

@Christian Funke
Interpretiere ich die Formel ( Rt=Rn * e^(B*((1/T)-(1/Tn)) ) so richtig?

Rt = Widerstand bei aktueller Umgebungstemperatur(z.B. 50°C)
Rn = 47k (Nennwiderstand )
B = 4355 (B-Wert, Widerstandsmessungen bei 25 °C und 100 °C)
T = aktuelle Umgebungstemperatur
Tn = 25°C (Nenntemperatur)

D.h. wenn ich vom gemessenen Widerstand auf die Temperatur  kommen will, 
muss ich die Formel nach T umstellen?

Was mache ich aber mit alpha?



Maik

Autor: Maik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe mal versucht anhand der Formel die Tabellenwerte nachzurechnen. 
Das klappt aber nicht. Irgendwas setze ich wohl noch falsch ein.
Kann mir jemand noch mal auf die Sprünge helfen?

Maik

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Temperaturen sind in Kelvin und nicht in Grad einzusetzen!!

Dann sollte es gehen.

hans

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Bei der stückweisen Linearisierung muss ich im µC einen recht hohen
>Aufwand treiben. Da ist mir die Berechnung der e-Funktion sympatischer.
>Ich hoffe auch genauer.

Das will ich mal stark bezweifeln, dass eine e-Fkt im µC einfacher zu 
berechnen ist... genauer ist sie auf jedenfall nicht!
Denn die Formel Rt=Rn * e^(B*((1/T)-(1/Tn)) ist auch nur eine Näherung.
Die genaueste Abhängigkeit des Widerstands von der Temperatur findet 
sich immer noch in der R-T-Tabelle des Datenblatts!

Autor: Simu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zuerst sollte man sich ueberlegen, welche Genauigkeit man braucht, wie 
genau der Sensor ist, und dann kann man auch eine aussage machen, ob 
allenfalls eine Polynom approximation sinvoll ist. Ich glaube mich zu 
erinneren, dann man mit einer Taylorreihe bis zur 6 Potenz um die Mitte 
des interessanten Bereiches schon relativ gut dabei ist.

Autor: Maik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefan,

wie würdest Du die Berechnung der Temperatur im  µC vornehmen?
Muss man nicht die Tabelle aus dem Datenblatt komplett in den µC 
eintragen und dann zwischen den Angaben ( 47.000 - 37.272 ) jeweils die 
Temperatur aus dem Widerstandswert ermitteln?

Maik

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maik schrieb:
> Hallo Stefan,
>
> wie würdest Du die Berechnung der Temperatur im  µC vornehmen?

Ich würde als erstes hergehen und mir mit der Tabelle im Excel ein Sheet 
basteln, bei dem ich mit den Tabellentemperaturen die Widerstandswerte 
ausrechne, damit in den von dir dimensionierten Spannungsteiler gehe und 
die Umrechnung in ADC Werte mache.

Ziel ist es, ein Diagramm zu erhalten in welches ich mit den ADC Werten 
hineingehen kann und daraus die Temperatur ablesen kann.

Dann lege ich fest, welcher Temperaturbereich mich überhaupt 
interessiert und ich schau mir im Diagramm an, wie in diesem Bereich die 
Kurve verläuft. Gibt es ein Polynom mit Grad 2 oder 3, welches diese 
Kurve hinreichend gut annähert? Dazu muss ich festlegen, was für mich 
'hinreichend gut' bedeutet. Also bstimme ich mir ein derartiges Polynom 
(oder lasse das Excel machen) und lass mir in einer weiteren 
Tabellenspalte die Differenz der Polynomumrechnung zum Wert, den ich aus 
der Tabelle erhalten würde ausgeben. Ist die Abweichung für mich 
akzeptabel genug, dann nehme ich das Polynom. Ansonsten nehme ich die 15 
oder 20 Werte, die ich aus der Tabelle brauche, rechne auf die ADC Werte 
zurück und schreib mir Code, der für einen gegebenen ADC Wert die 
jeweils benachbarten Tabellenwerte sucht und dazwischen linear 
interpoliert.

> jeweils die
> Temperatur aus dem Widerstandswert ermitteln?

Im Prinzip ja. Aber so macht man das nicht. Letztenendes hast du ja den 
Widerstandswert nicht, sondern du hast die Spannung im Spannungsteiler, 
ausgedrückt durch eine Zahl, die dir der ADC gibt. Der Widerstandswert 
an sich interessiert nicht, deine Umrechnung geht von diesem ADC Wert 
weg und liefert eine Temperatur. Je mehr Berechnungen du im µC machst, 
desto
* langsamer
* ungenauer
wird das Ganze. Also musst du dir im Vorfeld schon möglichst viele 
Berechnungen aus dem µC herausziehen und in deiner Vorbereitungsphase 
erledigen.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Prinzipiell JA, am besten gehst du so vor :

Der NTC ist i.d.R. der Teil eines Spannungsteilers welcher mit der einen 
Seite an GND angebunden ist und mit der anderen die Verbindung des 
analogen Pin des µC darstellt.

Nun musst du zuerst den Spannungsteiler dimensionieren, d.h. den zweiten 
Widerstand des Spannungsteilers so auslegen, dass der Spannungshub im 
gewünschten Temperaturbereich (z.B. -20 ... +50°C, hängt von deiner 
Anwendung ab) sehr hoch ist. Ein Bsp: Sollte es möglich sein mit einer 
Dimensionierung einen Hub von 4V (-20°C = 4.5V und +50 = 0.5V am 
AD-Eingang) zu erreichen, dann hättest du eine Auflösung bei 10Bit von 
0.086°C. Um das Maximum des Spannungshubs herauszufinden musst du bei 
deiner Dimensinieren einwenig mit Excel spielen.

Nachdem der Spannungsteiler dimensioniert ist, solltest du nun in Excel 
die Informationen über Temperatur in Abhängigkeit des AD-Wanderwertes 
vorliegen haben T = f(AD). Die Kurve stellst Du grafisch dar und fänst 
an sie linearisieren (so wie ich gestern vorgeschlagen habe!). Du wirst 
sehen, dass am Ende eine Tabelle von weniger Zeilen benötigt wird als 
ursprünglich in deiner Vorbetrachtung notwendig war.

Ich gebe dir recht, dass die Erstellung der Funktion zur Berechnung der 
aktuellen Temperatur auf der teillinearisierten Geraden einen gewissen 
Aufwand darstellt. Wenn du die Funktion aber allgemeingültig definierst, 
dann schaffst du dir ein universelles Tool für die Zukunft. Hier ein 
Ansatz :

1) Eingangsgröße x = aktueller AD-Wert, durchlaufe die hinterlegte 
Tabelle bis x >= Tabellenwert. => x_0 gefunden

2) Aktueller Tabellen Index ist x_0 und Index+1 = x_1

3) Führe Teilberechnungen für die Formel f(x) = f_0 + ((f_1 - f_0 / x_1 
- x_0) * (x - x_0)) durch.

4) Am Ende hast du deine gewünschte Temperatur.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Nun musst du zuerst den Spannungsteiler dimensionieren, d.h. den zweiten
>Widerstand des Spannungsteilers so auslegen, dass der Spannungshub im
>gewünschten Temperaturbereich (z.B. -20 ... +50°C, hängt von deiner
>Anwendung ab) sehr hoch ist. Ein Bsp: Sollte es möglich sein mit einer
>Dimensionierung einen Hub von 4V (-20°C = 4.5V und +50 = 0.5V am
>AD-Eingang) zu erreichen, dann hättest du eine Auflösung bei 10Bit von
>0.086°C. Um das Maximum des Spannungshubs herauszufinden musst du bei
>deiner Dimensinieren einwenig mit Excel spielen.
Da braucht man nicht herumprobieren, die größte Steigung der 
R(T)-Kennlinie bekommt man, wenn R(T) und R (Spannungsteiler) gleich 
groß sind!
Wenn man also z.B. im Bereich 20°C - 60°C messen möchte, ermittelt man 
in der Mitte des Messbereichs R(T=40°C) und wählt den 
Spannungsteiler-Widerstand genauso groß.

Autor: Simu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau. Und dann sollte man die Genauigkeit des Referenzwiderstandes 
nicht vergessen. Je nach Anforderung sind 5% nicht genug. Die meisten 
Widerstande gibt es als 1%, gewisse selektierte Werte auch als 0.1%.

Autor: Christian Funke (funke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und bei dem Festwiderstand unter Umständen, ich weiss ja nicht in 
welchem Temperaturbereich du messen möchtest, auch dessen 
Widerstandszunahme oder Abnahme beachten. Kommt natürlich auch auf die 
Genaugikeit an, mit der das Messsystem aufgebaut werden soll und wie nah 
das Messsystem am Messobjekt liegt. Am besten geeignet sind hier hierfür 
Widerstände mit geringem Temperaturkoeffizienten, zum Beispiel 10ppm.

Autor: Maik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Danke für Eure Anregungen und Tipps. Ich habe mich jetzt für die Lösung 
mit der Teillinearisierung entschieden.
Ist zwar im ersten Moment recht aufwändig, kann man aber immer wieder 
verwenden :-) Es ist für meine Zwecke auch genau genug.


Maik

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.