Kaynağa Gözat

unload with lowered current

PavelSindler 6 yıl önce
ebeveyn
işleme
d92f6292aa
2 değiştirilmiş dosya ile 7 ekleme ve 1 silme
  1. 1 0
      Firmware/Configuration_prusa.h
  2. 6 1
      Firmware/Marlin_main.cpp

+ 1 - 0
Firmware/Configuration_prusa.h

@@ -205,6 +205,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o
 //new settings is possible for vsense = 1, running current value > 31 set vsense to zero and shift both currents by 1 bit right (Z axis only)
 #define TMC2130_CURRENTS_H {13, 20, 25, 35}  // default holding currents for all axes
 #define TMC2130_CURRENTS_R {13, 20, 25, 35}  // default running currents for all axes
+#define TMC2130_UNLOAD_CURRENT_R 12			 // lowe current for M600 to protect filament sensor 
 
 //#define TMC2130_DEBUG
 //#define TMC2130_DEBUG_WR

+ 6 - 1
Firmware/Marlin_main.cpp

@@ -5740,6 +5740,10 @@ case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
 			//plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3500 / 60, active_extruder);
             
             target[E_AXIS] -= FILAMENTCHANGE_FINALRETRACT;
+			st_synchronize();
+			uint8_t tmc2130_current_r_bckp = tmc2130_current_r[E_AXIS];
+			tmc2130_set_current_r(E_AXIS, TMC2130_UNLOAD_CURRENT_R);
+
             target[E_AXIS] -= 45;
             plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 5200 / 60, active_extruder);
             st_synchronize();
@@ -5750,6 +5754,7 @@ case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
             plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 1000 / 60, active_extruder);
             st_synchronize();
             
+			tmc2130_set_current_r(E_AXIS, tmc2130_current_r_bckp);
 #endif // SNMM
 
 
@@ -6157,7 +6162,7 @@ case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
 		lcd_setstatuspgm(MSG_UNLOADING_FILAMENT); 
 
 //		extr_unload2();
-
+		
 		current_position[E_AXIS] -= 45;
 		plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 5200 / 60, active_extruder);
         st_synchronize();