diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 322ea8b22..20296e399 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -8,7 +8,7 @@ // Firmware version #define FW_VERSION "3.1.2-alpha" -#define FW_COMMIT_NR 201 +#define FW_COMMIT_NR 255 // FW_VERSION_UNKNOWN means this is an unofficial build. // The firmware should only be checked into github with this symbol. #define FW_DEV_VERSION FW_VERSION_UNKNOWN diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index 564cf5067..8db94cd42 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -913,7 +913,7 @@ error: #define FIND_BED_INDUCTION_SENSOR_POINT_XY_STEP (1.f) #ifdef HEATBED_V2 #define FIND_BED_INDUCTION_SENSOR_POINT_Z_STEP (2.f) -#define FIND_BED_INDUCTION_SENSOR_POINT_MAX_Z_ERROR (0.01f) +#define FIND_BED_INDUCTION_SENSOR_POINT_MAX_Z_ERROR (0.03f) #else //HEATBED_V2 #define FIND_BED_INDUCTION_SENSOR_POINT_Z_STEP (0.2f) #endif //HEATBED_V2 @@ -971,45 +971,46 @@ inline bool find_bed_induction_sensor_point_xy(int verbosity_level) // Continously lower the Z axis. endstops_hit_on_purpose(); enable_z_endstop(true); + bool direction = false; while (current_position[Z_AXIS] > -10.f && z_error > FIND_BED_INDUCTION_SENSOR_POINT_MAX_Z_ERROR) { // Do nsteps_y zig-zag movements. - //SERIAL_ECHOPGM("z_error: "); - //MYSERIAL.println(z_error); - current_position[Y_AXIS] = y0; + SERIAL_ECHOPGM("z_error: "); + MYSERIAL.println(z_error); + current_position[Y_AXIS] = direction ? y1 : y0; initial_z_position = current_position[Z_AXIS]; - for (i = 0; i < (nsteps_y - 1); current_position[Y_AXIS] += (y1 - y0) / float(nsteps_y - 1), ++i) { + for (i = 0; i < (nsteps_y - 1); (direction == false) ? (current_position[Y_AXIS] += (y1 - y0) / float(nsteps_y - 1)) : (current_position[Y_AXIS] -= (y1 - y0) / float(nsteps_y - 1)), ++i) { // Run with a slightly decreasing Z axis, zig-zag movement. Stop at the Z end-stop. current_position[Z_AXIS] -= find_bed_induction_sensor_point_z_step / float(nsteps_y - 1); go_xyz(dir_positive ? x1 : x0, current_position[Y_AXIS], current_position[Z_AXIS], feedrate); dir_positive = !dir_positive; if (endstop_z_hit_on_purpose()) { update_current_position_xyz(); - z_error = 2 * (initial_z_position - current_position[Z_AXIS]); + z_error = initial_z_position - current_position[Z_AXIS] + find_bed_induction_sensor_point_z_step; if (z_error > FIND_BED_INDUCTION_SENSOR_POINT_MAX_Z_ERROR) { find_bed_induction_sensor_point_z_step = z_error / 2; current_position[Z_AXIS] += z_error; enable_z_endstop(false); - go_xyz(x0, y0, current_position[Z_AXIS], feedrate); + (direction == false) ? go_xyz(x0, y0, current_position[Z_AXIS], feedrate) : go_xyz(x0, y1, current_position[Z_AXIS], feedrate); enable_z_endstop(true); } goto endloop; } } - initial_z_position = current_position[Z_AXIS]; - for (i = 0; i < (nsteps_y - 1); current_position[Y_AXIS] -= (y1 - y0) / float(nsteps_y - 1), ++i) { + for (i = 0; i < (nsteps_y - 1); (direction == false) ? (current_position[Y_AXIS] -= (y1 - y0) / float(nsteps_y - 1)) : (current_position[Y_AXIS] += (y1 - y0) / float(nsteps_y - 1)), ++i) { // Run with a slightly decreasing Z axis, zig-zag movement. Stop at the Z end-stop. current_position[Z_AXIS] -= find_bed_induction_sensor_point_z_step / float(nsteps_y - 1); go_xyz(dir_positive ? x1 : x0, current_position[Y_AXIS], current_position[Z_AXIS], feedrate); dir_positive = !dir_positive; if (endstop_z_hit_on_purpose()) { update_current_position_xyz(); - z_error = 2 * (initial_z_position - current_position[Z_AXIS]); + z_error = initial_z_position - current_position[Z_AXIS]; if (z_error > FIND_BED_INDUCTION_SENSOR_POINT_MAX_Z_ERROR) { find_bed_induction_sensor_point_z_step = z_error / 2; current_position[Z_AXIS] += z_error; enable_z_endstop(false); - go_xyz(x0, y0, current_position[Z_AXIS], feedrate); + direction = !direction; + (direction == false) ? go_xyz(x0, y0, current_position[Z_AXIS], feedrate) : go_xyz(x0, y1, current_position[Z_AXIS], feedrate); enable_z_endstop(true); } goto endloop;