Artikel | Reviews

Prusa i3 MK3S Mod: 3D-Drucker selber bauen


Firmware (MK3-Version)

F├╝r die drei Modifikationen Zaribo 420/320/220 (Releases) gibt es bereits angepasste Firmwares in Form von HEX-Dateien auf den entsprechenden Githubs. Nat├╝rlich kann auch der originale Prusa i3 MK3S Quellcode bezogen und modifiziert werden.

Das Flashen der Hardware gestaltet sich recht einfach, vorausgesetzt es ist ein Bootloader vorhanden. Prusa3D hat seit einiger Zeit in seiner Firmware einen „read-only“ Bootloader, so dass im Ernstfall noch etwas zu retten ist. Der Hersteller Ultimachine stattet seine Boards ├╝brigens mit einem eigenen Bootloader aus. Der Bootloader kann aber genau so gut neu installiert oder aktualisiert werden. Wenn das Mainboard im Originalzustand von Prusa3D oder Ultimachine erworben wurde, ist ├╝blicherweise ein Bootloader installiert. Gleiches gilt beim Kauf im Zaribo-Shop.

F├╝r den Flashvorgang unter Windows ist zun├Ąchst die Installation eines Treibers erforderlich, um ├╝berhaupt mit dem RAMBo kommunizieren zu k├Ânnen. Wer bereits einen Prusa i3 MK2S/MK3S besitzt, findet auf der Prusa3D-Downloadseite alle relevanten Treiber. F├╝r neue Mainboards, die direkt beim Hersteller Ultimachine bezogen wurden, gibt es einen anderen Treiber. Abh├Ąngig davon in welcher Form die Firmware vorliegt, ist die Installation entsprechender Tools erforderlich. W├Ąhrend HEX-Dateien mithilfe von Tools geflashed werden k├Ânnen, m├╝ssen Header- und Source-Dateien zun├Ąchst kompiliert und danach erst auf die Hardware geschrieben (geflashed) werden.

Schritt 1: Arduino IDE installieren

Als erstes gilt es die neuste Arduino IDE herunterzuladen zu installieren, um den Programmcode f├╝r die 3D-Drucker-Boards zu schreiben und zu kompilieren. Aktuell (Stand 13.02.2019) wird die Version 1.8.5 empfohlen, wobei auch die Version 1.8.8 funktionieren d├╝rfte. Das Installationsverzeichnis ist in der Regel C:\Programme (x86)\Arduino. Bei den MK2(S) kann es zu Konflikten kommen, weshalb das Verzeichnis LiquidCrystal unter C:\Programme (x86)\Arduino\libraries umbenannt werden sollte.  

Schritt 2: RAMBo Board in der IDE einrichten

In der Arduino IDE muss zun├Ąchst das Ultimachine RAMBo Board eingebunden werden. Die Arduino-Plugin-Ordner machen zus├Ątzliche Pins in der Arduino-IDE verf├╝gbar und k├Ânnen manuell eingebunden werden. Wesentlich einfacher geht das mit der folgenden URL: https://raw.githubusercontent.com/ultimachine/ArduinoAddons/master/package_ultimachine_index.json

Diese URL wird in der Arduino IDE unter Datei > Voreinstellungen im Feld ÔÇ×Zus├Ątzliche Boardverwalter-URLsÔÇť  eingebunden. Im angegebenen Sketchbook-Speicherort (Firmware-Quelldateien werden in diesem Ordner entpackt) sollten die Firmware-Dateien liegen.

prusai3mk3_eigenbau_3

Als n├Ąchste geht es ├╝ber Werkzeuge > Board: XYZ > Boardverwalter auf die Suche nach dem Begriff „rambo„. Anschlie├čend sollte das Ultimachine RAMBo Board in der Liste erscheinen und installiert werden. Nach der Installation sollte das RAMBo Board, das zur Arduino IDE hinzugef├╝gt wurde, ├╝ber Werkzeuge > Board  ausgew├Ąhlt werden k├Ânnen. 

prusai3mk3_eigenbau_4 prusai3mk3_eigenbau_5 prusai3mk3_eigenbau_6

Schritt 3: Die richtige Firmware

F├╝r 3D-Drucker-Modifikationen und Eigenbauten wird oftmals die aktuelle Marlin-Fassung verwendet oder aber wie in unserem Fall die offizielle Prusa i3 MK3S Firmware. Da unser Mod auf den Original Prusa i3 MK3S basiert, k├Ânnen die meisten Parameter ├╝bernommen werden. Dennoch k├Ânnen die folgenden Schritte teilweise auch auf die Standard-Marlin-Firmware angewendet werden. 

Prusa3D bietet auf seinem GitHub sowohl fertige Firmwares als auch nicht kompilierte Quelldateien an. Es sollte prinzipiell stets die letzte stabile Version verwendet werden. Die Quelldateien k├Ânnen im Sketch-Ordner (z.B. C:\Dokumente\Arduino) entpackt werden. Nicht wundern, wenn in dem Verzeichnis bereits das Unterverzeichnis „libraries“ angelegt ist. Gleiches Vorgehen gilt auch f├╝r die Standard-Marlin-Firmware bzw. deren Quelldateien. Nach dem Entpacken gibt es eine wichtige Datei, in der ├╝blicherweise alle relevanten Einstellungen vorgenommen werden: Configuration.h. Bei der Prusa-Firmware gibt es jedoch eine Besonderheit. Im Verzeichnis C:\Documents\Arduino\Prusa-Firmware-x.x.x\Firmware\variants befinden sich verschiedenen Header-Dateien. F├╝r unseren Prusa i3 MK3 Mod mit Ultimachine RAMBo Board w├Ąhlen wir die Datei 1_75mm_MK3-EINSy10a-E3Dv6full.h aus und benennen diese in Configuration_prusa.h um. Anschlie├čend wird die Datei in das ├╝bergeordnete Verzeichnis /../Firmware/ verschoben bzw. kopiert. 

prusai3mk3_eigenbau_7

Die Quelldateien der Firmware k├Ânnen geladen werden, indem die Datei Firmware.info in der Arduino IDE ge├Âffnet wird. W├Ąhrend f├╝r die Marlin-Firmware lediglich die Configuration.h relevant ist, spielen im Falle der Prusa-Firmware sowohl die Datei Configuration.h als auch die Configuration_prusa.h eine wichtige Rolle.

 Schritt 4: Firmware anpassen

Bevor die Quelldateien der Prusa i3 MK3 Firmware ├╝berpr├╝ft und kompiliert werden k├Ânnen, sind ein paar wichtige ├änderungen erforderlich. Zun├Ąchst sollte die Unterst├╝tzung f├╝r float printf aktiviert werden. Dazu wird die Datei platform.txt im Installationsverzeichnis der Arduino IDE als Administrator ge├Âffnet. ├ťblicherweise befindet sich die Datei im Verzeichnis C:\Program Files (x86)\Arduino\hardware\arduino\avr. Folgende Zeile wird vor dem sogenannten Flag -Wl,–gc-sections in der Zeile compiler.c.elf.flags= gesetzt: -Wl,-u,vfprintf -lprintf_flt -lm

prusai3mk3_eigenbau_8

Ohne diese ├änderung k├Ânnte es zu merkw├╝rdigen Zeichen auf dem LCD-Display des 3D-Druckers kommen. ├ťbrigens wird diese Datei mit jeder neuen Arduino-IDE-Update ├╝berschrieben. 

3ddrucker_eigenbau_lcd2

Prusa3D empfiehlt au├čerdem in der config.h die mehrsprachige Untert├╝tzung zu deaktivieren (Wert auf NULL setzen: #define LANG_MODE 0). Wer einen Haribo 3030 oder einen Zaribo 420&320/220 besitzt, der kann theoretisch zu Schritt 5 springen und die Firmware bauen und flashen. Dennoch d├╝rften die folgenden Abschnitte f├╝r den ein oder anderen interessant sein. 

Die wichtigste Datei in der Standard-Marlin-Firmware ist die Configuration.h, in der alle relevanten Einstellungen vorgenommen werden. Lediglich die Firmware f├╝r Prusa-basierende 3D-Drucker beinhaltet zus├Ątzlich die Configuration_prusa.h

Parameter f├╝r Motoren und Extruder

Die Bewegungseinstellungen der einzelnen Motoren sind druckerspezifisch und m├╝ssen anhand der vorliegenden Hardware ermittelt werden. F├╝r die Kalibrierung eines neuen Extruder-Motors gibt es auf der E3D-Online-Wiki eine sehr gute Anleitung. F├╝r die x- und y-Schritte sind vor allem Gr├Â├če und Anzahl der Z├Ąhne relevant. Mit dem Prusa Calculator k├Ânnen die Parameter f├╝r die Firmware anhand der messtechnisch ermittelten Werte errechnet werden. Gleiches gilt f├╝r die z-Achse (Trapezspindel oder auch Lead screw genannt), was die Einstellung auch bei einem Upgrade interessant macht. Denn wer seinen 3D-Drucker modifizieren m├Âchte, kann theoretisch jede beliebige Trapezspindel nehmen, muss die Geometrien jedoch in die Firmware mit einflie├čen lassen. 

Hinweis: F├╝r den Zaribo 220/320/420 Mod wird eine modifizierte Halterung f├╝r den Schrittmotor der y-Achse verwendet, wodurch die Achse gespiegelt wird. Dazu muss die Laufrichtung des Motors invertiert werden. Entweder wird der entsprechende Parameter in der Firmware invertiert (#define INVERT_Y_DIR 1) oder aber der DuPont-Stecker verkehrt herum angeschlossen. Prusa3D hat in seiner Firmware jedoch einen Bug, der bei einer Invertierung der Motorparameter zu Problemen w├Ąhrend der Kalibrierung der Achsen f├╝hrt. Dazu gibt es jedoch einen Fix in der Zaribo-Firmware ab v.3.5.9-RC1. Mittlerweile sollte die hier erw├Ąhnten Probleme der Vergangenheit angeh├Âren. (Stand: August 2019).

E3D V6 Hotend
Die Firmware von Prusa 3D beinhaltet unter anderem die Configuration_prusa.h Datei, in der unter anderem einige vordefinierte Parameter f├╝r die Sensoren hinterlegt sind. In der Standard-Marlin-Version sind diese Parameter f├╝r die Kennlinien der verschiedenen Temperatursensoren in der Configuration.h zu finden. ├ťblicherweise sind die thermische Parameter f├╝r Hotend und Heizbett hinterlegt. In einigen F├Ąllen finden sich sogenannte #if/#elif/#else Bedingungen, die pr├╝fen, ob beispielsweise ein E3D PT100 Thermistor mit AMP definiert wurde, was in unserem Fall aber im Programmcode auskommentiert ist. PT100 arbeiten sehr viel genauer als Standard-Thermistoren und werden ├╝blicherweise nachger├╝stet, um h├Âhere Temperaturen erreichen zu k├Ânnen. F├╝r das E3D V6 Hotend und den thermischen Sensor f├╝r das Original Prusa i3 MK3 Heizbett sind folgende Parameter definiert:

#define TEMP_SENSOR_0 5
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 1
#define TEMP_SENSOR_PINDA 1

Die Parameter #define TEMP_SENSOR_1 0 und #define TEMP_SENSOR_2 0 sind auf NULL gesetzt, da die Pins auf dem Mainboard nicht mit Sensoren belegt sind. Die maximale Temperatur wird ebenfalls in dieser Datei eingestellt. Marlin zieht jedoch 15┬░C von der gesetzten Temperatur ab, um m├Âgliche Temperaturschwankungen zu ber├╝cksichtigen. Wenn der Sensor beispielsweise f├╝r 285┬░C ausgelegt ist, wird ein Wert von 300┬░C festgelegt:

#define HEATER_0_MAXTEMP 300

Weitere Informationen zum Thema E3D V6 Hotend gibt es auf der E3D-Online Wiki-Webseite

LCD-Display
Die meisten Prusa i3 3D-Drucker verwenden den RepRap Discount Smart Controller, der mithilfe von vordefinierten Macros bereits in Marlin implementiert ist. Erweiterte Einstellungen werden in der Configuration_adv.h vorgenommen. 

Schritt 5: Firmware ├╝berpr├╝fen und kompilieren

├ťber den Button „├ťberpr├╝fen“ wird zun├Ąchst getestet, ob alles einwandfrei kompiliert wurde. Zuvor sollte man sich jedoch vergewissern, dass auch das korrekte RAMBo-Board unter „Werkzeuge„ausgew├Ąhlt ist. Nach dem Kompiliervorgang kann unter Sketch > Kompilierte Bin├Ąrdatei exportieren die HEX-Datei gespeichert werden. Jetzt sollte im Firmware-Verzeichnis die Datei Firmware.ino.rambo.hex vorhanden sein. Wenn zus├Ątzlich ein Bootloader kompiliert wurde, sollte auch die Datei Firmware.ino.with_bootloader.rambo.hex erzeugt und exportiert worden sein. 

Hinweis: Bevor eine beliebige Marlin-Firmware oder eine Prusa-Firmware auf das Board geflashed wird, sollten die entsprechenden 3D-Drucker-Parameter angepasst werden. Wir m├Âchten au├čerdem darauf hinweisen, dass alle in diesem Artikel beschriebenen Schritte zum Thema „Flashen“ auf eigene Gefahr geschehen. Durch einen falschen Flashvorgang kann das Board unbrauchbar gemacht werden. Auch zu den Themen „Zusammenbau“ und „Elektronik“ geschieht jeder Schritt auf eigenes Risiko. 

Schritt 6: Fertige Firmware (HEX-Datei) flashen

Die HEX-Dateien k├Ânnen unter anderem mit XLoader, Cura, OctoPi oder der Slic3r-Software von Prusa3D geflashed werden.  

prusai3mk3_eigenbau_2

F├╝r Windows- und Linux-Anwender hat sich au├čerdem AVRDude bew├Ąhrt. Letzteres wird ├╝ber Kommandos gesteuert und erm├Âglicht auch den Backup der aktuellen Firmware, bevor eine neue aufgespielt wird:

#Backup der aktuellen Firmware 
avrdude -v -p m2560 -c wiring -P COMx -U flash:r:backup_myfile.hex:i -D

#Flashen der neuen Firmware
avrdude -v -p m2560 -c wiring -P COMx -U flash:w:myfile.hex:i -D

Folgende Fehlermeldungen k├Ânnen w├Ąrend dem Flashvorgang auftreten:

  • Timeout-Fehler:
    M├Âglicherweise wurde die Platine am USB-Port angeschlossen, jedoch noch nicht eingeschaltet. 
  • Read-Fehler:
    avrdude: reading input file „Zaribo_MK3-320_FW321-576-1_75mm_EINSy10a-E3Dv6full.hex“
    avrdude: ERROR: No valid record found in Intel Hex file „Zaribo_MK3-320_FW321-576-1_75mm_EINSy10a-E3Dv6full.hex“
    avrdude: read from file ‚Zaribo_MK3-320_FW321-576-1_75mm_EINSy10a-E3Dv6full.hex‘ failed

    M├Âglicherweise ist die Datei fehlerhaft oder nicht korrekt heruntergeladen worden. 

Leave a Comment

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