|  |  |  | @ -257,48 +257,49 @@ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | // Dual X Steppers
 | 
			
		
	
		
			
				
					|  |  |  |  | // Uncomment this option to drive two X axis motors.
 | 
			
		
	
		
			
				
					|  |  |  |  | // The next unused E driver will be assigned to the second X stepper.
 | 
			
		
	
		
			
				
					|  |  |  |  | /**
 | 
			
		
	
		
			
				
					|  |  |  |  |  * Dual Steppers / Dual Endstops | 
			
		
	
		
			
				
					|  |  |  |  |  * | 
			
		
	
		
			
				
					|  |  |  |  |  * This section will allow you to use extra E drivers to drive a second motor for X, Y, or Z axes. | 
			
		
	
		
			
				
					|  |  |  |  |  * | 
			
		
	
		
			
				
					|  |  |  |  |  * For example, set X_DUAL_STEPPER_DRIVERS setting to use a second motor. If the motors need to | 
			
		
	
		
			
				
					|  |  |  |  |  * spin in opposite directions set INVERT_X2_VS_X_DIR. If the second motor needs its own endstop | 
			
		
	
		
			
				
					|  |  |  |  |  * set X_DUAL_ENDSTOPS. This can adjust for "racking." Use X2_USE_ENDSTOP to set the endstop plug | 
			
		
	
		
			
				
					|  |  |  |  |  * that should be used for the second endstop. Extra endstops will appear in the output of 'M119'. | 
			
		
	
		
			
				
					|  |  |  |  |  * | 
			
		
	
		
			
				
					|  |  |  |  |  * Use X_DUAL_ENDSTOP_ADJUSTMENT to adjust for mechanical imperfection. After homing both motors | 
			
		
	
		
			
				
					|  |  |  |  |  * this offset is applied to the X2 motor. To find the offset home the X axis, and measure the error | 
			
		
	
		
			
				
					|  |  |  |  |  * in X2. Dual endstop offsets can be set at runtime with 'M666 X<offset> Y<offset> Z<offset>'. | 
			
		
	
		
			
				
					|  |  |  |  |  */ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | //#define X_DUAL_STEPPER_DRIVERS
 | 
			
		
	
		
			
				
					|  |  |  |  | #if ENABLED(X_DUAL_STEPPER_DRIVERS) | 
			
		
	
		
			
				
					|  |  |  |  |   // Set true if the two X motors need to rotate in opposite directions
 | 
			
		
	
		
			
				
					|  |  |  |  |   #define INVERT_X2_VS_X_DIR true | 
			
		
	
		
			
				
					|  |  |  |  |   #define INVERT_X2_VS_X_DIR true   // Set 'true' if X motors should rotate in opposite directions
 | 
			
		
	
		
			
				
					|  |  |  |  |   //#define X_DUAL_ENDSTOPS
 | 
			
		
	
		
			
				
					|  |  |  |  |   #if ENABLED(X_DUAL_ENDSTOPS) | 
			
		
	
		
			
				
					|  |  |  |  |     #define X2_USE_ENDSTOP _XMAX_ | 
			
		
	
		
			
				
					|  |  |  |  |     #define X_DUAL_ENDSTOPS_ADJUSTMENT  0 | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | // Dual Y Steppers
 | 
			
		
	
		
			
				
					|  |  |  |  | // Uncomment this option to drive two Y axis motors.
 | 
			
		
	
		
			
				
					|  |  |  |  | // The next unused E driver will be assigned to the second Y stepper.
 | 
			
		
	
		
			
				
					|  |  |  |  | //#define Y_DUAL_STEPPER_DRIVERS
 | 
			
		
	
		
			
				
					|  |  |  |  | #if ENABLED(Y_DUAL_STEPPER_DRIVERS) | 
			
		
	
		
			
				
					|  |  |  |  |   // Set true if the two Y motors need to rotate in opposite directions
 | 
			
		
	
		
			
				
					|  |  |  |  |   #define INVERT_Y2_VS_Y_DIR true | 
			
		
	
		
			
				
					|  |  |  |  |   #define INVERT_Y2_VS_Y_DIR true   // Set 'true' if Y motors should rotate in opposite directions
 | 
			
		
	
		
			
				
					|  |  |  |  |   //#define Y_DUAL_ENDSTOPS
 | 
			
		
	
		
			
				
					|  |  |  |  |   #if ENABLED(Y_DUAL_ENDSTOPS) | 
			
		
	
		
			
				
					|  |  |  |  |     #define Y2_USE_ENDSTOP _YMAX_ | 
			
		
	
		
			
				
					|  |  |  |  |     #define Y_DUAL_ENDSTOPS_ADJUSTMENT  0 | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | // A single Z stepper driver is usually used to drive 2 stepper motors.
 | 
			
		
	
		
			
				
					|  |  |  |  | // Uncomment this option to use a separate stepper driver for each Z axis motor.
 | 
			
		
	
		
			
				
					|  |  |  |  | // The next unused E driver will be assigned to the second Z stepper.
 | 
			
		
	
		
			
				
					|  |  |  |  | //#define Z_DUAL_STEPPER_DRIVERS
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #if ENABLED(Z_DUAL_STEPPER_DRIVERS) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper.
 | 
			
		
	
		
			
				
					|  |  |  |  |   // That way the machine is capable to align the bed during home, since both Z steppers are homed.
 | 
			
		
	
		
			
				
					|  |  |  |  |   // There is also an implementation of M666 (software endstops adjustment) to this feature.
 | 
			
		
	
		
			
				
					|  |  |  |  |   // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed.
 | 
			
		
	
		
			
				
					|  |  |  |  |   // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2.
 | 
			
		
	
		
			
				
					|  |  |  |  |   // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive.
 | 
			
		
	
		
			
				
					|  |  |  |  |   // Play a little bit with small adjustments (0.5mm) and check the behaviour.
 | 
			
		
	
		
			
				
					|  |  |  |  |   // The M119 (endstops report) will start reporting the Z2 Endstop as well.
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   //#define Z_DUAL_ENDSTOPS
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   #if ENABLED(Z_DUAL_ENDSTOPS) | 
			
		
	
		
			
				
					|  |  |  |  |     #define Z2_USE_ENDSTOP _XMAX_ | 
			
		
	
		
			
				
					|  |  |  |  |     #define Z_DUAL_ENDSTOPS_ADJUSTMENT  0  // Use M666 to determine/test this value
 | 
			
		
	
		
			
				
					|  |  |  |  |     #define Z_DUAL_ENDSTOPS_ADJUSTMENT  0 | 
			
		
	
		
			
				
					|  |  |  |  |   #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #endif // Z_DUAL_STEPPER_DRIVERS
 | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | // Enable this for dual x-carriage printers.
 | 
			
		
	
		
			
				
					|  |  |  |  | // A dual x-carriage design has the advantage that the inactive extruder can be parked which
 | 
			
		
	
	
		
			
				
					|  |  |  | 
 |