Hallo,
wir haben uns die Daten von drucktnich und Husky angesehen. Dazu die folgenden Anmerkungen:
- Das Druckbett von drucktnich hängt um ca. 0,25 mm von vorne nach hinten (siehe "drucktnich #5164.pdf").
- Dieses Druckbett sieht für mich "normal" aus - man könnte es mechanisch besser montieren, aber im Prinzip ist die Z-Kompensation exakt dafür da so einen mechanischen Fehler zu kompensieren.
- Das Druckbett von Husky hängt um ca. 0,15 mm von rechts nach links und hat zusätzlich in der Mitte eine Aufwölbung, die sich um fast 0,5 mm um die ansonsten tiefste Stelle erhebt (sehe "Husky #5151.pdf").
- War dieses Druckbett schon immer so (hast du vielleicht noch die Matrix von ein paar älteren Scans)?
- Einige Z-Werte in der Matrix sind positiv - d.h. der Extruder berührt die Heizplatte schon bevor der Z-Min Endschalter auslöst. Ist dein Aufbau tatsächlich so (und falls ja, führt das nicht dazu dass der Extruder bei x/y-Bewegungen ohne Z-Kompensation über die Platte kratzt, wenn Z auf Z-Min steht)?
- Mit positiven Werten in der Z-Matrix rechnet die Firmware bisher nicht. Falls du tatsächlich eine Anwendung hast wo das sinnvoll sein könnte müssen wir uns das ansehen. Falls nicht, dann wird die kommende Version der Firmware diesen Fall erkennen und abfangen (und sagen, dass man doch bitte den Z-Min Endschalter korrekt einstellen muss).
- Zwischen den Logdateien von Husky und drucktnich kann man sehr gut sehen, dass bei drucktnich die Z-Kompensation immer nach oben auslenkt (tCZ = "target Compensation Z" ist immer negativ, bei Husky ist der Wert aber immer positiv). Dieser Wert sollte bei jedem immer negativ sein.
Die Debugdaten in den Logdateien von Husky konnten wir also leider nicht auswerten weil die Kompensation mit positiven Werten in der Matrix im Moment nicht korrekt funktionieren kann. In der Logdatei von drucktnich stimmen alle ausgegebenen Werte aber, die ermittelte Kompensation stimmt mit der aktuellen X/Y-Position und der Z-Matrix überein.
Zu Testzwecken den Wert für HEAT_BED_Z_COMPENSATION_MIN_MM einmal auf 0,4 mm "hochgedreht" und ... Wider Erwarten keine Veränderung beim Drucken.
Nunja. Wenn wir prüfen wollen, ob die Firmware die 1. Schicht exakt nach eingestellter G-Code Höhe druckt dann MUSS der Wert von HEAT_BED_Z_COMPENSATION_MIN_MM natürlich größer sein als die vom G-Code gewünschte Höhe. Da unser Test-G-Code mit 0,3 mm Höhe arbeitet sollte der von drucktnich gewählte Wert von 0,4 mm für HEAT_BED_Z_COMPENSATION_MIN_MM passen. Kann ich auch die Logdatei (plus die verwendeten Sourcen) von dem Test mit den 0,4 mm bekommen?
In den Sourcen von Husky steht der Wert auf 0,2 mm, d.h. die Z-Kompensation sollte dafür sorgen dass die gedruckten Schichten nicht exakt 0,3 mm haben (sondern typischerweise etwas mehr). In diesen Sourcen wurde HEAT_BED_Z_COMPENSATION_MAX_MM auch auf 2 mm gestellt. D.h. bei einem Druckbett das Höhendifferenzen von 0,5 mm aufweist muss die Z-Kompensation so arbeiten, dass bei einer G-Code Höhe von 2 mm alles ausgeglichen ist. Wäre ein Layer also 0,4 mm stark (= 5 Layer bis 2 mm) dann müsste die Z-Kompensation daraus bis zu 0,5 mm (= + 25 %) machen. Ich denke dass bei so hohen Werten auch Probleme mit der Haftung und/oder der Filamentmenge auftreten werden.
Bei drucktnich ist der maximale Höhenunterschied 0,25 mm. Wenn HEAT_BED_Z_COMPENSATION_MAX_MM auf dem Defaultwert steht (von drucknich haben wir die verwendeten Sourcen nicht bekommen) dann wären das 3 mm. Wäre ein Layer wiederum 0,4 mm stark dann müsste die Z-Kompensation daraus ca. 0,43 mm machen (= + 8 %).
D.h. wir können in den Logdateien keinen Fehler erkennen. Aber trotzdem bleibt ja das Verhalten bestehen, dass der 1. Layer zu niedrig gedruckt wird (und er ja eigentlich entweder exakt 0,3 mm haben sollte (wenn HEAT_BED_Z_COMPENSATION_MIN_MM größer 0,3 mm ist) oder mehr als 0,3 mm (wenn HEAT_BED_Z_COMPENSATION_MIN_MM kleiner als 0,3 mm ist).
Welche Z-Min Endschalter werden bei den betroffenen Geräten eingesetzt? Kann es evtl. sein, dass Z-Min nicht immer an exakt der selben Position auslöst? Wobei das dann bei HEAT_BED_Z_COMPENSATION_MIN_MM von 0,4 mm ja zwar nicht exakt 0,3 mm ergeben würde sondern einen anderen Wert, aber den dafür konstant über das gesamte Heizbett. Der Z-Min Endschalter kann es also eigentlich nicht sein.
Dreck auf der Düse (z.B. nicht entferntes Filament) während dem Heizbettscan kann auch nicht die Fehlerursache sein - das würde den gemessenen Z-Abstand ja verringern und damit die später gedruckten Layer höher (und nicht niedriger) machen.
Wir bleiben dran
Es sollte doch eigentlich egal sein an welcher stelle ein Befehl ausgeführt wird solange ein nachfolgender Befehl diesen nicht deaktiviert. Bei G20 und G21 wäre es logisch, da ist immer der zuletzt eingegebene Befehl gültig. Da aber im Startcode kein M3000 vorhanden ist sollte doch M3001 seine Gültigkeit behalten.
Die Z-Kompensation wird immer automatisch abgeschalten wenn der Z-Stepper ausgeschalten wird. Einschalten kann man die Z-Kompensation nur, wenn davor ein Z-Homing stattgefunden hat (weil wenn die Z-Position unbekannt ist dann darf die Firmware nicht noch weiter nach oben fahren, was für die Z-Kompensation ja aber notwendig wäre).
mfG
RF1000