Extrusion head hits the plate after calibration

I just assembled the printer but after calibration (as explained in the youtube video) the head keeps touching the print plate in such a way that the Y axis is dislocated. is there manual or a way to reset and have it work?

Thanks,

Marc

Recalibrate your z-axis as instructed
First RESTORE FAILSAFE AND STORE MEMORY!
manuals.velleman.eu/article.php?id=534

Hello!
I have had also problems with the z-axis calibration. The first calibration is OK. The calibration as instruction via Velleman works. But it is necessary to load the failsafe data. The problem is, you will lose all the other data there was been changed by you.
I think there is a bug in the marlin software at the converting of the offset data.
Example:
After calibration as instructed you have a z-axis-offset of -1.0mm. if you then go to the auto-home position you will see the correct z-axis-postion of 75mm. If you go to the z-axis-position of 0.0mm, you have the corrected position incl. the offset. If you store now the off-set-data again, there should be nothing change. You have no delta at the z-axix to the prior position. In reality the marlin-software change the offset-data again by using the prior stored offset-data. That is a failure or the program code is not compatible in this point with the Vertex Nano.

Maybe I have found the solution but you must change the source code.
In the source code before you change the offset you must set the of offset-data to zero. (home_offset[i]=0;)
After calibration you must auto-home, then works without load the failsafe data.

I have take this in the area at gcode_M428() (Start at line 6131 of marlin-main.ccp):

inline void gcode_M428() {
bool err = false;
LOOP_XYZ(i) {
if (axis_homed[i]) {
float base = (current_position[i] > (sw_endstop_min[i] + sw_endstop_max[i]) * 0.5) ? base_home_pos((AxisEnum)i) : 0,
diff = current_position[i] - LOGICAL_POSITION(base, i);
if (diff > -20 && diff < 20) {
home_offset[i]=0;
set_home_offset((AxisEnum)i, home_offset[i] - diff);
}
else {
SERIAL_ERROR_START;
SERIAL_ERRORLNPGM(MSG_ERR_M428_TOO_FAR);
LCD_ALERTMESSAGEPGM(“Err: Too far!”);
BUZZ(200, 40);
err = true;
break;
}
}
}

if (!err) {
SYNC_PLAN_POSITION_KINEMATIC();
report_current_position();
LCD_MESSAGEPGM(MSG_HOME_OFFSETS_APPLIED);
BUZZ(200, 659);
BUZZ(200, 698);
}
}

But: This is not the final solution…

Greeting from Berlin

Hello again…
Maybe I have a solution for recalibration without load failsafe data everytime:
Make follow change in the soucre code marlin_main.cpp:

At line 1516:
static void set_home_offset(AxisEnum axis, float v) {
current_position[axis] = current_position[axis] - v;
home_offset[axis] = home_offset[axis] - v;
update_software_endstops(axis);
}

and at line 6131:
inline void gcode_M428() {
bool err = false;
LOOP_XYZ(i) {
if (axis_homed[i]) {
float base = (current_position[i] > (sw_endstop_min[i] + sw_endstop_max[i]) * 0.5) ? base_home_pos(i) : 0,
diff = current_position[i] - LOGICAL_POSITION(base, i);
if (diff > -20 && diff < 20) {
set_home_offset((AxisEnum)i, home_offset[i] + diff);
}
else {
SERIAL_ERROR_START;
SERIAL_ERRORLNPGM(MSG_ERR_M428_TOO_FAR);
LCD_ALERTMESSAGEPGM(“Err: Too far!”);
BUZZ(200, 40);
err = true;
break;
}
}
}

This should allow you to calibrate the position at any time. I hope someone can confirm this.
Nice evening!