Mainboard tauschen SKR V1.4 (Turbo)

History:

01.05.2021 -- Marlin Release Version auf 2.0.8 aktualisiert
18.10.2020 -- Marlin Release Version auf 2.0.7.2 aktualisiert
10.10.2020 -- Marlin Release Version auf 2.0.7.1 aktualisiert

09.10.2020 -- Marlin Bugfix entfernt und Release Version auf 2.0.7 aktualisiert

30.08.2020 -- Marlin Release Version auf 2.0.6.1 aktualisiert
23.08.2020 -- Marlin Bugfix und Release stealthChop Hybrid auf Grund der schrecklichen Motorengeräusche wieder deaktiviert
21.08.2020 -- Marlin Bugfix und Release Classic Jerk aktiviert
 und Werte angepasst
09.08.2020 -- Marlin Bugfix und Release am Extruder stealthChop deaktiviert

06.08.2020 -- Marlin Bugfix Version auf 06.08.2020 (Downloaddatum) aktualisiert und stealthChop Hybrid aktiviert

28.07.2020 -- Marlin Release Version auf 2.0.6 aktualisiert
27.07.2020 -- Fertigstellung der Beschreibung

 

Stand der hier beschriebenen Marlin Version: 2.0.8
Aktuell ist 2.1.2.1.

 

Es besteht noch einiges an Verbesserungsbedarf gerade in Sachen Marlin Konfiguration.
Wer Ideen hat oder Verbesserungen vorschlagen möchte, kann dies unten in der Kommentarfunktion tun.

 

Ich beziehe mich rein auf die originalen Versionen von Marlin und NICHT auf die BIQU Eigenkreationen, die doch manchmal stark vom Original abweichen.
Eine BIQU Version macht nur dann Sinn, wenn die betroffene Hardware noch nicht in der originalen Version vorhanden ist.

 

Hier das Mainboard SKR V1.4 Turbo:

Bigtreetech SKR V1.4 Turbo Mainboard

Im Bild sind die extra erhältlichen Treiberbausteine beispielhaft montiert. Diese müssen extra erworben werden.
Ich habe hier die damals gekauften TMC2208 V2.1 weiterverwendet.
Bitte bei abweichenden Modulen alles entsprechend berücksichtigen (z.B. muss oft nicht mehr gelötet werden).

Beim Anet E10 können die beiden Z-Stepper nun direkt onboard gesteckt und mit 1 Treiber gesteuert werden, womit 4 Treiber reichen.
Den 5. Treiber kann man z.B. für einen 2. Extruder verwenden oder wer will, auch wie beim SKR V1.3 als 2. Z-Treiber.

Nach einigen Recherchen bin ich nun zu dem Schluss gekommen, dass es elektrisch doch besser ist, für die 2. Z-Achse einen 2. Z-Treiber zu verwenden.
An einigen Stellen im Internet war zu lesen, dass der Treiber, der beide Motoren ansteuern muss, dann auch doppelt belastet wird.
Dieses Risiko möchte ich dann doch nicht eingehen und verwende alle 5 Plätze und verzichte vorerst auf die Möglichkeit eines 2. Extruders.

Wer ganz neu einsteigt, kann sich auch die Nachfolgemodelle V3.0 oder ganz andere Treiber besorgen (z.B. TMC2209 VX.X).
Für einige Treiber gibt es diverse Jumpersettings auch bei BIQU (Bigtreetech) auf deren GITHUB Seite.

BIQU Bigtreetech Github Seite

Beide Board sind deutlich leistungsfähiger als das originale Anet Board, dass mit dem Anet E10 Drucker ausgeliefert wird.

Herzstück der neueren Boards ist der 32 Bit Prozessor von NXP, der LPC1768 im SKR V1.4 und der LPC1769 im SKR V1.4 Turbo. Der LCP1769 wird mit 120MHz getaktet statt mit 100MHz wie beim LCP1768.

Auf den Board selbst können 5 Treiberbausteine verschiedenster Art für die Steppermotoren aufgesteckt werden.
Für diese Anleitung habe ich mich damals für die Variante TMC2208 von Bigtreetech in der Version 2.1 entschieden.
Mittlerweile ist eine Version 3.0 erschienen und viele weitere andere Arten.
Als ich meine Version 2.1 der TMC2208 bestellt habe, gab es keine anderen Treiber, außer den leistungsschwächeren und älteren.
Auf die Unterschiede möchte ich hier noch nicht eingehen, nur dass ich heute ggf. zu den neueren TMC2209 greifen würde.
Es spricht eigentlich nichts mehr für die alten TMC2208, vielleicht noch der Preis, dann aber die Version 3.0.

Zu beachten ist, dass der Anet E10 Drucker über 2 (!!) Z-Achsen verfügt (also 2 Steppermotoren bedient werden müssen).

Beim SKR V1.4 gibt es insgesamt 6 Steckplätze für die Steppermotoren (aber nur 5 Treiberplatinenplätze !!).
Hier ist also von vorne herein Z zweimal vorhanden, also quasi ein Y-Adapter onboard.
Ich werde jedoch für den 2. Z einen eigenen Treiber nutzen, um keine Doppelbelastung eines einzelnen Treibers zu erzwingen.


Als Nächstes folgen nun die oben erwähnten Treiberbausteine für die Steppermotoren TMC2208, hier im Bild die Version 2.1 von Bigtreetech: (wie geschrieben, gibt es neuere Treiber, z.B. TMC2209 UART, wo man sich das Löten sparen kann)

TMC2208 V2.1 von Bigtreetechbtt tmc2208 bot sml

Diese Treiber zeichnen sich dadurch aus, dass sie sehr leise (ggü. den originalen von Anet) arbeiten und einen sogenannten UART Modus besitzen, bei der weitere Einstellungen über eine serielle Schnittstelle vorgenommen werden können, die sonst nur durch aufwändigere Modifizierungen oder gar nicht möglich wären. Zudem können diese Treiber bis zu 1/256 Schritte steuern, die originalen der Anet m.W. nur bis 1/16.

Das linke Bild zeigt die Platine von oben mit der Kühlfläche, auf der später der Kühlkörper geklebt wird, sobald die Platine eingesetzt wurde. Auf dem rechten Bild ist die Unterseite zu sehen und dort rechts oben ein kleiner Poti, der zum Einstellen der Betriebsspannung dient.

Die Treiber, die ich von Bigtreetech erhalten habe (Version 2.1) bieten mehrere Modis an, um angesteuert zu werden. Da der sogenannte UART Modus am flexibelsten erscheint, da er die meisten Einstellung über die Software erlaubt, werde ich diesen Modus auch nutzen und hier beschreiben.
Dieser Modus kommuniziert mit dem hier benutzen Mainboard per serieller Schnittstelle.
Vorteile sollen u.A. diese sein:

  • Motorstrom kann über die Firmware des Druckers eingestellt werden
  • Mikrosteps können über die Firmware eingestellt werden
  • Firmware kann zwischen stealthChop2 und spreadCycle umschalten (werde ich beides bald noch genauer beschreiben)
  • und einige andere Kleinigkeiten mehr

Das ist nur ein Teil der Vorteile und ohne Gewähr.

Jedoch MUSS für diesen Mode jeder Treiberbaustein umgelötet werden !!

Hierbei gilt zu beachten:
Diese Modifikation ist auf eigene Gefahr und ohne Gewähr auf eigenes Risiko durchzuführen !!
Ich übernehme keine Gewähr und keine Haftung für Schäden und/oder Datenverluste.
Zudem dürfte jedem klar sein, dass er damit jegliche Garantien und Gewährleistungen verliert, auch an dadurch im schlimmsten Fall zerstörten Zusatzteilen, wie dem Mainboard.

Um diese Modifikation durchzuführen, muss folgende Brücke auf den Treibern gelötet werden:

Loetbruecke TMC2208 fuer UARTLoetbruecke TMC2208 fuer UART geloetet

Im Internet fand ich verschiedene Angaben zur Lötbrücke. Auf Aliexpress zeigte man eine andere Brücke und einige Nutzer, die das bereits gelötet hatten, brachten sogar eine dritte Art ins Spiel, die ebenfalls funktionieren sollte (eine Brücke über drei Pins).
Ich habe mich hier auf die Variante konzentriert, die von den meisten erfolgreichen Lötern empfohlen wurde.

Auf dem oberen rechten Bild erkennt man nun die fertige Lötbrücke (Bild durch Draufklicken vergrößerbar).
Beim Löten ist unbedingt darauf zu achten, dass man keine anderen Lötpunkte erwischt oder wie bei mir, dass ein kleiner Lötspritzer an dem sehr naheliegenden Chip mehrere Beinchen miteinander verbindet. Sowas ist sehr nervig beim wieder Entfernen und erfordert eine ruhige Hand.
Für unerfahrene Löter eher nicht anzuraten und vielleicht fragt man jemanden, der bei so winzigen Strukturen bereits Löterfahrungen gesammelt hat.

Auf jeden Fall lieber das fertige Lötergebnis mit einer guten Lupe 3x kontrollieren, bevor man die Platinen einsetzt und das Mainboard in Betrieb nimmt !!

 

Bevor man die Treiberplatinen auf das Mainboard steckt, gilt es, das Mainboard vorab richtig zu Jumpern.
Hierzu halten wir uns an die originale Anleitung von Bigtreetech:

Auf der offiziellen Downloadseite von Bigtreetech auf GitHub kann man in den passenden Verzeichnissen die zum jeweiligen Board passende Anleitung als PDF in englisch herunterladen.
Darin werden auch die Jumperung und weitere Informationen zu den Boards und verschiedenen Treibern beschrieben.

Da ich aber zuerst das Mainboard am PC testen möchte, bevor ich es in den Drucker einbaue, wird die Stromversorgung vorübergehend auf USB geschaltet.
Dafür ist der entsprechende Jumper wie folgt zu stecken:

Power Jumper waehrend Test

Wichtig:
Diese Jumperstellung ist nur für den ersten Test der Einstellung der Treiber und NICHT für den späteren Betrieb !!
Hier wird das Mainboard ohne sonstiges Zubehör vorübergehend vom PC mit Strom versorgt.
Wenn der Test erfolgreich ist und das Mainboard am Drucker angeschlossen wird, muss der Jumper wieder umgesetzt werden !!

 

Nun geht es an die Einstellungen für den UART Modus der Treiberplatinen mit den TMC2208 Chips.

Die Jumperung für alle 5 Treiber sieht dann so aus:

Board Jumper fuer TMC2208 SKR V1.4 Turbo

Das Mainboard wurden bei mir mit einer Voreinstellung für andere Treiber geliefert, daher unbedingt die Jumper kontrollieren und umstecken, falls es nicht passt.

Hier die Erklärung der 3 oben gezeigten Punkte:

(1) Anders als in einigen (älteren) Manuals gezeigt, sind bei mir diese roten 2er-Pinleisten eingelötet. Dies sind KEINE Jumper !! Also nicht daran rumziehen, denn man zerstört damit das Mainboard. Wenn die Dinger da sind, alles gut, so lassen. Bei dem mir zur Anleitungserstellung vorliegenden Manual waren hier nur Lötpunkte.

(2) Auf diesem Block ist für den UART Modus des Treibers ein Jumper zu setzen, wie im linken Foto zu sehen ist (Bild anklicken zum Vergrößern).
Dieser Jumper ist auf allen Blocks zu setzen, wo der Treiber TMC2208 eingesetzt wird, in meinem Fall hier also bei allen fünf Blocks (wobei ich aber vorerst nur 4 Treiber einsetzen werde).

(3) Hier sind bei allen Leisten dieser Reihe alle Jumperpositionen leer zu lassen bzw. alle Jumper zu entfernen.

Nun wird sich der eine oder andere fragen, warum nun die Bigtreetech TMC2208 Treiberplatinen für den UART Modus gelötet werden müssen, obwohl auf dem Mainboard Jumper vorhanden sind ?!?!
Dies liegt zum einen daran, dass die Jumperung auf dem Mainboard die frühere extra hinzuzufügende Verkabelung ersetzt hat (man hat das also per Leiterbahnen und Jumper einstellbar gemacht), zum anderen ist die Löterei auf den Treiberplatinen unabhängig vom zuvor genannten. Hier wird eben der UART Modus unabhängig von der Mainboardjumperung aktiviert. Sicherlich hätte der Hersteller der Treiberplatinen auch einen Jumper anbringen können aber er wird schon seine Gründe haben, warum er dies nicht so realisiert hat.
Auf jeden Fall sind beide Maßnahmen nötig, um die Treiberbausteine per UART Modus zu betreiben (TMC2208).

Wer sich z.B. die neueren TMC2209 holt, kann zwischen zwei verschiedenen Versionen wählen, nämlich den normalen für den sogenannten Standalone Betrieb (keine Konfig per Board, nur Drehpoti und ggf. Pins) und den Versionen mit UART in der Bezeichnung (also TMC2209 UART), bei denen in der Regel die Brücken bereits gelötet wurden (entweder Lötbrücke oder 0-Ohm-Widerstand in SMD Bauweise. Hier also aufpassen beim Bestellen.

 

In dem nun folgenden Bild habe ich die Treiberplatinen aufgesteckt und die Kühlkörper aufgeklebt:

Mainboard mit Treibern und Kuehlkoerpern (SKR V1.4 Turbo)

Wie rum die Treiberplatinen auf das Board gehören, konnte ich irgendwie in der Anleitung von Bigtreetech nicht ausmachen, daher habe ich mich an den Bildern im Internet orientiert.
Ich gehe aber davon aus, dass die farbigen Pinleisten aufeinander und die schwarzen analog dazu aufeinander gesetzt werden müssen. Sonst macht die besondere Färbung irgendwie keinen Sinn.
Auch kann man sich an der kleinen Beschriftung "EN" (auf dem Mainboard) und "En" (auf der Treiberplatine) orientieren die ganz links fast aufeinander stehen.

Ob man die Kühlkörper nun längs oder quer aufklebt, hängt ein wenig von der Verbauung des Mainboards und des Luftstroms ab, wenn man ein Gehäuse benutzt.
Ich habe mir die Kühlkörper so aufgeklebt (siehe Bild), dass der Luftstrom längs des Mainboards durchzieht, also auch schön durch die Lamellenreichen ziehen kann, ohne gebremst zu werden.
Dies ist auch die am häufigsten gefundene Verbauungsart, die ich bei der Recherche ermitteln konnte.

Wer sich fragt, wie man denn nun an die Potis auf der Unterseite kommen soll, ohne die Treiberplatinen jedes Mal entfernen zu müssen, hier die Entwarnung:
Die Treiberplatinen von Bigtreetech (Version 2.1) habe in kleines Loch, durch das man mit einem sehr kleinen Feinmechanikerschraubendreher das Poti verstellen kann (oben links zwischen VM und GND).
Dies ist aber nur erforderlich, wenn mann die Treiber im Standalone Betrieb einsetzt. Im UART Modus wird das Poti nicht benutzt, sondern die Konfiguration per serieller Verbindung übertragen.

 

Als Nächstes schließen wir das Board nun an den PC an (hier Windows 10). Bitte darauf achten, dass die Unterseite des Mainboards nicht auf einer leitenden Oberfläche liegt.

Wenn alles soweit in Ordnung ist, nichts stinkt oder knallt, dann leuchtet unten links eine rote LED und Windows erkennt ein neues Gerät.
Ich konnte kurzfristig irgend etwas mit "Marlin" lesen, jedoch muss trotz alle dem noch ein Treiber installiert werden.
Im Gerätemanager von Windows 10 sah das bei mir nach der Erkennung so aus:

Geraetemanager nach dem ersten Einstecken

Laut einer aktuellen anderen Anleitung von Bigtreetech sollte Windows 10 keinen weiteren Treiber benötigen, was aber bei mir nicht sofort funktionierte, das oben angezeigte Gerät hat ein gelbes Ausrufezeichen und erfordert weitere Schritte.

Also testen wir es aus mit einem Rechtsklick auf das Gerät und der Auswahl "Treiber aktualisieren".
Es erfolgt die Frage: "Wie möchten Sie Ihren Treiber aktualisieren?"
Hier versuchen wir es mit "Automatisch nach aktualisierter Treibersoftware suchen" und tatsächlich wird etwas nachinstalliert.

Diesmal sieht das Gerät erfolgsversprechender aus:

btt board devicemanager driverreload

Es scheint also geklappt zu haben, immerhin behauptet Bigtreetech, der Treiber wäre bei Windows 10 dabei und man solle nichts weiter installieren.
(Der gezeigte COM Port kann bei jedem anders heißen, daher hier den eigenen später weiter nutzen.)

Jedoch heißt bei mir der Treiber nicht "Marlin USB Device" aber das soll jetzt erst einmal nicht weiter stören.

 

Für andere Windows Versionen (außer Win10) muss auf jeden Fall ein Treiber manuell installiert werden.

Hier gibt es hier zwei verschiedene Quellen:

  1. aus der alten Anleitung auf einem Dropbox Share liegend: https://www.dropbox.com/s/a0k5idjmf4fn82f/lpc176x_usb_driver.inf
  2. aus einer neueren Anleitung in GitHub zu finden: https://github.com/bigtreetech/..../Marlin/src/HAL/..../lpc176x_usb_driver.inf

Ich habe mir mal die Mühe gemacht und beide Versionen verglichen: Sie sind bei Erstellung dieser Anleitung absolut identisch.

Der Einfachheit würde ich den 1. Link nutzen, da ich hier oben rechts nur auf "Herunterladen" klicken muss.
Also 1. Link angeklickt und im neuen Fenster per "Herunterladen" die Datei irgendwo speichern, wo man sie danach wieder findet (Desktop z.B.).

Nun gehen wir wieder in den Gerätemanager und klicken mit der rechten Maustaste auf das serielle USB Gerät (siehe vorvorheriges Bild) und wählen "Treiber aktualisieren".
Wir werden wieder gefragt "Wie möchten Sie nach Treibern suchen?", wählen jetzt aber "Auf dem Computer nach Treibersoftware suchen" aus.

Im neuen Fenster wählen wir nun den Pfad aus, wo wir die zuvor heruntergeladene Datei hingespeichert haben und klicken auf "Weiter".
Danach sollte auch unter Nicht-Windows 10-Rechnern das erforderliche Gerät zur Verfügung stehen.

 

Um die Kommunikation und und die Treiber zu prüfen, nutzen wir, wie von Bigtreetech empfohlen, das Program Pronterface (oder jetzt Printrun).

Dieses findet man für Windows hier: Pronterface/Printrun Download

Auf der verlinkten Seite einfach die Windows Version (oder Mac User die Mac Version) herunterladen.

Nach dem Download muss die gezippte Datei nur entpackt werden und es wird keinerlei Installation benötigt. Im entpackten Ordner reicht ein Doppelklick auf die Datei "pronterface.exe":

pronterface unpacked

Danach erscheint nun die Oberfläche von Pronterface:

Pronterface erster Start
Bild bitte anklicken zum Vergrößern.

Oben in den markierten Stellen bitte die passenden Verbindungsdaten eintragen:

Port: bei mir wurde der Treiber auf COM7 installiert, bitte eigenen Port auswählen

@: 115200 (oder falls Ihr was anderes verwendet, bitte anpassen)

Dann rechts daneben auf "Connect" klicken.

Wenn alles passt und das Mainboard gefunden wurde, wird es links etwas bunter und rechts oben in der Ecke wird die Verbindung bestätigt (siehe rote Markierung):

Pronterface Verbindung hergestellt
Bild bitte anklicken zum Vergrößern.

Damit wäre zumindest erst einmal die Kommunikation zwischen PC und dem Druckermainboard getestet und auch die Übertragungsgeschwindigkeit (115200 Baud) passt.

Um aber nun die Treiberplatinen zu testen, ob diese auch im UART Modus laufen, muss die Firmware ein wenig angepasst und auf das Mainboard aufgespielt werden.

Hierzu besorgen wir uns (anders als früher hier beschrieben) die originale Marlin 2.0 Version von Marlin.org. Das hat den Grund, dass Erfahrungen anderer Nutzer gezeigt haben, dass BIQU teilweise vom Original abweicht und/oder diverse Kombinationen versch. Hardware einfach nicht funktionieren wollen.

Für den aktuellen Status dieser Anleitung habe ich die originale Marlin Version 2.0.8 genommen.

Diverse Marlin Versionen befindet sich hier: Marlin FW Download

Es erscheint folgende Seite:

Marlin Download Seite
Bild bitte anklicken zum Vergrößern.

Für diese Anleitung habe ich die finale Version 2.0.8 benutzt (auf dem Bild ist noch eine alte Version 2.0.3 zu sehen aber Marlin aktualisiert recht oft die Hauptversionen), da sich diese (im Gegensatz zur BugFix) nicht so schnell ändern wird und falls doch, dann mit einer neuen Versionsnummer versehen werden wird.
Wer will, kann natürlich auch die BugFix Version nehmen/testen, bei der diverse Fehler nach und nach (bis zu einer neuen finalen Version) beseitigt werden.

Nun wird die heruntergeladene Datei an den gewünschten Ort entpackt.
Hier empfehle ich als Pfad einen relativ kurzen zu wählen, da bei mehreren Unterverzeichnissen die Gefahr besteht, dass es später Fehler bei der Erstellung der Firmware kommen kann.
Diese Erfahrung musste ich bereits machen und die Ursache war nicht leicht zu finden.

Ich habe daher mein entpacktes Marlin Verzeichnis ganz einfach auf Laufwerk C:\ verschoben: C:\Marlin-2.0.x

Welche Version man tatsächlich nutzt / heruntergeladen hat kann man dann in folgender Datei nachprüfen:

C:\Marlin-2.0.x\Marlin\Version.h

Diese Datei mit einem Texteditor geöffnet und folgende Zeile angezeigt, ergibt bei mir aktuell diese Version: 

//#define SHORT_BUILD_VERSION "2.0.8"

 

Um hier nun weiter verfahren zu können, muss vorab die Programmierumgebung für die SKR Firmware installiert werden.
Sollte die Installation der Programmierumgebung bereits erfolgt sein, kann der nachfolgende Link übersprungen werden.

Da diese Installationsanleitung an diesem Punkt eher fehl am Platz wäre und irgendwie nicht ganz rein passt und diesen Part nur unnötig aufblasen würde, habe ich die Installation in eine eigene Anleitung ausgelagert:

Anleitung: Visual Studio Code & PlatformIO für SKR Boards

Nach der Installation und Konfiguration kann an dieser Stelle weiter gemacht werden.

 

Bevor das neue Board irgendwo eingebaut wird, ist es ratsam einen Vorabtest der montierten Treiberbausteine (in meinem Fall TMC2208 auf UART gelötet) durchzuführen.

Dafür müssen einige Dateien in Marlin auf das Board und die Treiber angepasst werden.
Ich habe mich nun entschlossen, das SKR V1.4 auf beide Z-Achsen mit je einem eigenen Treiberbaustein zu konfigurieren, auch wenn ich dadurch den 2. Extruderanschluss verliere.

In dieser Anleitung werden beim SKR V1.4 daher alle 5 Treiber konfiguriert.

 

Wenn das Board soweit bestückt und gejumpert wurde, werden nun die wichtigsten Dateien editiert, um eine erste passende Firmware aufzuspielen, damit wir die Treiber testen können.
Später werden dann genauere Einstellungen vorgenommen.
Dieser Schritt dient zum Test, ob die Treiber reagieren und dies ist vor Einbau dringend zu empfehlen, sonst sucht man sich später einen Wolf.
Somit kann man erste Probleme der Hardware zumindest halbwegs ausschließen, an die man später evtl. nicht mehr denkt und womöglich an der Verkabelung verzweifelt.

 

Hinweis:
Ich gebe zu, diese Konfiguration der Dateien für Marlin ist nicht ohne !!
Als Anfänger arbeite ich mich immer weiter heran, um die passenden Einstellungen zu testen und finden.
Dennoch sind sicherlich einige Fehler und Probleme nicht auszuschließen.
Daher wie immer: auf eigenes Risiko, auf eigene Gefahr, keine Haftung durch mich.
Gerne nehme ich Infos, Tipps und Hinweise über die Kommentarfunktion am Ende des jeweiligen Beitrags entgegen.

 

Zum Anpassen von Marlin wird das zuvor installierte Visual Studio Code gestartet und die Datei "platformio.ini" angeklickt, welche sich im entpackten Marlin Hauptverzeichnis befindet.

Darin ist folgende Zeile ziemlich oben in der Datei im nachfolgenden Bereich rot markiert anzupassen:

C:\Marlin-2.0.x\platformio.ini

[platformio]

src_dir       = Marlin
boards_dir    = buildroot/share/PlatformIO/boards
default_envs  = mega2560
include_dir   = Marlin
extra_configs =
  ini/avr.ini
  ini/due.ini
  ....

Die 3. Zeile ändern in

SKR V1.4:

default_envs = LPC1768

SKR V1.4 Turbo:

default_envs = LPC1769

 

Wichtig !!
Das SKR V1.4 und das SKR V1.4 Turbo haben unterschiedliche "Prozessoren" verbaut !!

 

Danach die Datei speichern und in das nächste Verzeichnis wechseln:

C:\Marlin-2.0.x\Marlin

 

Darin müssen sich die beiden Dateien befinden:

  • Configuration.h
  • Configuration_adv.h

 

Zuerst öffnen wir die Datei Configuration.h und ändern die folgenden Stellen (rot: neue Werte):
(Viele Werte habe ich aus einer älteren Anet E10 Marlin Version für das originale Board übernommen.)

C:\Marlin-2.0.x\Marlin\Configuration.h

(ca. Zeile 112) => #define SERIAL_PORT_2 -1

(ca. Zeile 123) => #define BAUDRATE 115200

(ca. Zeile 130) => #define MOTHERBOARD BOARD_BTT_SKR_V1_4_TURBO

Die folgende Zeile definiert den Druckernamen, der im Display angezeigt wird.
Hier kann man eintragen, was man möchte:
(ca. Zeile 134) => #define CUSTOM_MACHINE_NAME "Anet E10"

(ca. Zeile 147) => #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
Steht inzwischen auf 1.75, nochmal kontrollieren schadet aber nicht.

(ca. Zeile 412) => #define TEMP_SENSOR_0 5
(ca. Zeile 420) => #define TEMP_SENSOR_BED 5

(ca. Zeile 468) => #define HEATER_0_MAXTEMP 285
(ca. Zeile 476) => #define BED_MAXTEMP 130

(ca. Zeile 502) => #define PID_AUTOTUNE_MENU

Die folgenden Werte wurden vorerst so von Marlin übernommen.
Später werden wir die Werte anhand eines Autotunings neu ermitteln und eintragen/überschreiben.

Wichtig ist hier auch, dass gegenüber der vorherigen Marlin Version hier der Block komplett überarbeitet wurde.
Man hat hier die Möglichkeit geschaffen, mehrere Werte für mehrere Extruder zu berücksichtigen.
Da die meisten Drucker (wie mein Anet E10) nur einen Extruder hat, habe ich diesen Block wieder so angepasst, wie es in der vorherigen Marlin Version wunderbar funktioniert hat:
(Dabei ist zu beachten, dass hauptsächlich der nachfolgend blaue Teil für sich aktiv ist.)

(ca. Zeilen 494 bis 517) =>

// Comment the following line to disable PID and enable bang-bang.
#define PIDTEMP
#define BANG_MAX 255 // Limits current to nozzle while in bang-bang mode; 255=full current
#define PID_MAX BANG_MAX // Limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
#define PID_K1 0.95 // Smoothing factor within any PID loop

#if ENABLED(PIDTEMP)
//#define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of PROGMEM)
#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of PROGMEM)
//#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
// Set/get with gcode: M301 E[extruder number, 0-2]

//#if ENABLED(PID_PARAMS_PER_HOTEND)
// Specify between 1 and HOTENDS values per array.
// If fewer than EXTRUDER values are provided, the last element will be repeated.
//#define DEFAULT_Kp_LIST { 22.20, 22.20 }
//#define DEFAULT_Ki_LIST { 1.08, 1.08 }
//#define DEFAULT_Kd_LIST { 114.00, 114.00 }
//#else
#define DEFAULT_Kp 22.20
#define DEFAULT_Ki 1.08
#define DEFAULT_Kd 114.00
//#endif
#endif // PIDTEMP

Später wird auf das PID Autotuning genauer eingegangen.

(ca. Zeile 536) => #define PIDTEMPBED

Die folgenden Werte wurden vorerst von Marlin übernommen.
Hier werden wir die korrekten Werte später neu ermitteln:
(ca. Zeile 554) => #define DEFAULT_bedKp 10.00
(ca. Zeile 555) => #define DEFAULT_bedKi .023
(ca. Zeile 556) => #define DEFAULT_bedKd 305.4
Später wird auf das PID Autotuning genauer eingegangen.

(ca. Zeile 713) => #define X_MIN_ENDSTOP_INVERTING true
(ca. Zeile 714) => #define Y_MIN_ENDSTOP_INVERTING true
(ca. Zeile 715) => #define Z_MIN_ENDSTOP_INVERTING true

Hier bitte bei den roten Treibernamen Eure eigenen Treiber eintragen:
(ca. Zeile 739) => #define X_DRIVER_TYPE  TMC2208
(ca. Zeile 740) => #define Y_DRIVER_TYPE  TMC2208
(ca. Zeile 741) => #define Z_DRIVER_TYPE  TMC2208
(ca. Zeile 742) => //#define X2_DRIVER_TYPE A4988
(ca. Zeile 743) => //#define Y2_DRIVER_TYPE A4988
(ca. Zeile 744) => #define Z2_DRIVER_TYPE TMC2208
(ca. Zeile 745) => //#define Z3_DRIVER_TYPE A4988
(ca. Zeile 746) => //#define Z4_DRIVER_TYPE A4988
(ca. Zeile 747) => #define E0_DRIVER_TYPE TMC2208
(ca. Zeile 748) => //#define E1_DRIVER_TYPE A4988
(ca. Zeile 749) => //#define E2_DRIVER_TYPE A4988
(ca. Zeile 750) => //#define E3_DRIVER_TYPE A4988
(ca. Zeile 751) => //#define E4_DRIVER_TYPE A4988
(ca. Zeile 752) => //#define E5_DRIVER_TYPE A4988
(ca. Zeile 753) => //#define E6_DRIVER_TYPE A4988
(ca. Zeile 754) => //#define E7_DRIVER_TYPE A4988

(ca. Zeile 802) => #define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 100 }

(ca. Zeile 809) => #define DEFAULT_MAX_FEEDRATE { 500, 500, 15, 25 }

(ca. Zeile 822) => #define DEFAULT_MAX_ACCELERATION { 1000, 1000, 1000, 5000 }

(ca. Zeile 837) => #define DEFAULT_ACCELERATION 500
(ca. Zeile 838) => #define DEFAULT_RETRACT_ACCELERATION 1000
(ca. Zeile 839) => #define DEFAULT_TRAVEL_ACCELERATION 500

Die folgenden 5 Zeilen habe ich aus einer Anet Marlin Konfiguration übernommen:
(ca. Zeile 849) => #define CLASSIC_JERK
(ca. Zeile 850) => #if ENABLED(CLASSIC_JERK) 
(ca. Zeile 851) => #define DEFAULT_XJERK 20.0
(ca. Zeile 852) => #define DEFAULT_YJERK 20.0
(ca. Zeile 853) => #define DEFAULT_ZJERK 0.4

(ca. Zeile 1188) => #define INVERT_Z_DIR true

(ca. Zeile 1193) => #define INVERT_E0_DIR true

(ca. Zeile 1228) => #define X_BED_SIZE 220
(ca. Zeile 1229) => #define Y_BED_SIZE 270

(ca. Zeile 1237) => #define Z_MAX_POS 300

(ca. Zeile 1385) => #define MESH_BED_LEVELING

(ca. Zeile 1512) => #define LCD_BED_LEVELING

(ca. Zeile 1589) => #define HOMING_FEEDRATE_MM_M { (100*60), (100*60), (4*60) }

Hier die Werte des verwendeten Filaments eintragen (Beispiel Hersteller www.dasfilament.de):
(ca. Zeile 1699) => #define PREHEAT_1_LABEL "PLA"
(ca. Zeile 1700) => #define PREHEAT_1_TEMP_HOTEND 215
(ca. Zeile 1701) => #define PREHEAT_1_TEMP_BED 60

Hier die Werte des verwendeten Filaments eintragen (Beispiel Hersteller www.dasfilament.de):
(ca. Zeile 1705) => #define PREHEAT_2_LABEL "PETG"
(ca. Zeile 1706) => #define PREHEAT_2_TEMP_HOTEND 230
(ca. Zeile 1707) => #define PREHEAT_2_TEMP_BED 75

Ich gehe davon aus, dass man evtl. diese Liste um weitere Filamentsorten erweitern kann (am besten selbst testen).
Jedoch habe ich momentan nur Zugriff auf diese beide Arten und belasse es daher bei diesen.

(ca. Zeile 1891) => #define LCD_LANGUAGE de

(ca. Zeile 1915) => #define DISPLAY_CHARSET_HD44780 WESTERN

(ca. Zeile 1930) => #define SDSUPPORT

(ca. Zeile 2008) => #define SPEAKER

Die folgenden Werte stammen vom originalen Display von Anet.
Hier kann es helfen, die Werte zu testen und ggf. anzupassen.
Wie man den Ton per GCode abspielt, steht im Hilfetext zu dieser Sektion:
M300 S<Frequenz in Hz> P<Dauer in ms>
Hat man den gewünschten Ton gefunden, können die beiden unteren Werte entspr. festgelegt werden:
(ca. Zeile 2017) => #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
(ca. Zeile 2018) => #define LCD_FEEDBACK_FREQUENCY_HZ 1000

Wer das Grafikdisplay oder das Dualdisplay (umschaltbar Grafik/Textemulation) verwendet, aktiviert folgende Zeile:
(ca. Zeile 2189) => #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

Optional (bei mir aber nicht verwendet !!):
Wer das originale Display weiter verwenden möchte (Achtung: hier muss man die Pins der Kabel anpassen, da andere Belegung !!), aktiviert stattdessen eine der beiden folgenden Zeilen:
(ca. Zeile 2294) => #define ANET_FULL_GRAPHICS_LCD
(ca. Zeile 2295) => #define ANET_FULL_GRAPHICS_LCD_ALT_WIRING
Wichtig: Vorher die Verkabelung prüfen und  auch in die Datei pins_ANET_10.h reinschauen.

Hier habe ich eine Anleitung gefunden, wie man das originale Anet E10 LCD modifizieren muss, um es an den SKR Boards weiter benutzen zu können (ohne Gewähr):
https://www.thingiverse.com/thing:4009810

Die unter dem Link zu findende Anleitung bezieht sich zwar auf das SKR V1.3 aber man kann die Verkabelung auch auf das SKR V1.4 (Turbo) übernehmen und sicherlich auch die neuen Werte auf die passende Marlin Konfiguration anpassen.

 

Die oben genannten Werte habe ich aus der BIQU / Bigtreetech und einer älteren Anet E10 Konfiguration für das SKR V1.4 Turbo übernommen.

 

Dann öffnen wir die Datei Configuration_adv.h und ändern die folgenden Stellen (rot: neue Werte):

C:\Marlin-2.0.x\Marlin\Configuration_adv.h

 

Hier wird zuerst die Anzahl der Stepper für die Z-Achse angepasst:

(ca. Zeile 651) #define NUM_Z_STEPPER_DRIVERS 2

 

Es folgen weitere Einstellungen / Änderungen:

(ca. Zeile 1479) => #define SDCARD_CONNECTION LCD
(Diesen Wert habe ich aktiviert, da ich den SD Kartenleser des Displays benutze.)

Die meisten Übertragungen werden später über das Netzwerk (Repetier Server) stattfinden.

Zum Schluss folgt der Debug-Modus, damit wir UART testen und abfragen können:
(ca. Zeile 2847) => #define TMC_DEBUG

Dieser Debug Modus wird benötigt, da sonst die Abfrage für den UART Modus mit dem GCODE M122 nicht funktioniert.

Weitere Werte habe ich vorerst nicht weiter verfolgt.

 

Die hier zuvor beschriebene Sektion für den 2. Steppertreiber in der Datei für die Pins habe ich herausgenommen, da sich seit einigen Versionen nichts mehr darin geändert hat und inzwischen die darin bereits enthaltenen Werte richtig vorgegeben sind.

 

Wichtig:

Diese Dateien dienen in der jetzigen Fassung nur für den UART Test der Treiberplatinen (ob das Löten funktioniert hat) !!
Später sind auf jeden Fall noch einige Änderungen vorzunehmen.

 

Nun muss die Firmware über Visual Studio Code erstellt werden und das Projekt sollte durch die vorherige Arbeit bereits darin eingebunden sein.

Wer Visual Studio Code neu installiert, noch nicht benutzt oder die Dateien noch nicht eingebunden hat, kann dies einfach über den Menüpunkt "Ordner öffnen" nachholen:

Visual Studio Code PlatformIO Ordner oeffnen 

Als Pfad wird dann wieder der Hauptpfad

C:\Marlin-2.0.x

genommen und nicht das darin befindliche "Marlin", sonst findet PlatformIO die Datei "platformio.ini" nicht.

Das Ganze sollte dann wieder so aussehen:

Visual Studio Code PlatformIO Marlin eingebunden

Zum Erstellen der Firmware muss nun die Tastenkombination <Strg><Alt><B> gedrückt werden, dann startet die Kompilierung.
Dies kann eine Weile dauern.

Sollte diese Fehlermeldung erscheinen (wie bei mir):
C:\Users\Benutzername\.platformio\python3\python.exe: can't open file 'C:\Users\Benutzername\.platformio\packages\tool-scons\scons.py': [Errno 2] No such file or directory
Dann sollte folgendes Verzeichnis gelöscht werden:

C:\Users\Benutzername\.platformio\packages\tool-scons

Dann starten wir die Kompilierung erneut mit <Strg><Alt><B> und Platformio erstellt das zuvor gelöschte Verzeichnis neu.
Es kann sein, dass danach nochmals Fehler erscheinen aber beim 3. Versuch war bei mir alles neu erstellt und das Kompilieren ging danach ohne weitere Fehler und die fehlende Datei war auch wieder da.

Dies kann passieren, wenn man z.B. Python, Platformio, Visual Studio Code oder etwas anderes mit Python updated, installiert, konfiguriert, was evtl. nicht direkt mit Marlin zu tun hat.

Wenn alles geklappt hat, sollte Folgendes am Ende zu sehen sein:

Marlin hat erfolgreich kompiliert
Bild bitte anklicken zum Vergrößern.

Das Bild zeigt den erfolgreichen Kompilierungsvorgang des SKR V1.4 Turbo.
Bei der Version ohne Turbo sollte die Erfolgsmeldung bei LPC1768 stehen.

Mit den Cursortasten kann man im Log nach oben scrollen, um evtl. Fehler zu finden.

Die fertige Firmwaredatei befindet sich (wie im Log zu sehen) im folgenden Verzeichnis:

C:\Marlin-2.0.x\.pio\build\LPC1769

Die Datei nennt sich "firmware.bin" und darf auch nicht umbenannt werden.

 

Um diese neue Firmware auf das Mainboard zu flashen, wird die oben genannte Datei einfach auf die dem Mainboard beiliegende SD Karte kopiert und in das Mainboard gesteckt.
Die SD Karte sollte dabei leer sein und eine evtl. vorhandene Datei kann gelöscht werden.

Während des Flashvorgangs sollte man etwas warten und kein Kabel voreilig ziehen, denn bei mir z.B. wurde das Flashen nicht angezeigt.
U.U. meldet sich Windows (hier Windows 10), das ein neues Gerät gefunden wurde (Marlin Device) und richtete dann dieses Gerät auch gleich automatisch ein.

Um zu sehen, ob der Flashvorgang funktioniert hat, liest man die Karte im PC erneut ein und bei Erfolg wurde die Datei umbenannt in "FIRMWARE.CUR".
Danach kann die SD Karte weg gelassen oder für weitere Tests wieder eingesteckt werden.

Nun wird das Flashen und die Treiberfunktion (also eigentlich nur das korrekte Erkennen) des noch am PC angeschlossenen Boards getestet.

Dazu starten wir wieder Pronterface, stellen die Verbindung per "Connect" her und geben rechts den GCODE M122 ein und erhalten folgende Ausgabe:

Test der TMC2208 Treiberplatinen.
Bild bitte anklicken zum Vergrößern.

Im Bild sehen wir, dass alle 5 Treiberplatinen erkannt wurden und im UART Modus arbeiten.
Zudem sieht man, dass die Umkonfiguration von E1 auf Z2 funktioniert hat.
Das Umlöten der Platinen (Bigtreetech TMC 2208 V2.1) hat also geklappt.
Der Wert "false" in der Zeile "Enabled" ist normal, da wir noch keine Motoren angeklemmt/konfiguriert haben.

Würde(n) hier einer oder mehrere Platinen nicht angezeigt, kann es an zwei Problemen liegen:

  1. es wurde nicht oder nicht korrekt gelötet
  2. die Konfiguration wurde nicht korrekt durchgeführt (z.B. der 5. Treiber für Z2 muss explizit aktiviert und richtig eingestellt werden)

Vorausgesetzt, es wurden auch alle 5 Platinen eingesetzt.

 

Wichtig:
Es wurde von einigen SKR Nutzern berichtet, dass trotz allen Änderungen und Konfigurationen zwar der M122 Befehl angenommen wurde, jedoch keine richtigen Werte ausgegeben wurden.
Dabei stellte sich heraus, dass u.U. der USB Port vom PC zu wenig Strom liefert. Dies konnte bei den Meisten damit umgangen werden, indem das Mainboard mit einer externen 12V Stromversorgung betrieben wurde und der zum Anfang gezeigte Jumper auf INT / 5V gesteckt wurde. Danach seien auch wieder richtige Werte in Pronterface angezeigt worden.
Sollte das also der Fall sein, bitte mit einem externen 12V Anschluss wiederholen (am Besten mit dem Druckernetzteil).

 

Ist also alles soweit in Ordnung, kann das Mainboard in den Drucker eingebaut werden.
Alle weiteren Konfigurationen werden nun im eingebauten Zustand vorgenommen.
Dafür muss der SD Karten Slot nach wie vor zugängig sein.

Vor dem Einbau dürfen wir nicht vergessen, den Stromversorgungsjumper wieder zurück zu stellen:

Jumper wieder zurück stecken

Während die andere Jumperung (USB) die Versorgung nur über den USB Port des PCs zulässt, wird über VDD die Stromversorgung über den externen 12V Eingang, also dem Druckernetzteil realisiert. Trotzdem kann bei letzterer Jumperung der Drucker (das Mainboard) weiterhin Daten über den USB Port senden/empfangen. Lediglich die (höhere) Stromversorgung wird nun extern eingespeist, zumal der USB Strom zwar für lastschwache Tests und das Flashen der Firmware ausreicht, jedoch nicht für den Rest des Mainboards (wie Mosfets oder Treiberplatinen).

 

Bevor wir nun das alte Board ausbauen und das neue einsetzen, müssen wir zuerst ein Problem lösen: das neue Mainboard ist länger als das alte.
Ein weiteres Problem stellen die Öffnungen im Gehäuse dar für die SD Karte und den USB Geräteanschluss (für den PC).
Die beiden Ports scheinen auf den ersten Blick zwar auf beiden Mainboards an der selben Stelle zu liegen, jedoch auf der ungünstigeren Seite (links, wenn man ins geöffnete Gehäuse schaut).
Es müsste also das neue Mainboard weiter nach links ins Gehäuse gehen und dann haben alle die ein Problem, die (wie ich) dort das Mosfet für das Heizbett verbaut haben.
Zudem müssen zwei der Schraubenhalter rechts weg, da sie sonst Teile des neuen Mainboards berühren und Kurzschlüsse verursachen würden.

Man könnte nun auf das Mosfet vom neuen Mainboard zurückgreifen und sich so den neuen Platz für das alte Mosfet sparen aber es ist einfach sicherer, keine so hohen Ströme durch das Mainboard zu schicken.
Wer vor hat, eine wesentlich leistungsfähigere Druckerdüse zu nutzen, kommt sicherlich auch nicht um ein zweites externes Mosfet herum.

Bevor wir irgend etwas in der Steuerungseinheit ändern, diese wichtige Info:

WARNUNG !!
Netzstecker ziehen, da sonst im Inneren offen 220V anliegen, die sehr leicht berührt werden können !!
Alles auf eigene Gefahr und eigenes Risiko !!
Ich übernehme keine Haftung für Schäden an Leib und Leben und/oder Hardware/Software !!
Wer hier keine Erfahrung hat, bitte jemanden mit entsprechenden Fachkenntnissen um Hilfe bitten !!

Hier zwei Bilder, wie es im Inneren aussehen könnte, wenn man die Steuerungseinheit geöffnet hat:
(hier noch mit original Anet E10 Board)

Anet offen mit MosfetAnet offen mit Mosfet und neuem Netzteil

Das linke Bild zeigt die geöffnete Steuerungseinheit des Anet E10 modifiziert mit dem externen Mosfet (oben rechts in der Ecke). Wer noch kein Mosfet eingebaut hat, sieht ein wenig weniger Kabel aber im Prinzip sollte sich nicht allzu viel geändert haben. Ein Bild ohne Mosfet befindet sich im Modifikationsbereich beim Mosfeteinbau: Mosfet (Heizbett)

Das rechte Bild zeigt neben dem zusätzlich eingebauten Mosfet noch das getauschte Netzteil und im markierten Bereich die nun auf die andere Seite gewanderte 110V/220V Einstellung.
Der Netzteiltausch wird hier beschrieben: Netzteil tauschen

Der im linken Bild durch einen Kreis markierte Teil zeigt den 220V Bereich, bei dem UNBEDINGT darauf zu achten ist, dass der Netzstecker gezogen sein muss !!

Als nächstes ist es sehr ratsam, die unbeschrifteten Kabel zu beschriften, dann haben wir es später leichter beim Verkabeln am neuen Mainboard.
Gerade durch Modifikationen hinzugekommene Kabel (wie beim externen Mosfet) wird es sicherlich unbeschriftete Kabel geben, jedoch auch Anet hat nicht alles mit Namen versehen.

Wer vorher noch irgendwelche Adapter oder Halter drucken will/muss, sollte das jetzt tun, denn mit Sicherheit wird der Drucker an dieser Stelle noch nicht korrekt arbeiten, da wir später noch einige Änderungen vornehmen müssen.

 

Information:
Vor dem Abklemmen der Kabel ist zu überlegen, ob man nicht doch ein eigenes Gehäuse druckt.
Ich habe mich für 2 extra gedruckte Gehäuse entschieden (1x SKR V1.4 Turbo Board + 1x LCD Display BTT TFT35), da Modifikationen am originalen Gehäuse möglich wären aber trotzdem alles viel zu eng wäre.

 

Diesen Umbau mit den beiden externen Gehäuse habe ich in einem eigenen Bereich beschrieben:

Umbau Steuereinheit Anet E10 => SKR V1.4 (Turbo) + TFT35 V3.0

Dieser Umbau beschreibt den Ausbau der Elektronik und den Anbau beider externen Gehäuse für das Board, die Mosfets und des neuen LCDs.
Das Netzteil (hier empfohlener und beschriebener Weise) bleibt in der alten Steuerungseinheit.

Vor dem Zerlegen des originalen Anet Gehäuses müssen beide externen Gehäuse bereits gedruckt sein !!
Selbstverständlich steht es jedem frei, eigene oder andere Gehäuse zu drucken, an der Verkabelung ändert dies normalerweise nichts.

 

Nach dem Umbau kehren wir wieder hier zurück für weitere Konfigurationen.

 

Wenn wir nun nach dem Umbau aus dem anderen Beitrag wieder hierher zurückgekehrt sind, folgt nun das sogenannte "PID Tuning".

PID Tuning dient dazu, um beim Heizen des Druckkopfs eine stabile(re) Temperatur zu ermöglichen, was sich letztendlich auch auf die Qualität des Drucks positiv auswirken kann.
Hierbei gibt es sowohl für den Druckkopf als auch für das Heizbett die Möglichkeit, das PID Tuning zu aktivieren, um das Heizen zu kalibrieren.

 

Achtung:
Nicht jeder Drucker unterstützt beide PID Tuning Möglichkeiten oder überhaupt eins von beiden !!
Hier muss man also testen.

 

Weiter oben hatte ich Pro Forma bereits im Internet gefundene Werte eingetragen (ab Zeile 475), damit das Feature aktiviert werden kann.
Diese Werte können nun durch das PID Tuning korrigiert und ersetzt werden.

Das PID Tuning kann nun auf zwei Arten geschehen:

  • über das aktivierte Menü der Steuereinheit oder
  • über den PC per angeschlossenem USB Kabel über Printrun/Pronterface über GCode Befehle

Ich habe mich für die PC Version entschieden.

 

Info:
Die Einstellungen in Marlin bez. des Menüs habe ich nicht weiter getestet !!
Daher kann ich nichts weiter dazu sagen, ob oder in wie weit die Menübedienung passt und funktioniert.
Zudem konnte ich im Menü nur die Einstellungen für E1 finden und vom Bett war nichts zu sehen.
Vielleicht hat da ja jemand einen Tipp, wie man das korrekt konfiguriert, um das PID Tuning rein über den Drucker zu machen.

 

Nun wird also der Drucker wieder an den PC angeschlossen und Printrun / Pronterface gestartet, um das PID Tuning per PC auszuführen.

Da beim Druck normalerweise der Radiallüfter für das zu druckende Teil läuft, wird dieser auch für das PID Tuning mit folgendem Befehl gestartet:

M106 E0 S255

Dabei ist M106 der GCode Befehl zum Regeln des Lüfters, E0 der erste (oder einzige) Extruder und S255 gibt die Geschwindigkeit an (von 0 bis 255 / stehend bis volle Drehzahl).

Dies kann aber von der Filamentart abhängen. Bei PLA wird meist die volle Drehzahl aktiviert, bei PETG kann es u.U. auf halbe Derehzahl gehen und viele drucken ABS ohne Lüfter, da dort die Temperatur recht hoch sein muss, um das Filament brauchbar schmelzen zu können.
Hier sind ggf. einige Tests hilfreich, bei der man das später genauer austesten kann.
Ich für meinen Teil nutze also erst einmal für PLA volle Drehzahl.
Einige empfehlen für PETG einen Wert zwischen 25% und 50%, für PLA 0%.

Evtl. macht es Sinn, das PID Tuning für jede Filamentart extra durchzuführen.
Da man hierbei beim Filamentwechsel nicht jedes Mal neu Tunen möchte, können die Ergebnisse oft auch im "EEPROM" gespeichert oder in einem extra Profil in den Startcode eingefügt werden.
Die meisten Bigtreetechboards haben keinen EEPROM und nutzen eine Emulation.
Viele machen aber auch als Kompromiss ein PID Tuning bei PLA und eins bei ABS und nutzen dann für alle drei Arten (PLA, PETG und ABS) den errechneten Durchschnitt.
Das bleibt aber jedem selbst überlassen.
Ich werde hier nur das Tuning bei PLA beschreiben, da ich zu 80% nur PLA drucke, seltener PETG, bei dem ich früher aber keine Unterschiede beim Heizen feststellen konnte.

Nun benötigen wir als ersten Wert die Temperatur, mit der wir normalerweise drucken.
Ich nutze meist Filament von dasfilament.de und das von mir verwendete wird mit einer Drucktemperatur von 215 Grad angegeben.

Also läuft nun der Lüfter auf 100% für PLA und das Tuning wird gestartet mit dem Befehl

M303 E0 S215 C5

Dabei ist M303 wieder der passende GCode für den Start des Tunings, E0 definiert wieder unseren (ersten) Extruder, S215 schreibt die Temperatur von 215 Grad vor und der letzte Teil C5 gibt die Anzahl der Zyklen (Cycles) vor.
Das bedeutet, dass der Vorgang insgesamt 5x durchgeführt und dann der Mittelwert gebildet wird.

Wir können nun nach Absendung des obigen Codes auf dem Display sehen, wie die Temperatur der Heizdüse steigt und auch die blaue LED am Mosfet leuchtet ebenfalls während der Heizphase.
Der Befehl wurde also einwandfrei übernommen.

Dass dabei Filament aus der Düse kommt, ist normal, schließlich ist das ja der Sinn beim Drucken.

Währenddessen erscheinen in der Printrun / Pronterface Konsole einige Werte (nach dem Umbau auf den Noctua Heizblocklüfter):

>>> M106 E0 S255
SENDING:M106 E0 S255
M106 P0 S255
>>> M303 E0 S215 C5
SENDING:M303 E0 S215 C5
PID Autotune start
bias: 175 d: 79 min: 209.82 max: 217.08
bias: 184 d: 70 min: 210.42 max: 217.92
bias: 178 d: 76 min: 212.50 max: 217.50 Ku: 38.71 Tu: 28.82
Classic PID
Kp: 23.22 Ki: 1.61 Kd: 83.66
bias: 174 d: 80 min: 213.12 max: 217.08 Ku: 51.47 Tu: 24.96
Classic PID
Kp: 30.88 Ki: 2.47 Kd: 96.32
bias: 174 d: 80 min: 212.92 max: 216.87 Ku: 51.47 Tu: 24.21
Classic PID
Kp: 30.88 Ki: 2.55 Kd: 93.46
PID Autotune finished! Put the last Kp, Ki and Kd constants from below into Configuration.h
#define DEFAULT_Kp 30.88
#define DEFAULT_Ki 2.55
#define DEFAULT_Kd 93.46

Die viertletzte Zeile zeigt an, dass das PID Tuning erledigt ist und gibt auch gleichzeitig die empfohlenen Werte für Marlin in den letzten drei Zeilen aus:

#define DEFAULT_Kp 30.88
#define DEFAULT_Ki 2.55
#define DEFAULT_Kd 93.46

Diese Werte trage ich nun in Marlin an entsprechender Stelle ein und kompiliere die Firmware neu und überspiele diese Firmware auf den Drucker.

Zuvor trenne ich noch die Verbindung in Printrun / Pronterface und mache einen Reset, um den Drucker wieder abkühlen zu lassen.

Wie nun ganz am Anfang beschrieben, wird nun über Visual Studio Code die Datei Configuration.h geöffnet und in den genannten Zeilen der oben ausgegebene Wert eingetragen:

(ca. Zeile 513) => #define DEFAULT_Kp 30.88
(ca. Zeile 514) => #define DEFAULT_Ki 2.55
(ca. Zeile 515) => #define DEFAULT_Kd 93.46

BITTE bei Euch die von Eurem PID TUNING ermittelten Werte eintragen !!
Die hier gezeigten sind von meinem Drucker und dienen nur als Beispiel !!

 

Bevor wir nun aber die Firmware flashen, wird noch das PID TEMP BED Tuning durchgeführt, bei dem wir im Prinzip das gleiche mit dem Heizbett machen, wie zuvor mit der Heizdüse.

Wer vielleicht - wie ich - den Drucker zuvor per Reset wieder abgekühlt hat, verbindet in Printrun / Pronterface den Drucker wieder mit dem PC.

Das Tuning für das Bett wird nun über den folgenden Befehl gestartet:

M303 E-1 S60 C5

Wie zuvor ist der GCode Befehl wieder M303, nur dass wir hier als "Extruder" den Wert "-1" nehmen, der für das Heizbett steht, also E-1.
S60 gibt wieder die Temperatur vor, die bei meinem Standard PLA Filament mit 60 Grad angegeben wurde.
C5 ist wieder der Zyklus mit fünf Durchläufen und dem daraus resultierenden Mittelwert.

Nach dem PID Tuning des Heizbetts erscheinen bei mir folgende Werte in der Konsole:

>>> M303 E-1 S60 C5
SENDING:M303 E-1 S60 C5
PID Autotune start
bias: 118 d: 118 min: 59.75 max: 60.16
bias: 118 d: 118 min: 59.80 max: 60.16 Ku: 840.83 Tu: 11.43
No overshoot
Kp: 168.17 Ki: 29.42 Kd: 640.77
bias: 115 d: 115 min: 59.80 max: 60.16 Ku: 819.45 Tu: 11.23
No overshoot
Kp: 163.89 Ki: 29.18 Kd: 613.60
bias: 117 d: 117 min: 59.80 max: 60.16 Ku: 833.70 Tu: 11.70
No overshoot
Kp: 166.74 Ki: 28.50 Kd: 650.34
PID Autotune finished! Put the last Kp, Ki and Kd constants from below into Configuration.h
#define DEFAULT_bedKp 166.74
#define DEFAULT_bedKi 28.50
#define DEFAULT_bedKd 650.34

Die letzten drei Zeilen sind wieder für die Marlin Konfiguration gedacht:

#define DEFAULT_bedKp 166.74
#define DEFAULT_bedKi 28.50
#define DEFAULT_bedKd 650.34

Diese Werte dann in Marlin hier eintragen:

(ca. Zeile 554) => #define DEFAULT_bedKp 166.74
(ca. Zeile 555) => #define DEFAULT_bedKi 28.50
(ca. Zeile 556) => #define DEFAULT_bedKd 650.34

BITTE bei Euch die von Eurem PID TUNING ermittelten Werte eintragen !!
Die hier gezeigten sind von meinem Drucker und dienen nur als Beispiel !!

 

Nun steht der vorläufigen Neuerstellung der Firmware nichts mehr entgegen.
Es kann sein, dass ggf. noch weitere Werte später eingepflegt werden, was dann an entsprechender Stelle erwähnt wird.

Das Neuerstellen der Firmware mit den neuen Werten hat den Vorteil, dass eine gewisse Grundeinstellung vorhanden ist, die praktisch ohne neue Firmware unverändert festgeschrieben wurde und auf die jederzeit ohne großen Aufwand zurückgegriffen werden kann.

Das Speichern der Werte im Slicer im Profilen kann dann sinnvoll sein, wenn man oft die Filamentart ändert und mit mehreren Profilen arbeitet.

 

Als nächstes möchte ich ein wenig auf das sogenannte Microstepping eingehen.

Während ein ganzer Step quasi 1 Schritt (1/1) pro Befehl bedeutet (bei einem NEMA 17 Steppermotor ist das eine Schrittweite von 1,8 Grad Drehung bei 200 Schritten pro 1 kompletten Umdrehung), spricht man von Microsteps, wenn dieser ganze Schritt nochmals aufgeteilt wird. Bei den meisten Anet Boards ist 1/16 (ein Sechzehntel) Standard.
Die Nema Motoren können aber mehr und man kann mit den SKR Boards und anderen Treibern weit feinere Auflösungen einstellen (bis zu 1/256).

Das originale Anet Board verwendet also 3200 Steps (Schritte pro Umdrehung) und kommt damit auf eine Auflösung von 0,1125 Grad, was unter der Mehrheit der ernsthafteren Druckeranwender als "grob" bezeichnet wird.

Mit den SKR Boards können nun feinere Auflösungen eingestellt werden.
Wichtig ist hierbei zu wissen, wie die Einstellung ist, da dieser Wert später bei der weiteren Konfiguration notwendig ist, um den korrekten Faktor bei der Geschwindigkeit und der Länge der Achsenbewegungen zu konfigurieren (z.B. Steps/mm).

Natürlich hängt die Möglichkeit der Auflösung des Steppings auch von den Treiberplatinen ab, denn nicht jeder Treiber kann auch alle möglichen Steppings.
Bei den von mir verwendeten TMC2208 ist ein Wert von 1/256 problemlos möglich, auch Nachfolger wie TMC2209 und Co. sind dafür bereit, ältere Treiber hingegen gehen oft nur bis 1/16 bis 1/32, selten bis 1/64.

Ob eine Auflösung von 1/256 nötig ist, steht auf einem anderen Blatt, jedoch sollte ein 32Bit Board wie das SKR V1.4 damit problemlos zurecht kommen.
Wer seine Treiber im UART Modus betreibt, kann in Marlin die Auflösung einstellen, alle anderen können/müssen auf dem Board jumpern, hierzu sollte das Manual zu Rate gezogen werden.

 

Welche Microstep Einstellung ist nun sinnvoll ??

Bezüglich dieser Frage habe ich für meine TMC2208 UART lange gegoogelt und für mich folgende Parameter (durch mehrfache Empfehlungen diverser Hersteller) gefunden:

Microsteps: 1/16 im Stealthchop Modus (dabei werden 1/256 Schritte interpoliert)

Ich nutze das vorerst bei allen 5 Treibern.
Sollte es zu Schrittverlusten kommen, kann man das immer noch umstellen oder u.U. die Geschwindigkeit runtersetzen oder den Strom erhöhen (Vorsicht vor Überhitzung des Motors !!).
Auch kann bei Problemen mit dem Extruder das Stealthchop auf Spreadcycle umgestellt werden.
Während Stealthchop weniger Drehmoment bietet aber dadurch leiser arbeitet, kann Spreadcycle mehr Kraft aufbringen, ist aber ggf. etwas lauter.

Die Microstep Einstellung und Stealtchop kann man über Printrun / Pronterface mit dem GCode M122 abfragen.
Nach der bisher in dieser Anleitung eingestellten Marlin Konfiguration kommt bei mir folgendes Ergebnis:

Achsen X Y Z Z2 E
stealthChop true true true true true
msteps 16 16 16 16 16


Damit ist vorerst bereits alles für mich diesbezüglich eingestellt.
Ich bleibe damit erst einmal bei den 1/16 Steps.
Wer höher gehen will (mit oder ohne Interpolation), muss das später bei den Steps per mm berücksichtigen.

 

Weiter geht es nun mit der Kalibrierung des Extruders (Förderlänge) und den Verfahrenswegen der Achsen.
Damit die Motoren annähernd die Wege verfahren, die sie sollen, damit die Drucke gewissen Größen und anderen Vorgaben entsprechen, ist es ratsam, die gegebenen Zustände zu kontrollieren und/oder anzupassen.
Z.B. sollte bei einer gewollten Förderstrecke des Extruders von 10cm auch 10cm gefördert werden oder wenn Achse X 10cm verfahren soll, sollte der tatsächliche Weg auch ca. 10cm betragen.
Ich schreibe hier absichtlich ca., denn 100% genau wird man das nie hinbekommen und ist in den allermeisten Fällen auch nicht nötig.
Zudem dürften die verbauten Materialien und elektrischen Eigenschaften in dieser unteren Preisklasse kaum eine perfekte Einstellung zulassen, aber ich denke dass müssen sie auch nicht.
Wer hier absolute Präzision erwartet, muss zu anderen Druckern greifen, die deutlich mehr kosten und wohl auch keine absolute Genauigkeit liefern können, sicher aber eher dem Ideal annähern.

Die Formel zur Anpassung der Schrittauflösung pro mm ist Folgende: SOLL Länge geteilt durch IST Länge mal hinterlegte Schritte = neue Schritteinstellung

Genug Theorie, nun gilt es die Vorbereitung für die Extruderkalibration durchzuführen:

Dafür markieren wir am FIlament eine Länge von 12cm (120mm), bei der wir nachher 10cm (100mm) fördern wollen.
Auf den Rest der 2cm (20mm) kommt es dann an, dazu aber später mehr.

Hier ein Beispiel der Markierung:

Nullpunkt ExtruderkalibrierungMessstelle 120mm

Ich habe hier ein Lineal benutzt, welches an der Außenkante bei 0mm beginnt, man könnte auch eine Schieblehre oder was anderes zum Messen nehmen, wenn man kein 0-Punkt-Lineal besitzt.
Für mich war dieses Lineal vorhanden und es ließ sich zur Demonstrierung und Fotografieren am besten nutzen.
Auf Grund des gleichzeitigen Haltens des Handys zum Fotografieren sieht das Filament mit der Markierung auf dem rechten Bild scheinbar nicht genau aus aber ich habe die Markierung m.M.n. gut hinbekommen und dann die obigen Fotos gemacht.
Natürlich sollte das Filament mit der Markierung genau parallel zum Lineal verlaufen und das Lineal direkt an der linken Seite des Extruders Nähe Filamentöffnung angesetzt werden.
Man sieht auch an der Markierung, dass das alles nicht sher genau möglich ist aber ich denke, das reicht soweit auch, um gute Ergebnisse zu erziehlen.
Manche schneiden auch das Filament an der Stelle ab, wobei auch hier minimale Abweichungen durch den Schnitt entstehen können, für den Hausgebrauch sollte das aber reichen.
Wer diese Kalibrierung mit schwarzem Filament durchführt, wird wohl um das Abschneiden nicht herumkommen.

Eine Messstrecke von 120mm wurde deshalb gewählt, da man bei einer Förderlänge von 100mm nachher besser nachmessen kann, wieviel tatsächlich gefördert wurde und wieviel von den 120mm noch übrig sind.
Daher sollte im Idealfall ein Rest von ca. 20mm übrig bleiben.

Die eigentliche Kalibration kann mit verschiedenen Programmen durchgeführt werden, ich habe mich aber für Repetier Host entschieden, da ich sowieso mit diesem Programm slice und dann den Code damit an Repetier Server zum Drucken sende.
Wer möchte, kann auch Printrun / Pronterface nutzen.

Hier nun die Einstellungen für die Kalibrierung mit Repetier Host im manuellen Modus:

extruder calib pronter

Das ist die Ansicht im Programm Repetier Host auf der rechten Seite (den Rest habe ich aus Platzgründen nicht mit kopiert, da unwichtig).
Die Verbindung zum Drucker sollte bestehen (es darf kein anderes Programm auf den Drucker zugreifen).

Oben sehen wir nun den Reiter "Manuelle Kontrolle" und im Fenster rechts neben der Achse "Z" die Zahl 100.
Diese Zahl steht für die Länge des Filaments, die der Extruder fördern soll, also 100mm.

Unten bei der Heizdruckdüse habe ich die Temperatur für mein Filament eingegeben (Herstellerangabe) und links daneben das Symbol durch Klick freigeschaltet, damit die Düse sofort mit Heizen beginnt.
Die Filamentförderung funktioniert hier nur bei aufgeheizter Düse, sonst wird die Förderung logischerweise verweigert, denn kaltes Filament kann nicht gefördert werden.

Es gibt Leute, die eine sogenannte Kaltextruderkalibration durchführen, da man hier jegliche andere Einflüsse ausschließen kann, dazu muss aber die Heizdüse abgebaut werden, was nicht Jedermanns Sache ist und ich denke, eine Kalibrierung unter Heizbedingungen sollte auch funktionieren.

Sobald nun die Düsentemparatur ihren vorgegebenen Wert (hier 215°C) erreicht hat, klicken wir auf den Pfeil nach unten (siehe Spitze des roten Markierungspfeils).
Sofort beginnt der Extruder das Filament durch die aufgeheizte Heizdüse zu schieben, welches unten langsam aufs Heizbett läuft.
Da das Heizbett kalt ist, lässt sich dieses auch recht einfach entfernen, bzw. bei mir haftete es sogar nichteinmal.

Der Extruder stoppt nach einigen Sekunden und wir messen nach, wo die zuvor am Filament angebrachte Markierung stehengeblieben ist.

Bei mir war die Abweichung so gering, dass ich es als "Messfehler" abhake und nicht weiter verändere.
Ich habe diesen Test mehrfach wiederholt, um zu schauen, ob es bei den sehr geringen Abweichungen bleibt und ich kann für mich sagen: passt

Wer hier nun deutlich größere Abweichungen misst (auch mehrfach immer fast die gleichen), kann nun über die oben genannte Formel eine Korrektur vornehmen:


Ergebnis Beispiel 1 bei Rest 18mm:

SOLL / IST * hinterlegte Schritte = neuer Schrittwert
100mm / 102mm * 100 = 98,04


Ergebnis Beispiel 2 bei Rest 22mm:

SOLL / IST * hinterlegte Schritte = neuer Schrittwert
100mm / 98mm * 100 = 102,04


Dabei ist zu beachten, dass wir von den 120mm ausgehen, also 120mm abzüglich Rest von der Markierung bis zum Extruder.
Beispiel 1: 120mm - 18mm Rest = 102mm tatsächliche Förderlänge
Beispiel 2: 120mm - 22mm Rest = 98mm tatsächliche Förderlänge

Wie beschrieben dienen die 120mm einfach der besseren Ermittlung der tatsächlichen Förderlänge.
Hier kann jeder eine Länge nehmen, die er am besten ablesen kann, muss diese halt oben berücksichtigen.

Damit ist die Extruderförderlängenkalibrierung abgeschlossen.

Wer nun korrigierte Werte in die Firmware einpflegen will, kann dies in Marlin tun:

(ca. Zeile 802) => #define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, neuer Wert }

Die Firmware würde ich bei der Korrektur noch nicht neu erstellen, sondern erst die andern Stepper (Achsen) kalibrieren.
Eine Korrektur kann auch per GCode gespeichert werden, ohne neu zu Kompilieren, jedoch muss ich hier noch prüfen, wo und wie und ob das mit dem SKR V1.4 Turbo geht.
Falls ja, werde ich das hier nachtragen.

Wer oft das Filament, die Art und/oder den Hersteller wechselt, sollte ggf. eine erneute Kalibrierung vornehmen, da verschiedene Einflüsse und Abweichungen das Ergebnis beeinflussen können.

 

Nun folgt die Kalibrierung der Achsen (X, Y & Z):

Im Folgenden kann man erst alle drei Achsen kalibrieren und dann in die Firmware eintragen und flashen.
Ich habe hier nach jeder Achsenkalibrierung geflasht, was aber der Anleitung geschuldet war, da ich die Dokumentation nicht an einem Stück geschrieben habe.
Auch werden die Messwege per Marlin Modus im Display verfahren.
Selbstverständlich kann man den Drucker auch per Software steuern (wie oben bei der Kalibrierung der Extruderkalibration).
Ich nutze hier eben gerne die direkte Druckersteuerung, um andere Fehler soweit wie möglich auszuschließen.

 

Die X-Achse:

Zuerst fahren wir den Druckkopf auf die Home Position (sogenanntes "Homing").
Dafür drücken wir im Marlin Modus auf das Drehrad, dann auf "Bewegung", dann auf "Auto Home" und der Druckkopf fährt mit allen drei Achsen auf die Position 0, 0, 0.

Nun müssen wir schauen, dass die Motoren aktiv geschaltet sind und sich dadurch nicht so leicht verstellen lassen (z.B. durch Unachtsamkeit beim Messen).

Da dies nach dem Homing normalerweise automatisch aktiv ist, drücken wir leicht gegen den Druckkopf (nach rechts) und wenn sich nichts oder schwer bewegt, sind die Motoren aktiv.
In der jetzigen Einstellung können über das Menü nur deaktiviert werden und wenn man dann wieder gegen den Druckkopf drückt, lässt sich dieser leicht verschieben.
Sollte das der Fall sein (oder wenn man im aktiven Modus doch den Kopf verschoben hat), macht man einfach wieder ein Homing, die Achsen fahren wieder auf die Null Position und die Motoren sind wieder aktiv geschaltet.

Zum Messen der Positionen empfehle ich einen digitalen Messschieber, denn mit einem Lineal kann nur sehr grob gemessen werden und je größer das Druckobjekt später wird, desto mehr machen sich Messfehler bemerkbar.
Zwar wird man mit einem Messschieber auch nie die perfekte Messung hinbekommen aber auf jeden Fall genauere und nachvollziehbarere Ergebnisse.

Nachdem nun der Druckkopf "gehomed" und alle Motoren aktiv sind, legen wir den Messchieber - wie im nachfolgenden Bild zu sehen - an und "Nullen" die Anzeige des Messschiebers:

X Achse Start VermessungX Achse Start Nullung

Da ich bei meinem Anet E10 im Prinzip kaum Anlegemöglichkeiten zum Messen gefunden habe, nutze ich die linke Seite des Holms der X-Achse (siehe oberen Pfeil) und die linke Kante des Halters für den Druckkopf (siehe unteren Pfeil).

Nun legen wir den Messschieber vorsichtig zur Seite, ohne ihn zu verschieben oder verstellen.
Wichtig ist, dass die zuvor "genullte" Position dort bleibt, wo wir diese festgestellt und gesetzt haben.
Sollte der Messschieber ausgehen, kein Problem, vorsichtig einschalten und ggf. per Knopfdruck wieder auf 0.00 setzen.

Jetzt verfahren wir den Druckkopf um eine bestimmte Strecke.
Ich habe mich für 50mm entschieden, wobei jeder das nehmen kann, was er möchte.
Es muss dann nachher bei der Korrekturformel berücksichtigt werden.

Über den Marlin Modus geben wir jetzt den Befehl, den Druckkopf 50mm nach rechts zu verfahren:
Drehknopf drücken => "Bewegung" auswählen => "Achsen bewegen" => "Bewege X" => "10,0 mm"
Dann den Drehknopf so lange im Uhrzeigersinn drehen, bis "Bewege X: +050.0" erscheint:

X Achse Start BewegungX Achse Start Ergebnis

Nicht erschrecken oder wundern, der Druckkopf bewegt sich bereits beim Drehen des Drehrads.

Es hat sich herausgestellt, dass ein genaues Messen recht schwer ist, daher habe ich diese Messung mehrmals durchgeführt aber im Endergebnis waren es immer ca. 50,3mm, was dann doch der Korrektur bedarf.
Solche Abweichungen können viele Gründe haben, z.B. die Genauigkeit der Umlenkrollen, die Spannkraft der Zahnriemen, usw. ....
Beim Messen sprang bei mir die Anzeige schon bei kleinsten Bewegungen um 0,05mm, was im Prinzip trotzdem genau genug wäre aber eine Abweichung von ca. 0,3mm bedarf dann doch der Nacharbeitung.

Hierbei verwende ich folgende Formel:

eingestellte Schritte pro mm * gefahrene Millimeter geteilt durch gemessene Millimeter = neue Schritte pro Umdrehung

Das ergibt bei meinen Werten:

80 Steps/mm * 50mm / 50,3 = 79,52 Steps/mm

Diesen neuen Wert schreibe ich in die Marlin Grundkonfiguration für den Wert X:

(ca. Zeile 802) => #define DEFAULT_AXIS_STEPS_PER_UNIT { 79.52, 80, 400, 100 }

Mal eben die Firmware neu erstellt und geflasht, dann nachgemessen: 50,02mm <= ein super Wert, den ich so stehen lasse
(Die Messungen pendelten immer so um die 50,00mm und 50,04mm.)

 

Die Y-Achse:

Vor der Kalibrierung der Y-Achse verfahren wir den Druckkopf wieder auf die Home Position, damit das Board immer weis, wo sich der Druckkopf befindet.
Dafür drücken wir im Marlin Modus auf das Drehrad, dann auf "Bewegung", dann auf "Auto Home" und der Druckkopf fährt mit allen drei Achsen auf die Position 0, 0, 0.
Die Motoren sollten auch bei dieser Kalibrierung aktiv sein.

Um nun einen brauchbare Messmöglichkeit zu bekommen, steuern wir das Heizbett auf seine Max. Position, beim Anet E10 also 270mm.

Nachdem nun das Heizbett ganz vorne steht und alle Motoren aktiv sind, legen wir den Messchieber - wie im nachfolgenden Bild zu sehen - an und "Nullen" wieder die Anzeige des Messschiebers:

Y Achse Start VermessungY Achse Start Vermessung ohne Messschieber

Dabei zeigt die rote Markierung "1" auf dem linken Bild den Anschlag des Messschiebers an der Wellenhalterung der rechten Welle des Druckers.
Bei "2" steht der innere Messstift des Messschiebers am vorderen Ende der vorderen Heizbettlagerhalterung an.
Auf dem rechten Bild ist die Messstrecke nochmal ohne Messschieber gekennzeichnet.
Die linke gelbe Linie markiert wieder die Wellenhalterung vorne und die rechte die Heizbettlagerhalterung ebenfalls vorne.
Der mit dem roten Pfeil markierte Bereich ist die Strecke beim Start der Messung und muss hier auf dem Messschieber genullt werden.

Nun legen wir den Messschieber vorsichtig zur Seite, ohne ihn zu verschieben oder verstellen.
Wichtig ist, dass die zuvor "genullte" Position dort bleibt, wo wir diese festgestellt und gesetzt haben.
Sollte der Messschieber ausgehen, kein Problem, vorsichtig einschalten und ggf. per Knopfdruck wieder auf 0.00 setzen.

Jetzt verfahren wir das Heizbett um eine bestimmte Strecke nach hinten, ziehen daher jetzt den Wert ab.
Ich habe mich auch hier für 50mm entschieden, wobei jeder das nehmen kann, was er möchte.
Es muss dann nachher bei der Korrekturformel berücksichtigt werden.

Über den Marlin Modus geben wir jetzt den Befehl, das Druckbett 50mm nach hinten zu verfahren:
Drehknopf drücken => "Bewegung" auswählen => "Achsen bewegen" => "Bewege Y" => "10,0 mm"
Dann den Drehknopf so lange gegen den Uhrzeigersinn drehen, bis "Bewege Y: +220.0" erscheint:

Y Achse Start BewegungY Achse Start Ergebnis

Was für ein tolles Ergebnis, bei dem ich keine Veränderung vornehme, denn die zweite Zahl hinter dem Komma verbuche ich mal als Messungenauigkeit und daher belasse ich hier alles so, wie es ist.

Wer hier nun doch größere Abweichungen (auch nach mehreren Versuchen) feststellt, kann wieder zur Korrekturformel greifen:

eingestellte Schritte pro mm * gefahrene Millimeter geteilt durch gemessene Millimeter = neue Schritte pro Umdrehung

Ergebnis Beispiel bei einer gemessenen Länge von 52,84mm:

80 Steps/mm * 50mm / 52,84 = 75,70 Steps/mm

Diesen neuen Wert schreibt man dann in die Marlin Grundkonfiguration für den Wert Y:

(ca. Zeile 802) => #define DEFAULT_AXIS_STEPS_PER_UNIT { 79.52, 75.70, 400, 100 }

Mal eben die Firmware neu erstellt und geflasht, dann nachgemessen sollte der Wert der gefahrenen Y-Achse sehr nah an 50mm herankommen.

 

Die Z-Achse:

Auch hier fahren wir alle drei Achsen wieder auf die Home Position (siehe Beschreibung der X- und Y-Achse).

Ich habe mehrere Positionen am Rahmen des Anet E10 Druckers getestet, um relativ gut messen zu können und habe mich dann für diese Position entschieden:

Z Achse Start VermessungZ Achse Start Vermessung

Der Anschlag des Messchiebers steht auf der Kante vom Halter des Motors der X-Achse (parallel zum Aluholm der X-Achse) und der Messstift des Messschiebers geht runter mittig zum linken Holm der Y-Achse.
Auf dem rechten Bild ist dies nochmal vergrößert dargestellt.
Man kann auch die rechte Seite vermessen, denn eigentlich sollten beide Z-Motoren synchron bewegt werden.
Wer ganz genau gehen will, kann auch beide Z-Achsen vermessen aber ich habe bei mir beim Vermessen keinen nennenswerten Unterschied festgestellt.
Sollte doch ein Unterschied gemessen werden, wird die Suche nach dem Fehler aufwendiger, wobei ich hier aber im Moment noch passen muss.

Bei dieser Messstrecke verfahre ich die Z-Achse mit nur 20mm, da es schwieriger wird, genauere Ergebnisse zu bekommen, wenn hier die Messstrecke größer wird.
Wer will, kann natürlich größere Strecken messen, muss das dann halt später wieder bei der Korrekturformel berücksichtigen.

Hier also nun der Start der Messung:

Z Achse Start BewegungZ Achse Start Ergebnis

Auch hier habe ich erstaunlicherweise ein sehr gutes Ergebnis, wobei ich oft gemessen habe, da am Anfang völlig seltsame Abweichungen herauskamen.
Diese Abweichungen kamen aber durch das immer wieder minimale Verrutschen der Messspitze.
Durch einiges "Üben" habe ich dann nachvollziehbare Ergebnisse bekommen.

Der oben gezeigte Wert hat mich nun dazu bewogen, vorerst alles so zu lassen, was die Z-Achse angeht.
Letztendlich werden die Drucke zeugen, ob das alles so funktioniert, jedoch bin ich recht zuversichtlich, da die mechanischen Einstellungen bereits beim originalen Anet Board sehr genau waren.

Wer hier wieder nachjustieren muss, nutzt folgende Formel:

eingestellte Schritte pro mm * gefahrene Millimeter geteilt durch gemessene Millimeter = neue Schritte pro Umdrehung

Ergebnis Beispiel bei einer gemessenen Länge von 19,24mm:

400 Steps/mm * 20mm / 19,24 = 415,80 Steps/mm

Diesen neuen Wert schreibt man dann in die Marlin Grundkonfiguration für den Wert Z:

(ca. Zeile 802) => #define DEFAULT_AXIS_STEPS_PER_UNIT { 79.52, 75.70, 415.80, 100 }

Mal eben die Firmware neu erstellt und geflasht, dann nachgemessen sollte der Wert der gefahrenen Z-Achse sehr nah an 20mm herankommen.

 

Damit sollte die Kalibrierung der drei Achsen abgeschlossen sein.
Ob und wie weit das was gebracht hat, wird sich bei diversen Drucken zeigen, die man immer mal wieder nachmessen sollte.
Auch empfiehlt sich die Kalibrierung bei jeder mechanischen Veränderung an den jeweiligen Achsen und von Zeit zu Zeit, da sich durch einige Drucke auch das Material minimal verändern/verschieben/bewegen kann (z.B. Spannung der Riemen lässt nach und/oder Schrauben lockern sich, usw.).

 

Bevor wir nun den ersten Testdruck starten, sollte das Heizbett "gelevelt" werden, d.h. dass wir das Bett so einstellen, dass es so weit wie möglich gerade zum Druckkopf steht und der Druckkopf möglichst an allen Stellen minimalst vom Bett absteht.

Für dieses Leveln habe ich einen eigenen Beitrag erstellt:

Das Bed Leveling (SKR V1.4 Turbo)

Ist das Leveln durchgeführt worden, kann ab hier weiter gemacht werden.

 

Nun laden wir uns den berühmten Kalibrierungswürfel von Thingiverse herunter:

XYZ 20mm Calibration Cube

 

Wichtig:
Dieser Testwürfel ist nicht gerade geeignet, um den Drucker korrekt zu kalibrieren !!
Hier werden 20mm an allen Achsen vorgegeben, was bei Objekten mit längerer Kante durch größere Toleranzen wieder ganz anders darstellen kann.
Trotzdem kann dieser Würfel verwendet werden, um die grundsätzliche Funktion des Druckers zu testen.
Die Kalibrierung der Achsen wurde bereits weiter oben beschrieben.

 

Mit dieser Datei kann der Drucker selbst aber noch nichts anfangen und daher wird die Datei in den "Slicer" seiner Wahl geladen, welcher noch einige Einstellungen vornehmen lässt (u.A. wird darin auch der Drucker konfiguriert) und dann das Objekt in einen druckerlesbaren Code (GCode) umwandelt.

Ich habe früher das kostenlose Cura verwendet, jedoch ist diese Software inzwischen so komplex geworden, dass ich auf Repetier Host umgestiegen bin und darin eine ältere Cura Steuerung aktiviert habe.
Repetier Host lässt verschiedene Slicer Engines vorgeben, damit man trotzdem eine gewisse Kompatibilität hat und sich mehr um das Druckobjekt kümmern kann, als um ewige Softwareeinstellungen.

Wer weiterhin auf Cura setzen möchte, findet alle Versionen hier:

Ultimaker Cura Downloadseite (Github)

 

Ich hingegen setze inzwischen eben auf das zuvor genannte Repetier Host, welches ich später zusammen mit Repetier Server Pro einsetzen werde.
Repetier Host ist aber unabhängig von Repetier Server und kann auch so benutzt werden.

Den Download von Repetier Host findet man hier:

Repetier Host Downloadseite

Die Downloadseite zeigt zwar einen Spendeneingabefenster, jedoch kann man die Software auch so herunterladen.
Der Link dazu befindet sich auf der Seite ganz unten.
Wer die Software gut findet und weiter nutzen möchte, kann sich ja überlegen, dem Autor eine Spende zukommen zu lassen.

Eine Anleitung zur Installation ist in Arbeit und befindet sich hier:

Repetier Host 

 

Normalerweise kann Repetier Host den Drucker direkt ansteuern oder die Daten an einen Server - wie z.B. Repetier Server - senden.
Da ich jedoch beim ersten Druck alle weiteren Problemmöglichkeiten vorerst ausschließen möchte, werde ich den Testwürfel direkt von der SD Karte im Drucker drucken lassen.

Daher kann die Verbindung zum Drucker in Repetier Host vorerst ignoriert werden.
Trotzdem sollten die groben Druckereinstellungen vorgenommen werden, damit diese in der Druckdatei berücksichtigt und eingebunden wird (falls nötig).

Wir starten also Repetier Host und laden den Testwürfel:

Repetierhost mit Testwuerfel

Oben rechts sieht man im Reiter "Slicer" Cura als Grundlage, es wird also ein Modul aus einer früheren Cura Version eingebunden.
Wahlweise ist noch Slic3r vorhanden oder es kann was anderes eingebunden werden.

Unten rechts in blau sieht man in der Vergrößerung des Bildes "Extruder 1: PLA Das Filament".
Ich habe in den Einstellungen meine Filamente vorkonfiguriert bez. Temperaturen und so weiter.

Diese Einstellungen kann man hier vornehmen und unter eigenem Namen speichern:

Repetier Host Filament

Bitte hier eigene Filament abhängige Eigenschaften eintragen.
Meine Werte habe ich von meiner Rolle abgelesen.

In Repetier Host habe ich oben rechts in Druckeinstellungen noch folgende Werte vorgegeben:

rephost printerextruder

Und nebenan bei der "Druckerform" die Größenangaben angepasst:

rephost bedsize

Generell habe ich die Layerhöhe auf 0,2mm eingestellt, auch wenn beim Download des Würfels 0,1mm angegeben wurde.
Das verdoppelt die Druckzeit aber erhöht auch die Qualität.
Zum Vergleich kann der Würfel in beiden Schichtdicken gedruckt werden.
Da ich aber so gut wie nie mit 0,1mm drucke, mache ich auch diesen Druck mit 0,2mm Layerhöhe.

Des Weiteren verzichte ich hier auf den sogenannten "Support", der eine Stützstruktur darstellt, wenn es "Überhänge" zu drucken gibt, was ja hier bei dem Würfel nicht der Fall ist.

Bei "Skripte" eins weiter rechts habe ich noch den Startcode und Endcode aus einer früheren Anet E10 Konfiguration übernommen:

Startcode:

G28 ;Home
G1 Z15.0 F6000 ;Move the platform down 15mm
;Prime the extruder
G92 E0
G1 F200 E3
G92 E0

Endcode:

M104 S0
M140 S0
;Retract the filament
G92 E1
G1 E-1 F300
G28 X0 Y0
M84

Sollte später ein Server wie OctoPrint oder Repetier Server zum Drucken verwendet werden, sind diese Einträge wieder zu entfernen, da diese Einstellungen im Server konfiguriert sein sollten oder sind.

 

Nun wandeln (slicen) wir den Würfel in GCode durch einen Klick auf "Slice mit Cura Engine" oben rechts, sobald wir wieder auf den Reiter "Slicer" gegangen sind.

Das Druckobjekt sieht auf dem Gitter nun anders aus und rechts erscheint folgendes Fenster:

rephost savesd

Dort klicken wir nun auf "Speichere für SD Druck".

Es folgt folgende Auswahl:

rephost addcode

Mit der obigen Auswahl speichere ich den Code auf meine am PC eingelegten und im Format Fat32 formatierten Micro SD Karte und vergebe den Namen "testwuerfel.gco".

Nach dem Speichern wird die SD Karte am PC abgemeldet, herausgezogen und in den SD Slot des SKR V1.4 Turbo Boards gesteckt.

 

Hinweis:
Wer - wie ich - ein TFT35 V3.0 (oder andere Größe) am SKR V1.4 angeschlossen und den SD Kartenleser vom TFT Display konfiguriert hat, speichert die Datei aus Repetier Host auf einer passenden SD Karte (oder Mikro SD mit Adapter) und steckt diese in den TFT SD Slot.

 

Dann den Drucker einschalten und das Drehrad 1x drücken:

Druck vom Medium

Um die hier gezeigte Option "Druck vom Medium" auswählen zu können, muss per Drehrad weiter nach unten gescrollt werden.
Nach der Bestätigung per Druck auf das Drehrad erscheint die Dateiauswahl der auf der SD Karte gefundenen GCode Dateien:

Marlin Datei Auswahl

Mit einem Druck auf das Drehrad bei der ausgewählten Datei löst man noch folgende Abfrage aus:

Marlin Abfrage Start

Bei Bestätigung mit "Drucken" geht es auch schon los:

Marlin druckt

Unglaublich, wie viel leiser der Drucker nach dem Umbau druckt.

Und das kam dabei raus:

Druck fertig

Auf dem Bild sieht es schlimmer aus als es ist aber ich habe auch mit recht hohen Geschwindigkeiten gedruckt.
Weitere Werte bei der Konfiguration in Repetier Host habe ich aus der alten Config.ini des Anet E10 Druckers genommen, da ich damit früher immer gut gefahren bin.
Diese Konfiguration liegt auf der SD Karte, die beim Anet E10 damals dabei war.

Als Fülldichte habe ich 20% eingestellt, bei Thingiverse wurden zwar 30% empfohlen aber das Ergebnis ist trotzdem gut geworden.

Für den ersten Druck ok aber da besteht noch einiges an Verbesserungspotential aber das war vorerst grob der Umbau, die Verkabelung und die Konfiguration.
Verbesserungen und/oder Änderungen werde ich nach und nach hier einbauen.

 

Hier geht es zurück zur Modifikationsübersicht.

Anzeigen:

Aktuelle Top-Angebote der Telekom, Online-Vorteile, Attraktive Prämien
Febas => Hosting/Server/Domains
Wir benutzen Cookies

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.