Added support for dual Z axis stepper drivers
This commit is contained in:
		| @@ -78,6 +78,18 @@ | |||||||
|  |  | ||||||
| //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. | //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. | ||||||
|  |  | ||||||
|  | // 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 | ||||||
|  |  | ||||||
| //homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: | //homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: | ||||||
| #define X_HOME_RETRACT_MM 5  | #define X_HOME_RETRACT_MM 5  | ||||||
| #define Y_HOME_RETRACT_MM 5  | #define Y_HOME_RETRACT_MM 5  | ||||||
|   | |||||||
| @@ -122,8 +122,13 @@ void manage_inactivity(byte debug); | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #if Z_ENABLE_PIN > -1 | #if Z_ENABLE_PIN > -1 | ||||||
|   #define  enable_z() WRITE(Z_ENABLE_PIN, Z_ENABLE_ON) |   #ifdef Z_DUAL_STEPPER_DRIVERS | ||||||
|   #define disable_z() WRITE(Z_ENABLE_PIN,!Z_ENABLE_ON) |     #define  enable_z() { WRITE(Z_ENABLE_PIN, Z_ENABLE_ON); WRITE(Z2_ENABLE_PIN, Z_ENABLE_ON); } | ||||||
|  |     #define disable_z() { WRITE(Z_ENABLE_PIN,!Z_ENABLE_ON); WRITE(Z2_ENABLE_PIN,!Z_ENABLE_ON); } | ||||||
|  |   #else | ||||||
|  |     #define  enable_z() WRITE(Z_ENABLE_PIN, Z_ENABLE_ON) | ||||||
|  |     #define disable_z() WRITE(Z_ENABLE_PIN,!Z_ENABLE_ON) | ||||||
|  |   #endif | ||||||
| #else | #else | ||||||
|   #define enable_z() ; |   #define enable_z() ; | ||||||
|   #define disable_z() ; |   #define disable_z() ; | ||||||
|   | |||||||
| @@ -267,6 +267,10 @@ | |||||||
| #define Z_MIN_PIN          18 | #define Z_MIN_PIN          18 | ||||||
| #define Z_MAX_PIN          19 | #define Z_MAX_PIN          19 | ||||||
|  |  | ||||||
|  | #define Z2_STEP_PIN        36 | ||||||
|  | #define Z2_DIR_PIN         34 | ||||||
|  | #define Z2_ENABLE_PIN      30 | ||||||
|  |  | ||||||
| #define E0_STEP_PIN        26 | #define E0_STEP_PIN        26 | ||||||
| #define E0_DIR_PIN         28 | #define E0_DIR_PIN         28 | ||||||
| #define E0_ENABLE_PIN      24 | #define E0_ENABLE_PIN      24 | ||||||
|   | |||||||
| @@ -421,6 +421,11 @@ ISR(TIMER1_COMPA_vect) | |||||||
|      |      | ||||||
|     if ((out_bits & (1<<Z_AXIS)) != 0) {   // -direction |     if ((out_bits & (1<<Z_AXIS)) != 0) {   // -direction | ||||||
|       WRITE(Z_DIR_PIN,INVERT_Z_DIR); |       WRITE(Z_DIR_PIN,INVERT_Z_DIR); | ||||||
|  |        | ||||||
|  | 	  #ifdef Z_DUAL_STEPPER_DRIVERS | ||||||
|  |         WRITE(Z2_DIR_PIN,INVERT_Z_DIR); | ||||||
|  |       #endif | ||||||
|  |        | ||||||
|       count_direction[Z_AXIS]=-1; |       count_direction[Z_AXIS]=-1; | ||||||
|       CHECK_ENDSTOPS |       CHECK_ENDSTOPS | ||||||
|       { |       { | ||||||
| @@ -437,6 +442,11 @@ ISR(TIMER1_COMPA_vect) | |||||||
|     } |     } | ||||||
|     else { // +direction |     else { // +direction | ||||||
|       WRITE(Z_DIR_PIN,!INVERT_Z_DIR); |       WRITE(Z_DIR_PIN,!INVERT_Z_DIR); | ||||||
|  |  | ||||||
|  | 	  #ifdef Z_DUAL_STEPPER_DRIVERS | ||||||
|  |         WRITE(Z2_DIR_PIN,!INVERT_Z_DIR); | ||||||
|  |       #endif | ||||||
|  |  | ||||||
|       count_direction[Z_AXIS]=1; |       count_direction[Z_AXIS]=1; | ||||||
|       CHECK_ENDSTOPS |       CHECK_ENDSTOPS | ||||||
|       { |       { | ||||||
| @@ -552,9 +562,18 @@ ISR(TIMER1_COMPA_vect) | |||||||
|       counter_z += current_block->steps_z; |       counter_z += current_block->steps_z; | ||||||
|       if (counter_z > 0) { |       if (counter_z > 0) { | ||||||
|         WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN); |         WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN); | ||||||
|  |          | ||||||
|  | 		#ifdef Z_DUAL_STEPPER_DRIVERS | ||||||
|  |           WRITE(Z2_STEP_PIN, !INVERT_Z_STEP_PIN); | ||||||
|  |         #endif | ||||||
|  |          | ||||||
|         counter_z -= current_block->step_event_count; |         counter_z -= current_block->step_event_count; | ||||||
|         count_position[Z_AXIS]+=count_direction[Z_AXIS]; |         count_position[Z_AXIS]+=count_direction[Z_AXIS]; | ||||||
|         WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN); |         WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN); | ||||||
|  |          | ||||||
|  | 		#ifdef Z_DUAL_STEPPER_DRIVERS | ||||||
|  |           WRITE(Z2_STEP_PIN, INVERT_Z_STEP_PIN); | ||||||
|  |         #endif | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       #ifndef ADVANCE |       #ifndef ADVANCE | ||||||
| @@ -704,6 +723,10 @@ void st_init() | |||||||
|   #endif |   #endif | ||||||
|   #if Z_DIR_PIN > -1  |   #if Z_DIR_PIN > -1  | ||||||
|     SET_OUTPUT(Z_DIR_PIN); |     SET_OUTPUT(Z_DIR_PIN); | ||||||
|  |  | ||||||
|  |     #if defined(Z_DUAL_STEPPER_DRIVERS) && (Z2_DIR_PIN > -1) | ||||||
|  |       SET_OUTPUT(Z2_DIR_PIN); | ||||||
|  |     #endif | ||||||
|   #endif |   #endif | ||||||
|   #if E0_DIR_PIN > -1  |   #if E0_DIR_PIN > -1  | ||||||
|     SET_OUTPUT(E0_DIR_PIN); |     SET_OUTPUT(E0_DIR_PIN); | ||||||
| @@ -728,6 +751,11 @@ void st_init() | |||||||
|   #if (Z_ENABLE_PIN > -1) |   #if (Z_ENABLE_PIN > -1) | ||||||
|     SET_OUTPUT(Z_ENABLE_PIN); |     SET_OUTPUT(Z_ENABLE_PIN); | ||||||
|     if(!Z_ENABLE_ON) WRITE(Z_ENABLE_PIN,HIGH); |     if(!Z_ENABLE_ON) WRITE(Z_ENABLE_PIN,HIGH); | ||||||
|  |      | ||||||
|  |     #if defined(Z_DUAL_STEPPER_DRIVERS) && (Z2_ENABLE_PIN > -1) | ||||||
|  |       SET_OUTPUT(Z2_ENABLE_PIN); | ||||||
|  |       if(!Z_ENABLE_ON) WRITE(Z2_ENABLE_PIN,HIGH); | ||||||
|  |     #endif | ||||||
|   #endif |   #endif | ||||||
|   #if (E0_ENABLE_PIN > -1) |   #if (E0_ENABLE_PIN > -1) | ||||||
|     SET_OUTPUT(E0_ENABLE_PIN); |     SET_OUTPUT(E0_ENABLE_PIN); | ||||||
| @@ -802,6 +830,12 @@ void st_init() | |||||||
|     SET_OUTPUT(Z_STEP_PIN); |     SET_OUTPUT(Z_STEP_PIN); | ||||||
|     WRITE(Z_STEP_PIN,INVERT_Z_STEP_PIN); |     WRITE(Z_STEP_PIN,INVERT_Z_STEP_PIN); | ||||||
|     if(!Z_ENABLE_ON) WRITE(Z_ENABLE_PIN,HIGH); |     if(!Z_ENABLE_ON) WRITE(Z_ENABLE_PIN,HIGH); | ||||||
|  |      | ||||||
|  |     #if defined(Z_DUAL_STEPPER_DRIVERS) && (Z2_STEP_PIN > -1) | ||||||
|  |       SET_OUTPUT(Z2_STEP_PIN); | ||||||
|  |       WRITE(Z2_STEP_PIN,INVERT_Z_STEP_PIN); | ||||||
|  |       if(!Z_ENABLE_ON) WRITE(Z2_ENABLE_PIN,HIGH); | ||||||
|  |     #endif | ||||||
|   #endif   |   #endif   | ||||||
|   #if (E0_STEP_PIN > -1)  |   #if (E0_STEP_PIN > -1)  | ||||||
|     SET_OUTPUT(E0_STEP_PIN); |     SET_OUTPUT(E0_STEP_PIN); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user