Ender 3 V2 mit BLTouch perfekt eingestellt
Gestern habe ich mich mal wieder mit meinem Ender 3 V2 beschäftigt und versucht die Druckbettausrichtigung zu optimieren. Ausgehend von (Marlin 2.0 und BLTouch 3.1 für Ender 3 V2) und Marlin 2.0.7.2 habe ich erst mal wieder das Druckbett manuell ausgerichtet, da mit Marlin 2.0.7.2 und aktiviertem AUTO_BED_LEVELING_BILINEAR nur ein Testpunkt angefahren wurde. Eine Umstellung auf AUTO_BED_LEVELING_UBL und stundenlangem Debuggen hat auch keine Abhilfe geschafft. Ich gehe davon aus, dass in der 2.0.7.2 von Marlin ein Bug vorliegt, der dafür sorgt, dass die Berechnung der Punkte verschoben ist. Dies hat leider auch dazu geführt, dass bei ein paar Punkten der BLTouch neben dem Druckbett gelandet ist und durch fehlendem NOZZLE_TO_PROBE_OFFSET { -44, -6, 0 } die Nozzle schön ins Druckbett gehämmert ist und ich den Drucker vom Strom nehmen musste.
Nach längerem erfolglosen Debuggen und zigfachem Flashen der Firmware, bin ich letztendlich dazu übergegangen, auf die aktuelle 2.0.8.1 upzudaten. Hier wurden einige Fehler behoben und weitere Features wie der UBL Mesh Wizzard hinzugefügt. Leider ist das aktualisieren und übernehmen der eigenen Konfiguration immer müßig, dennoch war es die ganze Arbeit allemal wert. Alleine schon wegen einem funktionierenden UBL Leveling.
Optimierung / Migration
Wie oben schon erwähnt, bin ich vom Datenstand der 2.0.7.2 auf die 2.0.8.1 gewechselt. Ich hatte also vorher schon ein lauffähiges halbwegs passabel ausgerichtetes Druckbett. Dennoch habe ich manuell mein Druckbett erneut ausgerichtet, also alle 4 Ecken und die Mitte mittels vorgefertigtem GCode angefahren, Blatt drunter und fertig.
Die Migration der Konfiguration hat etwas länger gedauert, habe aber mal der Einfachheit halber meine Configs nach GitHub gepusht. Du kannst sie dir hier angucken: Ender 3 V2 Marlin Configurations Beachte aber das du dir die Firmware fürs Display aus vom Marlin Repo ziehst.
Configuration_adv.h
/**
* Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
* V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
* If disabled, OD mode is the hard-coded default on 3.0
* On startup, Marlin will compare its eeprom to this value. If the selected mode
* differs, a mode set eeprom write will be completed at initialization.
* Use the option below to force an eeprom write to a V3.1 probe regardless.
*/
#define BLTOUCH_SET_5V_MODE
Configuration.h
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 100.0 } //hier habe ich meinen Extruder auf 100 gestellt
//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
#define USE_PROBE_FOR_Z_HOMING
#define BLTOUCH
#define NOZZLE_TO_PROBE_OFFSET { -44, -6, 0 }
#define XY_PROBE_FEEDRATE (125*60)
// #define AUTO_BED_LEVELING_BILINEAR
#define AUTO_BED_LEVELING_UBL
#define ENABLE_LEVELING_AFTER_G28
#define G26_MESH_VALIDATION
#define MESH_INSET 10
#define Z_SAFE_HOMING
#define NOZZLE_PARK_FEATURE
Werte bitte nicht einfach blind übernehmen und prüfen, ob alles für dein Setup passt! Firmware wie gewohnt kompilieren und flashen. Falls du nicht weißt wie, guck einfach mal hier (Marlin Firmware flashen) rein.
Druckbett automatisch ausrichten lassen
Dank UBL Mesh kann der Drucker nun automatisch bis zu 100 Testpunkte abfahren, ausmessen und abspeichern. Vor der Messung sollte das Druckbett immer auf Drucktemperatur aufgeheizt sein, da es sich je nach Temperatur anders ausdehnt. Bei mir sind es z.B. bei 60 °C ein BLTouch to Nozzle Offset von -2.74 mm und bei 75 °C -2.75 mm.
Das UBL Leveling sollte immer dann ausgeführt werden, wenn du am Drucker etwas änderst oder er einen anderen Standort bekommt. Für das automatisierte Leveling wird der Befehl ‚G29 P1′ an den Drucker gesendet. Dies kann z.B. per Pronterface etc. oder GCode Datei gemacht werden. Ich habe mir für meine unterschiedlichen Drucktemperaturen GCode Files angelegt, die ich je nach Standort und Material vorm Drucken ausführe. Ändert sich nichts am Standort oder Setup, braucht das Leveling auch nicht mehr angeworfen zu werden. Meine GCodes findest du hier: UBL Leveling GCodes. Wichtig ist, dass ENABLE_LEVELING_AFTER_G28 aktiv i st, damit die gemessenen Werte auch gespeichert und nach dem Homing wieder geladen werden. Geprüft werden kann es per Pronterface mit dem Befehlen ‚G28‘ gefolgt von ‚G29 T‘, die angezeigte Matrix darf nicht leer sein.
Bei mir wurden Messungen bis Probe 81 durchgeführt, somit fehlen 20 Messungen. Entweder braucht der Drucker nicht mehr oder es sind aufgrund der Druckbettgröße / Konfiguration nicht mehr möglich.
Parallel dazu habe ich auch noch einen alten Raspberry Pi aus der Schublade gekramt und die aktuelle Version von Octopi / Octoprint installiert und eingerichtet. Dies vereinfacht mir meine Abläufe nochmals um ein vielfaches und ich möchte es auch nicht mehr missen.
Jetzt sollte ein immer perfekt ausgerichtetes Druckbett kein Problem mehr darstellen! Mein persönlicher Dank geht an „derchristian“, der mir UBL empfohlen hat und beim Debugging und Einstellen geholfen hat.