Не могу пока никак победить это автовыравнивание. 
Первая проблема - по команде G28 когда датчик нашел поверхность у сервы срабатывает ретракт, а нужно перед этим приподнять голову.
Победил этим (в модуле Marlin_Main.cpp) :
- Код: Выделить всё • Развернуть
- Find the following code:
 // Retract Servo endstop if enabled
 
 #ifdef SERVO_ENDSTOPS
 if (servo_endstops[axis] > -1) {
 servos[servo_endstops[axis]].write(servo_endstop_angles[axis * 2 + 1]);
 }
 #endif
 #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
 if (axis==Z_AXIS) retract_z_probe();
 #endif
 add these lines of code immediately after the "// Retract Servo endstop if enabled" comment.
 #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
 if (axis==Z_AXIS)
 do_blocking_move_relative(0, 0, Z_RAISE_BEFORE_PROBING);
 #endif
 
 It should look like this when you have made the change:
 // Retract Servo endstop if enabled
 #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
 if (axis==Z_AXIS)
 do_blocking_move_relative(0, 0, Z_RAISE_BEFORE_PROBING);
 #endif
 
 #ifdef SERVO_ENDSTOPS
 if (servo_endstops[axis] > -1) {
 servos[servo_endstops[axis]].write(servo_endstop_angles[axis * 2 + 1]);
 }
 #endif
 #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
 if (axis==Z_AXIS) retract_z_probe();
 #endif
 
 
То же самое при G29 в каждой точке, добавил в функцию probe_pt кусок с подъемом:
- Код: Выделить всё • Развернуть
- static float probe_pt(float x, float y, float z_before, int retract_action=0) {
 // move to right place
 do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], z_before);
 do_blocking_move_to(x - X_PROBE_OFFSET_FROM_EXTRUDER, y - Y_PROBE_OFFSET_FROM_EXTRUDER, current_position[Z_AXIS]);
 
 #ifndef Z_PROBE_SLED
 if ((retract_action==0) || (retract_action==1))
 engage_z_probe();   // Engage Z Servo endstop if available
 #endif // Z_PROBE_SLED
 run_z_probe();
 float measured_z = current_position[Z_AXIS];
 #ifndef Z_PROBE_SLED
 if ((retract_action==0) || (retract_action==3))
 { // скобочки добавить не забыть
 //-------------------------------------------------кусок----------------------------------------------------------------
 #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
 //if (axis==Z_AXIS)
 do_blocking_move_relative(0, 0, Z_RAISE_BEFORE_PROBING);
 #endif
 //---------------------------------------------------кусок-----------------------------------------------------------------------
 
 retract_z_probe();
 } // скобочки добавить не забыть
 
 
После G28 или G29 смотрю координаты по M114 - Z не соответствует действительности
Z_PROBE_OFFSET_FROM_EXTRUDER -4.65 перепроверил 3 раза, да и визуально видно, что 4-5 мм, а по факту на 15 мм где-то шкалит.
Последний раз редактировалось 
Ande 31 янв 2015, 16:22, всего редактировалось 2 раз(а).