Ich möchte gern die Temperatur an einer Meßkarte erfassen und über Labview auswerten. Jetzt habe ich hier schon etwas gefunden nur will es nicht richtig funktionieren. Anbei meine Exceltabelle und mein Labview Programm. Kann mir einer von euch sagen was ich falsch mache?
Joerg schrieb: > Kann mir einer von euch sagen was ich falsch mache? du verrätst uns zuwenig über deinen Aufbau. Was für eine Temperatursensor erzeugt die Spannung? Woran genau machst du fest, dass es "nicht richtig funktioniert"? Mein Tipp: vielleicht versuchst du einen ADC-Wert linear in einer Temperatur umzurechnen, obwohl der Zusammenhang zwischen beiden gar nicht linear sein sollte. Zumindest ist der Zusammenhang zwischen Temperatur und Spannung in deiner Tabelle deutlich nichtlinear.
Ich benutze 5 Volt an der Messkarte. Wie bekommeich die Werte denn Linear? VCC---50k-----NTC | | ADC
Regression mit Spreadsheet (Opel Office Calc oder M$ Excel)
nenn doch mal die Typenbezeichnung von dem NTC. Dann kann man sich mal das Datenblatt anschauen
Mit einem Datenblatt kann ich nicht dienen, da derSensor von einem BBQ Thermometer stammt (Maverick) und bei 25Grad hat er 1,2MOhm. Mehr ist nicht bekannt.
Jörg schrieb: > Wie bekommeich die Werte denn Linear? Da du in LabVIEW unterwegs bist könntest du eine Skalierung nutzen. (Entweder im MAX oder im Programmcode). Der kannst du z.B. ein Polynom mitgeben oder eine Messtabelle, bei der zwischen den gemessenen Stützstellen linear interpoliert wird. Wenn du mit der Tabelle arbeiten willst achte bitte darauf, dass es halbwegs hochwertige Messungen sind - deine Tabelle oben scheint mir (neben der Nichtlinearität) auch noch verrauscht zu sein. Ein Ausgleichspolynom könnte da etwas gutmütiger sein, weil es nicht jeden kleinen Ausschlag der Messwerte mitmacht. "Einen Namen" hat dir oben gezeigt, wie du von deinen Messwerten zu einem Polynom kommen kannst (über LabVIEW geht es auch). Wobei mir bei dem oben gezeigten Polynom nicht so richtig gut gefällt, dass die Kurve zwischen 20 und 30° abfällt (was deine Messwerte nicht tun).
Irgendwas stimmt da nicht. Deine Beschaltung ist vermutlich so:
1 | VCC (5V) |
2 | -+- |
3 | | |
4 | +++ |
5 | | | |
6 | | | NTC |
7 | +++ |
8 | | |
9 | +----> ADC Input |
10 | | |
11 | +++ |
12 | | | |
13 | | | 50K |
14 | +++ |
15 | | |
16 | -+- GND |
Das ergibt dann aber keine 0.1V bei 26°C (!) Ausser der NTC hätte da 2,45 Megaohm, oder du hast statt den 50K einen 24K Widerstand...?!
Dann nehmen wir halt 4. Ordnung :-) Da ist das lokale Minimum sehr frueh und nur sehr klein :-)
Das ist wahrscheinlich doch ein 25k Widerstand. Wie erstellt ihr so schnell solche Tabellen? Ist es Ratsam am Widerstand noch etwas herumzutesten? Ich nutze ja nicht mal die ganze Auflösung von 0-5V am Analogeingang? HAbt ihr da noch einen Tipp für mich? Wie setze ich die Gleichung dann um? (Herleitungen sind nicht so meins!)
Wie genau soll den das Thermometer werden? 2°C? 1°C? 0.1°C?
0,1 Grad wenn möglich. Ein 0,5 Grad geht zur Not auch. 12 Bit A/D Wandler ist auf der Meßkarte.
Jörg schrieb: > 0,1 Grad wenn möglich. Dann finde bitte aber erstmal genau raus, welcher Messwiderstand da verbaut ist. Evtl. ist es ja dann irgendwann ein 22K... Und 1.2M bei 25° klingt für einen NTC auch eher untypisch. Evtl. 1.0M?... Wie ist deine Tabelle entstanden? Mit welchem Thermometer / Voltmeter wurden die Messwerte genommen? Sind die auf 0.1° genau gemessen?
Temperatur Widerstand [kOhm] 21,0 1217,3 24,5 1024 33,8 644 46,0 347,8 64,5 167,62 76,0 103,42 80,0 80,69 85,0 71,89 Das sind die Werte nur am Widerstand gemessen. Ich kann jaübers WE noch mal eine neue Tabelle aufnehmen. die Spannungswerte kommen von der Meßkarte. Die Temperatur wurde mit einem Vergleichsensor auf dem Maverickgerät abgelesen. Ich werde noch ein anderes Temperaturmeßgerät auftreiben. Der Widerstand wird morgen ausgemessen!
Aha, jetzt kommen wir der Sache schon näher. 1M bei 25° ist plausibel, und vermutlich entspricht der Rest der Kurve einem Standard-NTC. Wenn jetzt noch der andere Widerstand genau bekannt ist, wird es einfach...
Ich hatte den 50K ersetzt, da ich damit nicht über 130 Grad gekommen bin.
Jörg schrieb: > Ich hatte den 50K ersetzt, da ich damit nicht über 130 Grad gekommen > bin. OK. Solange die Schaltung nicht in Serie geht, ist es ja auch egal, wie präzise der Widerstand ist, solange du seinen genauen Wert kennst. Deine ursprüngliche Tabelle ist wohl nicht mit dem 12-Bit ADC entstanden, sondern eher mit einem 10-Bit Wandler. Und offenbar auch mit einem anderen Widerstand. Am besten machst du jetzt nochmal eine neue Tabelle, die 5V müssen genau stimmen, der besagte 22.976K Widerstand ist drin, und die Referenztemperatur nimmst du so genau wie möglich. Wenn das vorhanden ist, kann man weitermachen. Das Ziel ist, über die gemessene Spannung und den bekannten Shunt-Widerstand (22.9K) den NTC Widerstand zu ermitteln. Wenn man diesen hat, kann man über Logarithmen die Temperatur errechnen. Und mit deiner Tabelle findet man heraus, welche Charakteristik (Beta) der NTC hat. Die bisherigen Daten widersprechen sich da.
Ich werde das neu aufnehmen und dann hier berichten! Danke schonmal für eure Hilfe!
anbei meine neuen Werte! Widerstand hat genau 29,866kOhm Eingangspannung war 5.012 Volt. Und Auflösung der Meßkarte 12Bit Temperatur Spannung 16 0,091 26 0,149 30 0,177 35 0,209 40 0,279 45 0,355 50 0,45 55 0,523 60 0,6275 65 0,754 70 0,894 75 1,049 80 1,214 85 1,366 90 1,572 95 1,765 100 1,99 105 2,197 110 2,394 115 2,611 120 2,797 125 3,005 130 3,184 135 3,35 140 3,51 145 3,655 150 3,805 155 3,921 160 4,012 165 4,13 170 4,25 175 4,32 180 4,38
Wie kommt denn das, dass deine Widerstandswerte für den Messwiderstand immer so unterschiedlich sind? Neulich: 22.976K, heute: 29.866K Miss du diesen im in die Schaltung eingebauten Zustand? Deine neuen Messwerte haben ziemliche "Knicke", viel genauer als ca. +/- 2.5°C wird dein Thermometer nicht werden. Ich errechne ein Beta von 4737 Den Widerstand des RTC errechnest du über die Formel R_NTC = (R_shunt * U_ref) / U_adc - R_shunt R_shunt ist dabei 29.866K, U_ref = 5.012V und U_adc ist der Messwert Diesen Widerstandswert R_NTC setzt du dann in folgende Formel ein: T = 323.15 * beta / (beta - 323.15 * ln(302775/R_NTC)) - 273.15 mit beta = 4737
1 | °C U_adc °C (b) Fehler |
2 | 16 0,091 16,9 -0,9 |
3 | 26 0,149 26,1 -0,1 |
4 | 30 0,177 29,5 0,5 |
5 | 35 0,209 32,9 2,1 |
6 | 40 0,279 39,0 1,0 |
7 | 45 0,355 44,4 0,6 |
8 | 50 0,450 50,0 0,0 |
9 | 55 0,523 53,7 1,3 |
10 | 60 0,628 58,4 1,6 |
11 | 65 0,754 63,4 1,6 |
12 | 70 0,894 68,4 1,6 |
13 | 75 1,049 73,3 1,7 |
14 | 80 1,214 78,2 1,8 |
15 | 85 1,366 82,4 2,6 |
16 | 90 1,572 87,7 2,3 |
17 | 95 1,765 92,6 2,4 |
18 | 100 1,990 98,1 1,9 |
19 | 105 2,197 103,1 1,9 |
20 | 110 2,394 107,9 2,1 |
21 | 115 2,611 113,3 1,7 |
22 | 120 2,797 118,0 2,0 |
23 | 125 3,005 123,6 1,4 |
24 | 130 3,184 128,7 1,3 |
25 | 135 3,350 133,8 1,2 |
26 | 140 3,510 139,0 1,0 |
27 | 145 3,655 144,1 0,9 |
28 | 150 3,805 150,0 0,0 |
29 | 155 3,921 155,0 0,0 |
30 | 160 4,012 159,3 0,7 |
31 | 165 4,130 165,5 -0,5 |
32 | 170 4,250 172,7 -2,7 |
33 | 175 4,320 177,5 -2,5 |
34 | 180 4,380 182,0 -2,0 |
Die 3. Spalte zeigt den errechneten Temperaturwert
Ich habe einen neuen eingelötet und somit neue Werte erhalten. Wie bekomme ich denn das ganze genauer hin? An was liegt das? Vielen Dank schonmal für deine Infos!
Genauer geht es noch mit dem Steinhart-Hart Modell. Eine gute Näherung wäre in deinem Fall
1 | T = 1/(0,0007595529976+0,0001658936572*LN(R_NTC)+0,0000001148538187*LN(R_NTC)^3)-273,15 |
Damit kommst du dann auf ca. +/-1°C, und diese liegen schon im Bereich der Messungenauigkeit deiner Tabelle...
OK, hier nochmal eine etwas verbesserte Näherung. Kommt dann so auf 0.2..0.4°C genau heran. Wenn du selbst mit den Parametern spielen willst, hier gibt es ein gutes Tool zum errechnen einer 3-Punkt Näherung: http://www.thinksrs.com/downloads/programs/Therm%20Calc/NTCCalibrator/NTCcalculator.htm
1 | T = 1 / ( A + B * LN(R_NTC) + C * LN(R_NTC)^3 ) - 273,15 |
2 | |
3 | mit |
4 | A = 0,0007195027 |
5 | B = 0,0001706716 |
6 | C = 1,040613016E-007 |
Hallo, vielen Dank für die ausführliche Antwort! Ich werde ein wenig damit rumspielen!
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.