Marlin 2.0 auf dem FLSUN QQ-S in der Stock Ausstattung

In Anlehnung an den Beitrag von @nordrunner hier einmal mein Vorgehen Marlin 2.0 auf den FLSUN QQ-S in seiner Stock Ausstattung mit MKS Robin Mini zu bringen.

Vorweg aber ein paar Worte als Hinweis:
Es gibt absolut keine Veranlassung eine andere Firmware als die ab Werk ausgelieferte Firmware auf den FLSUN QQ-S zu flashen. Diese Anleitung und auch Marlin 2.0 werden keine Verbesserung zu einem eh bereits gut ausgerichteten Drucker erreichen. Bitte beachtet, dass Ihr alle Arbeiten an Eurem Drucker auf Eure eigene Gefahr durchführt. Die Anleitung ist ein Erfahrungsbericht aus einer von mir zu Testzwecken durchgeführten Veränderung an meinem FLSUN QQ-S.

Solltet Ihr allerdings ebenfalls meinen Weg testen wollen, könnt Ihr sofern Probleme auftreten auch immer wieder zur originalen Firmware zurück.

Die fertig kompilierte Firmware in Form einer .bin zu flashen ist denkbar einfach. Sie wird lediglich auf die SD Karte kopiert und anschließend wird der Drucker mit eingesteckter SD Karte gestartet. Solltet Ihr also die Datei aus dem Link herunterladen, muss sie vorher in  Robin_mini.bin umbenannt werden.

Hier also bitte daran denken das Datum aus dem Dateinamen zu löschen. und

Falls Ihr Euch aber eine eigene FW kompilieren wollt, wird Platformio Euch die Datei bereits als  Robin_mini.bin ausgeben.

Hier findet Ihr die Version, welche ich für den FLSUN QQ-S genutzt habe.

https://github.com/AndersSahlman/Marlin/tree/Flsun-QQ-S/builds

Ich möchte an der Stelle den Hinweis geben, dass der Ersteller der Beispielconfig für den FLSUN QQ-S aus dem offiziellen Marlin 2.0 Branch der gleiche ist, der diese fertig kompilierte Firmware in obigem Link anbietet. Hierbei handelt es sich um Anders Sahlman.

Die angebotene Firmware aus dem Link, ist ausschließlich für den QQ-S mit MKS Robin Mini und Leveling-Sensor konfiguriert. Habt Ihr die Level-Platte oder das HighSpeed Board, folgt bitte dem Ursprungsbeitrag auf Facebook um die richtige Firmware für Euch zu finden.

https://de-de.facebook.com/groups/120961628750040/permalink/593987384780793/

Ist die Firmware geflasht, meldet sich der Drucker mit dem bekannten Marlin LCD Menü.

Da es sich bei dem Display allerdings um ein Touch Display handelt, gibt es im unteren Teil der Anzeige den „Touch“-Ersatz für den Drehknopf.

Zunächst muss das EEPROM initialisiert werden:
CONFIGURATION – ADVANCED SETTINGS – INITIALIZE EEPROM

Anschließend folgt die Delta Calibration:
CONFIGURATION – DELTA CALIBRATION

Ich habe das mit aufgeheiztem Bett gemacht.

Der Drucker verlangt den Sensor und tastet das Bett ab um die Höhe, die Tower Angles und die Endstopp Offsets zu ermitteln. Das kann eine Zeitlang dauern und bis zu 6 Wiederholungen benötigen. Aber das kennen die Delta Besitzer ja bereits.

Folgt der Aufforderung den Sensor wieder zu entfernen und führt, wenn es der Drucker nicht eh schon macht, ein Homing durch.

HINWEIS:

Nachfolgende Punkte lassen sich wesentlich einfacher über Pronterface einstellen. Da Ihr für eine Feinjustierung, so wie ich sie gemacht habe, eh ein Terminal benötigt, könnt Ihr auch jetzt bereits den Drucker entweder an Octoprint anbinden, oder eine Pronterface Verbindung herstellen. Da meine Feinjustierung allerdings optional ist, hänge ich sie ans Ende des Beitrags.

Z-Offset einstellen:

In der originalen Firmware ist ein entsprechender Sensoroffset bereits hinterlegt, in der Marlin Firmware müsst Ihr diesen noch einstellen. Da dies allerdings über das Display nur in 0.1mm Schritten geht, bietet es sich hier eben an, den Offset über den Befehl M851 in Pronterface oder Octoprint abzusetzen.

Zunächst aber der Weg über das Display, falls Ihr auch später die Feinjustierung nicht braucht oder nicht machen wollt.

MOTION – MOVE AXIS – SOFT ENDSTOPS – OFF
(Achtung, jetzt fährt die Düse auch in den negativen Bereich)

Anschließend fahrt Ihr die Z-Achse auf Z=0

MOTION – MOVE AXIS – MOVE Z

Diese müsste jetzt ziemlich weit über dem Bett stehen.

Über CONFIGURATION – PROBE Z-OFFSET

fahrt Ihr nun die Z-Achse in den negativen Bereich, bis die Düse den gewünschten Abstand zum Bett hat. Entweder Fühlerlehre, Papier oder Kassenzettel sind die gängigen Hilfsmittel um diesen Abstand zu bestimmen.

Anschließend über CONFIGURATION – STORE SETTINGS den Offset ins EEPROM speichern und nach einem Homing den neuen Nullpunkt für Z noch einmal kontrollieren.

Zuerst über MOTION – MOVE AXIS – SOFT ENDSTOPS wieder auf ON stellen und dann

MOTION – MOVE AXIS – MOVE Z und bis auf Z=0 herunterfahren. Das müsste dann nun der vorher von Euch festgelegte Abstand sein. Möglicherweise muss das nochmal korrigiert werden.

Nun der Weg über Pronterface.

Im Grunde funktioniert es nach der DELTA CALIBRATION genauso wie übers Menü.

Zuerst MOTION – MOVE AXIS – SOFT ENDSTOPS – OFF, anschließend die Z-Achse auf Z=0 fahren und nun über das Motion-Menü so weit in den negativen Bereich, bis der Abstand zur Fühlerlehre, dem Kassenzettel oder dem Papier stimmt.

Ihr habt hier auch die Möglichkeit das Raster zu wählen. Fahrt zuerst mit 1mm Schritten und anschließend mit 0.1mm oder sogar 0.025mm Schritten.

Den negativen Wert, den das Display anzeigt, z. B. -16.97 gebt Ihr über Pronterface dann mit dem Befehl M851 Z-16.97 ein und speichert das ganze mit M500

Anschließend ein Homing über G28 und nochmal bis auf Z=0 herunterfahren und kontrollieren. Vergesst auch nicht, später die Soft Endstops wieder auf ON zu stellen.

Normalerweise wären wir bei einem anderen Drucker als einem Delta nun fertig und könnten den Testdruck starten um den Z-Offset noch fein zu justieren. Allerdings empfehle ich dringend die Bett-Nivellierung bei einem Delta durchzuführen. Anders als bei den üblichen Aufbauten mit Bettschrauben ist das Bett des Delta fixiert und lässt keine andere Stellung zu um eventuelle Fehlstellungen auszugleichen.

Daher:

Bett wieder aufheizen und dann MOTION – LEVEL BED

Der Sensor prüft nun eine Reihe von Punkten auf dem Bett und quittiert anschließend mit der Meldung den Sensor wieder abzunehmen.

Jetzt wären wir bereit für den ersten Druck. Ist der gut und erfüllt Eure Ansprüche, dann seid Ihr fertig. Marlin ist auf dem Drucker eingerichtet und Ihr könnt ihn nun nutzen.

Optionaler Teil der Einrichtung mittels Pronterface

Seid Ihr allerdings mit dem Druck nicht zufrieden, oder gibt es partiell Stellen, die nicht gut geworden sind, ist es bei einem Delta nicht so einfach das zu beheben.

Im Grunde sind dann die Messergebnisse aus der Sensormessung nicht genau genug, oder haben Abweichungen.

Bei meinem QQ-S hat sich das so geäußert, dass am Z-Tower die Düse viel zu tief war und am X Tower partiell zu hoch, wobei die Mitte und auch rund um den Y Tower alles gepasst hat.

Erneutes Kalibrieren, Nivellieren, messen der Rod Längen, messen der Radien und der Abstände der Tower, kontrollieren des Aufbaus und der Rechtwinkligkeit aller Achsen, sowie das exakte Ausrichten aller Endstops hat nichts gebracht. Ich habe sogar das Bett ausgebaut und kontrolliert.

Ursache liegt hier in der automatischen Kalibrierung. Neben den drei Fixpunkten an den Towern Alpha, Beta und Gamma, prüft der Sensor auch noch weitere Punkte auf dem Umkreis des Betts und nimmt alle diese Werte zusammen um anschließend (wie oben bereits beschrieben) die Tower Angle (den Versatz der Achsen zueinander) und die Endstop Offsets zu ermitteln. Letzteres in erster Linie um den Effektor schnurgerade an die Mitte des Betts zu fahren und diese auch zu treffen.

Mit so einem Klicki-Klacki Sensor kann da schonmal was schief gehen. Kalibriert man einen Delta manuell, fährt man diese ganzen Punkte eigentlich nicht an, sondern beschränkt sich auf die drei Tower.

Korrigieren der Endstop Offsets ist daher in den meisten Fällen ausreichend.

Zuerst ein paar Vorbereitungen

Wenn wir nun die Tower anfahren wollen um die Endstop Offsets zu kontrollieren und bei Bedarf zu korrigieren, brauchen wir die XY Koordinaten der einzelnen Tower auf dem runden Druckbett.

Die können wir sehr einfach berechnen.

Der Alpha (oder X) Tower befindet sich bei
X = Druckbett-Radius * cos (theta)
Y = Druckbett-Radius * sin (theta)

Ok. Einfach, oder? Nee, nicht so sehr, wenn man nicht weiß, wie der Radius ist und was um alles in der Welt so ein „theta“ ist.

Radius ist einfach. Bett ausmessen und durch 2 teilen. Da kommt aber beim FLSUN QQ-S ein Radius von mehr als 130 raus. Da wir aber später nicht bis an den äußersten Rand fahren wollen um die Endstop Offsets zu kontrollieren, nehmen wir hier einen kleineren Wert um die X und Y Koordinate zu ermitteln. Ich habe mit einem Radius von 110mm gerechnet und bin damit sehr gut gefahren.

Im Übrigen ist der nach der automatischen Kalibrierung durch die Software ermittelte Radius nicht der Druckbettradius, sondern der Radius von der Mitte des Betts, bis zum Schlitten an dem die Rods an der Linearführung befestigt sind. Daher ist der auch um einige Millimeter größer als der Radius vom Bett. Bei mir wurden 141.32mm ermittelt. In der Firmware sind 140.80mm hinterlegt. Also rechnet nicht mit diesem Radius, sondern messt das Bett und zieht 20mm ab. Dann seid Ihr auf der sicheren Seite. Im Übrigen. Ist der Delta Drucker sauber aufgebaut, stimmen alle Winkel und sind alle relevanten Maße penibel genau gemessen und in der Firmware eingetragen, dürfte dieser ganze optionale Korrekturschritt nicht notwendig sein. Was Ihr also rein mechanisch richten könnt, solltet Ihr auch richten. Nur leider ist der QQ-S hier von seinem Aufbau und der notwendigen Korrektur von z. B. der Ausrichtung der Tower zur Base nicht so gefällig. Beim Anycubic Kossel geht das alles wesentlich einfacher und genauer.

Theta

So, und was ist nun „Theta“? Mathematik, Kugelkoordinaten…bla bla… Winkelbestimmung im Raum…bla bla…rundes Druckbett…drei Tower, einer bei 210 (Alpha), der andere bei 330 (Beta) und der dritte bei 90 (Gamma).

Mehr muss man nicht wissen. Alles weitere geht zu tief in die Mathematik und ist auch an der Stelle nicht wirklich notwendig.

Somit sieht die Berechnung folgendermaßen aus:

Alpha Tower X Koordinate = 110 * cos(210) = -95.26
Alpha Tower Y Koordinate = 110 * sin(210) = -55

Ihr könnt es jetzt gerne für den Beta Tower auch ausrechnen, oder mir glauben, dass der genau auf der anderen Seite gegenüber dem Alpha Tower ist und somit die Y Koordinate identisch bleibt und die X Koordinate lediglich in die andere Richtung geht, also positiv wird.

Beta Tower X Koordinate = 95.26
Beta Tower Y Koordinate = -55

Und für Gamma muss man nicht wirklich rechnen, denn cos(90) ist 0 und sin(90) ist 1.
Das kennen wir noch aus der Schule. Somit sind die Koordinaten für den Gamma Tower

X = 0
Y = 110

Und an genau diese Koordinaten fahren wir nun den Druckkopf in eine Höhe von Z = 5mm

Die Befehle dazu sehen folgendermaßen aus:
Für den X Tower: G1 X-95.26 Y-55 Z5 F7000
Für den Y Tower: G1 X95.26 Y-55 Z5 F7000
Für den Z Tower: G1 X0 Y110 Z5 F7000

Da diese Runde ein paar Mal gefahren wird, lohnt es sich dafür in Pronterface sogenannte Custom Button zu erstellen.

Dafür klickt Ihr auf das kleine + im mittleren Bereich von Pronterface und könnt so die Befehle benennen und sie dort abspeichern.

Zugleich könnt Ihr Euch über den Befehl M503 dort die Zeile M666 anschauen und die dort hinterlegten Werte notieren.

Fahrt nun der Reihe nach die Punkte ab, beginnend mit dem X Tower. Entweder über das Display oder aber auch über Pronterface fahrt Ihr nun die Düse die 5mm in Z Richtung runter zum Druckbett, bis Euer Papier, Kassenzettel oder die Fühlerlehre den Abstand signalisiert. Soft Endstop muss dafür AUS sein. Achtet dabei auf die Differenz zu den 5mm, weshalb ich empfehle dies über das Display des Druckers zu machen, denn da könnt ihr 1. mit bis zu 0.025mm kleinen Schritten fahren und 2. wird hier die Z-Höhe direkt angezeigt.

Nehmen wir an, ihr müsst am X Tower nun 5.18mm runter fahren um den Abstand zum Druckbett zu erreichen. Dann müsst Ihr die 0.18mm auf den bereits hinterlegten X Endstop Offset aufrechnen. In meinem Fall hatte der X-Endstop Offset bereits einen Wert von -0.05.

Da wir nun aber 0.18mm weiter runter mussten, korrigieren wir den Wert am X Endstop Offset mit dem Befehl

M666 X-0.23

Bei jeder Änderung mittels M666 muss ein erneutes Homing erfolgen. Und es ist ratsam die Endstop Offsets nicht gleichzeitig, sondern nacheinander zu ändern.

Verfahrt nun mit den beiden anderen Towerpositionen genauso. Erst Y und dann Z.
Das ganze muss kontrolliert und ggfls. auch nochmal korrigiert werden. So lasst Euch damit Zeit und fahrt die Runden ruhig drei bis vier Mal ab. Nicht vergessen bei jeder Änderung durch M666 ein G28 hinterher zu schicken. Grundsätzlich müssen die Änderungen nicht unbedingt jedes Mal mit M500 gespeichert werden, weil sie im Speicher gehalten werden und erst ganz am Schluß gespeichert werden müssten. Ich habe aber zwischendrin immer mal ein M500 abgeschickt. Man weiß ja nie.

Stimmen nun die Endstop Offsets und Ihr erreicht bei jedem Anfahren der Tower und senken der Düse um 5mm immer den gleichen Abstand der Düse zum Bett, solltet Ihr definitiv jetzt mit M500 speichern und anschließend das Bett neu über MOVE – LEVEL BED nivellieren.

Danach sollte sich die Position der Düse über die gesamte Fläche des Druckbetts verbessert haben und Ihr erhaltet hoffentlich anschließend auch so ein Ergebnis wie ich.

Die beiden kleinen „Bläschen“ sind Fettfinger auf der Base. Da habe ich vorher nicht ordentlich sauber gemacht.

5 Kommentare

  • @mehrwiedu

    Moin.

    Ich bin ja nun keinesfalls neugierig! (Ich muss nur alles Wissen!) lach

    Nu` sach` ma`! Wie läuft es mit der neuen Software auf deinem QQ-S?

    Hast du an den Einstellungen noch mehr herumgefummelt, um noch bessere Ergebnisse aus der Hardware herauszuholen?

    Ich wünsche dir einen guten Start in die Woche!

    Gruß

    • Moin.
      Nein. In der Tat nicht. Ich habe lediglich wie im Artikel beschrieben die automatische Kalibrierung durch meinen manuellen Eingriff etwas korrigiert und sonst nichts weiter gemacht.

      Ich habe auch als finale Version der Marlin 2.0 die acht Monate alte kompilierte .bin von Anders Sahlman aus dem Link genommen und werde dabei bleiben.

      Die Druckergebnisse sind sauber und so kann ich nur halt mit Marlin LCD Menü arbeiten.

  • Ja. Absatz ist falsch. Platformio gibt schon den richtigen Namen aus. Ich korrigiere das gleich.

  • Sehr schön. Vielen Dank.
    Und wieder etwas gelernt.

    Etwas irritiert mich allerdings:
    Zitat:
    Die fertig kompilierte Firmware in Form einer .bin zu flashen ist denkbar einfach. Sie wird lediglich auf die SD Karte kopiert und anschließend wird der Drucker mit eingesteckter SD Karte gestartet. Die Datei muss allerdings anders als bei z. B. den SKR Boards nicht FIRMWARE.bin heißen, sondern Robin_mini.bin

    Wieso musstest du die Datei umbenennen? Korrekt konfiguriert, schmeißt mir VSCode/Platform.io die korrekt benannte Datei raus.
    Hast du das Board nicht in der platformio.ini angegeben? Siehe:

    [platformio]
    src_dir = Marlin
    boards_dir = buildroot/share/PlatformIO/boards
    default_envs = mks_robin_mini
    include_dir = Marlin

    Bei meinem Versuch wurde jedenfalls eine Robin_mini.bin mit 239,9 kB erstellt.

    Hmmm……. Ich denke, ist wohl eher ein Thema für`s Forum.

    Gruß

Kommentar hinterlassen

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