Просмотр исходного кода

Merge pull request #1839 from mkbel/rise_z

Raise Z axis while loading filament on MMU2
Marek Běl 5 лет назад
Родитель
Сommit
8bc4952f10
3 измененных файлов с 11 добавлено и 2 удалено
  1. 1 0
      Firmware/Marlin.h
  2. 9 2
      Firmware/Marlin_main.cpp
  3. 1 0
      Firmware/mmu.cpp

+ 1 - 0
Firmware/Marlin.h

@@ -498,3 +498,4 @@ void M600_wait_for_user(float HotendTempBckp);
 void M600_check_state(float nozzle_temp);
 void load_filament_final_feed();
 void marlin_wait_for_click();
+void marlin_rise_z(void);

+ 9 - 2
Firmware/Marlin_main.cpp

@@ -3135,7 +3135,14 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
 }
 
 
-
+//! @brief Rise Z if too low to avoid blob/jam before filament loading
+//!
+//! It doesn't plan_buffer_line(), as it expects plan_buffer_line() to be called after
+//! during extruding (loading) filament.
+void marlin_rise_z(void)
+{
+    if (current_position[Z_AXIS] < 20) current_position[Z_AXIS] += 30;
+}
 
 void gcode_M701()
 {
@@ -3160,7 +3167,7 @@ void gcode_M701()
 		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder); //fast sequence
 		st_synchronize();
 
-		if (current_position[Z_AXIS] < 20) current_position[Z_AXIS] += 30;
+		marlin_rise_z();
 		current_position[E_AXIS] += 30;
 		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder); //fast sequence
 		

+ 1 - 0
Firmware/mmu.cpp

@@ -1368,6 +1368,7 @@ void lcd_mmu_load_to_nozzle(uint8_t filament_nr)
         manage_response(true, true, MMU_TCODE_MOVE);
         mmu_continue_loading(false);
         mmu_extruder = tmp_extruder; //filament change is finished
+        marlin_rise_z();
         mmu_load_to_nozzle();
         load_filament_final_feed();
         st_synchronize();