Normalerweise wird bei den meisten RepRap Druckern die beiden Z-Achsen Schrittmotoren über eine Y-Verkabelung durch einen Schrittmotor Treiber angesteuert. Wenn jedoch ein freier Treiber auf dem Board vorhanden ist, kann dieser als eigener Treiber für den zweiten Schrittmotor genutzt werden.
Warum denn die Z-Achsen Motoren getrennt ansteuern?
Normalerweise findet man den meisten Verdrahtungs Schemata für RepRap 3D Drucker, dass die beiden Z-Achsen Schrittmotoren mit demselben Treiberboard angesteuert werden. Dazu werden einfach beide Motoren parallel mit den Anschluß-Pins auf dem Controller-Board in einer Y-Schaltung verbunden.
Der Vorteil dieser Ansteuerung ist, dass beide Motore mit denselben Impulsen angesteuert werden und damit auf jeden Fall synchron laufen.
Der Nachteil jedoch ist, dass sich durch die Parallelschaltung der Strom pro Motor halbiert wird. Der Treiber liefert ja immer noch den selben maximalen Strom. Bei Schrittmotoren ist aber das Drehmoment und Haltemoment abhängig vom Spulenstrom. Dementsprechend liefert jeder der Schrittmotor nun ein geringeres Drehmoment.
Wie wird denn jetzt der Dualdriver aktiviert?
Anpassung der Verkabelung
Zuerst einmal muss die Verkabelung entsprechend angepasst werden. Dazu wird der zweite Z-Achsen Schrittmotor auf eine freien Treiber Ausgang gelegt. Im folgenden Bild am Beispiel eines RepRap RUMBA Boards ist dies der E2 (Extruder 3) Anschluss.
Anpassung in der Datei "configuration_adv.h"
Damit der Dual Driver Modus aktiviert wird, muss in der Datei "configuration_adv.h" die Zeile "#define Z_DUAL_STEPPER_DRIVERS" aktiviert werden, indem die beiden "//" gelöscht werden.
// A single Z stepper driver is usually used to drive 2 stepper motors.
// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
#define Z_DUAL_STEPPER_DRIVERS
#ifdef Z_DUAL_STEPPER_DRIVERS
#undef EXTRUDERS
#define EXTRUDERS 1
#endif
Anpassung in der Datei "pins.h" für das RUMBA Board
Je nach eingesetztem Board und freiem Extruder Treiber muss in der "pins.h" die entsprechenden Ausgänge auf den 2ten Z-Achsen Treiber gelegt werden. Hier die Konfiguration für das RUMBA Board und obigen Abbildung verwendeten Treiber für E2, dazu erst den Anfang der Definition für das RUMBA Board suchen:
/****************************************************************************************
* RUMBA pin assignment
*
****************************************************************************************/
#if MOTHERBOARD == 80
#define KNOWN_BOARD 1
Dann die Zeilen der entsprechenden Extruder Definition kopieren und als zweiten Z-Treiber eintragen:
#define Z_STEP_PIN 57
#define Z_DIR_PIN 56
#define Z_ENABLE_PIN 62
#define Z_MIN_PIN 33
#define Z_MAX_PIN 32
//to use Z_DUAL_STEPPER_DRIVER in Marlin
#define Z2_STEP_PIN 29
#define Z2_DIR_PIN 28
#define Z2_ENABLE_PIN 39
#define E0_STEP_PIN 23
#define E0_DIR_PIN 22
#define E0_ENABLE_PIN 24
#define E1_STEP_PIN 26
#define E1_DIR_PIN 25
#define E1_ENABLE_PIN 27
#define E2_STEP_PIN 29
#define E2_DIR_PIN 28
#define E2_ENABLE_PIN 39
Anpassung in der Datei "pins.h" für das RAMPS 1.4 Board
Für das RAMPS 1.4 Board ist diese Konfiguration bereits in Marlin hinterlegt und muss daher nicht mehr gemacht werden.
#if MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 35 || MOTHERBOARD == 77 || MOTHERBOARD == 67 || MOTHERBOARD == 68
...
#define Z2_STEP_PIN 36
#define Z2_DIR_PIN 34
#define Z2_ENABLE_PIN 30
#define E0_STEP_PIN 26
#define E0_DIR_PIN 28
#define E0_ENABLE_PIN 24
#define E1_STEP_PIN 36
#define E1_DIR_PIN 34
#define E1_ENABLE_PIN 30