Hallo zusammen !
ich wollte euch um Hilfe bitten......
und zwar versuche ich grade einen Messwandler für ein PT100 von Pollin auszulsen.........
Man stellt den Messwandler mit Potis ein ....
Es gibt ein Nullabgleichswert (so 20-30mV).
Als Spannungsbereich habe ich 5000mV.
Als Temperaturbereich habe ich 0-400°C.
Ich würde die Formel aber gerne recht allgemein halten....
Es wird ein Mittelwert gebildet um das Messergebnis zu glätten...
bisher hab ich das hier, aber das is ja noch recht ungenau, da zB der Nullwertabgleich nicht berücksichtigt wird:
byte sensorPin = A1;
long sensorValue;
unsigned int count = 100;
float voltage;
float temp_min = 0.0;
float temp_max = 400.0;
float temperature;
analogReference(DEFAULT);
sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
voltage = (sensorValue) * (5000.00 / 1024);
Serial.println(voltage);
temperature = temp_min + ((sensorValue) * (((temp_min * -1.00) + temp_max)/ 1024));
Serial.println(temperature);
Serial.println();
Hierbei ist auch ein Problem, das der Messwandler mir 19,03mV rausgibt......
beim Ardunio kommen sogar ca. 23mV an, aber messen tut er nur "2" als 2* (5000/1024) = 9,77mV.....
Da fehlen also ca. 10mV .......
Was ich auch noch nicht so ganz verstanden hab, ist diese Sache mit den 1024......
Der Arduino gibt ja ein Wert von 0-1023 raus, die Null wird ja "mitgezählt", als muss ich durch 1024 teilen, aber muss ich dann den Wert, den ich mit Analogread messe nicht mit 1 addieren, für die Null ?
Das mit dem " * -1.0" mache ich, falls die Minimaltemperatur negativ sein sollte.....
Ich habe mir jetzt außerdem folgenes überlegt:
// Heiztemperatur Messwert
const byte het_Pin = A1; // Pin für Temperatursensor
long het_count = 100; // Anzahl der Messungen um Mittelwert zu bilden
float het_voltage;
float het_zero_voltage = 19.06; // Spannung beim Nullabgleich in mV
float het_temp_min = 0.0; // unterer Temperaturbereich
float het_temp_max = 400.0; // oberer Temperaturbereich
long het_actual;
het_voltage = 0; // Wert zurücksetzen
for (int i=0; i < het_count; i++)
{
het_voltage = het_voltage + (((5000.00 / 1024) * analogRead(het_Pin)) - het_zero_voltage);
}
het_voltage = (het_voltage / het_count);
float Temperature = het_temp_min + (het_voltage * (((het_temp_min * -1.0) + het_temp_max) / 5000.00));
// Temperatur = unterer Temperaturbereich (0°C) + (Mittelwert der anliegenden Spannung (ohne Nullabgleichsspannung) * Temperaturbereich / Spannungsbereich
klappt natürlich nicht, da der gemessene Wert ja bereits größer als der Nullabgleichswert ist.......
aber der Gedanke, den Nullabgleichswert abzuziehen ist schon richtig ?
Weil mein Messwandler hat bei 0°C (von mir festgelegte Mindesttemperatur) bzw einem PT100 Widerstand von 100Ohm ein Wert von 19,03mV am Ausgag......
Das Ganze läuft jetzt auch nur zum testen über den Ardunio Mega und kommt hinterher auf ein ATTiny mit einer externen Referenzspannung...
vielen Dank schonmal !