Hallo,
ich habe im Anhang einen ganz einfachen G-Code abgelegt, der ein Quadrat und ein Doppelkreuz über fast die gesamte Druckplatte erzeugt. Dabei wird definitiv immer nur exakt 1 Linie gezogen. Dieses "Testobjekt" kann daher zeigen, wie groß der Abstand zwischen Heizplatte und Extruder ist, und zwar für alle angefahrenen x/y-Positionen (bei den Tests mit gefüllten Flächen ist das ja nicht so einfach weil sich das Material zwischen zwei gedruckten Linien auftürmen kann). Die dazu nötigen Schritte sind:
- RF1000 einschalten
- G-Code drucken (dauert keine 5 Minuten)
- die Dicke der erzeugten Linien messen
Der G-Code bzw. die verwendeten Temperaturen sind für PLA gedacht, die Temperaturen können aber natürlich auch ganz einfach für ABS (oder andere Materialien) angepasst werden. Der G-Code ist auch für die 0,5 mm Düse gedacht, wenn eine andere verwendet wird sollte sich aber nur die Linienbreite (und nicht die Linienhöhe) verändern.
Der G-Code setzt den Offset über "M3006 S0" auf 0 und stellt Z auf 0,3 mm ein, d.h. auch die Höhe der gedruckten Linien sollte 0,3 mm sein. Wenn das auch auf eurem Drucker klappt dann sollte man davon ausgehen können, dass die Firmware den Abstand zwischen Extruder und Heizbett korrekt (= exakt entsprechend dem G-Code) einstellt. Während dem Drucken kann man auf dem Display des RF1000 auch immer schön sehen wie die Z-Kompensation arbeitet (und man kann auch sehen/fühlen, dass sich die Spindeln leicht bewegen).
Im Anhang sind zwei G-Code Dateien, eine die 1 mm Filament pro 40 mm Bewegung in XY-Richtung verwendet und eine, die 1 mm Filament pro 20 mm Bewegung in XY-Richtung verwendet. Die zweite Datei erzeugt also breitere Linien, die Höhe der Linien ist aber identisch.
Wenn jemand will kann er zum Spaß einmal die Zeile mit M3001 auskommentieren, sodass die Z-Kompensation nicht aktiviert wird ... danach möchte ich aber keine Beschwerden darüber bekommen, dass die Schichthöhe nicht passt
Da wir nun überprüft haben wie die Firmware G-Codes in Schichthöhen umsetzt können wir feststellen: Wenn es beim Füllen von Objekten bei der ersten Schicht dazu kommt, dass zu wenig oder zu viel Material vorhanden ist, dann muss es an den Slicer-Einstellungen liegen. Wobei man "etwas zu viel" Material bei der ersten Schicht ja normalerweise ja sogar haben will, damit die Haftung zwischen dem Druckbett und der 1. Schicht besser ist. Die bei "etwas zu viel" Material entstehenden Schichten bei der 1. Schicht verschwinden ja bei den darüber liegenden Schichten (so soll es zumindest sein).
Wir werden morgen noch ein Beispiel mit 9 über den Heiztisch verteilten Quadraten machen, die mit SketchUp gezeichnet und mit Slic3r geslict worden sind. Das entspricht dann auch den Beispielen von drucktnich.
Derweil habe ich noch die folgenden Fragen an Udo:
Ich muss immer korrigieren.
Wie korrigierst du?
Wahrscheinlich nimmt der Drucker die maximale Tiefe des Ergebnisses des Headbescans und addiert darauf den ersten Layer.
.
Nein das macht er nicht
Nach dem Heizbettscan weiß die Firmware den minimalen Abstand zwischen Extruder und Heizbett an der Z-Position, wo der Z-Min Endschalter auslöst. Das ist der Offset der zusammen mit der Heizbettmatrix ausgegeben wird. Für jede beliebige XY-Position kann ebenfalls der exakte Abstand zwischen Extruder und Heizbett ausgerechnet werden (wiederum für die Z-Position, wo der Z-Min Endschalter auslöst). Solange die tiefste Stelle des Heizbetts weniger als HEAT_BED_Z_COMPENSATION_MAX_MM vom Auslösen des Z-Min Endschalters weg ist (Default = 3 mm) sollten der Scan und die spätere Kompensation funktionieren - und ich gehe einmal davon aus, dass keine der verwendeten Keramikplatten derart krumm ist.
Aber ich sehe ja bei der Z-Tiefe werte die nicht dem ersten Layer entsprechen ...
Wo siehst du die? Im Display des RF1000? Der dort angzeigte Z-Wert ist der Abstand von der Z-Position, wo der Z-Min Endschalter ausgelöst hat. Dieser Wert muss daher vom durch den G-Code gewünschten Z-Abstand abweichen, solange die Z-Kompensation aktiv ist.
Mein Vorschlag: 0,0 mm einstellen und von da an die Matrix einbeziehen. Über eine Layerdicke von mximal 1 mm. 3 mm ist zuviel. Oder das Ganze optional konfigurierbar zu machen.
Den Teil verstehe ich nicht. Wo soll 0,0 mm eingestellt werden? Über welche Z-Höhe kompensiert werden soll hängt ein bisschen vom Druckbett ab - wenn das z.B. um 1 mm hängt dann sollte die Z-Kompensation zumindest auf den ersten 2 mm (laut G-Code) arbeiten damit der Unterschied ausgeglichen werden kann. Und der Wirkungsbereich der Z-Kompensation ist bereits jetzt einstellbar, zumindest in Configuration.h:
- Solange der G-Code eine Z-Höhe von weniger als HEAT_BED_Z_COMPENSATION_MIN_MM (Default = 0,2 mm) vorgibt passiert keine Kompensation - in dem Z-Bereich fährt die Firmware den Extruder lediglich parallel zum Heizbett auf und ab.
- Wenn der G-Code eine Z-Höhe von mehr als HEAT_BED_Z_COMPENSATION_MAX_MM (Default = 3mm) erreicht hat soll die Z-Kompensation aufhören. Bis zu dieser Höhe muss die Kompensation/der Ausgleich also fertig sein. Ab dieser Höhe steht dann im Display des RF1000 als Z-Wert also exakt das, was der G-Code haben will und auch die Z-Achse wird nur mehr durch die G-Codes bewegt.
Die Z-Kompensation würde auch funktionieren (und sollte dabei keine schlechteren Ergebnisse produzieren) wenn man HEAT_BED_Z_COMPENSATION_MAX_MM auf z.B. 100 mm stellen würde - in dem Fall wäre die Anpassung pro Schicht viel kleiner und die Z-Kompensation müsste viel länger arbeiten. Ich sehe keinen Grund dafür, dass man HEAT_BED_Z_COMPENSATION_MAX_MM auf einen noch kleineren Wert als 3 mm stellen sollte.
mfG
RF1000