Forum: Mikrocontroller und Digitale Elektronik Unbekannten Temperaturwiderstand messen mit bascom


von Peter K. (pker)


Angehängte Dateien:

Lesenswert?

hallo!
Ich möchte mir eine Lüftersteuerung für meine WaKü bauen.
Ich habe mir ein Temperaturfühler gekauft und der Verkäufer ist nicht in 
der Lage beim Hersteller mir ein Datenblatt zu besorgen.
jetzt weiß ich als blutiger Anfänger nicht wie ich an die Daten zur 
Berechnung des Temperaturwertes in Bascom ran komme.

Kann mir da einer von euch Helfen???

Er gibt mir nur diese Angaben:
Material: Messing vernickelt
Messgenauigkeit: ca. 0,3k (Präzisionsmessung möglich)
Kabel: 2-Pin Stecker mit ca. 50cm Kabel
Widerstand 10KOhm
Oberer Durchmesser: 18mm
Obere Länge: 8mm
Gesamtlänge: 30mm
Gewindelänge: 10mm
Untere Sensorenlänge: 12mm
Durchmesser Sensor: unten 6mm, 2te Stufe 7mm

hier ein link zu dem Sensor:
http://www.ebay.de/itm/110953004592?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1423.l2649#ht_1857wt_1139


Ich habe schon herausgefunden das es ein NTC ist weil der Widerstand 
sinkt wenn die Temperatur steigt.
ist das richtig?


Gruß Peter

von Harald W. (wilhelms)


Lesenswert?

Peter K. schrieb:

> Ich möchte mir eine Lüftersteuerung für meine WaKü bauen.
> Ich habe mir ein Temperaturfühler gekauft und der Verkäufer ist nicht in
> der Lage beim Hersteller mir ein Datenblatt zu besorgen.
> jetzt weiß ich als blutiger Anfänger nicht wie ich an die Daten zur
> Berechnung des Temperaturwertes ran komme.

Nun, dann musst Du den Sensor langsam erwärmen, an einem auf
gleiche Temperatur liegendem Thermometer die Temperatur ablesen
und parallel den Widerstand messen. Die so händisch erstellte
Tabelle kannst Du dann in Dein Programm einbauen.
Gruss
Harald
PS: Ich würde mir bei einem normalen Elektronikhändler einen
Sensor kaufen, für den es auch ein Datenblatt gibt. Der ist
vermutlich sogar billiger.

von Steffen (Gast)


Lesenswert?

Ich hatte damals das gleiche Problem des nicht vorhandenen Datenblatts 
und habe dann einfach den NTC incl Epoxidharzvergusses rausgezogen und 
einen PT100 eingegossen an Stelle des NTC-Sensors.

MfG Steffen

von Bernhard S. (b_spitzer)


Angehängte Dateien:

Lesenswert?

Den NTC mit einem Widerstand als Spannungsteiler aufbauen. NTC oben, 
Festwiderstand unten. Bei gleichem Nennwert (10k) erhältst Du bei 25°C 
die halbe Referenzspannung (deren absolute Größe hier übrigens völlig 
egal ist, es wird ratiometrisch gemessen).
Bei kleinerem Teilerwiderstand verschiebt sich der lineare Bereich in 
Richtung höherer Temperaturen. Wenn Du ein Datenblatt zum Sensor 
auftreiben kannst, gut. Wenn nicht machst du nachher eine 
2-Punkt-Kalibration, wenn es genauer als 1°C sein soll.
Für die Berechnungen kopiere ich die Datenblattwerte des NTC in eine 
Tabellenkalkulation und lasse mir den Verlauf des AD-Wertes über der 
Temperatur zeichnen. Da sieht man den linearen Bereich recht deutlich 
und wählt sich 2 Eckpunkte für eine Umrechnung mit einer 
Geradengleichung.
Einfach mal mit der Tabelle spielen. In J1 kannst Du den 
Spannungsteilerwiderstand anpassen, die Referenzspannung ist zwar drin 
(J2), hat aber keinen Einfluss auf den Digitalwert. Die Auslösung kannst 
Du an deinen ADU anpassen. Im Plot ist noch die Messauflösung in °C/Bit 
drin (gelbe Kurve)

von Weingut P. (weinbauer)


Lesenswert?


von Peter K. (pker)


Lesenswert?

Hallo!
Habe jetzt seit langen mit der Tabelle rum gespielt und hin und her 
gerechnet.
Die Tabelle "NTC-Tabelle.xls"kommt so in etwa hin!

Ich komme nur nicht drauf wie ich da jetzt eine Temperatur draus 
berechnen soll!

Kann mir da einer eine kleine beispiel Rechnung vorschlagen?


Gruß Peter

von Karl H. (kbuchegg)


Lesenswert?

Peter K. schrieb:
> Hallo!
> Habe jetzt seit langen mit der Tabelle rum gespielt und hin und her
> gerechnet.
> Die Tabelle "NTC-Tabelle.xls"kommt so in etwa hin!
>
> Ich komme nur nicht drauf wie ich da jetzt eine Temperatur draus
> berechnen soll!
>
> Kann mir da einer eine kleine beispiel Rechnung vorschlagen?

Du hängst den Sensor in Eiswasser (=0°C) und misst den Wert.
Dann hängst du den Sensor in kochend sprudelndes Wasser. Das hat zwar 
nicht genau 100°C aber es wird reichen.
Zu guter letzt nimmst du zur Sicherheit noch ein paar andere 
Temperaturen dazu. zb kannst du mit einem Fieberthermometer einen 
Bereich run um 37°C ganz gut ausmessen. Einfach kaltes Wasser mit warmen 
Wasser mischen, bis du am Thermomter eine Ablesung erhältst.
Raumthermomter und aktuelle Raumtemperatur ist ebenfalls ein Wert den du 
leicht bestimmen kannst und der dir nichts kostet.
Abgesehen davon, wärs natürlich gut, wenn du ein paar Messwerte in der 
Umgebung des Bereichs hättest, der dich besonders interessiert.

Aus den Werten kann man dann eine Gleichung einpassen.
Wenn du den Sensor mit dem 2.ten Widerstand in den linearen Bereich 
gebracht hast, dann nimmst du einfach

    y = k*x + d

(und mit den restlichen gemessenen Werten kannst du kontrollieren, wie 
gut das passt und ob du einen großen Fehler hast)

Wenn linear nicht gut passt, dann eben eine quadratische Gleichung

    y = l*x^2 + k*x + d

damit sollte das schon besser passen.

(x ist der Messwert vom ADC, y ist die Temperatur. Du musst dann eben 
enstprechende l, k und d bestimmen, so dass die Umrechnung funktioniert. 
Kann man händisch machen, aber auch Excel kann das erledigen)

von Harald W. (wilhelms)


Lesenswert?

Karl Heinz Buchegger schrieb:

> zb kannst du mit einem Fieberthermometer einen
> Bereich run um 37°C ganz gut ausmessen. Einfach kaltes Wasser mit warmen
> Wasser mischen, bis du am Thermomter eine Ablesung erhältst.

Das geht einfacher: Man steckt Fieberthermometer und Sensor
in die Armbeuge und wartet 3min. Der Mensch ist ein ziemlich
guter Thermostat. :-)
Gruss
Harald

von Michael_ (Gast)


Lesenswert?

Ein klein wenig mehr mühe kannst du dir schon geben. Gleich der erste 
Aufruf:
http://www.aquatuning.de/product_info.php/info/p808_Thermosensor-G1-4.html
http://www.aquatuning.de/product_info.php/info/p1746_Thermosensor-G1-4-mit-Display.html
Anhand der Steuergeräte kommst du noch weiter.

von Peter K. (pker)


Lesenswert?

Hallo!

Danke Karl Heinz Buchegger ich werde es mal probieren!!

gruß peter

von Peter K. (pker)


Lesenswert?

Karl Heinz Buchegger schrieb:
> (x ist der Messwert vom ADC, y ist die Temperatur. Du musst dann eben
> enstprechende l, k und d bestimmen, so dass die Umrechnung funktioniert.
> Kann man händisch machen, aber auch Excel kann das erledigen)

wie soll ich l, k und d bestimmen wen ich nicht mal weis was das für 
größen sind

von Karl H. (kbuchegg)


Lesenswert?

Peter K. schrieb:
> Karl Heinz Buchegger schrieb:
>> (x ist der Messwert vom ADC, y ist die Temperatur. Du musst dann eben
>> enstprechende l, k und d bestimmen, so dass die Umrechnung funktioniert.
>> Kann man händisch machen, aber auch Excel kann das erledigen)
>
> wie soll ich l, k und d bestimmen wen ich nicht mal weis was das für
> größen sind

Das sind einfach nur Zahlen, die die Umrechnung von einem System ins 
andere ermöglichen.

Beispiel

Du misst

   festgestellter ADC Wert          gemessene Temperatur
           200                            0°C
           879                           100°C

Die Annahme lautet: der Zusammenhang zwischen ADC WErt und Temperatur 
ist im wesentlichen linear (*), genügt also der Geradengleichung y = k*x 
+ d

Also hast du  (Messwerte einsetzen)

     0 =  k * 200 + d
   100 =  k * 879 + d

das sind 2 Gleichungen in 2 Unbekannten. Und das kann man lösen und so 
die Werte für k und d erhalten


(zweite Gleichung negativ machen)

      0 =  k*200 + d
   -100 = -k*879 - d

von der ersten die zweite abziehen

    0 - 100 = k*200 - k*879 +d -d

+d-d ergibt 0

    -100 = k*200 - k*879

k herausheben

    -100 = k(200-879)

das k alleine stellen

     -100 / (200 - 879) = k

ausrechnen

     k = 0.1472

eine der beiden mit den Messwerten bestückte Gleichung hernehmen

   0 = k*200 + d

das jetzt bekannte k einsetzen

   0 = 0.1472 * 200 + d

umstellen

    -(0.1472*200) = d

ausrechnen

   d = -29.44


Also kannst du durch deine beiden Messwerte eine Gerade legen, die der 
Gleichung

    y = 0.1472 * x - 29.44

genügt.

Probe

    für x = 200  ergibt sich  0.1472*200 - 29.44   ->   0
    für x = 879  ergibt sich  0.1472*879 - 29.44   ->  99.948

(das da nicht genau 100 rauskommt liegt daran, dass ich bei der 
Berechnung ein paar Kommastellen unter den Tisch hab fallen lassen)

Meldet dir dein ADC einen Wert von 432, dann eben

      0.1472*432 - 29.44  ->  34.1

und es hatte rund 34°



Für quadratische Gleichungen

    y = l*x*x + k*x + d

geht das genau gleich, nur dass du eben 3 Messpunkte brauchst (für jeden 
der Koeffizienten einen) um das System aus dann 3 Gleichungen nach den 
Unbekannten l, k und d aufzulösen.


(*) ob das so ist oder nicht kann man sehen, indem man ein paar ADC 
Werte samt zugehöriger Temperatur aufnimmt. Die zeichnet man in ein 
Koordinatensystem ein und wenn du da ein Lineal dranlegst und die Punkte 
im wesentlichen (ganz genau wirds wahrscheinlich nie stimmen) alle an 
der Linealkante liegen, dann funktioniert eine Geradengleichung, volgo 
lineare Gleichung. Und jetzt weißt du auch, warum man sowas eine 
'lineare' Glechung nennt - weil man ein Lineal anlegen kann und die 
Punkte auf einer Geraden liegen. Die nächst höhere Potenz ist dann eine 
quadratische Gleichung (weil x im Quadrat darin vorkommt) und die 
zugehörige Kurve ist eine Parabel.



Und plötzlich kriegt alles was in Mathe in der Schule immer so trocken 
war eine ganz spezielle praktische Bedeutung :-) Und das beste daran: 
man malt nicht einfach irgendwelche Formeln ab, die man nicht versteht, 
sondern leitet sich die Dinge selber her so das es praktisch einsetzbar 
ist. Und wenn es ein Problem gibt, kann man sich dann plötzlich selber 
helfen weil man verstanden hat, was da abgeht und die Mathe dazu im 
Griff hat.

von Bernhard S. (b_spitzer)


Lesenswert?

Man muss dabei nicht unbedingt mit Fließkommazahlen rechen. Einfach 
erstmal die ganzzahligen Werte aus der Formel einsetzen und etwas 
nachdenken. Wenn das Ergebnis eine oder zwei Nachkommastellen haben 
soll, dann normiert man die Zahlen eben auf Zehntel- oder 
Hunderstelgrad. Als nächstes schaut man, dass die Divisionen möglichst 
spät erledigt werden (Rundungsfehler minimieren) und dann prüft man den 
erlaubten Wertebereich der genutzen Variablen. Wenn es mit INT nicht 
mehr hinhaut gibt LONG zwar etwas mehr Rechenbedarf, wenn aber kein 
Coprozessor für Float-Rechnungen dabei ist, dann ist das trotzdem viel 
schneller zu rechnen.
Wenn die Umkehrfunktion (Temperatur = f(Digitalwert)) bei linearer 
Annäherung an den Enden zu ungenau wird, kann man auch stückweise linear 
arbeiten. Einfach an den Enden des Bereiches eine neue Geradengleichung 
ermitteln und mit if/else if die Bereiche aus dem Digitalwert bestimmen.

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.