Ich bin gerade dabei, nach langer Zeit mal wieder mit ABS-Filament zu drucken. Mit den Tronxy-Druckern hatte ich das noch nie versucht und ich sah auch keine Notwendigkeit. Für ein Upgrade meines Druckkopfes auf einen VORON Stealthburner wurde das aber notwendig. Laut Vorgabe des Filamentherstellers eSun soll für ABS+ eine Betttemperatur von 95°C eingestellt werden. Dann kam der Fehler von Klipper: verify_heater sprach an.
Mir war schon aufgefallen, dass sich das Heatbed bei über 85°C äußerst viel Zeit nahm, um auf Temperatur zu kommen. Genau diese Temperatursteigerung wird von Klipper überwacht. Wenn Klipper dann der Meinung ist, dass die Temperatursteigerung ausbleibt, obwohl geheizt wird, wirft er einen Fehler.
Klipper bedient sich dabei intern abgelegter „Erfahrungswerte“ in welcher Zeit, welche Steigerung zu erwarten ist: Der Defaultwert für das Heatbed ist 2 °C in 20 Sekunden. Misst dann Klipper innerhalb einer gewissen Zeitperiode keine Steigerung, kommt der Fehler. Man kann aber diese Überwachung anpassen.
In der Klipper Konfigurationsanleitung findet man den entsprechenden Eintrag verify_heater wieder:
[verify_heater heater_config_name]
#max_error: 120
# The maximum "cumulative temperature error" before raising an
# error. Smaller values result in stricter checking and larger
# values allow for more time before an error is reported.
# Specifically, the temperature is inspected once a second and if it
# is close to the target temperature then an internal "error
# counter" is reset; otherwise, if the temperature is below the
# target range then the counter is increased by the amount the
# reported temperature differs from that range. Should the counter
# exceed this "max_error" then an error is raised. The default is
# 120.
#check_gain_time:
# This controls heater verification during initial heating. Smaller
# values result in stricter checking and larger values allow for
# more time before an error is reported. Specifically, during
# initial heating, as long as the heater increases in temperature
# within this time frame (specified in seconds) then the internal
# "error counter" is reset. The default is 20 seconds for extruders
# and 60 seconds for heater_bed.
#hysteresis: 5
# The maximum temperature difference (in Celsius) to a target
# temperature that is considered in range of the target. This
# controls the max_error range check. It is rare to customize this
# value. The default is 5.
#heating_gain: 2
# The minimum temperature (in Celsius) that the heater must increase
# by during the check_gain_time check. It is rare to customize this
# value. The default is 2.
Für den Eintrag heater_config_name ist in diesem Fall heater_bed einzusetzen oder, falls der heatbed-Eintrag in der pinter.cfg einen anderen Namen hat, das Entsprechende.
Die benötigten Variablen sind jetzt auszukommentieren. Erfahrene Klipper-Konfiguratoren kennen das. Ich nehme für den ersten Ansatz sehr pessimistische Werte. Nachdem ich etwas mehr Erfahrung damit habe, passe ich das vermutlich nochmal an.
max_error:
Nicht bei jedem Fehler bleibt Klipper sofort stehen. Er zählt die aufgelaufenen Fehler mit bis zu einer maximalen Schwelle. Dann wird abgeschaltet und die Fehlermeldung kommt. Die Höhe der Schwelle kann hier eingegeben werden. Sie liegt wohl im default bei 120 und ich habe sie auf 250 gesetzt.
check_gain_time:
Die Zeit, die zwischen den einzelnen Testpunkten vergeht. Default für das Heatbed ist 60sec und ich habe es auf 300sec gesetzt.
hysteresis:
Um diesen Wert habe ich mich nicht gekümmert. Siehe Doku.
heating_gain:
Der Betrag, um den die Temperatur im Testzeitraum steigen soll. Im default liegt er bei 2°C und ich habe ihn auf 1°C gesetzt.
Mit meinen Einstellungen erwarte ich also in 300sec mindestens eine Temperatursteigerung um 1°C. Das hat dann auch problemlos funktioniert.