kopia lustrzana https://github.com/gnea/grbl
Implemented axis skew compensation on grbl
Implementated axis skew compensation configurable on config.h XY compensation is activated by default when skew compensation is activated. XZ and YZ skew compensation is optional.pull/709/head
rodzic
7d3fe80262
commit
97c5861f7d
|
@ -699,7 +699,12 @@
|
|||
// +-------------->X +-------------->X +-------------->Y
|
||||
// XY_SKEW_FACTOR XZ_SKEW_FACTOR YZ_SKEW_FACTOR
|
||||
//
|
||||
|
||||
//uncomment to enable skew compensation
|
||||
#define ENABLE_SKEW_COMPENSATION
|
||||
//if enabled skew compensations is done only for XY axis (saves CPU cycles)
|
||||
//uncomment to extend skew compensation for XZ axis and YZ axis as well
|
||||
//#define ALLAXIS_SKEW_COMPENSATION
|
||||
|
||||
/* ---------------------------------------------------------------------------------------
|
||||
OEM Single File Configuration Option
|
||||
|
|
|
@ -66,8 +66,11 @@ void mc_line(float *target, plan_line_data_t *pl_data)
|
|||
|
||||
#ifdef ENABLE_SKEW_COMPENSATION
|
||||
//apply correction skew factors that compensate for machine axis alignemnt
|
||||
target[X_AXIS] -= target[Y_AXIS] * settings.xy_skew_factor + target[Z_AXIS] * (settings.xy_skew_factor - settings.xz_skew_factor * settings.yz_skew_factor);
|
||||
target[Y_AXIS] -= target[Z_AXIS] * settings.yz_skew_factor;
|
||||
target[X_AXIS] -= target[Y_AXIS] * settings.xy_skew_factor;
|
||||
#ifdef ALLAXIS_SKEW_COMPENSATION
|
||||
target[X_AXIS] -= target[Z_AXIS] * (settings.xy_skew_factor - settings.xz_skew_factor * settings.yz_skew_factor);
|
||||
target[Y_AXIS] -= target[Z_AXIS] * settings.yz_skew_factor;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Plan and queue motion into planner buffer
|
||||
|
|
|
@ -212,8 +212,10 @@ void report_grbl_settings() {
|
|||
|
||||
#ifdef ENABLE_SKEW_COMPENSATION
|
||||
report_util_float_setting(37,settings.xy_skew_factor,N_DECIMAL_SETTINGVALUE);
|
||||
report_util_float_setting(38,settings.xz_skew_factor,N_DECIMAL_SETTINGVALUE);
|
||||
report_util_float_setting(39,settings.yz_skew_factor,N_DECIMAL_SETTINGVALUE);
|
||||
#ifdef ALLAXIS_SKEW_COMPENSATION
|
||||
report_util_float_setting(38,settings.xz_skew_factor,N_DECIMAL_SETTINGVALUE);
|
||||
report_util_float_setting(39,settings.yz_skew_factor,N_DECIMAL_SETTINGVALUE);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Print axis settings
|
||||
|
|
|
@ -38,9 +38,13 @@ const __flash settings_t defaults = {\
|
|||
.homing_seek_rate = DEFAULT_HOMING_SEEK_RATE,
|
||||
.homing_debounce_delay = DEFAULT_HOMING_DEBOUNCE_DELAY,
|
||||
.homing_pulloff = DEFAULT_HOMING_PULLOFF,
|
||||
.xy_skew_factor = XY_SKEW_FACTOR,
|
||||
.xz_skew_factor = XZ_SKEW_FACTOR,
|
||||
.yz_skew_factor = YZ_SKEW_FACTOR,
|
||||
#ifdef ENABLE_SKEW_COMPENSATION
|
||||
.xy_skew_factor = XY_SKEW_FACTOR,
|
||||
#ifdef ALLAXIS_SKEW_COMPENSATION
|
||||
.xz_skew_factor = XZ_SKEW_FACTOR,
|
||||
.yz_skew_factor = YZ_SKEW_FACTOR,
|
||||
#endif
|
||||
#endif
|
||||
.flags = (DEFAULT_REPORT_INCHES << BIT_REPORT_INCHES) | \
|
||||
(DEFAULT_LASER_MODE << BIT_LASER_MODE) | \
|
||||
(DEFAULT_INVERT_ST_ENABLE << BIT_INVERT_ST_ENABLE) | \
|
||||
|
@ -299,8 +303,10 @@ uint8_t settings_store_global_setting(uint8_t parameter, float value) {
|
|||
break;
|
||||
#ifdef ENABLE_SKEW_COMPENSATION
|
||||
case 37: settings.xy_skew_factor = value; break;
|
||||
case 38: settings.xz_skew_factor = value; break;
|
||||
case 39: settings.yz_skew_factor = value; break;
|
||||
#ifdef ALLAXIS_SKEW_COMPENSATION
|
||||
case 38: settings.xz_skew_factor = value; break;
|
||||
case 39: settings.yz_skew_factor = value; break;
|
||||
#endif
|
||||
#endif
|
||||
default:
|
||||
return(STATUS_INVALID_STATEMENT);
|
||||
|
|
|
@ -110,9 +110,13 @@ typedef struct {
|
|||
float homing_seek_rate;
|
||||
uint16_t homing_debounce_delay;
|
||||
float homing_pulloff;
|
||||
float xy_skew_factor;
|
||||
float xz_skew_factor;
|
||||
float yz_skew_factor;
|
||||
#ifdef ENABLE_SKEW_COMPENSATION
|
||||
float xy_skew_factor;
|
||||
#ifdef ALLAXIS_SKEW_COMPENSATION
|
||||
float xz_skew_factor;
|
||||
float yz_skew_factor;
|
||||
#endif
|
||||
#endif
|
||||
} settings_t;
|
||||
extern settings_t settings;
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue