Hallo zusammen,
ich muss dieses Thema leider nochmal aktivieren. Ich habe einen unbekannten NTC und möchte gerne mit diesem eine Temperatur messen.
NTC:
ohm temp
1612 20
654 42
358 60
187 80
110 100
Ich habe bei einer Versorgungsspannung (Arduino & Messschaltung) von 6V einen Temperaturwert von 13°C, bei 3,86V einen Wert von 29°C. Der aktuelle Widerstand beträgt zu diesem Zeitpunkt 1454 Ohm.
Ich habe es so verstanden, dass aufgrund des Spannungsverhältnisses die Versorgungsspannung nicht berücksichtigt werden muss.
Was mache ich falsch ?
Vielen Dank im Voraus !!
Folgender Code wird verwendet:
/ NTC temperature calculation by "jurs" for German Arduino forum
#define ABSZERO 273.15
#define MAXANALOGREAD 1023.0
float temperature_NTCB(float T0, float R0, float B, float RV, float VA_VB)
// Ermittlung der Temperatur mittels NTC-Widerstand
// Version der Funktion bei gegebener Materialkonstante B
// Erklärung der Parameter:
// T0 : Nenntemperatur des NTC-Widerstands in °C
// R0 : Nennwiderstand des NTC-Sensors in Ohm
// B : Materialkonstante B
// Vorwiderstand: Vorwiderstand in Ohm
// VA_VB : Spannungsverhältnis "Spannung am NTC zu Betriebsspannung"
// Rückgabewert : Temperatur
{
T0 += ABSZERO; // umwandeln Celsius in absolute Temperatur
float RN = RV * VA_VB / (1 - VA_VB); // aktueller Widerstand des NTC
return T0 * B / (B + T0 * log(RN / R0)) - ABSZERO;
}
float temperature_NTC(float T0, float R0, float T1, float R1, float RV, float VA_VB)
// Ermittlung der Temperatur mittels NTC-Widerstand
// Version der Funktion bei unbekannter Materialkonstante B
// Erklärung der Parameter:
// T0 : Nenntemperatur des NTC-Widerstands in °C
// R0 : Nennwiderstand des NTC-Sensors in Ohm
// T1 : erhöhte Temperatur des NTC-Widerstands in °C
// R1 : Widerstand des NTC-Sensors bei erhöhter Temperatur in Ohm
// Vorwiderstand: Vorwiderstand in Ohm
// VA_VB : Spannungsverhältnis "Spannung am NTC zu Betriebsspannung"
// Rückgabewert : Temperatur
{
T0 += ABSZERO; // umwandeln Celsius in absolute Temperatur
T1 += ABSZERO; // umwandeln Celsius in absolute Temperatur
float B = (T0 * T1) / (T1 - T0) * log(R0 / R1); // Materialkonstante B
float RN = RV * VA_VB / (1 - VA_VB); // aktueller Widerstand des NTC
return T0 * B / (B + T0 * log(RN / R0)) - ABSZERO;
}
void setup()
{
Serial.begin(9600);
}
#define ANALOGPIN A2
void oiltemp()
{
float T0 = 20; // Nenntemperatur des NTC-Widerstands in °C
float R0 = 1612; // Nennwiderstand des NTC-Sensors in Ohm
float T1 = 42; // erhöhte Temperatur des NTC-Widerstands in °C
float R1 = 654; // Widerstand des NTC-Sensors bei erhöhter Temperatur in Ohm
float Vorwiderstand = 1500; // Vorwiderstand in Ohm
float temp;
int aValue = analogRead(ANALOGPIN);
// Berechnen bei unbekannter Materialkonstante
temp = temperature_NTC(T0, R0, T1, R1, Vorwiderstand, aValue / MAXANALOGREAD);
Serial.print("NTC : "); Serial.print(temp); Serial.println(" C");
// Berechnen bei bekannter Materialkonstante B=3933;
temp = temperature_NTCB(T0, R0, 3788, Vorwiderstand, aValue / MAXANALOGREAD);
Serial.print("NTCB: "); Serial.print(temp); Serial.println(" C");
}
void loop() {
oiltemp();
delay(1000);
}