searching for point xy updated to be more reliable, max z error enlarged to speed up calibration
This commit is contained in:
parent
c9b5ab0e88
commit
ee2de71d26
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
// Firmware version
|
// Firmware version
|
||||||
#define FW_VERSION "3.1.2-alpha"
|
#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.
|
// FW_VERSION_UNKNOWN means this is an unofficial build.
|
||||||
// The firmware should only be checked into github with this symbol.
|
// The firmware should only be checked into github with this symbol.
|
||||||
#define FW_DEV_VERSION FW_VERSION_UNKNOWN
|
#define FW_DEV_VERSION FW_VERSION_UNKNOWN
|
||||||
|
|
|
||||||
|
|
@ -913,7 +913,7 @@ error:
|
||||||
#define FIND_BED_INDUCTION_SENSOR_POINT_XY_STEP (1.f)
|
#define FIND_BED_INDUCTION_SENSOR_POINT_XY_STEP (1.f)
|
||||||
#ifdef HEATBED_V2
|
#ifdef HEATBED_V2
|
||||||
#define FIND_BED_INDUCTION_SENSOR_POINT_Z_STEP (2.f)
|
#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
|
#else //HEATBED_V2
|
||||||
#define FIND_BED_INDUCTION_SENSOR_POINT_Z_STEP (0.2f)
|
#define FIND_BED_INDUCTION_SENSOR_POINT_Z_STEP (0.2f)
|
||||||
#endif //HEATBED_V2
|
#endif //HEATBED_V2
|
||||||
|
|
@ -971,45 +971,46 @@ inline bool find_bed_induction_sensor_point_xy(int verbosity_level)
|
||||||
// Continously lower the Z axis.
|
// Continously lower the Z axis.
|
||||||
endstops_hit_on_purpose();
|
endstops_hit_on_purpose();
|
||||||
enable_z_endstop(true);
|
enable_z_endstop(true);
|
||||||
|
bool direction = false;
|
||||||
while (current_position[Z_AXIS] > -10.f && z_error > FIND_BED_INDUCTION_SENSOR_POINT_MAX_Z_ERROR) {
|
while (current_position[Z_AXIS] > -10.f && z_error > FIND_BED_INDUCTION_SENSOR_POINT_MAX_Z_ERROR) {
|
||||||
// Do nsteps_y zig-zag movements.
|
// Do nsteps_y zig-zag movements.
|
||||||
|
|
||||||
//SERIAL_ECHOPGM("z_error: ");
|
SERIAL_ECHOPGM("z_error: ");
|
||||||
//MYSERIAL.println(z_error);
|
MYSERIAL.println(z_error);
|
||||||
current_position[Y_AXIS] = y0;
|
current_position[Y_AXIS] = direction ? y1 : y0;
|
||||||
initial_z_position = current_position[Z_AXIS];
|
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.
|
// 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);
|
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);
|
go_xyz(dir_positive ? x1 : x0, current_position[Y_AXIS], current_position[Z_AXIS], feedrate);
|
||||||
dir_positive = !dir_positive;
|
dir_positive = !dir_positive;
|
||||||
if (endstop_z_hit_on_purpose()) {
|
if (endstop_z_hit_on_purpose()) {
|
||||||
update_current_position_xyz();
|
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) {
|
if (z_error > FIND_BED_INDUCTION_SENSOR_POINT_MAX_Z_ERROR) {
|
||||||
find_bed_induction_sensor_point_z_step = z_error / 2;
|
find_bed_induction_sensor_point_z_step = z_error / 2;
|
||||||
current_position[Z_AXIS] += z_error;
|
current_position[Z_AXIS] += z_error;
|
||||||
enable_z_endstop(false);
|
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);
|
enable_z_endstop(true);
|
||||||
}
|
}
|
||||||
goto endloop;
|
goto endloop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
initial_z_position = current_position[Z_AXIS];
|
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) {
|
||||||
for (i = 0; i < (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.
|
// 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);
|
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);
|
go_xyz(dir_positive ? x1 : x0, current_position[Y_AXIS], current_position[Z_AXIS], feedrate);
|
||||||
dir_positive = !dir_positive;
|
dir_positive = !dir_positive;
|
||||||
if (endstop_z_hit_on_purpose()) {
|
if (endstop_z_hit_on_purpose()) {
|
||||||
update_current_position_xyz();
|
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) {
|
if (z_error > FIND_BED_INDUCTION_SENSOR_POINT_MAX_Z_ERROR) {
|
||||||
find_bed_induction_sensor_point_z_step = z_error / 2;
|
find_bed_induction_sensor_point_z_step = z_error / 2;
|
||||||
current_position[Z_AXIS] += z_error;
|
current_position[Z_AXIS] += z_error;
|
||||||
enable_z_endstop(false);
|
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);
|
enable_z_endstop(true);
|
||||||
}
|
}
|
||||||
goto endloop;
|
goto endloop;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue