RF1000 hat geschrieben:
Die Z-Kompensation prüft, ob die aktuelle Position (= nCurrentPositionSteps[Z_AXIS], also die tatsächlich gefahrenen Schritte in Z-Richtung) auf 0 steht. Wenn du von Z=5 mm auf Z=0 mm fährst wird die aktuelle Position am Ende 0 erreichen. Bis dahin läuft die Z-Kompensation, wenn Z=0 erreicht worden ist, eben nicht mehr.
Uns ist bisher kein Scenario bekannt, bei dem man für das Drucken zuerst das Homing macht, dann auf Z=5 fährt und anschließend auf Z=0. Zuerst Homing, dann Z=5 und anschließend Z=0.01 kann natürlich sein, und das führt ja auch exakt zur gewünschten Layerhöhe von 0,01 mm.
Altes Thema, aber wenn die Diskussion von hier ist, antworte ich auch hier.
RF1000 hat geschrieben:
Scenario
Wenn man sein Heizbett so eingestellt hat, dass es Stellen des Heizbettes über 0 gibt. Also Flächen, Bergspitzen, höher liegen, als Z=0=Schalter.
Und dementsprechend in der Matrix
Werte größer 0 (wollten wir immer durch die Z-Schraube vermeiden -> Justierung auf -0.3 bis -0.5/-0.6) stehen, dann ist das Verhalten bei G1 Z0 in der aktuellen Form schädlich.
Nehmen wir mal an, ein Nutzer klebt auf sein Heizbett eine DDP mit 0.5mm Stärke und würde es schaffen, seinen Heizbett Scan durchzuführen. Die Z-Schraube wurde aber nicht verändert.
Frisch gehomed:
Sendet man ein G1 Z0, würde garnichts passieren. Anfangs ist Z automatisch = 0.
Wenn die Z-Compensation in so einem Fall aktiv ist, würde sie sofort, wenn ein G1 Z0.01 beim Drucker ankommt, das zu hohe Heizbett absenken, quasi um max. 0.51mm [DDP+0.01], sodass der höchste Punkt der Matrix als Null-Fläche angenommen wird. Gut.
Denn der Drucker weiß, er ist gehomed,
der Drucker korrigiert das,
er fängt von der neuen höchsten Z-Koordinate an, die restlichen Unebenheiten nach unten zu korrigieren.
Würde man über das Heizbett fahren und G1 Z0 wählen, stoppt die Z-Kompensation und fährt
ins Heizbett rein, weil es höher liegt als das alte unkompensierte Z=0=Schalter.
Sinnvoller finde ich also in diesem Fall, dass man im Fall dass die Z-Kompensation aktiv ist,
immer das Matrix-interne Offset g_offsetZCompensationSteps beachtet und man zusätzlich bei G1 Z0 z.B. +0.01 dazuaddiert, um nicht null-auf-null mit dem Heizbett zu sein.
Cooler Nebeneffekt: Sobald ich G28-home und M3001 zur Aktivierung der Z-Kompensation absetze fährt der Drucker sofort in die korrekte Position. Auch wenn in dem Moment noch Z = 0 ist.
Es liegt nahe zu argumentieren, das "ist doch total bescheuert, der Nutzer soll den Drucker korrekt einstellen und die Z-Schraube justieren":
Ich kam da drauf, weil ich einen Z-Offset-Scan aus einer Höhe von ~+5mm Höhe getestet habe.
Ich habe die Starthöhe des Z-Offset-Scans verändert und ein paar gutgemeinte Limits ausgehebelt. (über +12,8mm darf man nicht wegen Overflowgefahr)
Und es hat funktioniert!
Wenn man in so einer Höhe anfängt zu messen könnte man Glasplatten einfach mit messen, sodass immer wenn die Düse dran vorbeifährt einfach das Heizbett abgesenkt wird, sodass man diese niemals streift.
Nur mit der deaktivierung der Z-Kompensation nicht, wenn man Z = 0 fordert oder nach dem Homing bei Z = 0 bleibt. Dann könnte man crashen.
Das System kommt in dieser Form der Idee von AtlonXP vor ein paar Monaten ziemlich nahe
LG