added delta tower babystepping. Its untested, but hopefully florian horsch will be able to try.
also, removed some trouble for compilation with corexy. I think that babystepping is only possible in z for a delta tower. not sure if it would be usefull to step individual motors on a delta, i don't own one
This commit is contained in:
parent
c38b0855c8
commit
b832f5b9f6
|
@ -273,12 +273,21 @@
|
|||
// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process
|
||||
// it can e.g. be used to change z-positions in the print startup phase in realtime
|
||||
// does not respect endstops!
|
||||
|
||||
//#define BABYSTEPPING
|
||||
//#define BABYSTEP_XY //not only z, but also XY
|
||||
#ifdef BABYSTEPPING
|
||||
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
||||
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
||||
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
||||
|
||||
#ifdef COREXY
|
||||
#ifdef COREXY
|
||||
#error BABYSTEPPING not implemented for COREXY yet.
|
||||
#endif
|
||||
|
||||
#ifdef DELTA
|
||||
#ifdef BABYSTEP_XY
|
||||
#error BABYSTEPPING only implemented for Z axis on deltabots.
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// extruder advance constant (s2/mm3)
|
||||
|
|
|
@ -1070,14 +1070,16 @@ void babystep(const uint8_t axis,const bool direction)
|
|||
|
||||
}
|
||||
break;
|
||||
|
||||
#ifndef DELTA
|
||||
case Z_AXIS:
|
||||
{
|
||||
enable_z();
|
||||
uint8_t old_z_dir_pin= READ(Z_DIR_PIN); //if dualzstepper, both point to same direction.
|
||||
//setup new step
|
||||
WRITE(Z_DIR_PIN,(INVERT_Z_DIR)^direction);
|
||||
WRITE(Z_DIR_PIN,(INVERT_Z_DIR)^direction^BABYSTEP_INVERT_Z);
|
||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||
WRITE(Z2_DIR_PIN,(INVERT_Z_DIR)^direction);
|
||||
WRITE(Z2_DIR_PIN,(INVERT_Z_DIR)^direction^BABYSTEP_INVERT_Z);
|
||||
#endif
|
||||
//perform step
|
||||
WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN);
|
||||
|
@ -1101,6 +1103,41 @@ void babystep(const uint8_t axis,const bool direction)
|
|||
|
||||
}
|
||||
break;
|
||||
#else //DELTA
|
||||
case Z_AXIS:
|
||||
{
|
||||
enable_x();
|
||||
enable_y();
|
||||
enable_z();
|
||||
uint8_t old_x_dir_pin= READ(X_DIR_PIN);
|
||||
uint8_t old_y_dir_pin= READ(Y_DIR_PIN);
|
||||
uint8_t old_z_dir_pin= READ(Z_DIR_PIN);
|
||||
//setup new step
|
||||
WRITE(X_DIR_PIN,(INVERT_X_DIR)^direction^BABYSTEP_INVERT_Z);
|
||||
WRITE(Y_DIR_PIN,(INVERT_Y_DIR)^direction^BABYSTEP_INVERT_Z);
|
||||
WRITE(Z_DIR_PIN,(INVERT_Z_DIR)^direction^BABYSTEP_INVERT_Z);
|
||||
|
||||
//perform step
|
||||
WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN);
|
||||
WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN);
|
||||
WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN);
|
||||
|
||||
//wait a tiny bit
|
||||
{
|
||||
float x=1./float(axis+1); //absolutely useless
|
||||
}
|
||||
WRITE(X_STEP_PIN, INVERT_X_STEP_PIN);
|
||||
WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN);
|
||||
WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN);
|
||||
|
||||
//get old pin state back.
|
||||
WRITE(X_DIR_PIN,old_x_dir_pin);
|
||||
WRITE(Y_DIR_PIN,old_y_dir_pin);
|
||||
WRITE(Z_DIR_PIN,old_z_dir_pin);
|
||||
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
default: break;
|
||||
}
|
||||
|
|
|
@ -367,7 +367,7 @@ static void lcd_babystep_z()
|
|||
{
|
||||
if (encoderPosition != 0)
|
||||
{
|
||||
babystepsTodo[Z_AXIS]+=(int)encoderPosition;
|
||||
babystepsTodo[Z_AXIS]+=BABYSTEP_Z_MULTIPLICATOR*(int)encoderPosition;
|
||||
encoderPosition=0;
|
||||
lcdDrawUpdate = 1;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue