Das Open-Source-Projekt VORON Design bietet dank seines durchdachten Konzepts viel Spielraum für Modifikationen. Standardmäßig laufen Voron 3D-Drucker mit der Firmware Klipper. Eine Alternative dazu sind Duet3D Mainboards mit der Firmware RepRap. Wir haben einen LDO Voron 2.4 R2 RevC auf Duet3D Mainboards mit RRF umgebaut und zeigen in diesem Artikel Schritt für Schritt, worauf es beim Umbau ankommt. Das Duet 3 Mainboard 6HC sowie das Duet 3 Expansion Board 3HC wurden beide bei DOLD Mechatronik gekauft.
Beitragsinhalt
Bei einem Voron setzen sowohl Anbieter von Kits als auch die Nutzer selbst überwiegend auf Mainboards mit der Firmware Klipper. Der größte Unterschied zu anderen Firmwares wie Marlin oder RepRap ist, dass Klipper seine Arbeit auf einen Mini-Computer wie dem Raspberry Pi und dem Drucker-Board verteilt. Der Vorteil bei der Verwendung von Klipper ist, dass man mit dem Raspberry Pi ein Linux System hat, das komfortable Programmiersprachen unterstützt. Zudem sind die Drucker-Boards relativ günstig und bieten gegenüber den Duet3D-Boards den Vorteil, dass die Schrittmotorentreiber einzeln austauschbar sind. Allerdings gibt es auch bei Klipper einige Nachteile wie die Abhängigkeit eines zusätzlichen Rechners wie dem Raspberry Pi. Darüber hinaus gibt es z.B. keine grafische Benutzeroberfläche. Und passende Lösungen sind mit einem höheren Aufwand verbunden.
Wer dennoch seinen Voron umrüsten möchte oder für den Bau seines Vorons ein zuverlässiges 3D-Drucker-Board sucht, der kann zu einem Duet 3 6HC Board in Kombination mit dem Duet 3 3HC Erweiterungsboards greifen. Die Boards setzen auf die RepRapFirmware, laufen standalone ohne zusätzliche Hardware und verfügen über zahlreiche Features. Zudem bietet der Hersteller eine erstklassige und fast lückenlose Dokumentation, in der wirklich alles bis ins kleinste Detail beschrieben ist. Duet3D Boards sind technisch gesehen an vorderster Front und stellen auch für extrem anspruchsvolle Anwendungen viel Leistung bereit. Obwohl als Firmware RepRap vorgesehen ist, unterstützen die neueren Revisionen auf Klipper als Firmware. Zudem gibt es einen dedizierten High-Speed-SPI-Bus für einen Singleboard Rechner (SBC) wie den Raspberry Pi 4. Die beiden Boards können im DOLD Mechatronik Onlineshop erworben werden.
Duet 3 6HC + 3HC Anschluss Diagramm
Bei jeder Modifikation eines 3D-Druckers sollte unbedingt auf eine sorgfältige Arbeitsweise Wert gelegt werden. Insbesondere eine falsche Verkabelung kann die Boards zerstören. Das Anschlussdiagramm der gewählten Revision sollte deshalb stets griffbereit sein. An dieser Stelle sei erwähnt, dass wir keine Haftung oder Gewährleistung für Schäden an Gegenständen und Personen, die durch unsachgemäßen Anschluss entstehen können, übernehmen. Dieser Artikel soll den Einstieg erleichtern und dient als Orientierung für den Umbau der Hardware. Es sind stets die Hinweise des Hersteller zu beachten.
Kabel und Steckverbinder
Es gibt mehrere Varianten von Mainboards, die in einem Voron verbaut werden können. Für die gängigsten Modelle gibt es fertige Kabelbäume. Allerdings beträgt die Wartezeit für kundenspezifische Lösungen mehrere Monate. Zudem müssen neue Kabelbaum mühsam verlegt werden. Wir haben uns für eine einfache, aber effektive Lösung entschieden und zwar für das Crimpen von Adaptern, um den Umbau gegebenenfalls wieder rückgängig zu machen. Als Crimpzangen haben sich die Engineer PA-09 und die PA-21 bewährt. Die PA-21 ist ideal für die JST-VHS Stecker. Für kleinere Stecker wie die JST-XH der Lüfter wird die Engineer PA-09 empfohlen. Damit lassen sich Stecker bis AWG20 crimpen, also bis etwa 0,5mm² Querschnitt.
JST-XH Stecker werden z.B. bei einer AWG20 Litze mit der PA-09 mit 1,9mm gecrimpt. Die Kabelummantelung kann auch noch mit einer PA21 bei 2,2mm gecrimpt werden. JST-VH wird bei AWG20 mit der PA-21 mit 2,2mm für das Backendraht und 2,5mm für die Ummantelung gecrimpt. Eine Tabelle mit Durchmesser und Querschnitt gibt es hier.
Als Kabel kommt ein HELUFLON-FEP-6Y zum Einsatz. Es ist flexibel, extrem temperaturbeständig, flammwidrig und verzinnt. Mit einem Querschnitt von 0.5mm² eignet es sich sehr gut für den universellen Einsatz in einem 3D-Drucker. Für die Würth Elektronik WR-WTB Crimp-Anschlussklemmen vom Duet3 Board ist es zwar minimal überdimensioniert, aber noch gut zu crimpen. Die Anschlussklemmen sind nämlich nur für 22-28AWG zugelassen und die Heluflon Kabel sind AWG20. Da wir unsere Kabel crimpen und löten müssen, sind Lötkenntnisse erforderlich.
Für die Stromversorgung können Lapp Ölflex 180 1,5 bis 2,5mm² verwendet. Dem Duet 3 6HC Board liegen einige Verbinder bei, die Kabel mit bis zu AWG13 / 2.5mm² unterstützen.
Nachdem alle Adapter oder Kabel gecrimpt worden sind, geht es an das Pinout bzw. Diagramm der Hauptplatine, den es gibt einiges zu beachten. Es müssen unter anderem einige Jumper umgesetzt werden, um die gewünschte Spannung an einigen Pins bereitzustellen.
Schrittmotoren
Die Anschlüsse für die Schrittmotoren sowie OUT1, OUT2 und OUT3 sind JST-XH Steckverbinder, für die eine Engineer Crimpzange P21 benötigt wird. Die Anordnung der Schrittmotoren auf dem Duet3 Diagramm ist B- (rot) B+(blau) A-(grün) A+(schwarz). Die JST-XH Stecker der LDO Voron Schrittmotoren (1.8-Ldo-42sth48-2004ac) sind allerdings B+ (blau) B-(rot) A-(grün) A+(schwarz). Die A-Anschlüsse gehören zur Wicklung A, die B-Anschlüsse zur Wicklung B. Die Anschlüsse von A und die von B können untereinander vertauscht werden, führen unter Umständen aber zu einer anderen Drehrichtung. Sollte sich der Schrittmotor in die falsche Richtung drehen, müssen die Kabel spiegelverkehrt gesteckt werden (z.B. blau-rot-grün-schwarz >> schwarz-grün-rot-blau) oder aber mittels Firmware eine Umpolung erfolgen. Es müssen die JST-XH Stecker der LDO Schrittmotoren mit den JST-VH Verbinder verbunden werden. Üblicherweise werden dafür 22AWG Kabel (20AWG oder 0.5mm² empfohlen) verwendet. Wenn die Original NEMA 17 Kabel abgeschnitten und damit gecrimpt werden sollen, kann man auch einfach den abisolierten Teil des Kabels auf sich selbst zurück knicken, um es zu stärken. Die Isolierung wird mit etwas Schrumpfschlauch verstärkt. Für die Crimpstifte wird ein passendes Crimpwerkzeug, zum Beispiel Engineer PA21, benötigt. Verwenden Sie die 2,2-mm-Backenöffnung zum Crimpen des blanken Drahts und die 2,5-mm-Backenöffnung zum Crimpen der Isolierung.
Der Voron 2.4 verfügt über insgesamt 7 Schrittmotoren. Daher wird eines der Schrittmotoren auf dem Duet3 3HC gesteckt. Die beiden Mainboards müssen via CAN Bus miteinander verbunden werden.
Stepper | E0 | A | B | Z0 | Z1 | Z2 | Z3 |
Connector | Driver 0 | Driver 4 | Driver 5 | Driver 0 | Driver 1 | Driver 2 | Driver 3 |
Mainboard | 3HC | 6HC | 6HC | 6HC | 6HC | 6HC | 6HC |
Endschalter
Als nächstes werden die Endschalter an das Duet 3 Mainboard angeschlossen. Auf dem 6HC sind dafür mehrere Output Anschlüsse vorgesehen, wobei IO_0
für das Panel Due Display reserviert ist.
IO_1
und IO_2
können für die Entstops X/Y verwendet. Belegt werden die Pins GND
und io1.in
sowie GND
und io2.in
. Für den Z-Endstop, der hinter dem Druckbett sitzt, kann IO_3
mit GND/io3.in
verwendet werden. Hier ist allerdings darauf zu achten, dass die Position des Z-Endstops korrekt in die Firmware eingepflegt wird. Es gibt noch ein weiteres Kabel mit der Bezeichnung ABL. Hierbei handelt es sich um die Z-Probe wie einen Omron Sensor oder Klicky. Dieser Switch wird ebenfalls an einem IO-Port angeschlossen und mittels M558
Befehl (z.B. M558 P4 C"0.io2.in" IO ...
) konfiguriert.
Endstop (Label) | X (XES) | Y (YES) | Z (STOP) | ABL (Z-Probe) |
Connector | GND/io1.in | GND/io2.in | GND/io3.in | GND/io4.in |
Mainboard | 6HC | 6HC | 6HC | 6HC |
Lüfter
Bevor die Heizelemente angeschlossen werden, sollten die Lüfter alle mit dem Mainboard verbunden werden. Dazu gibt es mehrere Möglichkeiten, die abhängig von der Lüfterleistung sind. Zudem sollte man die Versorgungsspannung der Lüfter überprüfen. Das Bigtree Octopus Board hat alle Jumper für die Lüfteransteuerung auf 24V gelegt. Eine Überprüfung der Lüfter auf deren Rückseite bestätigt, dass es sich um 24V Lüfter handelt. Das ist vor allem für den Part Cooling Fan Lüfter sowie für den Heater Lüfter wichtig, denn die von LDO bereitgestellten Stecker haben nur eine GND-Anschluss Richtung Mainboard. Die Spannungsversorgung für den Heater- und Part-Cooling-Fan wird auf dem PCB über den Hotend Heater bezogen. Wenn die Heizpatrone mit 24V betrieben wird, müssen auch die Lüfter für 24V aufgelegt sein. Der Pluspol für die Lüfter entfällt demnach zwischen Mainboard und PCB. Wird beispielsweise beim Duet 3 6HC eine Spannung von 24V an OUT 0 POWER IN
angelegt, liegt diese Spannung auch an OUT 1
. Dort wird das Heater Hotend Kabel angeschlossen, das dann in Richtung PCB geht. Hier ist dieser Pluspol mit den Pluspolen der Lüfter verknüpft. Die Spannung wird dann weiter über den Kabelbaum an die Lüfter und den Heater Hotend weitergegeben. Da auf dem PCB der Pluspol vom Heater Hotend mit dem der beiden Lüfter HET und PCF verknüpft ist, benötigt man zwischen PCB und Duet 3 6HC Board nur nach den GND-Anschluss.
Das Duet 3 6HC stellt Niederstromausgänge (OUT4-6, OUT7-9) zur Verfügung. Diese können separat ausgewählt werden, um entweder über VIN oder intern generierte 12 V mit Strom versorgt zu werden. Die Gesamtstromaufnahme des 12-V-Lüfters darf 800 mA nicht überschreiten. OUT4-6 sind für PWM-Lüfter ausgelegt. Mittels Jumper kann die Spannung eingestellt werden. Hier ist auf eine korrekte Polung zu achten. Dazu stets das Anschlussdiagramm der Hersteller heranziehen.
Am besten misst man entsprechend der Jumptereinstellung die Anschlüsse mit einem Multimeter durch und zwar nicht nur die Spannung, sondern auch die Lage von Plus und Minus, um die Anschlüsse nicht zu vertauschen! OUT7-9 sind ebenfalls für Lüfter vorgesehen. Wenn sie über VIN mit Spannung versorgt werden, stellen diese maximal je 2A bereit. Auch hier erfolgt das Einstellen der Versorgungsspannung über einen Jumper. OUT1-3 sind für Extruder Heizelemente oder große Lüfter vorgesehen. Die PCB Lüfter können an VFUSED angeschlossen werden, um ständig zu laufen. Wer das nicht möchte, kann es auch an OUT9 anschließen und abhängig von der Temperatur darüber steuern.
Fan (Label) | PCB (PCB FAN) | Filter (FILTER FAN) | Part Fan (PCF) | Hotend Fan (HEF) | Nevermoore |
Connector |
OUT9 |
Out6 | OUT8 | OUT7 | Out7 |
Mainboard | 6HC | 3HC | 6HC | 6HC | 3HC |
Heizelemente und Thermistoren
Für die Extruder Heizpatrone (Extruder Heater) sind die Anschlüsse OUT1-3 vorgesehen. Diese eignen sich auch für Lüfter und stellen je 6A bereit. Beim Thermistor und beim Heizelement ist eine Verpolung trivial, da die Anschlüsse auch vertauscht werden können.
Therm. / Heater (Label) | Hotend Therm. | Bed Therm. | Hotend Heater | Bed Heater (siehe SSR unten) |
Connector | TEMP 0 | TEMP 1 | OUT 1 | OUT 0 |
Mainboard | 6HC | 6HC | 6HC | 6HC |
CAN BUS Kommunikation
Das Duet 3 verwendet den CAN-FD Bus. Die Boards 6HC und 3HC können mit einem RJ11 Kabel miteinander verbunden werden. Das 3HC Erweiterungsboard verfügt über zwei CAN Bus Anschlüsse. Wenn das 3HC ohne weitere Erweiterungsboards am Ende der Kette steht, wird nur ein RJ11 Anschluss verwendet und der andere bleibt frei. Parallel dazu mussen die Termination-Jumper gesetzt werden. Wenn beide RJ11 Anschlüsse für die Verbindung mehrerer Boards genutzt werden, dürfen die Termination-Jumper nicht gesetzt sein.
Bei Duet 3 hat jedes Board eine CAN Adresse, um es zu erreichen. Die Adresse der Mainboards wie dem Duet 3 6HC ist stets 0. Die der Erweiterungsboards ist einmalig und im Bereich von 0 bis 126. Die CAN Adresse des Duet 3 3HC kann individuell festgelegt werden. Dazu werden die Adressen von 1 bis 15 beim verwendet. Eingestellt wird das über eine 4-DIP Switch. Demnach sind das 4 Schalter, also 4² Zustände bzw. 16 Möglichkeiten.
1 | 2 | 3 | 4 | Address |
---|---|---|---|---|
off | off | off | off | 126 (board requests firmware on startup) |
on | off | off | off | 1 |
off | on | off | off | 2 |
on | on | off | off | 3 |
off | off | on | off | 4 |
on | off | on | off | 5 |
off | on | on | off | 6 |
on | on | on | off | 7 |
off | off | off | on | 8 |
on | off | off | on | 9 |
off | on | off | on | 10 |
on | on | off | on | 11 |
off | off | on | on | 12 |
on | off | on | on | 13 |
off | on | on | on | 14 |
on | on | on | on | 15 |
Um einen Schrittmotor oder einen Lüfter am Erweiterungsboard 3HC zu konfigurieren, wird die CAN Adresse als Teil des Pinnamen im Gcode verwendet. Das Pinnamenformat ist “expansion-board-address.pin-name“, wobei die Adresse der Erweiterungsboard die numerische CAN Adresse der Erweiterungskarte ist.
Beispiele:
M569 P122.0 S1 ; configure driver 0 at CAN address 122 to go forwards
M308 S5 Y"thermistor" P"120.temp0" ; configure sensor 5 to use the temp0 pin at CAN address 120
Wird keine CAN-Adresse angegeben, geht die Firmware davon aus, dass sich der Stecker/Pin, der konfiguriert wurde, auf dem Mainboard befindet. Das Mainboard ist immer als CAN-Adresse 0 konfiguriert.
In unserem Fall sind bis auf einen Schrittmotor alle Motoren an der Hauptplatine angeschlossen. E0 ist an 3HC (CAN Adresse 1) angeschlossen und A/B sowie Z0-Z3 an 6HC (CAN Adresse 0).
; Drives
M569 P0.0 S1 ; physical drive 0.0 goes forwards Z0
...
M569 P1.0 S1 ; physical drive 1.0 goes forwards E0 to CANBUS
; Axes
M584 X0.5 Y0.4 Z0.0:0.1:0.2:0.3 E1.0 ; Drive mapping
Beim Gcode ist es wichtig zu wissen, dass bei dem Befehl M569
Parameter Px für die Motortreibernummer steht. Weitere Details dazu gibt es hier.
Spannungsversorgung Mainboard/Heizbett
Für die Spannungsversorgung können Kabel mit einem Querschnitt von 1,5 bis 2,5mm² verwendet werden. Die beiliegenden Kabelschuhe sind bis 2,5mm² zulässig. Da der LDO Voron 2.4 zusätzlich ein Solid State Relay (SSR) verwendet, möchten wir das auch weiterhin fortführen. Dazu werden die SSR Control Terminals an die Duet 3 6HC Bed heater terminals angeschlossen. Man beachte die unterschiedliche Anordnung der Polarität bei den Anschlüssen! Das Erweiterungsboard 3HC muss ebenfalls mit 24V vom Netzteil versorgt werden.
Device | PSU 24V | PSU 24V | Heated bed SSR |
Connector | POWER IN | OUT 0 (POWER IN) | OUT 0 |
Mainboard | 6HC | 6HC | 6HC |
POWER IN
ist für die Spannungsversorgung vorgesehen. OUT 0 POWER IN
benötigt ebenfalls 24V, um die Terminals OUT1-OUT3 zu versorgen. OUT 0
ist als Ausgang eingerichtet und für das Heizbett vorgesehen. Man beachte die Hinweise von Duet3D bezüglich der Polarität bei Verwendung eines SSR. Weiterführende Anleitungen gibt es hier.
PanelDue
Das PanelDue verfügt über einen 4-Pin Anschluss, der nicht auf den 5-Pin Konnektor des Duet 3 6HC passt. Die Kontakte müssen daher aus dem Stecker herausgezogen und entsprechend dem Duet 3 6HC Anschlussdiagramm neu angeordnet werden. Untenstehendes Bild zeigt die richtige Anordnung, wobei stets das passende Anschlussdiagramm hinzugezogen werden sollte.
Mit dem Befehl M575 P1 S1 B57600
wird das PanelDue in der config.g aktiviert. Beim M757-Befehl spezifiziert P1 einen seriellen Port wie den für das PanelDue, also IO 0
. P0 wäre bei dem Befehl M575 falsch, da dieser Parameter hier ein serielles Interface wie USB spezifiziert. Mehr dazu gibt es unter Connecting a PanelDue | Duet3D Documentation.
Erster Start mit Ethernet / WIFI
Der erste Start bzw. die Kommunikation der Duet 3 Boards erfolgt üblicherweise via Ethernet. Dazu wird das Duet 3 6HC Board über ein RJ45 Kabel mit einem Rechner verbunden und einige Einstellungen am Rechner vorgenommen werden, die hier sehr gut beschrieben sind.
Mit einem zusätzlichen WIFI Modul für das Duet 3 6HC Board kann auch eine drahtlose Verbindung hergestellt werden. Dazu gibt es ebenfalls eine sehr gute Anleitung. Das WIFI Modul ist allerdings nur mit Boards ab v1.02 sowie der RRF 3.5b kompatibel. Zudem muss dafür eine DuetWIFIServer_32S3 Firmware aufgespielt werden, was sehr einfach und gut beschrieben ist. Da das 6HC Ethernet als erste Konfiguration nutzt, muss zu jedem M552 Befehl der Zusatz “I1
” erfolgen, damit die Firmware weiß, dass es sich um ein zusätzliches Modul handelt.
RepRap Firmware Konfiguration
Bevor die RepRap Firmware konfiguriert werden kann, muss sichergestellt sein, dass die aktuellste Firmware installiert ist. Wenn später beispielsweise ein Schrittmotor, der am Duet 3HC angeschlossen ist, nicht funktionieren sollte, könnte das verschiedene Ursachen haben. Zum einen muss die CAN Adresse passen und zum anderen sollte das Mapping korrekt gesetzt sein. Die Kommunikation lässt sich auch mittels Kommandos testen. Wenn alle Möglichkeiten ausgeschlossen werden können, bleibt nur noch die Firmware. Sind die Firmware Versionen auf dem Mainboard und dem Extensionboard nicht identisch, kommt es zu Fehlern in der Synchronisation. Das kann dazu führen, dass z.B. die Motoren am Duet 3HC nicht korrekt angesteuert werden. In unserem Fall lag es genau daran. Weitere Infos dazu gibt es hier.
Für die Konfiguration der Software sollte viel Zeit eingeplant werden. Dazu gibt es von Duet einen Online Konfigurator, der allerdings mit Vorsicht zu genießen ist. Wir haben danach mithilfe der Duet3D-Dokumentation alles überarbeitet und Befehle größtenteils zusammengefasst oder Parameter optimiert. Alternativ können die einzelnen Befehle auch aus der Dokumentation von Duet3D abgeleitet und die config.g von Grund ohne Konfigurator aufgebaut werden.
Beim Maschinencode ist es wichtig zu wissen, dass jeder Befehl anders aufgebaut ist. Beim Befehl M950
steht Pnn oder Snn für die Pin-Nummer. Jeder M950
Befehl muss ein H, F, J, P, S, D oder E Parameter enthalten. Je nach dem was angeschlossen wird. Dazu hier mehr Informationen. Der Pinname wird mit dem Parameter C”” angegeben. Beinhaltet das Kommando zusätzlich zum Pnn oder Snn Parameter auch noch ein C oder Q Parameter, wird die Pin-Belegung entsprechend konfiguriert. Beim Befehl M308
steht P”” für den Pinnamen.
Mit den Ports verhält es sich ähnlich. Während z.B. GPIO Ports wie OUT 0
mit dem Befehl M950
erstellt und mit M42
angesteuert werden, geschieht das bei den Lüfteranschlüssen mit M950
und M106
.
Es gibt noch viele weitere Befehle wie M575
, bei dem z.B. P1 einen seriellen Port wie den für das PanelDue (IO_0
) spezifiziert. P0 wäre in diesem Fall falsch, da dieser Parameter hier ein serielles Interface wie USB spezifiziert. Der P-Parameter wird bei M575
ganz anders als z.B. bei M950
verwendet.
Identische Parameter haben je nach Befehl unterschiedliche Funktionsweisen. Die Duet Dokumentation ist daher die erste Anlaufstelle.
Basiskonfiguration
Wenn bereits eine Verbindung zum Duet 3 Mainboard besteht, kann die config.g über den Webbrowser geöffnet und um weitere Befehle erweitert werden. Spezifische Angaben zu Schrittmotoren, Extruder, Microstepping, Gear-Ratio oder Thermistoren können der LDO Voron 2.4 Konfigurationsdatei entnommen werden.
Die Basis dazu bilden allgemeine Einstellungen wie Druckername, Netzwerkanbindung, CAN-Bus Erweiterung oder LED Beleuchtung. Als Kinematiktyp wird “CoreXY” ausgewählt.
; General preferences
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"Voron 2.4" ; set printer name
M669 K1 ; select CoreXY mode
; Enable network
M552 I1 S1 ;enable WIFI
if {network.interfaces[0].type = "ethernet"}
M552 P192.168.2.1 S1 ; IP address
M553 P255.255.255.0 ; Subnet mask
else
M552 I1 S1
;Enable PanelDue
M575 P1 S1 B57600
; LED Strips
M950 E0 C"led" T2 Q3000000 ; create a RGB Neopixel LED strip on the LED port and set SPI frequency to 3MH
M150 E0 R0 U0 B255 P255 S1 F1 ; display led blue
M150 E0 R255 U0 B0 P255 S1 F1 ; left encoder led red
M150 E0 R0 U255 B0 P255 S1 F0 ; right encoder led green
M950 P1.0 C"1.out0" Q500 ; allocate GPIO port 0 to electronics fan on expansion connector, 500Hz
M42 P1.0 S0.5 ; set 50% PWM on GPIO port 0
Schrittmotoren
Danach folgen die Parameter für die Schrittmotoren. Um das Gantry nach oben oder nach unten zu bewegen, müssen die Schrittmotoren paarweise in unterschiedliche Richtungen drehen. Wenn sich die Schrittmotoren Z0 und Z3 in eine Richtung drehen, müssen sich Z1 und Z2 in die andere Richtung bewegen. Das liegt daran, dass die Motorpaare gespiegelt montiert sind.
; Drives
M569 P0.0 S1 ; physical drive 0.0 goes forwards Z0
M569 P0.1 S0 ; physical drive 0.1 goes backwards Z1
M569 P0.2 S1 ; physical drive 0.2 goes forwards Z2
M569 P0.3 S0 ; physical drive 0.3 goes backwards Z3
M569 P0.4 S1 ; physical drive 0.4 goes forwards A
M569 P0.5 S1 ; physical drive 0.5 goes forwards B
M569 P1.0 S1 ; physical drive 1.0 goes forwards E0 to CANBUS
; Axes
M584 X0.5 Y0.4 Z0.0:0.1:0.2:0.3 E1.0 ; Drive mapping
Zu den Einstellungen gehören auch die der Achsen wie Microstepping, maximale Geschwindigkeit und Beschleunigung sowie die Extrudereinstellungen. Anschließend können die Schrittmotoren auf ihre Funktion hin getestet werden. Bewegen sich diese in die falsche Richtung, kann eine Invertierung erfolgen (S0 statt S1 oder S1 statt S0). Bei den Schrittmotor-Parametern ist einiges zu beachten. Der Motorstrom sollte beispielsweise nicht mehr als 60-85% des tatsächlichen Maximalstroms betragen, da die Motoren je nach Stromhöhe entweder zu wenig Drehmoment erzeugen oder zu heiß werden. Die 0.9° Ldo-42sth48-2004ac haben einen maximalen Strom von 2A. Wenn dieser Wert mit 0.707 multipliziert wird, erhält man den Strom in RMS. Das ist der maximale Strom, bei dem die Schrittmotoren betrieben werden dürfen. In unserem Beispiel sind das 1400mA. Der Haltestrom ergibt sich aus 2A*0,707*0.6=850A. Der 1.8° Extruder Motor (LDO-36STH20-1004AHG(VRN)) hat lediglich 1A, weshalb maximal 700mA nutzbar sind. Mit rund 350-400mA sind wir gut bedient. Auch wichtig zu wissen ist, dass sich bei den vier Z-Motoren für den Paramter Steps per mm
der Wert 400 statt 320 ergibt. Ein 16T Pulley ist mit einem 80T Pulley gekoppelt, wodurch sich für den Zahnriemen eine 80:16 gear ratio ergibt.
M350 X32 Y32 Z16 E32 I1
M92 X320.00 Y320.00 Z400.00 E1397 ; configure steps per mm; for Z -> 400 because different ratio
In unserem Fall haben wir für Z versehentlich 32 eingetragen, da wir von 0.9° Schrittmotoren ausgegangen sind. Die Z-Motoren haben allerdings nur 1.8°, also 200 Steps. Demnach ist Z16 korrekt. Wird der Wert von Z32 auf Z16 geändert, muss auch der Abstand zwischen Druckdüse und Druckbett um die Hälfte vergrößert werden. Also z.B. von Z10 auf Z5.0.
G31 K0 P500 X0.0 Y18.0 Z5.48
In der config.g reicht es aus, einen ausreichend großen Z-Offset anzugeben und sich bei Druck der ersten Schicht langsam an einen optimalen Abstand zwischen Düse und Druckbett heranzutasten. Kleine Werte vergrößern den Abstand zwischen Druckbett und Druckdüse. Mit Z0.00 hat man demnach mehr Spielraum, um den Abstand mittels Babysteps anzupassen.
Ein weiterer wichtiger Parameter, der in die config.g nachträglich eingebaut werden kann, ist die Mesh Bed Compensation.
Endschalter und Klicky Probe
Die Endschalter sind für eine korrekte Funktionsweise essentiell. Sind diese eingestellt, kann deren Funktionsweise in der Konsole mit dem Befehl M119
überprüft werden. Danach erfolgt die Einrichtung einer Z-Probe wie Klicky. Die Einrichtung ist zwar identisch zu den Entstops, allerdings mit einigen Kniffen verbunden. Makros dazu gibt es auf Github oder hier. Entweder übernimmt man die dort bereitgestellten Daten und passt diese an die eigenen Bedürfnisse an oder man greift nur auf die relevanten Daten zu. Sobald die config.g generiert oder überarbeitet worden ist, gilt es die korrekte XY-Position des Z-Endstops zu setzen. Das ist deshalb so wichtig, weil der 3D-Druckkopf die exakten XYZ-Koordinaten für die Klicky-Mod benötigt. Das XYZ-Homing sollte deshalb als allerersten getestet werden. Dazu führt man zunächst ein XY-Homing durch und ermittelt dann durch schrittweises bewegen des Extruders, an welchen Koordinaten der Z-Endstop liegt. Diese trägt man dann je nach Struktur in die homez.g ein.
Für Klicky kann man sich aus dem ersten Github-Link die relevanten Datein herunterladen und in das eigene Projekt einbinden. Diese sind loadclicky.g und unloadclicky.g. Eine Implementierung von Auto-Z ist ebenfalls verfügbar.
Für Klicky erstellt man sich im Macro-Verzeichnis ein Verzeichnis namens Klicky. Als Unterverzeichnisse werden “zprobe” und “moveto” angelegt. loadclicky.g und unloadclicky.g sowie clicky_status.g müssen sich unter /zprobe befinden. Unter moveto befinden sich clickstage.g sowie hominghopup.g. Nun werden folgende Verknüpfungen in die /sys/homez.g gesetzt:
if !move.axes[0].homed || !move.axes[1].homed ; If the printer hasn't been homed, home it
G28 XY ; home y and x
M98 P"/macros/Klicky/zprobe/clicky_status.g"
if global.clicky_status = "docked"
M98 P"/macros/Klicky/zprobe/loadclicky.g"
G91 ; relative positioning
G1 H2 Z10 F6000 ; lift Z relative to current position
G90 ; absolute positioning
G1 X{(move.axes[0].min + move.axes[0].max)/2 - sensors.probes[0].offsets[0]} Y{(move.axes[1].min + move.axes[1].max)/2 - sensors.probes[0].offsets[1]} F3600 ; Move to the centre of the bed taking the zprobe offsets into account
M558 K0 H5 ; Set the dive height for the probe to 5mm
G30 ; probe the bed
;G92 Z13 ; override z coordinate
G1 X41.50 ; Move after homez to X Position to easier unklicky the probe
M98 P"/macros/Klicky/zprobe/unloadclicky.g"
Die Basiskonfiguration von Klicky passiert in der klicky-autoZ-config.g. Dort werden die Positionen für das Andocken festgelegt. Es gibt bereits einige User, die das erfolgreich umgesetzt haben wie hier.
Für AutoZ muss der Z-Endstop mit der Klicky Probe betätigt werden. Nun fragen sich einige, wofür AutoZ gut sein soll. Normalerweise können wir den Z-Offset in der config.g großzügig festlegen und während dem Druck mit den Babysteps verfeinern. Beim Homing Z wird die Klicky Probe aufgenommen und damit das Druckbett abgefahren. Der Z-Endschalter bleibt davon unberührt. AutoZ bringt nun den Vorteil, dass der Z-Endschalter zunächst mit der Nozzle und anschließend mit der Klicky Probe angefahren wird. Es wäre daher nicht verkehrt, die Druckdüse vorher kurz aufzuheizen und zu reinigen, damit das Ergebnis nicht verfälscht wird.
Die genaue Position kann festgelegt werden, denn sowohl die Nozzle als auch die Klicky Probe müssen den Z-Endschalter exakt anfahren und berühren. Danach wird mit der Klicky Probe das Druckbett abgetastet. Die Software übernimmt dabei die Berechnung des exakten Z-Offsets. Das bedeutet, dass AutoZ nur dann ausgeführt wird, wenn z.B. eine neue Düse montiert wird oder mit höheren Temperaturen gedruckt werden soll. Das Feintuning mit den Babysteps ist optional natürlich möglich.
Bed Leveling
Insbesondere das Gantry Leveling hängt von der Klicky Probe ab. An dieser Stelle würde es den Umfang dieses Artikels übersteigen, zu tief in die Materie einzutauchen. Daher stellen wir unsere Konfigurationsdateien auf Anfrage gerne zur Verfügung.
M671 X-60:-60:360:360 Y-10:370:370:-10 S20
Heater und Thermistor
Wenn die mechanische Funktionsweise gegeben ist, erfolgt die Einrichtung der Heater und Thermistoren. Laut LDO-Konfiguration werden für Extruder und Heizbett Sensoren vom Typ ATC Semitec 104NT-4-R025H42G verwendet. Für diesen 300 °C Thermistor können korrekte Konfigurationsparameter über die Temperatur und dem dazugehörigen Widerstand ermittelt werden.
M308 S0 P"temp1" Y"thermistor" A"Heated Bed" T100000 B4658 C6.455513e-8 ; configure sensor #0
M308 S1 P"temp0" Y"thermistor" A"Nozzle" T100000 B4680 C6.455513e-8 ; configure sensor #1
Nun müssen nur noch die Modelparameter für die Sensortypen gesetzt werden. Das geschieht entweder automatisch über das PID Tuning oder manuell. Eine Anleitung dazu gibt es hier.
Lüfter
Es gibt mehrere Lüfter, die zu konfigurieren sind. Die Lüfter werden wie folgt angesteuert:
; Fans
M950 F0 C"out7" Q500 ; create fan 0 on pin out7 and set its frequency
M106 P0 S1 H1 T50 ; set fan 0 value. Thermostatic control is turned on for H1-PIN
M950 F1 C"out8" Q500 ; create fan 1 on pin out8 and set its frequency
M106 P1 S0 H-1 ; set fan 1 value. Thermostatic control is turned off
;M950 F2 C"fout9" ; create fan 2 on pin out9 and set its frequency
;M106 P2 S0.3 B0.1 H0 T25
M308 S3 Y"mcu-temp" A"MCU" ; configure sensor 3 as on-chip MCU temperature sensor
M950 F2 C"out9" Q100 ; create fan 2 on pin out9 and set its frequency
M106 P2 H3 T30:70 ; set fan 35-70° - increase by temperature
Neopixel WRGB und 24V LED
Für die Adafruit Neopixel LEDs gibt es beim LDO Voron 2.4 lediglich 2 Leitungen, die vom PCB aus zur Verfügung gestellt werden. Das sind 5V und die Datenleitung D0. Die GND Leitung ist bereits an dem Extruder PCB angeschlossen. Am Duet 3 6HC gibt es einen 4-Pin-Konnektor mit der Bezeichnung DS_LED
, der genau dafür vorgesehen ist. Neopixel wird mit 5V
und DS_D0
verbunden. Die Ansteuerung erfolgt mit folgendem Befehl:
M950 E0 C"led" T1 Q3000000 ; create a RGB Neopixel LED strip on the LED port and set SPI frequency to 3MHz
Farbwechsel sind mit entsprechendem Paramter möglich, allerdings nicht in Echtzeit, sondern erst nach einem Neustart. Weitere Informationen dazu gibt es unter Neopixel and DotStar LEDs | Duet3D Documentation.
Für den 24V-LED Streifen vom Gehäuse können wir die Anschlüsse nutzen, die für die Heater vorgesehen sind. Wir haben uns für out1 auf dem Duet 3HC Erweiterungsboard entschieden. Eine gute Anlaufstelle dafür ist Controlling IO pins | Duet3D Documentation. An den Pins liegt im undefinierten Zustand keine Spannung von 24V an. Die GPIO Ports werden mit M950
erstellt und mit M42
oder M280
kontrolliert.
M950 P0 C"1.out0"; allocate GPIO port 0 to 24V led on 3HC board
M42 P0 S0.5 ; set 50% PWM on GPIO port 0
Über den Parameter Pnn
greift M42
auf die Portnummer zu.
Tuning
Das Tuning ist das A und O. Wenn das XYZ Homing und Klicky sowie AutoZ ohne Fehler ausgeführt werden können, sind Quad Gantry Leveling und Mesh Bed Compensation an der Reihe. Danach folgt das PID Tuning für Extruder und Heizbett.
- Homing XYZ
- Quad Gantry Levelingt
G32
- Mesh bed compensation
G29 S0
(beim Druck wird eine Map mitG29 S1
geladen und mitG29 S2
gestoppt) - PID Auto Tuning Extruder
M303 H1 S230
- Die Parameter können mit M500 gespeichert werden bzw. die config-override erstellt werden.
- AutoZ
M98 P"Autoz.g"
Nun wird nur noch der Extruder selbst kalibriert und die Dateien wie start.g oder print.g angepasst, denn diese sind beim Slicen essentiell und werden vom generierten Gcode abgerufen. Hier kann man keine genaue Anleitung geben, da jeder eine andere Konfiguration hat. Wir arbeiten beispielsweise ohne Filamentsensor.
Es gibt noch einige Puzzleteile wie das Generieren von Macros zum Laden und Entladen von Filament oder ähnliches, damit das Ganze funktioniert. Wir haben uns das von anderen Projekten wie dem CaribouDuet 320 kopiert und angepasst.
Beim Erstellen der start.g Datei sollte man unbedingt darauf achten, dass wichtige Schritte wie das Homing oder das Gantry Leveling nicht ausgelassen werden. Die Frage bleibt dann in welcher Reihenfolge das geschieht.
Eine Möglichkeit könnte wie folgt aussehen:
- Daten vom Slicer generierten Code abfragen wie Heizbetttemperatur
- Homing XYZ
- Absolut Position
- Clear mesh bed
- Part Fan on
- Check Bed temperature
- Nevermoore aktivieren, wenn gewünscht
- Geht zum Mittelpunkt des Druckbetts
- Setze Zieltemperatur Heizbett
- Kurz warten, bis Umgebung auch warm wird
- Nozzle auf 170°C vorheizen
- Quad Gantry Leveling
- Home Z again after Quad Gantry Leveling
- Kalibriere Z Offset mit Klicky
- Start bed mesh
- Nozzle auf Ziletermperatur heizen
- Purge Line
Den Gcode dazu kann man größtenteils im Slicer verlagern. Wir nutzen dazu ein im PrusaSlicer enthaltenes Voron Profil, das wir angepasst haben. Es gibt einige Punkte, die unbedingt eingehalten werden müssen.
Der Startcode wird unter Druckereinstellungen/Benutzerdefinierter G-Code eingetragen:
G28 W ; home all without mesh bed level
G90 ; use absolute coordinates
M83 ; extruder relative mode
G0 X60 Y-3 Z80 ; move extruder above bed, keep extruder in front for cleaning and checking
M104 S160 T0; pre-heat extruder to 160C
M140 S[first_layer_bed_temperature] ; set bed temp
M190 S[first_layer_bed_temperature] ; wait for bed temp
;G29 ; mesh bed leveling using defined mesh grid
G0 X0 Y-3 Z10.6 ; go outside print area
M104 S[first_layer_temperature] ; set extruder temp
M109 S[first_layer_temperature] ; wait for extruder temp
M98 P"0:/sys/primeLine.g"; execute primeline macro
G92 E0.0
M572 D0 S0.07 ; set pressure advance
Erster Druck
Nachdem der Startcode im Slicer oder in der start.g erstellt wurde, erfolgt der erste Test. Es muss sichergestellt sein, dass Homing Z und die Z Probe (z.B. Klicky) funktionieren. Der entscheidende Parameter, um eine Kollision der Nozzle mit dem Druckbett zu vermeiden, ist der Z-Offset. Es gibt einen guten Ratgeber, wobei wir einen anderen Weg gewählt haben.
Zunächst einmal muss sichergestellt sein, dass in der klicky-autoZ-config.g folgende Zeile angepasst wird:
;global clickyoffset = 0.46 ; larger values here means nozzle closer to the bed after autoz
Hierbei handelt es sich um den Abstand zwischen Z-Proben-Gehäuse wie das von Klicky und dem Punkt des Endschalters, bei dem getriggert wird. Der Endschalterweg beträgt in unserem Fall rund 0,46mm. Der Offset des Schalters von 0,46mm beeinflusst übrigens auch den Z-Offset. Wenn also der Offset des Endschalters erhöht wird, muss gleichzeitig der Z-Offset verringert werden. Nun muss nur noch der Z-Offset gesetzt werden. Diesen kann man entweder ermitteln oder sich schrittweise daran herantasten. Größere Werte bedeutet, dass die Nozzle näher an das Druckbett verfährt. Der Befehl dazu ist G31
. Folgende Zeile kann in die config.g eingebaut werden, wobei der Z-Offset für jeden 3D-Drucker unterschiedlich sein kann:
G31 K0 P500 X0.0 Y18.0 Z4.00
Nach einem Neustart kann der erste 3D-Druck erfolgen. Ist die Nozzle zu hoch, kann der Abstand zwischen Nozzle und Druckbett mittels Babysteps verringert werden. Ist der Abstand extrem groß, sollte der Z-Offset direkt in der config.g erhöht und das Board neu gestartet werden. Bei LDO Voron 2.4 R2 Revc sind das etwas mehr als 10mm:
G31 K0 P500 X0.0 Y18.0 Z10.795
Das Finetuning des Z-Adjustments kann mittels Babysteps erfolgen. Aber Vorsicht, denn wenn die Nozzle zu weit vom Druckbett entfernt ist und man die Babysteps extrem verringert, erscheint möglicherweise folgende Fehlermeldung:
G1: intermediate position outside machine limits
Hier gilt es also den Wert im G31
Paramter bestmöglich anzupassen. Ein weiterer wichtiger Punkt ist die Mesh Bed Compensation. Mit folgendem Befehl wird diese ausgeführt (z.B. im Slicer Code):
;G29 ; mesh bed leveling using defined mesh grid
Die Werte werden nach dem Ausführen gespeichert. Im Slicer Code wird dann nur noch G29 S1
eingebaut, um die gespeicherten Daten abzurufen bzw. zu laden. Wenn die Mesh bed compensation deaktiviert und die erste Schicht kalibriert ist, muss bei aktivierter Mesh bed compensation die erste Schicht etwas angepasst werden.
Fazit
Das LDO Voron 2.4 R2 RevC Kit gehört zu den wenigen Bausätzen, die alle Komponenten für den Bau eines Vorons beinhalten. Einziger Nachteil ist, dass hier ein Mainboard in Kombination mit einem Raspberry Pi und Klipper Firmware zum Einsatz kommt. Wer seinen Voron lediglich mit einem Mainboard und RepRapFirmware betreiben möchte, sollte zu einem qualitativ hochwertigen Duet 3 Mainboard greifen. Die Kombination Duet 3 6HC + 3 HC ist extrem leistungsstark und mit zahlreichen Features ausgestattet. Darüber hinaus lässt sich darauf auch Klipper installieren. Dennoch gibt es zwischen den Mainboards, was das 3D-Druckergebnis angeht, keinen großen Unterschied. Beide Varianten leisten extrem gute Arbeit. Dennoch ist das Duet 3 Board ganz klar im Vorteil, da da kein weiterer Rechner für komplexe Berechnungen zum Einsatz kommen muss und die Boards aufgrund der Leistung zukunftssicher sind. Ein weiterer Vorteil ist die lückenlose und gut verständliche Duet Dokumentation. Ein Umbau lohn sich auf lange Sicht gesehen auf alle Fälle.