Z-Kompensation, dünne erste Layer und der Start-GCode
Verfasst: So 27. Dez 2015, 14:41
Es gibt im Forum schon viele Beiträge bzgl. dem Zusammenspiel der Z-Kompensation und die Höhe des ersten Layers (einige der Beiträge, zum Beispiel einen sehr langen Thread hier, und weitere hier und hier).
Es scheint sich herausgestellt zu haben, dass sich ein dünnes erstes Layer (Höhe <0.2mm) oft schwer herstellen lässt, aus dem folgenden Grund:
Wieso wird aber der Z-Endschalter 'vorzeitig' freigegeben, was hier als zweite Bedingung angeführt ist?
Nun ja, im Start-GCode der meisten Forums-User hier, vor Allem, wenn diese von der von Conrad mitgelieferten Dateien abgeleitet wurde, wird unter Anderem eine 'Primer'-Linie, Pumpe-Linie, Start-Linie, oder wie es auch immer genannt wird, ausgeführt. Hierbei wird die Düse auf eine Z-Höhe angehoben, wo der Z-Endschalter freigegeben wird. Auch hier gibt es Ansätze, das Problem durch eine geringere Höhe zu umgehen (hier, zum Beispiel). Wenn man nun eine sehr geringe Layerhöhe für die 'Pumpe-Linie' vorgibt, können sich andere Probleme ergeben (hier). Man kann natürlich die Extrusionsmenge drastisch reduzieren, aber das umgeht den eigentlichen Zweck der Primer-/Pumpe-Linie völlig. Hier sollte viel, und relativ rasch gefördert werden, damit eventuelle Lufteinschlüsse in der Düse beseitigt werden.
Ich möchte hier einen GCode-Schnipsel vorschlagen, womit richtig dünne erste Layer möglich sein sollten. Ich fange einfach mit dem Code, wie er auf der SD-Karte für das 'Herz' mitgeliefert wird. (Das sind allesamt Befehle, wie sie im Start-GCode vorkommen. Das eigentliche Druckobjekt taucht hier noch gar nicht auf.)
Hier der Ausschnitt:
G28 ; home all axes (alle Achsen auf 'Null')
G1 Z5 F5000 ; lift nozzle (Düse um 5mm hoch - wieso?)
M109 S230 ; wait for extruder temp to be reached (warte bis Extruder Temp. erreicht)
M3001 ; Aktiviere Z-Kompensation ab hier sollte der Z-Schalter nicht mehr freigegeben werden
G90 ; use absolute coordinates (absolute Koordinaten)
M82 ; use absolute distances for extrusion (absolute Extrusionslängen)
G92 E0 ; start line (Extruderkoordinate auf "0" setzen)
G1 F300 E-0.5 ; (einen halben mm Filament zurückziehen)
G1 X230 Y25 Z0.35 F5000 ; zum Beginn der Primer-Line fahren [bei Z=0.35mm] PECH: hier wird der Schalter wahrscheinlich freigegeben, durch die Höhe von Z=0.35mm
G1 F800 E8 ; (hier wird 8mm Filament gefördert, damit der Extruder voll ist?)
G1 X20 E25 F1000 ; (hier wird die Primer-Linie gefahren, dabei 25mm Filament gefördert)
; Acceleration up to...
; Acc printing
M201 X6000 Y6000 Z1000 ; (Beschleinigungswerte, Druckbetrieb)
; Acc travel
M202 X6000 Y6000 Z1000 ; (Beschleinigungswerte, Leerfahrten)
; Move Z-axis n-steps up (see manual)
M3004 S0 ; + n-steps bed down // - n-steps bed up! (ACHTUNG!! spätere Firmware-Versionen verwenden M3006 zum Feintunen der Z-Höhe)
; So, jetzt geht es endlich los:
M3000 ; hier schalten wir kurzzeitig wieder die Z-Kompensation AUS
G1 X15 Z2 ; hier fahren wir hoch genug, dass der Z-Schalter garantiert frei ist
; nebenbei fahren wir von der dicken Raupe ein Stück weg.
M99 S1 Z ; hier wird der Z-Motor für 1 Sekunde ausgeschalten
; damit stellen wir sicher, dass die Z-Kompensation neu 'anfangen' muss, da der
; Drucker nicht 'weiß', wo Z ist
G4 P250 ; sicherheitshalber warten wir eine viertel Sekunde
G28 Z0 ; hier 'homen' wir nur die Z-Achse neu - deswegen sind wir von der dicken
; Raupe weg gefahren - sonst wäre die Düse jetzt dort hinein getaucht
M400 ; hier warten wir sicherheitshalber alle Bewegungen ab
M3001 ; und schalten die Z-Kompensation wieder EIN
; Aber ACHTUNG:
; hat jemand ein Bett, wo die linke vordere Ecke der höchste Punkt ist,
; bzw. wo ein POSITIVER Z-Wert bei der Kompensation verwendet wird, dann wird die Düse
; das Bett berühren. (Es sollte nicht zum Bruch kommen, da es nur max. 0.5mm sein werden.)
Der zusätzliche Code kostet 2-3 Sekunden mehr an Zeit, sollte aber sehr dünne Layer wieder ordentlich zulassen. Notwendig sind nur die letzten 7 GCode-Befehle. Die sollten die allerletzten Befehle im Start-GCode sein.
mjh11
Es scheint sich herausgestellt zu haben, dass sich ein dünnes erstes Layer (Höhe <0.2mm) oft schwer herstellen lässt, aus dem folgenden Grund:
Wird der Z-Endschalter einmal freigegeben, nachdem die Z-Kompensation eingeschaltet wurde (mittels "M3001"), weigert sich der Drucker, neuerlich Z-Werte unter "0" anzufahren.
Stimmt es überhaupt
Zwei Punkte müssen also erfüllt sein, damit sich das Problem herausbildet:- Ein negativer Z-Wert wäre anzufahren
und - Der Z-Endschalter wurde seit dem Einschalten der Z-Kompensation freigegeben
Wieso wird aber der Z-Endschalter 'vorzeitig' freigegeben, was hier als zweite Bedingung angeführt ist?
Nun ja, im Start-GCode der meisten Forums-User hier, vor Allem, wenn diese von der von Conrad mitgelieferten Dateien abgeleitet wurde, wird unter Anderem eine 'Primer'-Linie, Pumpe-Linie, Start-Linie, oder wie es auch immer genannt wird, ausgeführt. Hierbei wird die Düse auf eine Z-Höhe angehoben, wo der Z-Endschalter freigegeben wird. Auch hier gibt es Ansätze, das Problem durch eine geringere Höhe zu umgehen (hier, zum Beispiel). Wenn man nun eine sehr geringe Layerhöhe für die 'Pumpe-Linie' vorgibt, können sich andere Probleme ergeben (hier). Man kann natürlich die Extrusionsmenge drastisch reduzieren, aber das umgeht den eigentlichen Zweck der Primer-/Pumpe-Linie völlig. Hier sollte viel, und relativ rasch gefördert werden, damit eventuelle Lufteinschlüsse in der Düse beseitigt werden.
Ich möchte hier einen GCode-Schnipsel vorschlagen, womit richtig dünne erste Layer möglich sein sollten. Ich fange einfach mit dem Code, wie er auf der SD-Karte für das 'Herz' mitgeliefert wird. (Das sind allesamt Befehle, wie sie im Start-GCode vorkommen. Das eigentliche Druckobjekt taucht hier noch gar nicht auf.)
Hier der Ausschnitt:
G28 ; home all axes (alle Achsen auf 'Null')
G1 Z5 F5000 ; lift nozzle (Düse um 5mm hoch - wieso?)
M109 S230 ; wait for extruder temp to be reached (warte bis Extruder Temp. erreicht)
M3001 ; Aktiviere Z-Kompensation ab hier sollte der Z-Schalter nicht mehr freigegeben werden
G90 ; use absolute coordinates (absolute Koordinaten)
M82 ; use absolute distances for extrusion (absolute Extrusionslängen)
G92 E0 ; start line (Extruderkoordinate auf "0" setzen)
G1 F300 E-0.5 ; (einen halben mm Filament zurückziehen)
G1 X230 Y25 Z0.35 F5000 ; zum Beginn der Primer-Line fahren [bei Z=0.35mm] PECH: hier wird der Schalter wahrscheinlich freigegeben, durch die Höhe von Z=0.35mm
G1 F800 E8 ; (hier wird 8mm Filament gefördert, damit der Extruder voll ist?)
G1 X20 E25 F1000 ; (hier wird die Primer-Linie gefahren, dabei 25mm Filament gefördert)
; Acceleration up to...
; Acc printing
M201 X6000 Y6000 Z1000 ; (Beschleinigungswerte, Druckbetrieb)
; Acc travel
M202 X6000 Y6000 Z1000 ; (Beschleinigungswerte, Leerfahrten)
; Move Z-axis n-steps up (see manual)
M3004 S0 ; + n-steps bed down // - n-steps bed up! (ACHTUNG!! spätere Firmware-Versionen verwenden M3006 zum Feintunen der Z-Höhe)
; So, jetzt geht es endlich los:
M3000 ; hier schalten wir kurzzeitig wieder die Z-Kompensation AUS
G1 X15 Z2 ; hier fahren wir hoch genug, dass der Z-Schalter garantiert frei ist
; nebenbei fahren wir von der dicken Raupe ein Stück weg.
M99 S1 Z ; hier wird der Z-Motor für 1 Sekunde ausgeschalten
; damit stellen wir sicher, dass die Z-Kompensation neu 'anfangen' muss, da der
; Drucker nicht 'weiß', wo Z ist
G4 P250 ; sicherheitshalber warten wir eine viertel Sekunde
G28 Z0 ; hier 'homen' wir nur die Z-Achse neu - deswegen sind wir von der dicken
; Raupe weg gefahren - sonst wäre die Düse jetzt dort hinein getaucht
M400 ; hier warten wir sicherheitshalber alle Bewegungen ab
M3001 ; und schalten die Z-Kompensation wieder EIN
; Aber ACHTUNG:
; hat jemand ein Bett, wo die linke vordere Ecke der höchste Punkt ist,
; bzw. wo ein POSITIVER Z-Wert bei der Kompensation verwendet wird, dann wird die Düse
; das Bett berühren. (Es sollte nicht zum Bruch kommen, da es nur max. 0.5mm sein werden.)
Der zusätzliche Code kostet 2-3 Sekunden mehr an Zeit, sollte aber sehr dünne Layer wieder ordentlich zulassen. Notwendig sind nur die letzten 7 GCode-Befehle. Die sollten die allerletzten Befehle im Start-GCode sein.
mjh11
Nachträglicher EDIT
Unerwartetes Verhalten