Schlagwort-Archive: Autoleveling

Geeetech I3 X – Neue Marlin Firmware 1.1.5 mit Autobedleveling

Auf dem Geeetech I3 X ist ab Werk die Marlin Version 1.0.2 installiert. Es gab nun für eine lange Zeit eine Weiterentwicklung von Marlin und sehr viele RC (Release Candidates) aber keine stabile Version. Mit der Version 1.1.5 ist vor einigen Wochen eine neue, stabile Version erschienen. Zeit, dass diese Version auf meinen i3 X mit Autobedleveling kommt: klick

Im Paket ist eine Konfiguration (Configuration.h) für den I3 X dabei, diese ist aber sehr mäßig gepflegt. Also habe ich die Configuration.h, die Configuration_adv.h für das Autobed Leveling Setup optimiert und darüber hinaus folgendes konfiguriert:

  • Drehknopfrichtung wieder richtig konfiguriert
  • Motor Richtung so eingestellt, wie der i3 X geliefert wird
  • EEProm eingeschaltet. Damit kann man diverse Einstellungen am Drucker machen und speichern.
  • PID Regelung für den Extruder angepasst.
  • Serielle Schnittstelle auf 115200 Bit/s eingestellt.
  • Extruder Temperatur Fehlerüberwachung.

Der Vorteil der neuen Firmware für den I3 X sind nicht riesig, aber es lohnt sich die Pflege zu betreiben. Die Firmware ebnet auch den Weg zu den neuen TMC2100 Steppern mit 128iger Microstepping. Das wäre auch mal einen Versuch wert.
Weiterhin hat die alte 1.0.2 einige Probleme mit dem Compiler in den aktuellen Arduino Entwicklungsumgebungen. Man kann die alte Firmware nur mit Tricks oder den alten Arduinos IDEs übersetzen und das nervt doch gewaltig.

Ich habe zwei Pakete gepackt – beide sind für das Autobed-Leveling Setup; bitte nur mit Autoleveling verwenden!
Hier das Firmware Archiv, wenn man die normalen Gewindestangen für die z-Achse hat (M8x1.25): Marlin_1.1.5_i3-ProX-AutoBL-z-AxisM8x1.25

Hier das Firmware Archiv, wenn man wie ich Trapezgewindestangen TR8x1.5 eingebaut hat: Marlin_1.1.5_i3-ProX-AutoBL-z-AxisTR8x1.5

Installation der Firmware:
Die Installation ist einfach.

  • Aktuelle Arudino IDE installieren; ich habe die 1.8.1 genommen.
  • Drucker per USB an den Rechner anklemmen
  • Richtigen COM Port auswählen (Werkzeuge->Port)
  • Board auf Mega 2560 stellen (Werkzeuge->Prozessor)
  • Upload

Es dauert einige Minuten. Erst wird der Code übersetzt, dann hochgeladen. Dann kommt der Drucker mit einem neuen Splash-Screen hoch:

Nach der Installation:
Danach bitte erst mal per Drehknopf ins Menü des Druckers und den EEProm zurücksetzen und die Failsafe Einstellungen laden. Jetzt die Einstellgen speichern. Die Einstellungen sind unter Control im Menü:

Jetzt können wir uns das erste Mal über die EEProm Funktion freuen. Wir können nämlich jetzt den Abstand zwischen Autolevel Sensor und Düse im Menü einstellen. Die Einstellung ist unter Motion im Menü:

Nach die Einstellungen speichern.

Neues Starter Script:
Bisher hatte ich dazu geraten, den Abstand zwischen Düse und Sensor im Starter Script einzustellen. Das war sinnvoll, weil man den Abstand im alten Release nur durch das Einspielen einer neuen Firmware ändern konnte. Jetzt geht das im Menü und wir können das Starter Script vereinfachen:
G28 ; home all axes
G29 ; autobed leveling

Wenn sich in Zukunft der Wert änder (z.B. wegen neuer Düse), dann ändert man einfach den Wert im Menü, speichert die Settings und das war es auch schon. Die gCode Dateien müssen nicht mehr angepasst werden.

Unified Bed Leveling?
Ich habe mit dieser Firmware kurz die neue Unified Bed Leveling (UBL) Funktion ausprobiert. Das Ergebnis war nicht so gut, wie das bisherige 9-Punkte Verfahren. UBL ist auch noch in der Entwicklung. Daher habe ich wieder das bisherige Verfahren eingestellt.

Andere Sensor Position & Fehlermeldungen?
Vielleicht habt Ihr den Sensor an einer anderen Stelle als ich es vorgeschlagen habe. Dann müsst Ihr das in der Firmware anpassen und den Abstand zwischen Düse und Sensor anpassen:
#define X_PROBE_OFFSET_FROM_EXTRUDER 19 // ST
#define Y_PROBE_OFFSET_FROM_EXTRUDER -43 // ST
Eventuell bekommt Ihr dann beim Übersetzen Fehler. Die neue Firmware prüft beim Übersetzen, ob Düse und Sensor für das Autoleveling über dem Bett sind. Das ist ein konservativer Ansatz, um Crashes zu vermeiden. Wenn es schief geht, solltet Ihr das korrgieren und die anzufahrenden Postionen beim Bedleveling anpassen. Ihr könnt auch einfach die Checks ausknipsen. Die Ardino Entwicklungsumgebung setzt den Cursor nach der Fehlermeldung in die Zeile bei der der Fehler auftrat. Ihr solltet etwas mit static_assert da stehen haben. Kommentiert die Zeile aus:
//static_assert(…
Wenn es dann „knallt“ und der Drucker in die Begrenzung fährt, seid ihr das aber dann selbst Schuld.

Viel Erfolg!