From 4c3cf5eac3e2514032a46a2a4cbb6e3323744746 Mon Sep 17 00:00:00 2001 From: Dietz0r <102995203+Dietz0r@users.noreply.github.com> Date: Mon, 30 Oct 2023 14:17:02 +0100 Subject: [PATCH] Added Axis settings for jerk --- config.h | 29 +++++++++++++++++++++++++++++ settings.c | 9 +++++++++ settings.h | 3 ++- 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/config.h b/config.h index d013d2c..09c2d5b 100644 --- a/config.h +++ b/config.h @@ -1823,6 +1823,35 @@ Timezone offset from UTC in hours, allowed range is -12.0 - 12.0. #endif ///@} +/*! @name 12x - Setting_AxisJerk +*/ +///@{ +#if !defined DEFAULT_X_JERK|| defined __DOXYGEN__ +#define DEFAULT_X_Jerk 100.0f // mm/sec^2 +#endif +#if !defined DEFAULT_Y_JERK|| defined __DOXYGEN__ +#define DEFAULT_Y_JERK 100.0f // mm/sec^2 +#endif +#if !defined DEFAULT_Z_JERK || defined __DOXYGEN__ +#define DEFAULT_Z_JERK 100.0f // mm/sec^2 +#endif +#if (defined A_AXIS && !defined DEFAULT_A_JERK) || defined __DOXYGEN__ +#define DEFAULT_A_JERK 100.0f // mm/sec^2 +#endif +#if (defined B_AXIS && !defined DEFAULT_B_JERK) || defined __DOXYGEN__ +#define DEFAULT_B_JERK 100.0f // mm/sec^2 +#endif +#if (defined C_AXIS && !defined DEFAULT_C_JERK) || defined __DOXYGEN__ +#define DEFAULT_C_JERK 100.0f // mm/sec^2 +#endif +#if (defined U_AXIS && !defined DEFAULT_U_JERK) || defined __DOXYGEN__ +#define DEFAULT_U_JERK 100.0f // mm/sec^2 +#endif +#if (defined V_AXIS && !defined DEFAULT_V_JERK) || defined __DOXYGEN__ +#define DEFAULT_V_JERK 100.0f // mm/sec^2 +#endif +///@} + /*! @name 13x - Setting_AxisMaxTravel __NOTE:__ Must be a positive values. */ diff --git a/settings.c b/settings.c index 6e3099f..d37454a 100644 --- a/settings.c +++ b/settings.c @@ -202,6 +202,7 @@ PROGMEM const settings_t defaults = { .axis[X_AXIS].steps_per_mm = DEFAULT_X_STEPS_PER_MM, .axis[X_AXIS].max_rate = DEFAULT_X_MAX_RATE, .axis[X_AXIS].acceleration = (DEFAULT_X_ACCELERATION * 60.0f * 60.0f), + .axis[X_AXIS].jerk = (DEFAULT_X_JERK * 60.0f * 60.0f * 60f), .axis[X_AXIS].max_travel = (-DEFAULT_X_MAX_TRAVEL), .axis[X_AXIS].dual_axis_offset = 0.0f, #if ENABLE_BACKLASH_COMPENSATION @@ -212,6 +213,7 @@ PROGMEM const settings_t defaults = { .axis[Y_AXIS].max_rate = DEFAULT_Y_MAX_RATE, .axis[Y_AXIS].max_travel = (-DEFAULT_Y_MAX_TRAVEL), .axis[Y_AXIS].acceleration = (DEFAULT_Y_ACCELERATION * 60.0f * 60.0f), + .axis[Y_AXIS].jerk = (DEFAULT_Y_JERK * 60.0f * 60.0f * 60f), .axis[Y_AXIS].dual_axis_offset = 0.0f, #if ENABLE_BACKLASH_COMPENSATION .axis[Y_AXIS].backlash = 0.0f, @@ -220,6 +222,7 @@ PROGMEM const settings_t defaults = { .axis[Z_AXIS].steps_per_mm = DEFAULT_Z_STEPS_PER_MM, .axis[Z_AXIS].max_rate = DEFAULT_Z_MAX_RATE, .axis[Z_AXIS].acceleration = (DEFAULT_Z_ACCELERATION * 60.0f * 60.0f), + .axis[Z_AXIS].jerk = (DEFAULT_Z_JERK * 60.0f * 60.0f * 60f), .axis[Z_AXIS].max_travel = (-DEFAULT_Z_MAX_TRAVEL), .axis[Z_AXIS].dual_axis_offset = 0.0f, #if ENABLE_BACKLASH_COMPENSATION @@ -230,6 +233,7 @@ PROGMEM const settings_t defaults = { .axis[A_AXIS].steps_per_mm = DEFAULT_A_STEPS_PER_MM, .axis[A_AXIS].max_rate = DEFAULT_A_MAX_RATE, .axis[A_AXIS].acceleration =(DEFAULT_A_ACCELERATION * 60.0f * 60.0f), + .axis[A_AXIS].jerk = (DEFAULT_A_JERK * 60.0f * 60.0f * 60f), .axis[A_AXIS].max_travel = (-DEFAULT_A_MAX_TRAVEL), .axis[A_AXIS].dual_axis_offset = 0.0f, #if ENABLE_BACKLASH_COMPENSATION @@ -242,6 +246,7 @@ PROGMEM const settings_t defaults = { .axis[B_AXIS].steps_per_mm = DEFAULT_B_STEPS_PER_MM, .axis[B_AXIS].max_rate = DEFAULT_B_MAX_RATE, .axis[B_AXIS].acceleration = (DEFAULT_B_ACCELERATION * 60.0f * 60.0f), + .axis[B_AXIS].jerk = (DEFAULT_B_JERK * 60.0f * 60.0f * 60f), .axis[B_AXIS].max_travel = (-DEFAULT_B_MAX_TRAVEL), .axis[B_AXIS].dual_axis_offset = 0.0f, #if ENABLE_BACKLASH_COMPENSATION @@ -253,6 +258,7 @@ PROGMEM const settings_t defaults = { #ifdef C_AXIS .axis[C_AXIS].steps_per_mm = DEFAULT_C_STEPS_PER_MM, .axis[C_AXIS].acceleration = (DEFAULT_C_ACCELERATION * 60.0f * 60.0f), + .axis[C_AXIS].jerk = (DEFAULT_C_JERK * 60.0f * 60.0f * 60f), .axis[C_AXIS].max_rate = DEFAULT_C_MAX_RATE, .axis[C_AXIS].max_travel = (-DEFAULT_C_MAX_TRAVEL), .axis[C_AXIS].dual_axis_offset = 0.0f, @@ -265,6 +271,7 @@ PROGMEM const settings_t defaults = { #ifdef U_AXIS .axis[U_AXIS].steps_per_mm = DEFAULT_U_STEPS_PER_MM, .axis[U_AXIS].acceleration = (DEFAULT_U_ACCELERATION * 60.0f * 60.0f), + .axis[U_AXIS].jerk = (DEFAULT_U_JERK * 60.0f * 60.0f * 60f), .axis[U_AXIS].max_rate = DEFAULT_U_MAX_RATE, .axis[U_AXIS].max_travel = (-DEFAULT_U_MAX_TRAVEL), .axis[U_AXIS].dual_axis_offset = 0.0f, @@ -276,6 +283,7 @@ PROGMEM const settings_t defaults = { #ifdef V_AXIS .axis[V_AXIS].steps_per_mm = DEFAULT_V_STEPS_PER_MM, .axis[V_AXIS].acceleration = (DEFAULT_V_ACCELERATION * 60.0f * 60.0f), + .axis[V_AXIS].jerk = (DEFAULT_V_JERK * 60.0f * 60.0f * 60f), .axis[V_AXIS].max_rate = DEFAULT_V_MAX_RATE, .axis[V_AXIS].max_travel = (-DEFAULT_V_MAX_TRAVEL), .axis[V_AXIS].dual_axis_offset = 0.0f, @@ -552,6 +560,7 @@ PROGMEM static const setting_detail_t setting_detail[] = { { Setting_AxisStepsPerMM, Group_Axis0, "-axis travel resolution", axis_steps, Format_Decimal, "#####0.000", NULL, NULL, Setting_IsLegacyFn, set_axis_setting, get_float, NULL, AXIS_OPTS }, { Setting_AxisMaxRate, Group_Axis0, "-axis maximum rate", axis_rate, Format_Decimal, "#####0.000", NULL, NULL, Setting_IsLegacyFn, set_axis_setting, get_float, NULL, AXIS_OPTS }, { Setting_AxisAcceleration, Group_Axis0, "-axis acceleration", axis_accel, Format_Decimal, "#####0.000", NULL, NULL, Setting_IsLegacyFn, set_axis_setting, get_float, NULL, AXIS_OPTS }, + { Setting_AxisJerk, Group_Axis0, "-axis jerk", axis_jerk, Format_Decimal, "#####0.000", NULL, NULL, Setting_IsExtended, set_axis_setting, get_float, NULL, AXIS_OPTS }, { Setting_AxisMaxTravel, Group_Axis0, "-axis maximum travel", axis_dist, Format_Decimal, "#####0.000", NULL, NULL, Setting_IsLegacyFn, set_axis_setting, get_float, NULL, AXIS_OPTS }, #if ENABLE_BACKLASH_COMPENSATION { Setting_AxisBacklash, Group_Axis0, "-axis backlash compensation", axis_dist, Format_Decimal, "#####0.000", NULL, NULL, Setting_IsExtendedFn, set_axis_setting, get_float, NULL, AXIS_OPTS }, diff --git a/settings.h b/settings.h index b30591d..7ab7a72 100644 --- a/settings.h +++ b/settings.h @@ -419,7 +419,7 @@ typedef enum { // Calculated base values for driver/plugin stepper settings Setting_AxisExtended0 = Setting_AxisSettingsBase2, Setting_AxisExtended1 = Setting_AxisSettingsBase2 + AXIS_SETTINGS_INCREMENT, - Setting_AxisExtended2 = Setting_AxisSettingsBase2 + 2 * AXIS_SETTINGS_INCREMENT, + Setting_AxisJerk = Setting_AxisSettingsBase2 + 2 * AXIS_SETTINGS_INCREMENT, Setting_AxisExtended3 = Setting_AxisSettingsBase2 + 3 * AXIS_SETTINGS_INCREMENT, Setting_AxisExtended4 = Setting_AxisSettingsBase2 + 4 * AXIS_SETTINGS_INCREMENT, Setting_AxisExtended5 = Setting_AxisSettingsBase2 + 5 * AXIS_SETTINGS_INCREMENT, @@ -630,6 +630,7 @@ typedef struct { float steps_per_mm; float max_rate; float acceleration; + float jerk; float max_travel; float dual_axis_offset; #if ENABLE_BACKLASH_COMPENSATION