Auto-bedleveling mit Marlin Firmware und induktivem Sensor, capazitivem Sensor oder Servo-Endschalter
Um das ständige ausrichten des Druckbetts bei RepRap Druckern und Bausätzen zu verhindern, unterstützt die Marlin Firmware das sog. Auto-bedleveling.
Höhenabweichungen in Z-Richtung werden dann mit vertikal Bewegungen während des
Druckprozess über die Software ausgeglichen.
Die Prozedur funktioniert gut und hat meinen Druckprozess deutlich
verbessert und beschleunigt. Im Folgenden werden drei Varianten dargestellt, dass Auto-bedleveling umzusetzen.
Die Auto-bedleveling Funktion in Aktion mit einem a.) induktiven Sensor, b.) kapazitiven Sensor und c.) Endschalter und Servo.
Hier die Vor -und Nachteile und die Videos:
Variante | Ind. Sensor | Kap. Sensor | Servo |
---|---|---|---|
Genauigkeit | + | + | 0 (mech. Teile) |
Preis | 0 (mit Alu Heizbett) | + (Glasplatte oder MK3 | + |
|
![]() |
|
---|---|---|
Variante a: Auto bedleveling mit ind. Sensor. | Variante b: Auto bedleveling mit cap. Sensor. | Variante c: Auto bedleveling mit Servo-Endschalter. |
Alle Hardware Komponenten als Paket (Induktiver oder kapazitiver Sensor + präzisionsgefräste Aluminium Platte + Spannungsteiler + 2Pol Kabel) können im 3D-Proto Shop als Bausatz bestellt werden.
Artikelbeschreibung | Preis zzgl. Versand | Versandkosten | Rechtliches | Paypal Zahlung Gesamtkosten |
---|---|---|---|---|
Autobed-Leveling Set mit Kap. Sensor Spannungsteiler + Dupont Kabel |
15,90 € zzgl. Versand | Deutschland: 2,60 € Österreich: 3,70 € Sonstige EU: 3,70 € |
14-Tage-Widerrufsrecht |
|
Artikelbeschreibung | Preis zzgl. Versand | Versandkosten | Rechtliches | Paypal Zahlung |
---|---|---|---|---|
Autobed-Leveling Set mit MK3-Platte | 35,00 € zzgl. Versand | 3,95 € innerhalb Deutschlands. Innerhalb der EU auf Anfrage |
14-Tage-Widerrufsrecht |
|
1.) Änderung der Hardware bei Variante a und b.
Variante a. und b.): Ein aktiver Abstandssensor kann für die Abmessung der Normalen an mindestens drei Punkten des Heizbeds genutzt werden.
Vorraussetzung hierfür ist bei Variante a. die Verwendung einer leitfähigen Druckbett-Oberfläche (z.B. das Aluminium MK3 oder MK2 mit Aluminium Platte) während
Varinate b. auch auf einer Glasplatte funktioniert.
Beide Abstandssensoren müssen über einen Spannungsteiler an das Printerboard angeschlossen werden, um die Ausgangsspannung zu reduzieren.
Geeignete Halterung für den jeweiligen Sensor kann selbst gedruckt
werden (stl-file für einen Sensor mit M12 Gewinde) und sollte ca. 1mm oberhalb
der Hotend-Düsenspitze liegen.
Beim MK3 Alu Heizbett kann oftmals der Thermistor in SMD direkt auf die Platine gelötet werden.
Empfohlen wir hier der Epcos B57621C104J62 in der Größe 1206.
Die passende Kennlinie für Marlin (thermistortables.h) findet ihr hier.
Einfach eure aktuelle thermistortables.h Datei damit überschreiben und in Configuration.h die Kennlinie 8 wählen.
#define TEMP_SENSOR_BED 8 //in thermistortables.h ist hier B57621C104J62 abgelegt

Variante c.) Mit einem Servo-Motor für das Auto-bedleveling (z.B. der Tower Pro SG90 (Pinnbelegung: Rot-5V, Orange-PWM, Braun-GND).
Der SG90 wird bereits mit geeigneten Schrauben zur Montage eines Endstopp-Halters geliefert.
Dieser Servo-Motor kann außerdem an das genutzte Printerboard direkt angeschlossen werden.
Während beim RAMPS 1.4-Board eine der Servo-Pinreihe direkt genutzt werden kann (5V muss hierbei
durch einen Jumper für die Servo-Reihe "freigeschaltet" werden)
muss beim Rumba Board umgepinnt werden (GND und 5V auf dem Stecker tauschen).
Der Endschalter für die Z-Achse (bestenfalls mit Rollen-Kipphebel) muss nun mit einer geeigneten Halterung
(für einen Makerfarm Prusa i3 gibt es das stl-file
hier)
an den Servo-Motor befestigt werden. Der Servo-Motor wird dann an den X-Schlitten montiert, so dass das Endstopp bei
ausgefahrenem Arm (90° Sollwinkel) unter dem Hotend liegt und bei
eingefahrenen Arm (0° Sollwinkel) im rechten Winkel zum Hotend absteht.
2.) Software Anpassung in der neuen Marlin Firmware (1.1.4):
Für Variante a. und b. mit den aktiven induktiven oder kapazitiven Abstandssensor wird kein Pull-up für den z-Endstop benötigt.
//#define ENDSTOPPULLUPS // 3DP: Auskommentieren um Pull-Ups zu aktivieren
#if DISABLED(ENDSTOPPULLUPS)
// fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined
//#define ENDSTOPPULLUP_XMAX
//#define ENDSTOPPULLUP_YMAX
//#define ENDSTOPPULLUP_ZMAX
#define ENDSTOPPULLUP_XMIN//3DP: Pullup set
#define ENDSTOPPULLUP_YMIN//3DP: Pullup set
//#define ENDSTOPPULLUP_ZMIN
//#define ENDSTOPPULLUP_ZMIN_PROBE
#endif
Die nächsten zwei Codezeilen hängen von der Sensor oder Schaltervariante ab. Alle Sensoren gibt jeweils als Öffner (NC) und Schließer (NO).
Variante a.: Induktiver Sensor LJ12A3-4-Z/BX ist ein NPN-Schliesser -> "true"
Variante b.: Kapazitiver Sensor LJC18A3-BZ/AX ist ein NPN-Öffner -> "false"
Variante c.: 2 Pinniger Endschalter als Öffner (Sig, GND) -> "false"
#define Z_MIN_ENDSTOP_INVERTING true // "true" Variante a., "false" bei Var. b. und c.
...
...
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // "true" Variante a., "false" bei Var. b. und c.
Der Min-Endstop ist gleichzeitig auch der Abstandssensor oder Servo-Taster:
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN //3DP: keine Aenderung, weil Probe den Zmin Pin verwendet
...
...
#define FIX_MOUNTED_PROBE //3DP: Kommentarzeichen entfernen
Abstand des ind. oder cap. Sensors zum Hotend abmessen und im folgenden eintragen.
Dabei kann für den Z-Offset die folgenden Prozedur angewendet werden:
1.) Mit "G28" alle Achsen zurücksetzen. (Home all axis)
2.) Mit "G92 Z10" die Z-Achsen Position auf 10mm Höhe setzen ohne die Achse zu bewegen.
3.) In 0,1mm Schritten den Abstand vom Hotend zum Heizbett verringern bis nur noch ein Papierblatt dazwischen passt.
4.) Mit "M114" aktuelle Z-Position abfragen und das Delta als negativen Wert im folgenden eintragen
z.B. Z_PROBE_OFFSET_FROM_EXTRUDER = -(10mm - 9,2mm):
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 //in mm
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0
#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.8 //Hier das gerade ausgemessene Delta eintragen.
XY-Geschwindigkeit sollte verringert werden, um keine Geschwindigkeitsbegrenzung zu erreichen.
#define XY_TRAVEL_SPEED 2000
Einschalten des 3-Punkte Autobed Levelings für ein planes Druckbett (Glasplatte oder präzisionsgefräste Platte).
#define AUTO_BED_LEVELING_3POINT //3DP: Enable
Definition der Testpunkte (in mm) für die Prozedur (passt für ein Druckbett mit 200x200mm Fläche). Diese werden angefahren und
ausgemessen. Hier sollte man testweise mit kleinen Werten beginnen, damit der Sensor nicht aus dem Druckbett herausfährt.
#define ABL_PROBE_PT_1_X 15 //3DP: 200x200mm Heizbett (Sensor befindet sich 25mm rechts vom Hotend)
#define ABL_PROBE_PT_1_Y 160 //3DP: 200x200mm Heizbett (Sensor befindet sich 25mm rechts vom Hotend)
#define ABL_PROBE_PT_2_X 15 //3DP: 200x200mm Heizbett (Sensor befindet sich 25mm rechts vom Hotend)
#define ABL_PROBE_PT_2_Y 20 //3DP: 200x200mm Heizbett (Sensor befindet sich 25mm rechts vom Hotend)
#define ABL_PROBE_PT_3_X 130 //3DP: 200x200mm Heizbett (Sensor befindet sich 25mm rechts vom Hotend)
#define ABL_PROBE_PT_3_Y 20 //3DP: 200x200mm Heizbett (Sensor befindet sich 25mm rechts vom Hotend)
Nach dem Homing nicht in das Bettzentrum fahren, um beim Nullpunkt mit der Prozedur zu beginnen. Sonst kann es sein, dass das Hotend während dessen außerhalb des Druckbetts fährt. Die homing feedrate sollte verringert werden.
#define Z_SAFE_HOMING_X_POINT (0) //3DP: (X_MAX_LENGTH/2) mit 0 ersetzen
#define Z_SAFE_HOMING_Y_POINT (0)
...
...
#define HOMING_FEEDRATE_XY (30*60) //3DP: 40->30
#define HOMING_FEEDRATE_Z (2*60) //3DP: 4->2
3.) Änderung des Start G-Codes in Slic3r für alle Varianten
Zu Beginn des G-Codes muss nun G28 (Home all axis) und G29 (Auto-Bed-Leveling) durchgeführt werden.
Unter Slic3r kann dies über den Custom G-Code im Fenster Start G-Code umgesetzt werden. Und fertig!
G28; home all axes: Unbedingt vorher durchführen.
G29; Auto bed level
Kommentare zum Tipp - Comments