AutoLeveling

Aus K8200 Wiki
Wechseln zu: Navigation, Suche

Einführung

Autoleveling bezeichnet einen Vorgang, der vor jedem Druck ausgeführt wird. Es werden mehrere festgelegte Punkte auf dem Druckbett angefahren und der Abstand der Düse zum Bett geprüft. Die gemessenen Abstände werden im Controller für diesen Druckvorgang hinterlegt. Während des Druckes werden die Differenzen durch ständige Bewegung der Z-Achse ausgeglichen. Der G-Code Befehl zum Start des Autoleveling ist G29.

Grundlagen

Umsetzungen

Mikrotaster und Servo

Kapazitiver Schalter

Eine gute Lösung für diesen Ansatz wird unter http://www.thingiverse.com/thing:447719 erklärt und enthält die passenden Teile zum Drucken.

Sensor LJC18A3-BZ/AX

Schaltplan

Auto Bed Leveling mit LJC18A3-BZ/AX (kapazitiver Näherungssensor (NPN))

Bill Of Materials
  • LJC18A3-BZ/AX (z.B. von Amazon) Kapazitiver Näherungssensor mit 10mm Erfassungsabstand
  • Opto-Koppler MB101 (alter DDR Bestand) oder Ähnliche
  • Widerstand 1.2KΩ (bei 12V)

Firmwareanpassung

Zunächst muss in der Firmware, genauer in der Datei Configuration.h der Bereich Bed Auto Leveling gefunden werden. Es wird die Grid-Mess-Methode gewählt.


Hier müssen in der Zeile //#define ENABLE_AUTO_BED_LEVELING die beiden Kommentar-Slashes "//" entfernt werden. Ist #define Z_PROBE_REPEATABILITY_TEST aktiviert, wird bei jedem Auto Bed Leveling der Wiederholgenauigkeitstest ausgeführt. Das bedeutet, dass der Druckkopf einen Messpunkt anfährt, den Abstand misst und dies ein zweites mal durchführt. Als Messmethode sollte #define AUTO_BED_LEVELING_GRID aktiviert sein. Dabei wird das Druckbett in ein Raster unterteilt, welches durch G29 nach und nach abgetastet wird. Ist jedoch #define AUTO_BED_LEVELING_GRID ein kommentiert (//#define AUTO_BED_LEVELING_GRID), so müssen die Messpunkte manuell angegeben werden.

Messbereich

Mit den Zeilen:

#define LEFT_PROBE_BED_POSITION 55
#define RIGHT_PROBE_BED_POSITION 145
#define BACK_PROBE_BED_POSITION 145
#define FRONT_PROBE_BED_POSITION 55

wird der Abstand zum Druckbettrand festgelegt. Im oben genannten Beispiel ist dies jeweils 45mm vom Rand nach innen entfernt. Die Anzahl der Messpunkte wird mittels #define AUTO_BED_LEVELING_GRID_POINTS 2 fest gelegt. Wobei eine 2 gleich 4 Messpunkten entspricht. Bei 3 ergibt das 9 Messpunkte.

Sensorabstand

Um den Abstand des Sensors/Servos vom Druckkopf zu definieren müssen die Zeilen:

#define X_PROBE_OFFSET_FROM_EXTRUDER 50
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0

angepasst werden. Diese legen den X-, Y- und Z-Offset fest. Im Beispiel ist demnach der Sensor in einer Flucht mit der Y- und Z-Achse aber 50mm nach rechts auf der X-Achse versetzt.

Messfahrt

Für die Referenzfahrt (G28) sollte der Druckkopf etwas angehoben werden. Mit der Zeile #define Z_RAISE_BEFORE_HOMING 4 werden 4mm nach oben definiert. Die Verfahrgeschwindigkeit wird mit #define XY_TRAVEL_SPEED 4000 definiert. Die Zeile #define Z_RAISE_BEFORE_PROBING 15 gibt an, um wieviele Millimeter der Druckkopf vor dem ersten Messpunkt nach oben gefahren wird. Die Höhe des Druckkopfes der weiteren Messpunkte wird mit #define Z_RAISE_BETWEEN_PROBINGS 5 festgelegt.

Sicherheit

Um das Nullen der Z-Achse nur bei genullter X- und Y-Achse zu erlauben muss #define Z_SAFE_HOMING aktiviert sein. Dies verhindert das Messen außerhalb des Druckbetts. Außerdem werden die Schrittmotoren aktiviert.

(Stand: Marlin V 1.0)

G-Code Anpassungen

Um das Auto Bed Leveling, z.B. im Slic3r, zu aktivieren muss im Start-G-Code erst der Befehl G28 gefolgt vom Befehlt G29 eingefügt werden.

Beispiel

G28 ; home all axes
G29 ; auto bed leveling 
G90 ; use absolute coordinates
G21 ; set units to millimeters
G92 E0
M82 ; use absolute distances for extrusion
M109 S195 ; wait for temperature to be reached
G1 E10 F400 ; prime the nozzle

Tipps & Tricks