Marlin Firmware auf RUMBA Board installieren

Voraussetzungen:

Als Voraussetzung für die weiteren Schritte werden die benötigten Software Pakete aus den verschiedenen Quellen besorgt. Dafür werden folgende Pakete benötigt:
 

Zum Download der Marlin Software von GitHub einfach auf der rechten Seite auf den Button "Download ZIP" klicken, dann wird die komplette Firmware als ein Paket herunter geladen.
Falls der Full Graphic Display Controller am RUMBA Board verwendet werden soll, muss noch die Bibliothek u8glib von http://code.google.com/p/u8glib/wiki/u8glib heruntergeladen werden. Diese wird dann in das Verzeichnis <Pfad zur Arduino Entwicklucklungsumgebung>\libraries kopiert.

Schritt 1 - USB-Treiber Installation:

Wird das RUMBA Board mit dem Rechner verbunden (das Board muss extern mit Strom versorgt werden!), dann versucht Windows einen passenden Treiber zu installieren. Dies schlägt jedoch fehl und wird dementsprechend in der Geräteliste angezeigt.

01-RUMBA-unknown-device

Damit Windows den richtigen Treiber installiert, muss das Programm "RRD_RUMBA_TAURINO_DriverSetup.exe" ausgeführt werden.

02-RUMBA-driver

Jetzt auf "Install" klicken:

03-RUMBA-install

Da der Treiber nicht signiert ist, muss hier die Installation nochmal bestätigt werden:

04-RUMBA-ignore

Wurde der Treiber richtig installiert, so erscheint das RUMBA Board im Gerätemanager unter "Anschlüsse (COM & LPT). Der COM-Port wird automatisch von Windows vergeben. Daher wird dies auf einem anderen Rechner auch meist ein anderer Port sein! Der COM-Port wird später noch bei der Konfiguration der Arduino Entwicklungsumgebung benötigt.

05-RUMBA-driver-successful

 

Schritt 2 - Arduino Entwicklungsumgebung konfigurieren:

Nachdem die Arduino Entwicklungsumgebung auf dem Rechner installiert wurde und die Marlin Firmware in einem Verzeichnis auf dem Rechner abgelegt wurde, geht es daran, diese für den eigenen Drucker zu konfigurieren. Dazu die Arduino Entwicklungsumgebung starten und über "Datei/öffnen" in das Verzeichnis der Marlin Firmware wechseln. Anschließend die Datei "Marlin.ino" auswählen. Die Entwicklungsumgebung wird dann die Firmare laden und alle Dateien öffnen.

07-RUMBA-Marlin-ino

Für die weiteren Schritte muss die Datei "Configuration.h" in der Entwicklungsumgebung ausgewählt werden:

08-RUMBA-Configuration-h

Damit die Übertragung der Firmware auf das RUMBA Bord funktioniert, muss erst einmal über "Tools/Board" der Typ "Arduino Mega 2560 or Mega ADK" ausgewählt werden.

09-RUMBA-Board

Dann muss noch über "Tools/Serieller Port" der COM-Port ausgewählt werden, wie er im Gerätemanager sichtbar ist (siehe weiter oben).

10-RUMBA-port

Jetzt sollte sich die Marlin Firmware schon einmal compilieren lassen. Durch Klick auf das Häckchen-Symbol unterhalb des Menüpunktes "Datei" wird der Compiliervorgang gestartet.

Schritt 3 - Configuration.h für das RUMBA Board anpassen:

Ziemlich zu Beginn der Konfigurationsdatei steht die Baudrate, mit welcher das Board später angesprochen werden will. In der aktuellen Version von Marlin steht hier ein Wert von "250000". Dieser Wert ist aber für den Rechner, bzw. USB Port unter Umständen zu hoch. Daher ist es eine gute Idee diesen Wert auf einen geläufigeren Wert wie 115000 einzustellen.

// This determines the communication speed of the printer
// This determines the communication speed of the printer
#define BAUDRATE 115200

In der aktuellen Marlin Firmware sind alle unterstützten Drucker Boards in der Datei "boards.h" definiert. Für das RUMBA Board gibt es in dieser Datei den folgenden Eintrag:

#define BOARD_RUMBA             80   // Rumba

Um das RUMBA Board in der Firmware zu aktivieren muss dann in der Datei "Configuration.h" ab Zeile 46 folgender Eintrag gemacht werden:

#ifndef MOTHERBOARD
  #define MOTHERBOARD BOARD_RUMBA
#endif

Wenn ein Full Graphic Display Controller (DOT Matrix 128x64) angeschlossen ist, muss der entsprechende DEFINE ab ca. Zeile 560 aktiviert werden (die beiden "//" Zeichen löschen). Aber Achtung, die Voraussetzungen zu u8glib beachten, sonst lässt sich die Firmware nicht compilieren!

// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

Damit sind die Basis Konfigurationsschritte für das RUMBA Board abgeschlossen. Wird diese Konfiguration an das Board übertragen (Icon mit dem Pfeil nach rechts, unterhalb des Menüs "Datei"), dann sollte das Display nach dem Neustart des Boards die ersten Lebenszeichen von sich geben.

Als nächstes sind die für den verwendeten Drucker spezifischen Parameter einzustellen. Zuerst einmal ist ab ca. Zeile 58 zu prüfen, ob die Anzahl der Extruder richtig definiert ist. Für den Einsteiger dürfte im Normalfall hier eine "1" der richtige Wert sein:

// This defines the number of extruders
#define EXTRUDERS 1

Ab Zeile 70 beginnen die Konfigurationshinweise für die verwendeten Thermistoren für das Hotend und das Heizbett. Entsprechend des Hardwareaufbaus sind die DEFINES ab Zeile 107 zu setzen.

#define TEMP_SENSOR_0 -1
#define TEMP_SENSOR_1 -1
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 0

Der Sensor für das Hotend wird im Normalfall an den ersten Sensor Eingang angeschlossen, also an TEMP_SENSOR_0. Das Heitzbett wird normalerweise an den zweiten Sensor Eingang angeschlossen und in der Konfiguration TEMP_SENSOR_BED konfiguriert. Wird ein EPCOS B57560G104F Thermistor verwendet (100K, Beta = 4036) muss eine "1" angegeben werden. Für Thermistor mit 100K und Beta = 3950 muss der im DEFINE des entsprechenden Sensors der Wert "60" eingetragen werden, also z. B.:

Für EPCOS (Beta = 4036) auf Hotend und Heizbett:

#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 -1
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 1

Für Beta = 3950 auf Hotend und Heizbett:

#define TEMP_SENSOR_0 60
#define TEMP_SENSOR_1 -1
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 60

Wer möchte kann sich noch an den DEFINES für HEATER_x_MINTEMP und HEATER_x_MAXTEMP zu schaffen machen, ist jedoch nicht nötig. Die vorgegebenen Werte stellen sicher, dass bei einem Kabelbruch o. Ä. die Temperatur nicht aus dem Ruder läuft und dann die Heizpatrone im Hotend, bzw. das Heizbett abgeschalten werden.

Ab Zeile 320 wird es wieder interessant, denn dort beginnen die relevanten Konfigurationen für die Schrittmotoren.

#define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true
#define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
#define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
#define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false

An dieser Stelle können die Drehrichtungen der Schrittmotoren an den Hardwareaufbau angepasst werden. Hier hilft normalerweise einfach nur testen. Dazu die Achsen manuell in die Mitte stellen und dann den Drucker einschalten. Dann mit einer passen Hostsoftware oder über das Display die zu testende Achse einen kurzen Weg in eine Richtung verfahren. Stimmt die Drehrichtung nicht, dann einfach in der Konfiguration die Drehrichtung berichtigen.

ACHTUNG: Das Homing zu diesem Zeitpunkt noch nicht nutzen!

Über das Homing will die Software alle Achsen auf den mechanischen Nullpunkt des Druckers setzen, indem der Kopf bis zum jeweiligen Enstop gefahren wird. Stimmt die Drehrichtung in der Konfiguration noch nicht, dann fährt der Kopf an das falsche Ende. Hier hilft dann nur noch resetten oder ausschalten, bevor das Ende der Achse erreicht ist.

Kleiner Hinweis:
Nach dem Einschalten setzt Marlin die aktuelle Position der Achsen auf 0/0/0. Marlin läßt in der Grundkonfiguration nur positive Verfahrwege zu. Erst durch das Homing versucht Marlin den Druckkopf bis zum Endstop zu fahren und setzt dann dort den Nullpunkt.

Als nächstes müssen die Achsen kalibriert werden, d. h. die Anzahl der Steps pro Milimeter Weg konfiguriert werden. Dazu sind die DEFINES ab Zeile 482 richtig zu setzen.

#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402,78.7402,200.0*8/3,760*1.1} // default steps per unit for Ultimaker


Die Werte in den geschweiften Klammern legen die Anzahl Steps/Millimeter fest, dabei stehen die Werte für die Achsen wie folgt: {X-Achse, Y-Achse, Z-Achse, Extruder}
An dieser Stelle ist etwas Rechnen angesagt. Ausgangspunkt sind die Anzahl Steps pro Umdrehung des Schrittmotors, als z. B. für die meisten NEMA Schrittmotoren 200 Steps/Umdrehung. Das muss dann noch mit dem Microstepping multipliziert werden. Normalerweise wird entweder ein 1/16 oder 1/32 Stepping verwendet (bitte die Konfiguration der Schrittmotortreiber kontrollieren!).
Daraus folgt für:

  • 1/16 Stepping
    • 200 * 16 = 3.200 Steps / Umdrehung
  • 1/32 Stepping
    • 200 * 32 = 6.400 Steps / Umdrehung

Jetzt kommt noch die Komponente des Vorschubs/Umdrehung dazu. Für die Z-Achse ist ein M8 Gewindestab sehr gebräuchlich. Das M8 Gewinde hat eine Steigung von 1,25mm pro Umdrehung. Damit lässt sich für die Z-Achse der initiale Wert (ohne genau kalibriert zu haben) erst einmal wie folgt einstellen:

  • 1/16 Stepping
    • 200 * 16 / 1,25 = 2560
  • 1/32 Stepping
    • 200 * 32 / 1,5 = 5120

Werden andere Gewindestangen wie z. B. ein Trapezgewinde TR10x3 verwendet, dann muss natürlich der Wert entsprechend in der Berechnung gesetzt werden.
Hierbei möchte ich anmerken, dass wahrscheinlich alles jenseits der 4 - 5 Stelle nach dem Komma wenig Auswirkung in der Praxis hat. D. h. hier reicht es die Werte bei 4 Stellen nach dem Komma abzuschneiden.

Bei der Einstellung für die X-/Y-Achsen wird es ein klein wenig komplizierter. Hier wird der effektive Kreisumfang des Pulleys benötigt, da dieser angibt, wie weit der Zahnriehmen pro Umdrehung bewegt wird. Dazu nehmen wir einfach die Formel für den Kreisumfang mit u = d * Pi. Der Durchmesser eines GT2 Pulleys mit 20 Zähnen liegt bei ca. 12,23mm. Daraus ergibt sich ein Umfang von 38,4216mm. Zusammen mit den Werten für den Schrittmotor und das Microstepping ergeben sich als erster Näherungswert:

  • 1/16 Stepping
    • 200 * 16 / 38,4216 = 83,2864
  • 1/32 Stepping
    • 200 * 32 / 38,4216 = 166,5729

Eine andere Möglichkeit ist den Pitch (Zahnabstand) des GT2 Pulleys (2mm) mit der Anzahl Zähne des Pulleys zu multiplizieren. Damit müsste dann im Nenner einfach nur der Wert 40 (statt 38,4216) eingesetzt werden. Trotzalledem muss am Ende der Drucker noch kalibriert werden, um genaue Ausdrucke zu bekommen.

Dann ist noch die Einstellung für den Extruder an der Reihe. Hier kommt es den eingesetzten Extruder an. So wird bei einem Wades Extruder der zu konfigurierende Wert vom Übersetzungsverhältnis der Zahnrder beeinflußt. Beim klassischen Wades hat ein Zahnrad 11 Zähne, das zweite 39. Dabei kommt ein Verhältnis von etwa 1 : 3,54 heraus. Dann kommt noch der Umfang der effiktive Umfang der Schraube zum Tragen, welches das Filament fördert. Hier hilft am Ende nur erst einen ungefähren Wert einsetzen und dann anschließend zu kalibrieren.
Für den Bulldog XL Extruder gibt reprapdiscount schon initiale Werte an:

  • 1/16 Stepping
    • 495
  • 1/32 Stepping
    • 990

Trotzalledem ist auch hier eine genaue Kalibrierung mit der ersten in Betriebnahme nötig.

Der letzte Punkt in der Konfiguration betrifft die maximalen Vorschubraten für die einzelnen Achsen. Durch diese Werte wird sichergestellt, dass Drucker im Rahmen seiner maximalen Werte bleibt, auch wenn über den GCode ein höherer Wert vorgeben wird. Diese Werte sind jedoch vom verwendeten Drucker und von der Einstellung des Stroms in den Schrittmotortreibern abhängig. Ist der Phasenstrom im Schrittmotortreiber sehr niedrig eingestellt, so können schon recht niedrige Vorschubwerte dafür sorgen, dass der Schrittmotor nicht mehr die Achse bewegt und nur brummt. Auf der anderen Seite kann aber ein zu hoch eingestellter Phasenstrom dafür sorgen, dass der Treiberbaustein während eines Ausdrucks überhitzt und dann aufgrund des Überhitzungschutzes einfach abschaltet und der Schrittmotor sich deswegen nicht mehr bewegt.
In beiden Fällen hat dies zur Folge, dass der Ausdruck plötzlich in einer oder beiden Achsen (X/Y) versetzt und damit der Ausdruck unbrauchbar wird.

#define DEFAULT_MAX_FEEDRATE          {300, 300, 5, 100}    // (mm/sec).

Beim maximalen Vorschub und dem Phasenstrom des Schrittmotortreibers gilt es die Balance zwischen maximaler Geschwindigkeit und Betreibstemperatur des Treiberbausteins zu finden.

Gut, jetzt ist die initiale Konfiguration abgeschlossen. Jetzt muss die Firmware nur noch an das Board gesendet werden, indem auf das Icon Pfeil nach rechts geklickt wird:
08-RUMBA-Configuration-h

Nachdem die Firmware erfolgreich übertragen wurde und sich das Board neu gestartet hat, sollte das Display sich wieder melden und folgendes anzeigen (vorausgesetzt es ist ein Full Graphic Display installiert):
slider-3

Damit ist die Firmware Installation abgeschlossen. Nun muss der Drucker noch kalibriert werden!

Bitte geben Sie die Zahlenfolge in das nachfolgende Textfeld ein

Die mit einem * markierten Felder sind Pflichtfelder.