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!

21 Gedanken zu „Geeetech I3 X – Neue Marlin Firmware 1.1.5 mit Autobedleveling

    1. ST Beitragsautor

      Hi Homwer,
      Ich kann das leider nicht testen, weil ich drn mechanischen Endschalter entfernt habe. Und ich möchte nichts online stellen, was ich nicht testen kann.
      Die Änderungen sind nicht komplex. Du musst eigentlich nur Autoleveling in der Configuration.h ausmachen und die Logik des z Endschalters herumdrehen.

      Gruss Stefan

      Antworten
  1. Gabriel

    Hallo,

    Ich habe einen kapazitiven Sensor NC. Dadurch habe ich die Logik für z-min auf true gewechselt. Beim homen von z, fährt er jetzt allerdings nach oben anstatt nach unten.

    Danke schon mal für die Hilfe.

    Antworten
    1. ST Beitragsautor

      Hallo Gabriel,

      leider hat Geeetech unterschiedliche Firmwares und Kabelsätze für den Drucker in die Welt gesetzt. Die Richtung der Achsen ist teilweise unterschiedlich. Man kann die Drehrichtung der Achsen herumdrehen. Schau mal in die Configuration.h und suche diese Sektion:

      #define INVERT_X_DIR true
      #define INVERT_Y_DIR false
      #define INVERT_Z_DIR true
      

      Damit kannst Du die Drehrichtung von einzelnen Achsen herumdrehen. Damit sollte dann die FW auch bei Dir laufen. Alternativ kannst Du auch die Motorkabel umpinnen. Das würde ich aber nicht empfehlen, wenn Du eh schon dabei bist eine Firmware zu übersetzen und hochzuladen.

      Gruss Stefan

      Antworten
  2. Thomas

    Hallo Stefan,

    Ich möchte mir auch gerne einen 3D Drucker zulegen. Ich habe auch dem gleichen gesucht den auch Du im Betrieb hast. Den Geeetech I3 gibt es auf eBay in den unterschiedlichsten Ausführungen.
    Die Angebote starten bei130 Euro, ich verstehe aber nicht genau wo die Unterschiede sind. Kannst Du eine Empfehlung abgeben welchen Du dir holen würdest?
    Danke und Gruß
    Thomas

    Antworten
    1. ST Beitragsautor

      Hallo Thomas,

      die Frage passt ganz offen gesagt überhaupt nicht zum Thema. Alle Geeetech Modelle kenne ich auch nicht. Generell würde ich darauf achten, dass die mechanische Qualität stimmt. Die günstigen 3D Drucker haben oft gedruckte Plastik-Teile. Das ist insbesondere an mechanisch beanspruchten Stellen nicht gut. Ansonsten gibt es große Unterschiede beim Netzteil, Board, Steppertreibern etc.
      Hier ist das Ganze OT, daher bitte in die Off Topic Ecke.

      Gruss Stefan

      Antworten
  3. Thomas

    Es gibt den Geeetech Prusa I3 als als Pro B, Pro C, Pro Die, Pro W, Pro X und ich kann den Unterschied nicht genau erkennen. Ist der X die neuste Revision oder bezieht sich der Buchstabe. Nur auf das Gehäuse?

    Gruß
    Thomas

    Antworten
  4. Harder

    Hallo,
    eine tolle Anleitung ! Ich habe die Version jetzt auf meinen Geetech prusa i3x angepasst, soweit funktioniert das Autobedleveling. Er fährt alle Punkte an und startet dann seinen Druck, nur bei einem Testwürfel sieht man schon nach 5-6 Lagen das der Turm in der Y-Achse stark nach hinten kippt. Ich schätze mal auf einen Winkel von ca. 45 grd. Wenn ich das G29 kmd. beim Start weglasse misst er seinen Z=0 Punkt und druckt akkurat senkrecht. Irgendwo muss ein Umrechnungsfaktor falsch angesetzt sein damit ein ein geringer Bed Winkel so stark verstärkt wird ? Ich habe die config.h komplett durchsucht und konnte nichts finden was auf diesen Fehler hinweist.

    Antworten
    1. Christopher

      Das selbe problem habe ich, mit meinem Prusa I3 Pro X auch.
      Es hat mich schon etliche Nächte und Nerven gekostet aber zu einer Lösung kahm ich bislang leider nicht.

      Antworten
      1. Buckaroo

        Hallo Winkelfehlerbetroffene,

        leider hatte ich noch nicht das Vergnügen, diese Firmware zu testen, habe aber nach einer Anleitung hier das Autobedlevelling zum laufen gebracht.
        Schaut mal in die Log-Ausgabe wenn G29 ausgeführt wird. Dort wird der gemessene Z-Abstand und am Ende der errechnete „Normal“-Vektor des Bed angezeigt. Geht schön wenn man mit einem normalen Terminalprogramm (zB. HTerm) sich auf den Drucker verbindet (ACHTUNG: LF (LineFeed) beim Receive UND Send einstellen, sonst ist die Ausgabe nicht zeilenweise und Befehle werden nicht direkt beim Abschicken ausgeführt!).
        Dort sollte die Z-Achse nach oben, also ca.1.00 zeigen, wenn die gemessenen Z-Werte einigermaßen konstant sind.
        Aktuell steht mein Bed ca. 0,4mm in X-Richtung schief, was aber auch in einen +1.00 Z-Vektor endet. Denke das da die Nachkommastellen irgendwo nach der der zweiten 0 kommen (also 1.00234 oder so), da beim Drucken eines Layers die Z-Achsen immer ein wenig mitbewegt werden.
        Das bei euch so ein Fehler auftritt kann:
        a.) an den gemessenen Z-Werten liegen
        b.) an ungenauer Einstellung des Sensors
        c.) an der Berechnung in der Firmware (was ich mal ausschließe, weil die sollte sich nicht geändert haben).

        Testweise könnt ihr ja mal die Originale Firmware vn GeeeTech einspielen, was die mit Autobedleveling macht.

        Nur Vorschläge, keine Anweisungen. Für entstandenen Schaden bin ich nicht Verantwortlich!

        Grüße

        Antworten
        1. Buckaroo

          Habe jetzt die neue Firmware drauf und die funzt einwandfrei!
          Naja… die X-Achse war für meinen i3 X falsch herum, weil ich den Motor NICHT umgepinnt hatte, aber das war schnell behoben.

          Autobedleveling geht auch wie erwartet, außer dass an den äußersten +X-Punkten die Z-Achse erstmal ein paar Millimeter nach oben fährt, ist das Absicht?

          Jedenfalls: Danke für das zur Verfügung stellen Stefan!

          Antworten
  5. Sascha

    Moin,

    bei mir blinken nachdem flashen der Firmware alle Achsen im Display (X,Y,Z) als Fragezeichen. Sprich erst steht dort z.B. X und dann kommt an der selben Stelle ein?.
    Haben sie eine Idee as da das Problem sein könnte.

    Grüße aus Kappeln

    Antworten
    1. ST Beitragsautor

      Ich kann es gerade nicht am Gerät nachsehen. Ich meine aber, dass die Koordinaten blinken, bis Autohome einmal durchgelaufen ist und damit die Koordinaten stimmen.
      Gruss Stefan

      Antworten
  6. Marc

    Hallo,

    die letzte Antwort ist zwar schon etwas her, aber ich hoffe es wird hier noch gelesen.

    ich habe die Firmware Installiert, leider scheint jetzt die Fahrtrichtung der Motoren Falsch zu sein, habe ich etwas falsch gemacht oder muss ich nur eine Einstellung ändern?

    Antworten
    1. ST Beitragsautor

      Die Drehrichtung der Motoren wird in der Firmware konfiguriert. Entweder umkonfigurieren oder zwei Motor Kabel tauschen.

      Antworten
    2. Detlef

      Hallo St
      Habe beim Übersetzen in der Standard version der Hardware Deines Marlin_1.1.5_i3-ProX-AutoBL-z-AxisTR8x1.5
      Programms folgenden Fehler:
      using typedef-name ‚fpos_t‘ after ’struct‘
      Ich bitte um Hilfe.
      Mit freundlichem Gruß

      Detlef

      Antworten
      1. ST Beitragsautor

        Der Fehler entsteht, weil in der Arduino Umgebung eine neuere Version den gcc (Compiler) eingebaut wurde. Dieser ist im Syntax Check genauer geworden. Es gibt letztlich 3 Möglichkeiten:
        1. Eine alte Arduino Umgebung nehmen (1.8.1 – die habe ich damals verwendet)
        2. Die ganzen Syntax Abweichungen in Marlin beheben,
        3. Eine neuere Marlin Version nehmen und die Änderungen aus dieser Version übertragen.
        #1 ist sicherlich die einfachste Variante.

        Antworten
  7. i3xproUser

    Hallo,

    ich hab die Firmware mal getestet – super Sache!! Nur will bei meiner „alten“ bleiben. Aber…wie kann ich denn die Drehknopfrichtung in der Firmware ändern – sprich welche Einträge in welcher Datei müsste ich ändern??

    Vielen Dank schon jetzt für die Info!! :- )

    Antworten
    1. ST Beitragsautor

      Die Änderungen im Code sind markiert.
      —————————————-
      Zeile 1420/1421
      #define BTN_EN1 42
      #define BTN_EN2 40

      Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert