• HOME
  • SHOP
    • Bausätze:
    • Flatboy 3D-Drucker
    • V-Slot Profile:
    • V-Slot Profile
      Platten, Rollen

    • Schrauben:
    • Schrauben
      Muttern

    • CNC Zubehör:
    • Pulleys, Riemen
      Umlenkrollen, Spindel

    • Elektronik:
    • RAMPS & CNC
    • TMC2130 & DRV8825
    • Nema 17
    • LCD Display
  • PROJEKTE
    • DIY 3D-DRUCKER
    • DIY VSLOT CNC
    • DIY LASERCUTTER
    • CORE XY FLATBOY
    • CUTTER ENGRAVER
    • DIY CICLOP
    • DER PONG TISCH
    • DER MAL-BOT, PLOTTER
    • XXL WANDKALENDER
    • REFLOW-OFEN
    • BINÄR UHR
    • POLARGRAPH PLOTTER
    • BT2CNC
    • DUAL PARK EXTRUDER

    • IOT: PET-MONITORING
  • DIY 3D DRUCKER
    • CORE XY 3D-DRUCKER
    • CREALITY ENDER-3
    • CORE XY FLATBOY
    • HOTEND
    • TOOLKETTE
    • KALIBRIERUNG
    • FIRMWARE KONFIG
    • EXTRUDER
    • ANTRIEB
    • FILAMENT ÜBERSICHT
  • SERVICE & PROTOTYPING
    • SERVICE/ENTWICKLUNGS KONTAKT
  • TIPPS & TRICKS
    • ANTI OOZE
    • STEPPER TRIM
    • HEATBED TRIM
    • AUTOBED LVL
    • ANTI WARPING
  • KONTAKT & IMPRESSUM
    • KONTAKT
    • IMPRESSUM
    • WIDERRUFSRECHT


PROJEKTE

  • DIY 3D-DRUCKER
  • DIY 3D-DRUCKER FLATBOY
  • **NEU**DIY BIG VSLOT CNC
  • DIY LASERCUTTER
  • ENDER-3 UPDATES
  • MAL/PLOTTER BOT
  • POLARGRAPH PLOTTER
  • XL WANDPLOTTER
  • REFLOW OFEN
  • BLUETOOTH ZU CNC SHIELD
  • 2-RAD ROBOTER
  • ARDUINO PONG TISCH
  • DIY SCANNER: CICLOP
  • PRUSA I3 GEHÄUSE
  • DUAL PARKING EXTRUDER
  • BINÄR UHR SHIELD
  • IOT: PET-MONITORING





  • AUTOBED LEVELING
  • ANTI OOZING STRATEGIE
  • SCHRITTMOTOR TREIBER EINSTELLEN
  • SUPPORT-MATERIAL
  • HEIZBETT TRIMMEN
  • WARPING VERHINDERN

Home

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.

Variante a.: Alle Hardware Komponenten als Paket (Sensor + MK3 inkl. SMD Thermistor + Spannungsteiler + 2Pol Kabel) können bei Ebay als Bausatz bestellt werden.

Variante b.: Alle Hardware Komponenten als Paket (Sensor + Spannungsteiler + 2Pol Kabel) können bei Ebay als Bausatz bestellt werden.

1.) Änderung der Hardware bei Variante a und b.

Variante a. und b.):
Ein aktiver Abstandssensor kann für die Abmessung der Normalen an vier 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) 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


MK3 Aluminium heatbed
Induktiver Sensor
Kapazitiver Sensor
Spannungsteiler Platine


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 Marlin Firmware:

Generelle Freischaltung der Routine in der Firmware (Datei "Configuration.h")

Variante a., b. und c.

#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable

Für Variante a. und b. mit den aktiven induktiven oder capazitiven Abstandssensor wird kein Pull-up für den z-Endstop benötigt. Bei Variante c., dem passiven Mikroschalter mit zwei Anschlüssen (Sig, GND) benötigen wir unbetätigt einen definierten High-Pegel.
Daher darf die Zeile #define ENDSTOPPULLUP_ZMIN nicht auskommentiert werden.

#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors

#ifdef ENDSTOPPULLUPS
...
...
...
//#define ENDSTOPPULLUP_ZMIN //Variante a. und b. auskommentiert
#endif

Die nächste Codezeile hängt von der Sensor oder Schaltervariante ab. Alle Sensoren gibt jeweils als Öffner (NC) und Schließer (NO).

Variante a.: Ind. Sensor LJ12A3-4-Z/BX ist ein NPN-Schliesser -> "true"
Variante b.: Cap. Sensor LJC18A3-BZ/AX ist ein NPN-Öffner -> "false"
Variante c.: 2 Pinniger Endschalter als Öffner (Sig, GND) -> "false"

const bool Z_MIN_ENDSTOP_INVERTING = true; // "true" Variante a., "false" bei Var. b. und c.

Definition der Testpunkte (in mm) für die Prozedur (passt für ein Druckbett mit 200x200mm Fläche). Diese werden angefahren und ausgemessen:

#define LEFT_PROBE_BED_POSITION 0 //Erster Testpunkt bei Null-Position
#define RIGHT_PROBE_BED_POSITION 150 //Dann 150 mm nach rechts fahren
#define BACK_PROBE_BED_POSITION 150 //Dann 150mm in y-Richtung fahren
#define FRONT_PROBE_BED_POSITION 0

XY-Geschwindigkeit sollte verringert werden, um keine Geschwindigkeitsbegrenzung zu erreichen.
1mm Anhebung zwischen den Messpunkten reicht vollkommen für Variante a. und b. aus. Für Variante c. sollte hier ein Wert von 3mm gewählt werden.

#define Z_RAISE_BEFORE_HOMING 2
#define XY_TRAVEL_SPEED 2000
#define Z_RAISE_BEFORE_PROBING 2 //How much the extruder will be raised before traveling to the first probing point.
#define Z_RAISE_BETWEEN_PROBINGS 2 //How much the extruder will be raised when traveling from between next probing points

Variante a. und b.: In Configuration_adv.h muss folgendes geändert werden, damit der induktive oder kapazitive Sensor beim Drucken unbeachtet bleibt.
Ebenso kann sonst der Z-Offset zwischen Hotend und Sensorschaltpunkt sonst nicht ermittelt werden.

#define ENDSTOPS_ONLY_FOR_HOMING // Variante a. und b., Variante c. auskommentiert

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.

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:

#define Z_SAFE_HOMING_X_POINT (0) // 3d-proto (X_MAX_LENGTH/2) : X point for Z homing when homing all axis (G28)
#define Z_SAFE_HOMING_Y_POINT (0)

Für Variante c.) mit Endschalter und Servo zusätzlich noch folgendes anpassen:

Offset in mm von der Spitze des Hotends zum ausgefahrenen Z-Endstop-Arm. Diese Werte müssen unbedingt genau ermittelt werden. Da der ausgefahrene Endschalter unterhalb des Hotends liegt muss der letzte Wert negativ sein.
Zum Ausmessen kann Befehl M280 P0 S90 genutzt werden (Servo 0 um 90° schwenken, d.h. Arm ausfahren):

Endstopp eingefahren mit M280 P0 S0
Endstopp ausgefahren mit M280 P0 S80

#define X_PROBE_OFFSET_FROM_EXTRUDER -25 //in mm
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1.8 //Hier auf 0.1mm genau messen

Anzahl der verwendeten Servos festlegen und den eingefahrenen und ausgefahrenen Winkel festlegen:

#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1
#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles

Servo ist während des Drucks abgeschaltet. Sonst zappelt der Servo beim Druckvorgang.

#define PROBE_SERVO_DEACTIVATION_DELAY 300

Anzahl der verwendeten Servos festlegen und den eingefahrenen und ausgefahrenen Winkel festlegen:

#define NUM_SERVOS 3 // Servo Index, startet mit 0 für den M280 Befehl
#define SERVO_ENDSTOPS {-1, -1, 0} // Servo Index X, Y, Z. Abgeschaltet mit -1
#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 80,0} // X,Y,Z Paar Achsen Winkel (Ausgefahren, Eingefahren)

Kontrollieren, ob in pins.h die richtigen Servos gemappt wurden, z.B. Serov0 auf Pin 11 für das RAMPS-Board:

#ifdef NUM_SERVOS
#define SERVO0_PIN 11
#if NUM_SERVOS > 1
#define SERVO1_PIN 6
#endif
#if NUM_SERVOS > 2
#define SERVO2_PIN 5
#endif
#if NUM_SERVOS > 3
#define SERVO3_PIN 4
#endif
#endif

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