Seite 1 von 2

Wie setzt sich die Thermistor Tabelle wirklich zusammen?

Verfasst: So 12. Dez 2021, 12:20
von AtlonXP
Hallo zusammen,
ich mache mir Gedanken wie sich eine Thermistor Tabelle wirklich zusammensetzt.
Leider scheint das, zumindest für mich, ein Buch mit 7 Siegeln zu sein.

In der Datei Extruder.cpp sind die ganzen Tabellen hinterlegt.

Ich stelle hier die Tabelle 13 und 14 als Muster rein.

//TODO: Tabelle startet erst bei 92°C ... Kleine Rundungszacken am Anfang, weil alles *4.
#define NUMTEMPS_13 61 // NTC 3950 100k thermistor - Conrad V3
const short temptable_13[NUMTEMPS_13][2] PROGMEM = {
{ 23 * 4, 300 * 8 }, { 25 * 4, 295 * 8 }, { 27 * 4, 290 * 8 }, { 28 * 4, 285 * 8 }, { 31 * 4, 280 * 8 }, { 33 * 4, 275 * 8 }, { 35 * 4, 270 * 8 }, { 38 * 4, 265 * 8 }, { 41 * 4, 260 * 8 }, { 44 * 4, 255 * 8 }, { 48 * 4, 250 * 8 }, { 52 * 4, 245 * 8 }, { 56 * 4, 240 * 8 }, { 61 * 4, 235 * 8 }, { 66 * 4, 230 * 8 }, { 71 * 4, 225 * 8 }, { 78 * 4, 220 * 8 }, { 84 * 4, 215 * 8 }, { 92 * 4, 210 * 8 }, { 100 * 4, 205 * 8 }, { 109 * 4, 200 * 8 }, { 120 * 4, 195 * 8 }, { 131 * 4, 190 * 8 }, { 143 * 4, 185 * 8 }, { 156 * 4, 180 * 8 }, { 171 * 4, 175 * 8 }, { 187 * 4, 170 * 8 }, { 205 * 4, 165 * 8 }, { 224 * 4, 160 * 8 }, { 245 * 4, 155 * 8 }, { 268 * 4, 150 * 8 }, { 293 * 4, 145 * 8 }, { 320 * 4, 140 * 8 }, { 348 * 4, 135 * 8 }, { 379 * 4, 130 * 8 }, { 411 * 4, 125 * 8 }, { 445 * 4, 120 * 8 }, { 480 * 4, 115 * 8 }, { 516 * 4, 110 * 8 }, { 553 * 4, 105 * 8 }, { 591 * 4, 100 * 8 }, { 628 * 4, 95 * 8 }, { 665 * 4, 90 * 8 }, { 702 * 4, 85 * 8 }, { 737 * 4, 80 * 8 }, { 770 * 4, 75 * 8 }, { 801 * 4, 70 * 8 }, { 830 * 4, 65 * 8 }, { 857 * 4, 60 * 8 }, { 881 * 4, 55 * 8 }, { 903 * 4, 50 * 8 }, { 922 * 4, 45 * 8 }, { 939 * 4, 40 * 8 }, { 954 * 4, 35 * 8 }, { 966 * 4, 30 * 8 }, { 977 * 4, 25 * 8 }, { 985 * 4, 20 * 8 }, { 993 * 4, 15 * 8 }, { 999 * 4, 10 * 8 }, { 1004 * 4, 5 * 8 }, { 1008 * 4, 0 * 8 }
};

// Thermistor NTC 3950 100k Ohm (other source)
#define NUMTEMPS_14 103
const short temptable_14[NUMTEMPS_14][2] PROGMEM = {
{ 1 * 4, 938 * 8 }, { 11 * 4, 423 * 8 }, { 21 * 4, 351 * 8 }, { 31 * 4, 314 * 8 }, { 41 * 4, 290 * 8 }, { 51 * 4, 272 * 8 }, { 61 * 4, 258 * 8 }, { 71 * 4, 247 * 8 }, { 81 * 4, 237 * 8 }, { 91 * 4, 229 * 8 }, { 101 * 4, 221 * 8 }, { 111 * 4, 215 * 8 }, { 121 * 4, 209 * 8 }, { 131 * 4, 204 * 8 }, { 141 * 4, 199 * 8 }, { 151 * 4, 195 * 8 }, { 161 * 4, 190 * 8 }, { 171 * 4, 187 * 8 }, { 181 * 4, 183 * 8 }, { 191 * 4, 179 * 8 }, { 201 * 4, 176 * 8 }, { 211 * 4, 173 * 8 }, { 221 * 4, 170 * 8 }, { 231 * 4, 167 * 8 }, { 241 * 4, 165 * 8 }, { 251 * 4, 162 * 8 }, { 261 * 4, 160 * 8 }, { 271 * 4, 157 * 8 }, { 281 * 4, 155 * 8 }, { 291 * 4, 153 * 8 }, { 301 * 4, 150 * 8 }, { 311 * 4, 148 * 8 }, { 321 * 4, 146 * 8 }, { 331 * 4, 144 * 8 }, { 341 * 4, 142 * 8 }, { 351 * 4, 140 * 8 }, { 361 * 4, 139 * 8 }, { 371 * 4, 137 * 8 }, { 381 * 4, 135 * 8 }, { 391 * 4, 133 * 8 }, { 401 * 4, 131 * 8 }, { 411 * 4, 130 * 8 }, { 421 * 4, 128 * 8 }, { 431 * 4, 126 * 8 }, { 441 * 4, 125 * 8 }, { 451 * 4, 123 * 8 }, { 461 * 4, 122 * 8 }, { 471 * 4, 120 * 8 }, { 481 * 4, 119 * 8 }, { 491 * 4, 117 * 8 }, { 501 * 4, 116 * 8 }, { 511 * 4, 114 * 8 }, { 521 * 4, 113 * 8 }, { 531 * 4, 111 * 8 }, { 541 * 4, 110 * 8 }, { 551 * 4, 108 * 8 }, { 561 * 4, 107 * 8 }, { 571 * 4, 105 * 8 }, { 581 * 4, 104 * 8 }, { 591 * 4, 102 * 8 }, { 601 * 4, 101 * 8 }, { 611 * 4, 100 * 8 }, { 621 * 4, 98 * 8 }, { 631 * 4, 97 * 8 }, { 641 * 4, 95 * 8 }, { 651 * 4, 94 * 8 }, { 661 * 4, 92 * 8 }, { 671 * 4, 91 * 8 }, { 681 * 4, 90 * 8 }, { 691 * 4, 88 * 8 }, { 701 * 4, 87 * 8 }, { 711 * 4, 85 * 8 }, { 721 * 4, 84 * 8 }, { 731 * 4, 82 * 8 }, { 741 * 4, 81 * 8 }, { 751 * 4, 79 * 8 }, { 761 * 4, 77 * 8 }, { 771 * 4, 76 * 8 }, { 781 * 4, 74 * 8 }, { 791 * 4, 72 * 8 }, { 801 * 4, 71 * 8 }, { 811 * 4, 69 * 8 }, { 821 * 4, 67 * 8 }, { 831 * 4, 65 * 8 }, { 841 * 4, 63 * 8 }, { 851 * 4, 62 * 8 }, { 861 * 4, 60 * 8 }, { 871 * 4, 57 * 8 }, { 881 * 4, 55 * 8 }, { 891 * 4, 53 * 8 }, { 901 * 4, 51 * 8 }, { 911 * 4, 48 * 8 }, { 921 * 4, 45 * 8 }, { 931 * 4, 42 * 8 }, { 941 * 4, 39 * 8 }, { 951 * 4, 36 * 8 }, { 961 * 4, 32 * 8 }, { 971 * 4, 28 * 8 }, { 981 * 4, 23 * 8 }, { 991 * 4, 17 * 8 }, { 1001 * 4, 9 * 8 }, { 1011 * 4, -1 * 8 }, { 1021 * 4, -26 * 8 }
};

Warum meine Frage?

Ich möchte mein Temperaturlimit für den Extruder auf 300 C° erhöhen.
Da stellt sich mir doch die Frage, welche Tabelle macht max. bis zu welcher Temperatur mit?

Verbaut sind bei mir Thermistoren HT- NTC 3950 100k vom Typ K, die bis zu 350 C° können sollen.
Welche Tabelle kann bis 350 C° und ist nun die bessere und warum auch?

Es wäre schön, wenn hier jemand die Zeit finden könnte,
diese Tabellen Werte rechnerisch so zu erklären, dass ich das auch verstehen kann.

Oder vielleicht auch einen Link,wo das Ganze erklärt.

Im Voraus vielen Dank.

LG AtlonXP

Re: Wie setzt sich die Thermistor Tabelle wirklich zusammen?

Verfasst: So 12. Dez 2021, 14:29
von mhier
Das ist das typische Repetier gelump. Eigentlich werden die Zahlen aus einer einfache Exponential-Funktion mit 3 Parametern bestimmt, die du schon im Namen des Thermistors hast (100k Nennwiderstand, implizit 25 Grad Nenntemperatur wenn nichts anderes angegeben ist, und ein Temperatur-Koeffizient von 3950). Bei Klipper wird das auch genau so gemacht. Diese Parameter findet man sonst auch im Datenblatt des Thermistors. Aus irgendwelchen Gründen macht Repetier das mit diesen Tabellen. Das ist im Grunde die Exponential-Funktion für verschiedene Temperaturen ausgerechnet. Wie das genau war, hab ich vergessen - das war irgendwie tückisch, wie so vieles in Repetier. Deshalb ja auch die ganzen Faktor 4 und 8. Ich würde die Finger von den Tabellen lassen.

Re: Wie setzt sich die Thermistor Tabelle wirklich zusammen?

Verfasst: So 12. Dez 2021, 16:37
von rf1k_mjh11
Hallo AtlonXP,

Bevor ich ins Eingemachte tunke, möchte ich als erstes sagen: die meisten Thermistoren sind nur bis 300° zugelassen (da darüber meist der Tod des Sensors eintritt). Deswegen sind Thermistoren für höhere Temperaturen sehr selten (und dann garantiert der Hersteller oft nur eine mäßige Mindesthaltbarkeit).
Also: entweder einen geeigneteren Thermistor einsetzen, oder gleich einen PTC-Sensor einsetzen. (Einen Thermistor bis 500° gibt es hier, z.Beispiel, samt dazugehöriger Thermistortabelle.)

Ich habe mich auch eine Zeitlang mit Thermistortabellen auseinandergesetzt. Ich habe sogar eine neu erstellt, da der Thermistor bei meinem Pico einging und ich das Original eine Zeitlang nicht erstehen konnte (inzwischen kann man es wieder, siehe Link weiter oben).

Die Thermistortabelle entspricht nicht einer exakten Funktion, weswegen jeder Hersteller eine eigene Kurve per Datenblatt 'mitliefert' und es daher pro Hersteller beinahe immer eine eigene Thermistortabelle bedarf. Die Tabelle baut sich so auf:

{ADC-Wert x Multiplikator , Temperatur x Multiplikator} Die Multiplikatoren dienen (?) der Steigerung der Genauigkeit.
Dabei steigt in der Tabelle der ADC-Wert bei gleichzeitigem sinken der Temperatur.

Das heißt, wenn du den ADC-Wert für eine Temperatur genau kennst, könntest du damit einen weiteren Eintrag in die Thermistortabelle schreiben.
ADC = Analog Digital Converter (die elektronische Schaltung, die anhand des Thermistorwiderstands einen Wert liefert).

Man kann sich eine Schaltung selbst basteln und die "ADC-Wert/Temperatur -Paare" selbst ermitteln. Man kann auch den Drucker dazu missbrauchen, denn der Drucker kennt den ADC-Wert am besten (=genauesten). Man kann sich den ADC-Wert ausspucken lassen. (Ich habe eben nach dem Beitrag gesucht, den ich schreiben wollte - offensichtlich wurde der im Forum noch nicht geschrieben) :dash: So 'nen Sche... das ganze Zeug, dass ich geschrieben habe, ist futsch! :slap:

Es geht darum:
Eine sehr unbekannte Option des M105-Befehls ist 'X0'. Damit sollte der Drucker in der Log-Datei den ADC-Wert zur gemessenen Temperatur mit ausspucken. Diese Option ist bei uns in der Wiki noch nicht dokumentiert, ist aber in der Original-Repetier-FW schon enthalten und folglich auch in unserer FW.

ABER: Hier hat unsere FW (die Conrad, wie vermutlich auch die Community Version) einen Bug. Wenn man M105 X0 eingibt, wird die Temperatur ins Log geschrieben und der ADC-Wert nur vom Heizbett!
Was normalerweise nur so aussieht (mit M105):
> 15:05:09.448 : T:16.49 /0 B:18.47 /0 B@:0 @:0
Sollte mit M105 X0 zu:
> 15:05:11.512 : T:16.49 /0 B:18.47 /0 RAW1:3904 @:3916 B@:0 @:0
werden. In der obigen Zeile ist mein Firmware-Hack bereits eingearbeitet und man sieht den ADC des Extruders: 3904 UND des Betts: 3916.
Falls Nibbels den Bug gefunden hat, müsste was ähnliches bei euch in der Log-Datei aufscheinen (Achtung: unbeding zwei unterschiedliche Temperaturen für Bett und Extruder anpeilen, damit unterschiedliche RAW-Werte aufscheinen können. Ich weiß schon nicht mehr wie es vorher war (vielleicht hat der Log einfach den Bett-Wert 2x ausgespuckt).

Exakt kann man dann die Thermistortabelle erstellen, indem man den Extruder auf eine Temperatur sich einpendeln lässt (nennen wir die Temperatur T1). Dann sendet man dem Drucker den M105 X0 Befehl. Mittels Messeinrichtung (ähnlich wie in diesem Beitrag) wird gleichzeitig die tatsächliche Temperatur gemessen und notiert (nennen wir es T2). In der Log-Datei muss man die Temperatur T1 suchen, wo sich, wo auch der RAW-Wert gemeldet wurde (Achtung, es gibt massenhaft Temperatur-Meldungen!). Den RAW-Wert kann man mit T2 paaren und hat einen Eintrag für die Thermistortabelle.

Falls Nibbels den Bug nicht korrigiert hat, bitte melden, dann suche ich die Stelle, wo man den Quellkode ändern muss und veröffentliche es.

Maske hoch!

mjh11

Re: Wie setzt sich die Thermistor Tabelle wirklich zusammen?

Verfasst: So 12. Dez 2021, 16:45
von rf1k_mjh11
Ich habe eben in der GCode-Wiki beim Befehl M105 die Option 'X0' hinzu gefügt.

mjh11

Re: Wie setzt sich die Thermistor Tabelle wirklich zusammen?

Verfasst: So 12. Dez 2021, 17:33
von AtlonXP
Hallo rf1k_mjh11,
der Extruder wurde auf 100 C° und das Bett auf 50C° durchgeheizt.
Hier habe ich den Befehl gesendet und diese Antwort bekommen:

17:24:28.032 : N343 M105 X0*107
17:24:28.038 : ok 343
17:24:28.179 : N344 M105*36
17:24:28.179 : ok 344
17:24:28.195 : T:100.2 /100 @:27 B:50.0 /50 B@:23 F:-269 /0 @:0
17:24:29.181 : N345 M105*37
17:24:29.181 : ok 345
17:24:29.181 : T:100.1 /100 @:27 B:50.0 /50 B@:22 F:-268 /0 @:0

Es ist im Moment noch die FW 1.45.00 aufgespielt.
Demnächst spiele ich die FW 1.45.01 auf.

LG AtlonXP

Re: Wie setzt sich die Thermistor Tabelle wirklich zusammen?

Verfasst: So 12. Dez 2021, 18:16
von rf1k_mjh11
AtlonXP,

Siehst du diese Antworten in Log-Bereich in Repetier-Host, oder in der Log-Datei selbst?

Die Log-Datei selbst wird sehr verzögert upgedatet. Oft taucht der Update bei mir (in Notepad ++) erst 5 Minuten später auf.

Eben sehe ich, dass du auch die F-Digits ausgespuckt bekommst. Das könnte Nibbels veranlasst haben.

Lass 'mal das Bett bei Zimmertemperatur und sehe, ob sich der 'B@:23'-Wert ändert.

mjh11

Eben wieder probiert (Hinweis: die Uhr ist exakt eine Stunde um - vermutlich eine Folge der Versuche mit Linux & Klipper):

< 17:21:05.341 : N181 M105 X0*103
> 17:21:05.350 : ok 181
> 17:21:05.351 : T:36.34 /0 B:31.11 /0 RAW1:3524 @:3756 B@:0 @:0
< 17:21:05.753 : N182 M105 X0*100
> 17:21:05.767 : ok 182
> 17:21:05.767 : T:36.34 /0 B:31.11 /0 RAW1:3524 @:3756 B@:0 @:0
< 17:21:06.125 : N183 M105*45
> 17:21:06.133 : ok 183
> 17:21:06.133 : T:36.34 /0 B:31.11 /0 B@:0 @:0
< 17:21:06.145 : N184 M105 X0*98
> 17:21:06.149 : ok 184
> 17:21:06.166 : T:36.34 /0 B:31.11 /0 RAW1:3524 @:3756 B@:0 @:0
< 17:21:06.552 : N185 M105 X0*99
> 17:21:06.566 : ok 185
> 17:21:06.567 : T:35.93 /0 B:31.11 /0 RAW1:3527 @:3756 B@:0 @:0


(So gut bin ich nicht, dass ich diese Routinen in der FW selbst programmiert hätte :weinen: )

Re: Wie setzt sich die Thermistor Tabelle wirklich zusammen?

Verfasst: So 12. Dez 2021, 18:33
von AtlonXP
Das was ich dir hier gezeigt habe, ist die Ausgabe in Repetier Host.
Welche andere Log. Datei meinst du?
Ich kenne keine andere…

LG AtlonXP

Re: Wie setzt sich die Thermistor Tabelle wirklich zusammen?

Verfasst: So 12. Dez 2021, 18:39
von rf1k_mjh11
Hallo AtlonXP,

Repetier Host hat am Bildschirm, unten, einen Bereich, wo er einen Log führt (kann man ausblenden). Aber das Programm erzeugt immer eine Log-Datei im Ordner

Users\username\AppData\Local\RepetierHost (bei dir vermutlich auf C:, bei mir auf D:) - Appdata ist ein versteckter Ordner!

eine Log-Datei, die repetier.log heißt. Diese wird sehr groß. Bei jedem Neustart von Repetier Host wird sie neu erstellt (die alte überschrieben).

mjh11

Re: Wie setzt sich die Thermistor Tabelle wirklich zusammen?

Verfasst: So 12. Dez 2021, 20:55
von AtlonXP
Das Verzeichnis hatte ich gefunden und
es ist auch als Arbeitsverzeichnis eingetragen in Repetier Host.

Users\username\AppData\Local\RepetierHost
Das Ding ist einfach nur leer!


Hier das gleiche Spiel mit S3D:
GESENDET: M105 X0
LESEN: ok 0
LESEN: T:13.3 /0 @:0 B:9.1 /0 RAW1:100 B@:0 F:-1120 /0 @:0
GESENDET: M105
LESEN: ok 0
LESEN: wait

Hier nochmal in Repetier Host Vers.: V2.1.3

20:50:13.721 : N41 M105 X0*90
20:50:13.737 : ok 41
20:50:14.075 : N42 M105*17
20:50:14.091 : ok 42
20:50:14.091 : T:13.3 /0 @:0 B:9.5 /0 B@:0 F:-1098 /0 @:0
20:50:15.078 : N43 M105*16
20:50:15.078 : wait
20:50:15.078 : ok 43
20:50:15.094 : T:13.3 /0 @:0 B:9.5 /0 B@:0 F:-1097 /0 @:0
20:50:16.081 : N44 M105*23
20:50:16.081 : wait

In S3D gibt der G.- Code M105 X0 eine Reaktion.
In Repetier Host nicht!

LG AtlonXP

Re: Wie setzt sich die Thermistor Tabelle wirklich zusammen?

Verfasst: So 12. Dez 2021, 21:25
von rf1k_mjh11
Hallo AtlonXP,

Es könnte sein, dass Nibbels an den Originalroutinen irgendwas gemacht hat. Das mit den F-Digits deutet darauf hin.

Ich hatte mir auch einmal die F-Digits ausdrucken lassen. Das war sicher damals, als ich an diesem Thread schrieb. Da musste ich viel mit den Digit-Werten arbeiten.
Damals wurden die F-Digits mit jeder Zeile, wo ein OK Zeilennummer vorkam, mit ausgegeben.
Bei der Community FW scheint es nur mit der Temperatur mit zu gehen.

ALLERDINGS: vielleicht war es bei mir damals auch so, dass F-Digit-Werte ausgegeben wurden - das ist schon einige Monate her, ich kann mich nicht erinnern. In anderen Worten, das hätte auch der RF1000 verbockt haben können. Die ursprünglichen Repetier Programmierer sind sicherlich unschuldig, denn sie konnten nichts über F-Digits wissen.
Um ganz sicher zu gehen, müsste ich wieder eine ältere FW-Version aufspielen und dasselbe mit M105 X0 machen, wie du.

Vielleicht mach' ich's morgen, falls sich der Bock bei mir meldet.

Immunität über alles!

mjh11