Hallo!
Habe in der letzten Zeit mit dem Maverick Fühler ET73 rum experimentiert!
Da Ich mich nicht mit Python auseinandersetzen wollte habe Ich dieses mal über Mono nachgestellt.
Dabei ist mir aufgefallen das es immer extremen Schwankungen beim MCP3208 habe dieses in den Griff bekommen indem Ich einen 10nF Keramikkondensator parallel zum Temperaturfühler angeschlossen!
Erster Effekt Spannung ist relativ Stabil, daß heißt das meine Schwankungen nur noch bei + - 3 liegen und Ich keine mehr Fehlmessungen habe (Vorher war bei mir jede 5.te Messung eine Fehlmessung!).
Zweiter Effekt war das Ich beim rausziehen des Fühlers dann den minimalsten Wert angezeigt bekomme, also etwa -50°C.
Da Ich auch laut Excel Tabelle den Fühler nicht eingestellt bekommen habe (Alle Werte im hier in dem Forum passten irgendwie nicht so ganz, und Ich selber denke mal das Ich damit überfordert war

), dachte Ich mir, das Ich mal einen anderen Weg versuche.
Nach Durchforstung mehrerer Tabellen und Elektrotechnik Büchern bin Ich immer auf dem B Wert gestossen.
Diesen B Wert habe Ich eben dann 2 mal bestimmt ((B25/90) und (B25/205))
Das heißt, daß Ich nun 3 Messungen gemacht habe, einmal den Widerstand des Fühlers bei 25°C, 90°C und 205°C gemessen! (Zum Teil hatte Ich diese ja schon nach der Exceltabelle gemacht!).
Ich muss dazu sagen das Ich mehrere ET73 Fühler habe, Parallel hatte Ich einen Fühler an der Pi einen Fühler an dem Maverick und einen Fühler an einem Messgerät.
Bei den Messungen habe mir dabei auch die Read_ADC0 Werte aufgeschrieben.
Nach den Messungen habe Ich die B Werte bestimmt!
Die Formel dafür wäre
B=T1*T2/(T2-T1)*ln(R1/R2)
Den ersten BWert bestimmen
B= (25+273,15)*(90+273,15)/65*ln(208000/26400) Zur Erklärung der Werte: 25 sind die 25°C bei der Messung und da die Temperatur aber in Kelvin angegeben werden muss werden nocheinmal 273,15 drauf addiert. 90 sind die 90°C Messung. 65 = Differenz zwischen den 90°C und 25 °C.. 208000 ist der Widerstand in Ohm den Ich bei 25 °C gemessen habe. Die 26400 eben der Widerstand in Ohm bei 90°C
Damit hätte Ich den ersten B Wert mit 3438,37962
Danach dasselbe nochmal für den B(25/205) Wert:
B=(25+273,15)*(200+273,15)/180*ln(208000/1990)
Ich denke die Werte muss Ich nicht erklären!
Dieser B Wert wäre dann bei mir 3682,338438.
Nun habe Ich das in Mono bzw c# Sharp als Formel so eingefügt! Vielleicht kann das ja einer in Python übersetzen.
Code:
double wert = 4096-read_adc0;
double Rtheta = 47000*((read_adc0/wert));
double v=Math.Log(Rtheta/218000);
double b=0; // In jedem LeseZyklus b auf null setzen!
if (read_adc0>=3351){ // 3350 = ist der read_adc0 Wert der mir die Pi in etwa bei 25 °C Heraus gegeben hat
b=3438.37962; // 3438,37962 ist der Erechnete B(25/90) Wert
}
if(read_adc0<=3350){ //3350 wie oben
double multi=0.08011784 ; // Hierfür wäre die Formel ((B25/205)-(B25/90))/(3350-305))
double wert_multiplizieren=3351-read_adc0;
b = 3432.7796+(wert_multiplizieren*multi);
}
double Ts=298.15; // 25°C in Kelvin
double bruchuntenkomplett=b+(Ts*v);
double temperaturneu = b * Ts / bruchuntenkomplett -273.15;
Nach mehreren Versuchsmessungen muss Ich sagen, das Ich jetzt ab 50°C eine Abweichung von etwa 0,5 bis 1° C zum Maverick habe! Vielleicht hat ja jemand Zeit das auch mal auszuprobieren bzw nachzubauen!
Desweitern würde Ich mich über den Code in Python freuen!

Gruß
Dominik