Forum: Mikrocontroller und Digitale Elektronik ADC Spannungsumwandlung in Temperatur Fehler?


von Joerg (Gast)


Angehängte Dateien:

Lesenswert?

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?

von Achim S. (Gast)


Lesenswert?

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.

von Jörg (Gast)


Lesenswert?

Ich benutze 5 Volt an der Messkarte.
Wie bekommeich die Werte denn Linear?
VCC---50k-----NTC
        |
        |
      ADC

von einen Namen (Gast)


Angehängte Dateien:

Lesenswert?

Regression mit Spreadsheet (Opel Office Calc oder M$ Excel)

von Radler (Gast)


Lesenswert?

nenn doch mal die Typenbezeichnung von dem NTC. Dann kann man sich mal 
das Datenblatt anschauen

von Jörg (Gast)


Lesenswert?

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.

von Achim S. (Gast)


Lesenswert?

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).

von Joe F. (easylife)


Lesenswert?

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...?!

von einen Namen (Gast)


Angehängte Dateien:

Lesenswert?

Dann nehmen wir halt 4. Ordnung :-)
Da ist das lokale Minimum sehr frueh und nur sehr klein :-)

von Jörg (Gast)


Lesenswert?

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!)

von Joe F. (easylife)


Lesenswert?

Wie genau soll den das Thermometer werden? 2°C? 1°C? 0.1°C?

von Jörg (Gast)


Lesenswert?

0,1 Grad wenn möglich. Ein 0,5 Grad geht zur Not auch. 12 Bit A/D 
Wandler ist auf der Meßkarte.

von Joe F. (easylife)


Lesenswert?

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?

von Jörg (Gast)


Lesenswert?

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!

von Joe F. (easylife)


Lesenswert?

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...

von Jörg (Gast)


Lesenswert?

Der Widerstand hat einen Wert von 22,976 kOhm.

von Joe F. (easylife)


Lesenswert?

Also ein schlechter 5% 22K Widerstand ;-)

von Jörg (Gast)


Lesenswert?

Ich hatte den 50K ersetzt, da ich damit nicht über 130 Grad gekommen 
bin.

von Joe F. (easylife)


Lesenswert?

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.

von Jörg (Gast)


Lesenswert?

Ich werde das neu aufnehmen und dann hier berichten! Danke schonmal für 
eure Hilfe!

von Joerg (Gast)


Lesenswert?

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

von Joe F. (easylife)


Angehängte Dateien:

Lesenswert?

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

von Jörg (Gast)


Lesenswert?

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!

von Joe F. (easylife)


Angehängte Dateien:

Lesenswert?

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...

von Joe F. (easylife)


Angehängte Dateien:

Lesenswert?

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

von Jörg (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.