Modifica MK Z_QUAD_STEPPER July 12, 2016 07:17AM |
Registered: 8 years ago Posts: 57 |
#define Z_QUAD_STEPPER_DRIVERS #define Z_QUAD_ENDSTOPS
#if ENABLED(Z_QUAD_STEPPER_DRIVERS) #define Z2_STEP_PIN ORIG_E1_STEP_PIN #define Z2_DIR_PIN ORIG_E1_DIR_PIN #define Z2_ENABLE_PIN ORIG_E1_ENABLE_PIN #define Z3_STEP_PIN ORIG_E2_STEP_PIN #define Z3_DIR_PIN ORIG_E2_DIR_PIN #define Z3_ENABLE_PIN ORIG_E2_ENABLE_PIN #define Z4_STEP_PIN ORIG_E3_STEP_PIN #define Z4_DIR_PIN ORIG_E3_DIR_PIN #define Z4_ENABLE_PIN ORIG_E3_ENABLE_PIN #endif #if ENABLED(Z_QUAD_ENDSTOPS) #define Z2_MIN_PIN ORIG_X_MAX_PIN #define Z3_MIN_PIN ORIG_Y_MAX_PIN #define Z4_MIN_PIN ORIG_Z_MAX_PIN #endif
Re: Modifica MK Z_QUAD_STEPPER July 12, 2016 10:00AM |
Registered: 8 years ago Posts: 57 |
inline void update_endstops() { ... #if HAS(Z_MIN) #if ENABLED(Z_DUAL_ENDSTOPS) SET_ENDSTOP_BIT(Z, MIN); #if HAS(Z2_MIN) SET_ENDSTOP_BIT(Z2, MIN); #else COPY_BIT(current_endstop_bits, Z_MIN, Z2_MIN); #endif byte z_test = TEST_ENDSTOP(Z_MIN) | (TEST_ENDSTOP(Z2_MIN) << 1); // bit 0 for Z, bit 1 for Z2 if (z_test && current_block->steps[Z_AXIS] > 0) { // z_test = Z_MIN || Z2_MIN endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS]; SBI(endstop_hit_bits, Z_MIN); if (!performing_homing || (z_test == 0x3)) //if not performing home or if both endstops were trigged during homing... step_events_completed = current_block->step_event_count; } #else // !Z_DUAL_ENDSTOPS UPDATE_ENDSTOP(Z, MIN); #endif // !Z_DUAL_ENDSTOPS #endif // Z_MIN_PIN ... }
Z2_MIN -> X_MAX Z3_MIN -> Y_MAX Z4_MIN -> Z_MAX
Re: Modifica MK Z_QUAD_STEPPER July 12, 2016 01:19PM |
Registered: 8 years ago Posts: 57 |
void get_z_quad_endstops_status(bool *buf) { buf[0] = ((READ(Z_MIN_PIN)^Z_MIN_ENDSTOP_INVERTING)?true:false); buf[1] = ((READ(X_MAX_PIN)^X_MAX_ENDSTOP_INVERTING)?true:false); buf[2] = ((READ(Y_MAX_PIN)^Y_MAX_ENDSTOP_INVERTING)?true:false); buf[3] = ((READ(Z_MAX_PIN)^Z_MAX_ENDSTOP_INVERTING)?true:false); }
static void homeaxis(AxisEnum axis) { ... // Set a flag for Z motor locking #if ENABLED(Z_DUAL_ENDSTOPS) || ENABLED(Z_QUAD_ENDSTOPS) if (axis == Z_AXIS) In_Homing_Process(true); #endif #if ENABLED(Z_QUAD_STEPPER_DRIVERS) && ENABLED(Z_QUAD_ENDSTOPS) if (axis == Z_AXIS) { bool lockZ_MOTOR[3] = {0}; do { destination[axis] = 1.5 * max_length(axis) * axis_home_dir; feedrate = homing_feedrate[axis]; line_to_destination(); st_synchronize(); get_z_quad_endstops_status(lockZ_MOTOR); if (lockZ_MOTOR[0]) Lock_z_motor(true); if (lockZ_MOTOR[1]) Lock_z2_motor(true); if (lockZ_MOTOR[2]) Lock_z3_motor(true); if (lockZ_MOTOR[3]) Lock_z4_motor(true); sync_plan_position(); } while (lockZ_MOTOR[0]==false || lockZ_MOTOR[1]==false || lockZ_MOTOR[2]==false || lockZ_MOTOR[3]==false); } #else // Move towards the endstop until an endstop is triggered destination[axis] = 1.5 * max_length(axis) * axis_home_dir; feedrate = homing_feedrate[axis]; line_to_destination(); st_synchronize(); #endif // Set the axis position as setup for the move current_position[axis] = 0; sync_plan_position(); ... #if ENABLED(Z_DUAL_ENDSTOPS) if (axis == Z_AXIS) { float adj = fabs(z_endstop_adj); bool lockZ1; if (axis_home_dir > 0) { adj = -adj; lockZ1 = (z_endstop_adj > 0); } else lockZ1 = (z_endstop_adj < 0); if (lockZ1) Lock_z_motor(true); else Lock_z2_motor(true); sync_plan_position(); // Move to the adjusted endstop height feedrate = homing_feedrate[axis]; destination[Z_AXIS] = adj; line_to_destination(); st_synchronize(); if (lockZ1) Lock_z_motor(false); else Lock_z2_motor(false); In_Homing_Process(false); } // Z_AXIS #endif #if ENABLED(Z_QUAD_STEPPER_DRIVERS) && ENABLED(Z_QUAD_ENDSTOPS) if (axis == Z_AXIS) { Lock_z_motor(false); Lock_z2_motor(false); Lock_z3_motor(false); Lock_z4_motor(false); In_Homing_Process(false); } #endif // Set the axis position to its home position (plus home offsets) set_axis_is_at_home(axis); sync_plan_position(); ...
Re: Modifica MK Z_QUAD_STEPPER July 12, 2016 04:23PM |
Registered: 11 years ago Posts: 6,409 |
#if ENABLED(Z_QUAD_STEPPER_DRIVERS) #define Z_APPLY_DIR(v,Q) { Z_DIR_WRITE(v); Z1_DIR_WRITE(v); Z2_DIR_WRITE(v); Z3_DIR_WRITE(v); } #if ENABLED(Z_QUAD_ENDSTOPS) #define Z_APPLY_STEP(v,Q) \ if (performing_homing) { \ if (Z_HOME_DIR > 0) {\ if (!(TEST(old_endstop_bits, Z_MAX) && (count_direction[Z_AXIS] > 0)) && !locked_z_motor) Z_STEP_WRITE(v); \ if (!(TEST(old_endstop_bits, Z1_MAX) && (count_direction[Z_AXIS] > 0)) && !locked_z1_motor) Z1_STEP_WRITE(v); \ if (!(TEST(old_endstop_bits, Z2_MAX) && (count_direction[Z_AXIS] > 0)) && !locked_z2_motor) Z2_STEP_WRITE(v); \ if (!(TEST(old_endstop_bits, Z3_MAX) && (count_direction[Z_AXIS] > 0)) && !locked_z3_motor) Z3_STEP_WRITE(v); \ } \ else { \ if (!(TEST(old_endstop_bits, Z_MIN) && (count_direction[Z_AXIS] < 0)) && !locked_z_motor) Z_STEP_WRITE(v); \ if (!(TEST(old_endstop_bits, Z1_MIN) && (count_direction[Z_AXIS] < 0)) && !locked_z1_motor) Z1_STEP_WRITE(v); \ if (!(TEST(old_endstop_bits, Z2_MIN) && (count_direction[Z_AXIS] < 0)) && !locked_z1_motor) Z2_STEP_WRITE(v); \ if (!(TEST(old_endstop_bits, Z3_MIN) && (count_direction[Z_AXIS] < 0)) && !locked_z1_motor) Z3_STEP_WRITE(v); \ } \ } \ else { \ Z_STEP_WRITE(v); \ Z1_STEP_WRITE(v); \ Z2_STEP_WRITE(v); \ Z3_STEP_WRITE(v); \ } #else #define Z_APPLY_STEP(v,Q) { Z_STEP_WRITE(v); Z1_STEP_WRITE(v); Z2_STEP_WRITE(v); Z3_STEP_WRITE(v); } #endif #elif ENABLED(Z_DUAL_STEPPER_DRIVERS) #define Z_APPLY_DIR(v,Q) { Z_DIR_WRITE(v); Z2_DIR_WRITE(v); } #if ENABLED(Z_DUAL_ENDSTOPS) #define Z_APPLY_STEP(v,Q) \ if (performing_homing) { \ if (Z_HOME_DIR > 0) {\ if (!(TEST(old_endstop_bits, Z_MAX) && (count_direction[Z_AXIS] > 0)) && !locked_z_motor) Z_STEP_WRITE(v); \ if (!(TEST(old_endstop_bits, Z2_MAX) && (count_direction[Z_AXIS] > 0)) && !locked_z2_motor) Z2_STEP_WRITE(v); \ } \ else { \ if (!(TEST(old_endstop_bits, Z_MIN) && (count_direction[Z_AXIS] < 0)) && !locked_z_motor) Z_STEP_WRITE(v); \ if (!(TEST(old_endstop_bits, Z2_MIN) && (count_direction[Z_AXIS] < 0)) && !locked_z2_motor) Z2_STEP_WRITE(v); \ } \ } \ else { \ Z_STEP_WRITE(v); \ Z2_STEP_WRITE(v); \ } #else #define Z_APPLY_STEP(v,Q) { Z_STEP_WRITE(v); Z2_STEP_WRITE(v); } #endif #else #define Z_APPLY_DIR(v,Q) Z_DIR_WRITE(v) #define Z_APPLY_STEP(v,Q) Z_STEP_WRITE(v) #endif
#if ENABLED(Z_QUAD_ENDSTOPS) UPDATE_ENDSTOP_BIT(Z, MIN); UPDATE_ENDSTOP_BIT(Z1, MIN); UPDATE_ENDSTOP_BIT(Z2, MIN); UPDATE_ENDSTOP_BIT(Z3, MIN); #elif ENABLED(Z_DUAL_ENDSTOPS) UPDATE_ENDSTOP_BIT(Z, MIN); #if HAS_Z2_MIN UPDATE_ENDSTOP_BIT(Z2, MIN); #else COPY_BIT(current_endstop_bits, Z_MIN, Z2_MIN); #endif test_dual_z_endstops(Z_MIN, Z2_MIN); #else // !Z_DUAL_ENDSTOPS
if (performing_homing) { \ if (Z_HOME_DIR > 0) {\ if (!(TEST(old_endstop_bits, Z_MAX) && (count_direction[Z_AXIS] > 0)) && !locked_z_motor) Z_STEP_WRITE(v); \ if (!(TEST(old_endstop_bits, Z1_MAX) && (count_direction[Z_AXIS] > 0)) && !locked_z1_motor) Z1_STEP_WRITE(v); \ if (!(TEST(old_endstop_bits, Z2_MAX) && (count_direction[Z_AXIS] > 0)) && !locked_z2_motor) Z2_STEP_WRITE(v); \ if (!(TEST(old_endstop_bits, Z3_MAX) && (count_direction[Z_AXIS] > 0)) && !locked_z3_motor) Z3_STEP_WRITE(v); \
else { \ Z_STEP_WRITE(v); \ Z1_STEP_WRITE(v); \ Z2_STEP_WRITE(v); \ Z3_STEP_WRITE(v); \ }
Re: Modifica MK Z_QUAD_STEPPER July 13, 2016 10:03AM |
Registered: 8 years ago Posts: 57 |
inline bool get_x_min_trigger() { return ((READ(X_MIN_PIN)^X_MIN_ENDSTOP_INVERTING)?true:false); } inline bool get_x_max_trigger() { return ((READ(X_MAX_PIN)^X_MAX_ENDSTOP_INVERTING)?true:false); } inline bool get_y_min_trigger() { return ((READ(Y_MIN_PIN)^Y_MIN_ENDSTOP_INVERTING)?true:false); } inline bool get_y_max_trigger() { return ((READ(Y_MAX_PIN)^Y_MAX_ENDSTOP_INVERTING)?true:false); } inline bool get_z_min_trigger() { return ((READ(Z_MIN_PIN)^Z_MIN_ENDSTOP_INVERTING)?true:false); } inline bool get_z_max_trigger() { return ((READ(Z_MAX_PIN)^Z_MAX_ENDSTOP_INVERTING)?true:false); } ... #if ENABLED(Z_QUAD_ENDSTOPS) UPDATE_ENDSTOP(Z,MIN); UPDATE_ENDSTOP(X,MAX); UPDATE_ENDSTOP(Y,MAX); UPDATE_ENDSTOP(Z,MAX); bool z1_end = get_z_min_trigger(); bool z2_end = get_z_max_trigger(); bool z3_end = get_x_max_trigger(); bool z4_end = get_y_max_trigger(); if (z1_end==true) { Lock_z_motor(true); } if (z2_end==true) { Lock_z2_motor(true); } if (z3_end==true) { Lock_z3_motor(true); } if (z4_end==true) { Lock_z4_motor(true); } if (z1_end==true && z2_end==true && z3_end==true && z4_end==true) { // homing Z completato , procedi allo step successivo } #elif ENABLED(Z_DUAL_ENDSTOPS) ...
Re: Modifica MK Z_QUAD_STEPPER July 26, 2016 09:12AM |
Registered: 8 years ago Posts: 57 |
#if HAS(Z_MIN) #if ENABLED(Z_QUAD_ENDSTOPS) UPDATE_ENDSTOP(Z,MIN); UPDATE_ENDSTOP(X,MAX); UPDATE_ENDSTOP(Y,MAX); UPDATE_ENDSTOP(Z,MAX); if (!z1_end) { z1_end = get_z_min_trigger(); if (z1_end) { Lock_z_motor(true); ECHO_EMT("Motore 1: ", "Bloccato"); } } if (!z2_end) { z2_end = get_x_max_trigger(); if (z2_end) { Lock_z2_motor(true); ECHO_EMT("Motore 2: ", "Bloccato"); } } if (!z3_end) { z3_end = get_y_max_trigger(); if (z3_end) { Lock_z3_motor(true); ECHO_EMT("Motore 3: ", "Bloccato"); } } if (!z4_end) { z4_end = get_z_max_trigger(); if (z4_end) { Lock_z4_motor(true); ECHO_EMT("Motore 4: ", "Bloccato"); } } if (z1_end==true && z2_end==true && z3_end==true && z4_end==true) { step_events_completed = current_block->step_event_count; ECHO_EMT("Stato motori: ", "Tutti bloccati, homing Z completo"); }
Re: Modifica MK Z_QUAD_STEPPER July 26, 2016 11:31AM |
Moderator Registered: 12 years ago Posts: 1,865 |
Re: Modifica MK Z_QUAD_STEPPER July 26, 2016 01:33PM |
Registered: 8 years ago Posts: 57 |
Re: Modifica MK Z_QUAD_STEPPER July 27, 2016 04:17AM |
Moderator Registered: 12 years ago Posts: 1,865 |
Re: Modifica MK Z_QUAD_STEPPER July 27, 2016 05:36AM |
Registered: 8 years ago Posts: 57 |
Re: Modifica MK Z_QUAD_STEPPER July 27, 2016 09:44AM |
Moderator Registered: 12 years ago Posts: 1,865 |
Re: Modifica MK Z_QUAD_STEPPER July 27, 2016 10:21AM |
Registered: 8 years ago Posts: 57 |
Re: Modifica MK Z_QUAD_STEPPER July 27, 2016 11:08AM |
Moderator Registered: 12 years ago Posts: 1,865 |
Re: Modifica MK Z_QUAD_STEPPER July 27, 2016 02:20PM |
Registered: 8 years ago Posts: 57 |
Re: Modifica MK Z_QUAD_STEPPER July 28, 2016 08:08AM |
Registered: 9 years ago Posts: 762 |
Re: Modifica MK Z_QUAD_STEPPER July 28, 2016 11:34AM |
Registered: 8 years ago Posts: 57 |