Added backlash configuration to settings

backlash
Patrick Felixberger 2018-10-25 00:17:42 +02:00
rodzic fd9b319270
commit 016885bd7f
4 zmienionych plików z 21 dodań i 8 usunięć

Wyświetl plik

@ -37,7 +37,6 @@
static float target_prev[N_AXIS] = {0.0};
static uint8_t dir_negative[N_AXIS] = {0};
static float backlash_comp[N_AXIS] = {DEFAULT_X_BACKLASH, DEFAULT_Y_BACKLASH, DEFAULT_Z_BACKLASH};
// Execute linear motion in absolute millimeter coordinates. Feed rate given in millimeters/second
@ -116,7 +115,7 @@ void MC_Line(float *target, Planner_LineData_t *pl_data)
if(dir_negative[i] == 1)
{
dir_negative[i] = 0;
target_prev[i] += backlash_comp[i];
target_prev[i] += settings.backlash[i];
// Backlash compensation
pl_backlash.backlash_motion = 1;
@ -132,7 +131,7 @@ void MC_Line(float *target, Planner_LineData_t *pl_data)
if(dir_negative[i] == 0)
{
dir_negative[i] = 1;
target_prev[i] -= backlash_comp[i];
target_prev[i] -= settings.backlash[i];
// Backlash compensation
pl_backlash.backlash_motion = 1;

Wyświetl plik

@ -250,9 +250,12 @@ void Report_GrblSettings(void) {
uint8_t idx, set_idx;
uint8_t val = AXIS_SETTINGS_START_VAL;
for(set_idx = 0; set_idx < AXIS_N_SETTINGS; set_idx++) {
for(idx = 0; idx < N_AXIS; idx++) {
switch(set_idx) {
for(set_idx = 0; set_idx < AXIS_N_SETTINGS; set_idx++)
{
for(idx = 0; idx < N_AXIS; idx++)
{
switch(set_idx)
{
case 0:
report_util_float_setting(val+idx,settings.steps_per_mm[idx],N_DECIMAL_SETTINGVALUE);
break;
@ -269,6 +272,10 @@ void Report_GrblSettings(void) {
report_util_float_setting(val+idx,-settings.max_travel[idx],N_DECIMAL_SETTINGVALUE);
break;
case 4:
report_util_float_setting(val+idx,settings.backlash[idx],N_DECIMAL_SETTINGVALUE);
break;
default:
break;
}

Wyświetl plik

@ -129,6 +129,10 @@ void Settings_Restore(uint8_t restore_flag) {
settings.max_travel[Y_AXIS] = (-DEFAULT_Y_MAX_TRAVEL);
settings.max_travel[Z_AXIS] = (-DEFAULT_Z_MAX_TRAVEL);
settings.backlash[X_AXIS] = DEFAULT_X_BACKLASH;
settings.backlash[Y_AXIS] = DEFAULT_Y_BACKLASH;
settings.backlash[Z_AXIS] = DEFAULT_Z_BACKLASH;
WriteGlobalSettings();
}
@ -261,6 +265,7 @@ uint8_t Settings_StoreGlobalSetting(uint8_t parameter, float value) {
case 2: settings.acceleration[parameter] = value*60*60; break; // Convert to mm/min^2 for grbl internal use.
case 3: settings.max_travel[parameter] = -value; break; // Store as negative for grbl internal use.
case 4: settings.backlash[parameter] = value; break;
}
break; // Exit while-loop after setting has been configured and proceed to the EEPROM write call.
}

Wyświetl plik

@ -28,7 +28,7 @@
// Version of the EEPROM data. Will be used to migrate existing data from older versions of Grbl
// when firmware is upgraded. Always stored in byte 0 of eeprom
#define SETTINGS_VERSION 2 // NOTE: Check settings_reset() when moving to next version.
#define SETTINGS_VERSION 3 // NOTE: Check settings_reset() when moving to next version.
// Define bit flag masks for the boolean settings in settings.system_flags
@ -78,7 +78,7 @@
// #define SETTING_INDEX_G92 N_COORDINATE_SYSTEM+2 // Coordinate offset (G92.2,G92.3 not supported)
// Define Grbl axis settings numbering scheme. Starts at START_VAL, every INCREMENT, over N_SETTINGS.
#define AXIS_N_SETTINGS 4
#define AXIS_N_SETTINGS 5
#define AXIS_SETTINGS_START_VAL 100 // NOTE: Reserving settings values >= 100 for axis settings. Up to 255.
#define AXIS_SETTINGS_INCREMENT 10 // Must be greater than the number of axis settings
@ -95,6 +95,8 @@ typedef struct {
float acceleration[N_AXIS];
float max_travel[N_AXIS];
float backlash[N_AXIS];
// Remaining Grbl settings
// TODO: document system_flags
uint8_t system_flags;