Hallo!
Ich will mit folgendem NTC eine Temperaturmessung durchführen:
http://at.mouser.com/ProductDetail/Murata-Electronics/NXFT15WB473FA1B150/?qs=MY6wChARw2zH6fHzHxCaIA==
Mein verwendeter Sensor ist der NXFT15WB473FA1B150 (siehe Datenblatt
Seite 25), also jener, der bei 25°C einen R von 47kOhm hat.
Ich würde das ganz einfach mit einem Spannungsteiler (fixer
Vorwiderstand zum NTC) machen, und die Spannung am NTC (parallel dazu
ein kleiner C) zu einem ADC Eingang führen.
Ich will die Temperatur in einem Bereich von 0°C bis 30°C messen. Um den
Vorwiderstand so einzustellen, dass ich die optimale Auflösung des ADC
ausnutze, benötige ich die Widerstandswerte des NTC bei gegebener
Temperatur. Wie kann ich die berechnen? Kann ich hier einfach die Formel
für T von Wikipedia unter "Grundlagen"
http://de.wikipedia.org/wiki/Hei%C3%9Fleiter
hernehmen, und einen B-Wert von 4050 annehmen?
Dann könnte ich aus dieser Gleichung die beiden Punkte 0° und 30°C
einsetzen und mir daraus den Vorwiderstand berechnen. Kann ich das so
machen?
Werner13 schrieb:> Kann ich hier einfach die Formel> für T von Wikipedia unter "Grundlagen"> http://de.wikipedia.org/wiki/Hei%C3%9Fleiter> hernehmen, und einen B-Wert von 4050 annehmen?
Ganz so einfach wird es nicht werden. Du wirst zumindest
Referenzmessungen machen müssen und daraus dann die Materialkonstante
genau deines NTCs ermitteln.
Warum nimmst du nicht einen DS18B20, einfacher und genauer gehts (ohne
größeren Aufwand) fast nicht.
Für verschiedenste Messmethoden siehe auch:
Temperatursensor
OK, hab ich das richtig verstanden, dass ich die Materialkonstante
bestimmen muss, weil Sie von Sensor zu Sensor verschieden ist
(Toleranzen)? D.h. jedesmal, wenn ich einen neuen Sensor einsetze
(theoretisch), müsste ich die Konstante neu bestimmen?
Wenn ich aber die Konstante einmal berechnet habe, dann kann ich diese
immer für die Berechnung der Temperatur hernehmen?
Wenn ich die beiden Werte für 23 und 0°C in die Formel einsetze, bekomme
ich für B einen Wert von 4024 raus. Das liegt im gegebenen Bereich. Da
die Messtemperaturen auch ungefähr in dem Bereich liegen (0-30°), werde
ich diesen Wert für B heranziehen.
Ich muss nun den Spannungsteiler so einstellen, dass ich möglichst den
ganzen verfügbaren Spannungsbereich für die Messung nutzen kann (Die
Referenzspannung beträgt 2.5V, als Spannungsversorgung für den U-Teiler
stehen 3.3V zur Verfügung. Das heißt, für einen Extremwert (30°) soll
möglichst wenig Spannung gemessen werden, bei 0° sollen gerade 2.5V am
Messwiederstand abfallen, sodass ich bei 0° die maximale Spannung messe.
Kann man das überhaupt für beide Grenzwerte abstimmen oder muss ich
einfach schaun, dass ich gerade bei 0° eine Spannung von 2.5V messe, der
Wert für 30° ergibt sich dann?
Danke, lG
Fuer maximale Aufloesung muessen die beiden Widerstande gleich sein. Wie
man das rechnet? Die Steigung deltaU/deltaT muss maximal sein. Also
Ableiten Null setzen, nach R aufloesen.
Welche beiden Widerstände müssen gleich sein? Und welche Formel soll ich
nach was ableiten? Sorry, komm da nicht ganz mit...
Ich weiß, dass ich bei 0° einen Widerstand von 157kOhm und bei 30°C
einen Widerstand von 37,5kOhm hab. Im ersten Fall soll nun die
höchstmögliche Spannung (also idealerweise 2,5V) und im zweiten Fall die
niedrigste Spannung (also idealerweise 0V) gemessen werde, um die
Auflösung optimal auszunutzen.
Könnt Ihr mir einen Tip geben?
Danke, lG
Um den 2. Fall zu erfüllen müsstest du schon einen Operationsverstärker
einsetzen oder den NTC an eine negative Spannung statt GND anschließen.
Ansonsten wirst du nicht drum herum kommen, dass bei 30° rund 0,6V an
deinem Eingang anliegen.
Gruß
Hallo Werner,
hier mal ein Beispiel falls du eine 5V Referenzspannung hast. Da reicht
dann eine rein passive Schaltung. Wenn du "nur" eine 2,5V Referenz
hast, dann benötigt man halt einen Opamp.
Die untere Kurve ist die Ableitung die gibt an wie viel mV/°C du
bekommst.
Um zu simulieren musst du dir LTspice von www.linear.com herunterladen.
Das ist kostenlos. Meine Dateien nach C:\Test kopieren. Dann die .asc
mit LTspice öffnen.
Gruß
Helmut
http://ltspice.linear-tech.com/software/LTspiceIV.exe
Der Spannungsteiler kann auch aus nur zwei widerstaenden bestehen, dem
47k NTC und einem 47k festwiderstand. Nehmen wir den festwiderstand
unten :
Ua : = U0 * Rntc/(Rntc+Rfest)
Nun Rntc einsetzen als R0* (...)(T)
Dann ableiten als dUa/dT = .. f(T)
Sowas rechnet man zB mit Mathematica, Maple, ...
@Thomas:
Hallo,
Ich hab den Wert für den Vorwiderstand berechnet, damit bei 0° 2,5V
anliegen, es kommt 50,4 kOhm raus. Der Widerstand des NTC bei 30°
beträgt 37,5kOhm, das ergibt dann eine Spannung von 1,4V. Ich würde
damit also nur den Bereich von 1,4V bis 2,5V und somit weniger als 50%
des nutzbaren Spannungsbereiches ausnutzen.
Wie kommst du auf 0,6V?
Als µC verwende ich den AT32UC3C1128C:
http://www.atmel.com/devices/at32uc3c1128c.aspx
Muss ich eigentlich für diese Berechnungen auch einen Eingangswiderstand
des ADC berücksichtigen?
Weiters würde mich interessieren, ob mit dieser Dimensionierung (50kOhm
Vorwiderstand, und z.B. 157kOhm Messwiderstand bei 0°) der ADC genug
Strom bekommt? Auf Seite 1252 des Datenblatts (complete) steht, dass der
ADC (ADCIFA) 7µA/MHz aufnimmt. Ich verwende 64 Mhz und komme damit auf
448 µA.
@Helmut:
Was genau meinst du denn mit Referenz: Die Gesamtspannung für den
Spannungsteiler oder die Referenzspannung für den ADC? Als Spannung für
den U-Teiler stehen mir 3,3V zur Verfügung, als ADC Referenz 2,5V!
DANKE!
> Was genau meinst du denn mit Referenz
Die gemessenen Spannung hängt von Spannung ab an der der Spannungsteiler
angeschlossen ist. Wenn du die Versorgungsspannung nimmst, dann ist die
gemessene Spannung eben proportional zur Versorgungsspannung. Du
solltest dann einen zweiten rein Ohmschen Spannungsteiler machen an dem
du die Versorgungsspannung misst. Da die ATmega mehrere ADC-Eingänge
haben ist das kein Problem.
Wenn der Hub zu klein ist, dann muss man halt einen Opamp zur
Verstärkung spendieren.
Hallo Helmut,
danke, deine Simulation habe ich runtergeladen. Wenn ich die Spannung
auf meine 3,3V ändere, dann bin ich bei 0° bei 1,6V und bei 0° bei unter
0,6V. Das passt mir derweil für versuchszwecke, später wird dann ein
anderer NTC eingesetzt.
Brauch der ADC (siehe Datenblatt des µC in einem früheren Post) einen
Mindeststrom? Ich mache mir bedenken wegen der hohen WIderstände?!
Danke, lG
Wenn ich die Widerstände mit 100k und 300k wähle ist bes noch etwas
besser...
OK, dann messe ich die SPannung und aus diesem digitalen wert kann ich
mir (da ich ja die Referenzspannung und die Auflösung kenne) den
Widerstandswert des NTC berechnen. Aus diesem Wert kann ich mir mit der
Formel aus Wikipedia (Artikel Heißleiter) die Temperatur ausrechnen (Den
B-Wert habe ich messtechnisch ermittelt)?
Ist das eine gängige Vorgehensweise?
Ich wuerd einen NTC auswaehlen, der einen B Wert spezifiziert hat. zB
auf 1%. Ist die absolute Genauigkeit denn wichtig? Ich wuerd's nicht
nachmessen wollen. Ich wuerd auch einen niederohmigeren NTC auswaehlen
und falls Stromaufnahme wichtig ist, schalten.
@radiofox:
Super link, danke!
Für meine Anwendung kommen für Rs 75k und für Rp 750k raus. Das schaut
mit der LTSpice Simulation sehr linear aus und deckt auch einen relativ
großen Spannungsbereich ab! Danke!
Werner13 schrieb:> @radiofox:> Super link, danke!>> Für meine Anwendung kommen für Rs 75k und für Rp 750k raus. Das schaut> mit der LTSpice Simulation sehr linear aus und deckt auch einen relativ> großen Spannungsbereich ab! Danke!
Super.
Ein linearer Zusammenhang ist schon mal die halbe Miete.
Denn. Da würde ich nicht lange fackeln um mir den Widerstandswert des
NTC auszurechnen. Denn im Grunde interessiert mich der ja nicht. Gesucht
ist ja der Zusammenhang zwischen ADC Wert und Temperatur. Der ADC Wert
ist linear zur gemessenen Spannung und die wiederrum ist linear zum
Widerstandswert, welcher wiederrum linear zur Temperatur ist.
D.h. ich fasse all diese Umrechnungen zu einer einzigen zusammen.
Bei 3 (oder mehr) Temperaturen den ADC Wert messen und damit hab ich
meinen Zusammenhang ohne mich um irgendwelche Materialparameter kümmern
zu müssen. Im µC wird dann einfach aus dem ADC Wert direkt die
Temperatur ermittelt. Da alle Umrechnungen linear sind, reicht es also
aus, ein
1
Temperatur = k * ADC_Wert + d
zu postulieren, bei dem einzig k und d unbekannt sind. Anhand der bei
bestimmten Temperaturen festgestellten ADC_Werte lassen sich diese
beiden Konstanten aber ermitteln.
(Mehr Messungen zwischen ADC_Wert und Temperatur sind deshalb gut, weil
man die dann in ein Diagramm eintragen kann [zb. Excel] und nachsehen,
wie linear die ganze Geschichte in der Praxis wirklich ist. Denn grau,
lieber Freund, ist alle Theorie. Aus der Kurvenform im Diagramm sieht
man dann auch sehr schnell, ob man mit einer Geraden wirklich
durchkommt, oder ob man nicht zb eine Parabel [also eine Gleichung 2.
Grades] oder vielleicht etwas noch höheres durch die Punkteschar
durchlegt)
Karl Heinz schrieb:> Bei 3 (oder mehr) Temperaturen den ADC Wert messen
Es wäre sinnvoll, ca. 37° mit in den Meßbereich hineinzunehmen.
Auf diesen Wert kann man mit Hilfe der eigenen Armbeuge und
einem Fieberthermometer recht genau kalibrieren. Das gleiche
gilt für die 0° gemessen durch Rühren in Eiswasser. Nur mit
den Zwischenwerten wirds schwieriger. Wenn die Linearisierung
gut gelungen ist und die Genauigkeitsanforderungen nicht allzuhoch
sind, kann man ja vielleicht Zwischenwerte auch errechnen.
Gruss
Harald
Harald Wilhelms schrieb:> Es wäre sinnvoll, ca. 37° mit in den Meßbereich hineinzunehmen.> Auf diesen Wert kann man mit Hilfe der eigenen Armbeuge und> einem Fieberthermometer recht genau kalibrieren. Das gleiche> gilt für die 0° gemessen durch Rühren in Eiswasser.
Ehe ihr so genau kalibrieren wollt, wie genau sind denn die NTCs des TOs
Werner13 schrieb:> D.h. jedesmal, wenn ich einen neuen Sensor einsetze> (theoretisch), müsste ich die Konstante neu bestimmen?
Keine Ahnung wie weit die Konstante von Einem zum Anderen abweicht.
Interessant sind zumindest die Toleranzen:
http://www.schukat.com/schukat/schukat_cms_de.nsf/index/CMS1644A08A9DC28A99C1256D710038E16D?OpenDocument
Es gibt also 2%tige aber genauso 10 oder gar 20%ige.
Die Frage ist welche NTCs hast du und
Wie genau willst du messen?
ich hatte oben schon auf genauere einfach anzuwendende Sensoren wie
DS18B20 hingewiesen, aber vom TO kam keinerlei Reaktion.
Werner13 schrieb:> Ich würde> damit also nur den Bereich von 1,4V bis 2,5V und somit weniger als 50%> des nutzbaren Spannungsbereiches ausnutzen.
Was immer noch deutlich genauer ist als die Toleranz des NTCs.
Hallo zusammen,
ihr macht da ja eine ganz schöne Wissenschaft aus dem NTC, der nur für
0..30°C eingesetzt werden soll...
Ich nehm mir mal den hier her:
http://www.reichelt.de/Heissleiter-Varistoren/NTC-0-2-47K/3//index.html?ACTION=3&GROUPID=3114&ARTICLE=13564&SEARCH=NTC%2047k&SHOW=1&OFFSET=16&
Der NTC hat bei 25°C 47k (+- seiner Abweichung, aber dazu später mehr).
Die Mitte zwischen dem gewünschten Bereich 0..30°C ist bei 15°C und der
NTC hat dann 70,2k. Nach diesem Wert wählst du deinen
Vergleichswiderstand.
GND --- 70k --- [ADC] --- NTC --- VCC
Der ADC bekommt als Vref auch die VCC. Das heißt ich sehe nur das
Widerstandsteiler-Verhältnis am ADC. Nichts was von der Spannung
abhängt!
Der maximale Strom über dem NTC ist bei 30°C (39k). Bei 5V wären das
(Untc * (5V/(70k+39k)) => 45µA über dem NTC, der 1,8V abbekommt. Also
ganze 80µW am NTC, das ist dann wohl vernachlässigbar....
In erster Näherung bei 10Bit ADC macht eine Temperaturänderung von 10°C
100ADC-Schritte am ADC aus. Einfach mal Excel-Tabelle mit
Widerstandsteiler und den "idealen" Werten aus dem Datenblatt rechnen.
Im Programm rechnest du also Temp = 15°C + (ADC_Wert-512)/10
Das ist erst mal eine verdammt gute Näherung, wenn da der NTC und der
Vergleichswiderstand nicht eine Abweichung hätte.
Die "512" in der Formel korrigierst du passend zu deinem tatsächlichen
Wert des Vergleichswiderstandes.
Aber in der Regel reicht es schon eine reine Offset-Korrektur zu machen.
Halte den NTC hübsch eingepackt in ein Wasser/Eiswürfelgemisch und
bestimme den Offset. Bei einem Bereich von 0..30°C noch
Linearitätsfehler zu korrigieren ist unnötig.
Der C-Compiler kann doch Fließkomma. Damit kannst du direkt die Formel
mit "log" auswerten um die Temperatur zu berechnen. Die Formeln stehen
in meiner Schaltung. Das dauert zwar ein paar Millisekunden aber wenn
der Prozessor sonst eh nichts zu tun hat stört das nicht. Ansonsten halt
eine Tabelle im Flash ablegen, wenn es ganz schnell gehen muss.
René B. schrieb:> Hallo zusammen,> ihr macht da ja eine ganz schöne Wissenschaft aus dem NTC, der nur für> 0..30°C eingesetzt werden soll...
Was bitte ist am feststellen von 2 ADC Werten bei gleichzeitigem messen
der Temperatur mit einem Thermometer eine Wissenschaft?
2 Wertepaare, daraus die beiden Koeffizienten für die Umrechnung
bestimmt und ab damit ins Programm. Noch einfacher gehts nicht. Das
einzige was aus Benutzersicht noch einfacher wäre, das wäre wenn er den
Sensor auf eine bestimmte Temperatur gebracht hat (die er dem Programm
einstellen kann) und er dann einen Knopf drückt. Das ganze 2 mal und das
Programm rechnet sich dann selbst die Koeffizienten aus.
Und Bauteiltoleranzen sind mir dann auch völlig schnuppe, weil die
Umrechnung dann nicht auf irgendwelchen Werten basiert, die am grünen
Tisch bestimmt wurden sondern real, mit den realen Bauteilen, ermittelt
wurden.
Karl Heinz schrieb:> René B. schrieb:>> Hallo zusammen,>> ihr macht da ja eine ganz schöne Wissenschaft aus dem NTC, der nur für>> 0..30°C eingesetzt werden soll...>> Was bitte ist am feststellen von 2 ADC Werten bei gleichzeitigem messen> der Temperatur mit einem Thermometer eine Wissenschaft?>
Also in der Serienfertigung will man nichts über Temperatur abgleichen,
weil das viel zu lange dauert bis man sicher ist, dass alles auf 0,1°C
eingeschwungen ist.
Karl Heinz schrieb:> Und Bauteiltoleranzen sind mir dann auch völlig schnuppe
Nicht Drift/Alterung. :-)
Das wird mit einem NTC halt eher ein Schätzeisen. Solange einem die
Grenzen klar sind ist das ja auch kein Problem, nur habe ich den
Verdacht daß dem TO die Grenzen der Messung und der Unterschied zwischen
Genauigkeit und Auflösung nicht ganz klar sind, sonst würde er sich
weniger Gedanken darüber machen daß er nur die Hälfte des Messbereichs
eines 10 Bit Wandlers nutzen kann.
Helmut S. schrieb:> Also in der Serienfertigung will man nichts über Temperatur abgleichen
Meinst du wirklich daß der TO für eine Fertigung entwickelt?
Helmut S. schrieb:> Also in der Serienfertigung will man nichts über Temperatur abgleichen,> weil das viel zu lange dauert bis man sicher ist, dass alles auf 0,1°C> eingeschwungen ist.
In der Serienfertigung kann man die Werte ja auch einmalig
feststellen/errechnen und im Programm eintragen.
Ich denke aber nicht, dass es hier um eine Serie geht
Wenn du einen einfachen Spannungsteiler aus einer Reihenschaltung
Vcc -> Festwiderstand -> NTC -> GND
verwendest, bekommst du den maximalen Spannungsunterschied zwischen
deinen beiden Extremwerten bei bekannten Widerstandswerten
Hallo alle,
die Variante von KarlHeinz mit der linearen Funktion finde ich super!
Funktioniert perfekt, ist sogar ziemlich genau!
Ist richtig, der NTC ist natürlich nicht der beste. Ich habe den nur für
Testzwecke verwendet, weil er billig ist. Später kommt da ein besserer,
aber die Vorgehensweise der Auswertung wird dann die gleich sein.
Danke, lG
Hmmm... So linear ist das ganze doch nicht, wie du sagtest, Karl Heinz.
Nachdem ich zur Zeit noch keine genauen Werte brauche, reicht mir das
aber... Es soll irgendwann tatsächlich für die Serie sein... Mit dem
besseren Sensor werde ich dann ev. auf eine lineare Kennlinie kommen,
ansonsten muss ich ein Modell höherer Ordnung wählen.
LG
Werner13 schrieb:> Hmmm... So linear ist das ganze doch nicht, wie du sagtest, Karl Heinz.
Ich?
Du hast doch gesagt, dass das in der Simulation schon schön linear
aussieht.
Welche Kurvenform hast du denn wirklich?
Dann nimmst du eben anstelle von
1
Temp = k * ADC_Wert + d
eine quadratische Gleichung
1
Temp = l * ADC_Wert * ADC_Wert + k * ADC_Wert + d
und benutzt 3 Temperatur/ADC_Wert Pärchen um die Koeffizienten zu
bestimmen.
Die Genauigkeit bzw. die Linearität wird ja nicht besser oder
schlechter, wenn du alle Teilberechnungen zu einer einzigen
zusammenfasst. Lediglich der Rechenaufwand ist geringer, weil du
Zwischen-Werte, die du eigentlich nicht brauchst erst gar nicht
ausrechnest.
Anbei meine Simulation, wie ich es aufgebaut habe.
Sieht zwar schön aus, ist aber nicht ganz linear. Würde sich dafür eine
quadratische Gleichung auszahlen?
LG
Helmut S. schrieb:> Für was hast du denn einen Mikrocontroller?> Der kann rechnen. Dafür ist der da.
Du meinst damit vermutlich das selbe oder? Also eine quadratische
Gleichung aufstellen und die Werte aus dem ADC Wert berechnen?
Eine quadratische Gleichung wäre dann gut, wenn die Ableitung eine
Gerade wäre. Das ist sie aber nicht wie man in dem unteren Plot sieht.
Du müsstest also eine Gleichung 3. Grades nehmen.
Ich habe mal T(Spannung) geplottet.
Fürs grobe eine Gerade (ca. 1°C systematischer Rechenfehler), als
Verbesserung ein Polynom 3. Grades T(Spannung) fitten.
Was spricht gegen die Formel mit dem Logarithmus? Siehe die Formel als
Kommentar in dem Schaltplan.
Was meinst du damit?
Im Datenblatt des Sensors sind auch Widerstandwerte für bestimmte
Temperaturen angegeben. Ich könnte die in einer Tabelle hinterlegen und
dann linear zwischen den Punkten interpolieren. Was sagt ihr zu dieser
Idee? Meinst du das damit?
LG
Klar geht das auch mit einer Tabelle und linearer Interpolation. Das
würde man dann machen, wenn es auf Rechenzeit ankommt oder der
Controller sehr wenig Rechenleistung hat. Ansonsten halt die Formel mit
dem Logarithmus nehmen.