NTC keine richtigen Grad Celisus Werte....

Hallo,

könnt ihr einen Anfänger vielleicht helfen, bekomme es nicht hin das für mein NTC die richtigen Grad Celsius Werte auszugeben. Bekomme immer Werte wie 120 Grad, dass komische ist dann auch wenn ich den NTC anfasse, werden die WErte geringer obwohl meine Hand wärmer ist als die Raumtemp.
Ich weiß nicht mehr weiter, habe alles durchsucht aber finde keine Lösung. Mein Breadboard in 0 Grad wasser wollte ich auch nicht halten. Es muss doch möglich sein anhand der Datenblattes die richten Grad Celsisus Werte zu bestimmen.

Ich habe folgende Zusammenstellung

http://physicalcomputing.at/page/11

Hier mein NTC-0,2 47K
http://www.reichelt.de/Heissleiter-Varistoren/NTC-0-2-47K/3//index.html?ACTION=3&GROUPID=3114&ARTICLE=13564&SHOW=1&START=0&OFFSET=16&

Hier das Datenblatt des NTC

Hier zum besseren Überblick der Code nochmal

/* 
Temperaturmessung mit einem NTC Thermistor 
von Thomas Ecker 
www.physicalcomputing.at 
Mai 2010 
*/ 

#include <math.h> 

int SensorPin = 0; // Für den Senoreingang wird Analog 0 gewählt 
float sensorWert = 0; // Variable, die den Sensor Wert annimmt 
float u1 =0; // Spannung u1 am Spannungsteiler 
float u2 = 0; // Spannung u2 am Spannungsteiler 
float i = 0; // Strom in A 
float Rntc = 0; // Widerstand des Thermistors zum Zeitpunkt der Messung 
float T = 0; // Variable für gemessene Temperatur 
float B = 4090; // Wert aus Datenblatt des Thermistors 
float Tn = 298.16; // Nenntemperatur in K 
float R25 = 3473; // Nennwiderstand in Ohm bei Nenntemperatur (aus Datenblatt) 

void setup() { 

Serial.begin (9600); // Temperatur kann im "Serial Monitor" abgelesen werden 
} 

void loop() { 

sensorWert = analogRead(SensorPin); // Wert am Sensor wird gelesen 
u2 = (sensorWert * 5)/1024; // Spannung am Sensor wird berechnet 
u1 = 5-u2; // Spannung am Vorwiderstand wird berechnet 
i = u1/1000; // Strom wird berechnet 
Rntc = u2/i; // Widerstand des Thermistors zum Zeitpunkt der Messung 

T = (B*Tn)/(B+(log(Rntc/R25)*Tn)); // Berechnung der Temperatur 
T = T-273.15; // Umrechnung von K in °C 

Serial.print ("Temperatur = "); 
Serial.print (T); 
Serial.print (" sensorwert = "); 
Serial.print (sensorWert); 
Serial.println (" "); 
delay (2000); // Temperatur wird alle 2 sec. gemessen 
}

Ich verstehe nicht die richtigen Daten aus dem Datenblatt auszulesen um die richtige, wie in meinem Beispiel, einfach nur die Raumtemp. zu bestimmen.

Ich hoffe mir kann einer helfen in den Code die richtigen Werte für meinen NTC herauszufinden.

Danke vielmals an alle die mir helfen.

Schöne Anleitung nur steht nirgens wie groß der NTC ist sondern gesagt wird daß der NTC ein teil des Einsteigerkits ist.
Schön daß auf http://physicalcomputing.at der Link vom Einsteigerkit zu Think & Sound CUBE führt.
Ich kann Dir nur sagen, daß im Arduino Basic Kit ein NTC zu 4,7kOhm ist. Versuch mal statt des 1kOhm Widerstandes einen 10kOhm zu nehmen 4mal hintereinander
sensorWert = analogRead(SensorPin);
zu machen (damit der richtige Wert gelesen wird).
Grüße Uwe

Hallo uwefed,

danke für deine Hilfe! Vielleicht habe ich mich falsch ausgedrückt, ich habe nicht die Bauteile wie Sie in dem Set der Anleiitung sind. Ich habe mir in einem Forum ein Einkaufsliste herausgezogen und diese gesondert bestellt. Bin ich günstiger weg gekommen als so ein Starteset zu kaufen. Leider habe ich dadurch auch jetzt Probleme, was ich aber glaube mir hilft weil ich mich mehr mit der Materie beschäftigen muss.

Ich habe einen 47K NTC und habe diesen mit einem 47K Wiederstand abgesichert, also andere Bauteile als in der Beschreibung bei http://physicalcomputing.at/page/11

Mein NTC ist dieser hier
Hier mein NTC-0,2 47K
http://www.reichelt.de/Heissleiter-Varistoren/NTC-0-2-47K/3//index.html?ACTION=3&GROUPID=3114&ARTICLE=13564&SHOW=1&START=0&OFFSET=16&

und hier das Datenblatt dazu

Welcher werte muss ich für meinen verwendeten NTC aus dem Dateblatt nehmen, damit ich die richtige Temp habe.

Diese beiden Werte aus dem Code muss ich anpassen an meinen NTC aber ich bin nicht in der Lage die richtigen werte zu finden.

Ich habe die beiden Werte mal Fett makiert.

float B = 4090; // Wert aus Datenblatt des Thermistors
float Tn = 298.16; // Nenntemperatur in K
float R25 = 3473; // Nennwiderstand in Ohm bei Nenntemperatur (aus Datenblatt)

Danke für die Hilfe, ich weiß sonst nicht mehr weiter.

Das habe ich schon so verstanden.
Nimm statt des 1kOhm Widerstandes im Spannungsteiler mit den NTC einen 10kOhm.
Grüße Uwe

Hallo uwefed,

wiseo 10K Ohm wiederstand? Ich dachte, so habe ich es gelsene das ich zu dem NTC den gleichen Wiederstand benutzen muss. Ich habe einen 47K Wiederstand eingesetz. Wenn ich jetzt einen 10K einsetze zerschiesse ich damit mein Board?
Wie gesagt bin ein absoluter Anfänger!

Finde ich super das du mir hilfst!

Der orginale Spannungsteiler des Beispiels ist 1kOhm Widerstand und ein 4,7kOhm NTC.
Du hast nun enen 47kOhm NTC (zehn mal so groß). damit das Spannungsverhältnic gleich bleibt mußt Du einen 10kIhm widerstand verwenden.
Also 10kOhm Widerstand und 47Kohm NTC.
Da diese Werte etwas hoch für den analogen Eingang sind mußt Du mehrfach messen damit Du den richtigen Wert mißt.
Viele Grüße Uwe

Habe ich gemacht! Aber welche Werte aus dem Datenblatt vom NTC muss ich eintragen.
Ich bekomme jetzt z.B. aktuell mit diesen einstellungen bei ca.20 Grad Celsius -47.99 Grad Celsius heraus!

float B = 5229; // Wert aus Datenblatt des Thermistors 
float Tn = 298.16; // Nenntemperatur in K 
float R25 = 3473; // Nennwiderstand in Ohm bei Nenntemperatur (aus Datenblatt)

Was sagt denn
Serial.print (sensorWert);
???

Daran kannst du enscheiden, ob du es falsch angeschlossen hast oder ob du einen Fehler in deiner Berechnung hast.

Wenn ich den Thread richtig verstehe, hast du einen R25 = 47000
( Im Datenblatt sehe ich dazu B = 4090. )

Aber die grundsätzliche Frage ist doch, wo der Spannungsteiler-Widerstand berücksichtigt wird.

i = u1/1000; // Strom wird berechnet

Was ist wohl in dieser Zeile falsch ?

Das schöne an Temperaturen ist, dass man alles sehr gemütlich langsam nachmessen kann, und auch noch ( in deinem Fall ) Werte hat, die man leicht verifizieren kann.

Hallo michael_x,

danke das due mir bei der Lösung helfen willst der Sensowert zeigt bei den eingestellten Parameter 1023.00 bei ca. 20.5 Grad Celsius in meinem Raum an.
Ich habe wie von uwefed den NTC mit einmen 10K Wiederstand eingesetz.

So wie du beschrieben hast, ist alles richtig, aber was macht die Zeile

i = u1/1000; // Strom wird berechnet

Ich bin ein blutiger Anfänger und habe wirklich keine Ahnung was ich da überhaupt mache. Aber dafür ist ja Arduino da um das ganze mal zu kapieren was so in der Welt der bits und bytes so abgeht :slight_smile:

Danke für eure Hilfestellungen.

der Sensowert zeigt bei den eingestellten Parameter 1023.00

Dann such mal zuerst auf der elektrischen Seite ...
An deinem Analogpin sind ziemlich genau 5V, und das ist nicht gut :wink:

Wie kommst du darauf, würde mich mal interessieren wie du auf die 5V kommst! Es würde mir helfen damit ich was lerne und nicht nur das nachbau was andere so aufstecken auf so ein bredboard!
Was soll ich machen auf 3.3V stecken, und warum?
Danke

Schau dir analogRead() an

Returns
int (0 to 1023)

... und wie ein Spannungsteiler funktioniert.

Hast du ein Messgerät ? Das wäre bequemer und sicherer als ein Sketch mit

loop() {
Serial.print( "Spannung an A0 :  " );
Serial.println(analogRead(0) * 5.0 / 1023);
delay (300);
}

Das mit den 5V gilt natürlich nur im Normalfall eines 5V - Arduino. Das Ganze mit 3.3V zu betreiben ist keine Lösung.

1023 ist der höchste Wert den der ADC mißt. Bei einer standartmäßig eingestellten 5V Referenz entspricht 1023 genau 5V.
Bei einem Spannungsteiler von 10kOhm inserie zu ca 47Kohm Der zwischen 5V und Masse geschaltet werden muß ca 4V am Analogeingang anliegen (ADC ca 850) . Du mißt aber 5V. Das heißt der NTC ist nicht richtig eingesteckt und macht keinen Kontakt auf Masse oder auf den Eingang.

Grüße Uwe