PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Temperatur mit NTC oder PTC messen



Pinto
22.02.2009, 23:32
Hallo

Möchte Temperatur von etwa -15 bis 120 Grad, mit einen NTC oder PTC messen. Hat das schon jemand gemacht?
Den DS18xx möchte ich nicht benutzen weil ich es an einen Motor befestigen muss und dafür gibt es NTC und PTC die man einfach mit eine Schraube befestigen kann.

Danke für jede Hilfe, Beispiel code wäre sehr hilfreich

Gruss
Pinto

stefan_Z
22.02.2009, 23:41
Im Prinzip nimmst du einen ADC Kanal und hängst da den NTC/PTC dran.
Code ist dann quasi das ADC-Sample aus der Anleitung plus ein wenig Rumrechnen abhängig von deinem NTC/PTC.

Maxxtro
23.02.2009, 09:59
Oder genauer:

Du baust dir aus einem möglichst Temperaturstabilen Widerstand und dem NTC/PTC einen Spannungsteiler und misst die Spannung die an einem der beiden Widerstände abfällt.
Das Messen erledigst du, wie oben bereits gesagt, mit Hilfe des ADCs.

Sieht dann so aus:
http://s11.directupload.net/images/090223/6as57bn5.jpg
R1 ist der festwiderstand und R2 natürlich der NTC/PTC.

Wegen dem Programm, schau mal hier: https://www.roboternetz.de/wissen/index.php/ADC_(Avr)

Config Adc = Single , Prescaler = Auto , Reference = [wenn du AVCC auf VCC gelegt hast] AVCC
Start Adc
Dim W As Word , Channel As Byte
Channel = 0


Do
W = Getadc(channel) 'Womit "W" jetzt der Wert des ADCs zwischen 0 und 1023 wäre
'...
Loop
End

Besserwessi
23.02.2009, 17:14
Die Referenzspannung für den AD erzeugt man sich am besten durch einen Spannungsteiler aus der Versorgungsspannung.

Neutro
23.02.2009, 18:34
Prinzipiell kann man mit NTC / PTC Temperaturen messen, aber leider
haben diese Teile eine sehr "krumme" Kennlinie die man mittels Software
"begradigen" muss. Wenn du noch nicht so viel Programmiererfahrung hast
würde ich die eher einen LM335 empfehlen. Den kann man zwar nicht einschrauben aber der hat eine lineare Kennlinie und ist mit dem ADC einfacher auszuwerten.

Gruß

Neutro

Besserwessi
23.02.2009, 19:01
Die NTC haben in der Regel eine sehr steile, aber nichtlineare Kennlinie. Die PTCs haben oft eine ziehmlich linieare Kennlinie, wenn man den passenden Widerstand dazu nimmt (z.B. KTY81 + 2,7 Kohm).

Eine andere alternative mit recht linearer Kennlinie (ca. -2 mV/K) hat ein Diode bzw. ein als Diode geschalteter Transistor. Die Transistoren im TO126 Gehäuse lassen sich auch gut anschrauben.

Maxxtro
23.02.2009, 19:02
Da muss ich Neutro Recht geben! Hab das auch schon probiert, Temperaturen mit einem PTC messen - werde ich nie wieder! ](*,)

Wegen diesen Kurven muss man wirklich erst sehr viel rumrechnen und probieren!

So hat die berechnung bei mir damals ausgesehen:

W = Getadc(channel)

B = W * W
C = B * 0.0000395965
D = 0 - C
E = 0.0415089404 * W
F = D - E
G = F + 47.7049853735
H = Fusing(g , "#.#")

Wobei das ganze aufgrund der Variablen Single (für das rechnen mit solchen Kommazahlen) natürlich auch noch extrem viel Speicher benötigte!
Und dafür noch nicht mal für einen größeren Bereich als 20°C halbwegs genau blieb...

Jetzt messe ich die Temperatur mit DS1820s, wobei auch das alles andere als leicht is :mrgreen:

Mit einem LM335 über den ADC sollte das ganze jedoch relativ schön und einfach funktionieren!

Besserwessi
23.02.2009, 21:39
Wenn der feste Widerstand für die Messung halbwegs stimmt, sollte die Kennlinie schon recht gut linear sein. Das die Rechnung so umständlich ist, liegt aber auch an den etwas beschränkten Fähigkeiten von BASCOM. Etwas einfacher sollte aber auch gehen. Ein Polynom berechent man besser nicht als
a + b*x+c*x*x
sondern besser als
a + x * (b+x*c)

Das Spart schon mal einen Schritt. Außerdem sollte Bascom doch wenigstens direkt mit negativen Constanten arbeiten können. Oder etwa nicht ?

Maxxtro
23.02.2009, 21:51
"Linear" wird so eine Kennlinie wohl nicht sein :-k Höchstens "gleichmäßig"

Ob Bascom direkt mit negativen Konstanten rechnen kann, kann ich nicht mehr sagen :-s , aber ich habe die Single-Variable benutzt um überhaupt mit derartigen Kommazahlen zu rechnen :-k

wodka
24.02.2009, 04:13
Hi,

ich denke Dir könnte dieser Link weiterhelfen

http://mikrocontroller.cco-ev.de/files/SensorBerechnung_draft.pdf

Besserwessi
24.02.2009, 08:43
Die NTCs kreigt man kaum in Hardware liniear, dafür hat man da oft eine sehr hohe Auflösung (nicht unbedingt Genauigkeit).

Einige PTCs (z.B. die KTY...) werden durch den passenden Widerstand schon ziehmlich gut linear. So daß man z.B. für 0...100° C ohne weitere linearisierung auskommen kann.

Maxxtro
24.02.2009, 09:49
Kann mir jemand verraten wie man auf den 220k Widerstand gegen Masse (in dem Dokument oben) kommt? Das wäre gerade sehr Hilfreich :-k

MfG

Besserwessi
24.02.2009, 16:29
Der Wert des Widerstand ist abhängig vom Sensor. Als grobe Fastregel ist der Widerstand etwa so groß wie der des Sensors, eher etwas größer. Man will halt, wenn sonst nichts dagegen spricht eine Spannung von rund 2 V am Sensor haben, denn das ist oft die untere Grenze für die Referenzspannung.
Beachten muß man bei recht niedrigen Widerständen die Eigenerwärmung durch den Meßstrom, besonders bei eher niedrigen Sensorwiderständen.

Bei PTCs findet man zum Teil im Datenblatt einn passenden Widerstandswert, der auch gleich die Kennlinie schon in 1ter Nährung linearisiert. Bei NTCs bleibt die stark nichtlineare Kennlinie.