mirror of
				https://github.com/Klipper3d/klipper.git
				synced 2025-10-31 10:25:57 +01:00 
			
		
		
		
	HallFilamentWidthSensor: Use current width instead of nomal width while delay is not over (#2907)
Option for using the current diameter instead of nominal while the first measurement isn't in place Signed-off-by: Matthias Pabel <matthias.pabel@hs-augsburg.de>
This commit is contained in:
		| @@ -2016,6 +2016,8 @@ | ||||
| #Virtual filament_switch_sensor support. Create sensor named hall_filament_width_sensor. | ||||
| #min_diameter:1.0 | ||||
| #Minimal diameter for trigger virtual filament_switch_sensor. | ||||
| #use_current_dia_while_delay: False | ||||
| #   Use the current diameter instead of the nominal diamenter while the measurement delay has not run through. | ||||
| #Values from filament_switch_sensor. | ||||
| #See [filament_switch_sensor] for a description of these parameters. | ||||
| #pause_on_runout: True | ||||
|   | ||||
| @@ -52,6 +52,8 @@ Sensor generates two analog output based on calculated filament width. Sum of ou | ||||
|     # | ||||
|     #min_diameter:1.0 | ||||
|     #Minimal diameter for trigger virtual filament_switch_sensor. | ||||
|     #use_current_dia_while_delay: False | ||||
|     #   Use the current diameter instead of the nominal diamenter while the measurement delay has not run through. | ||||
|     # | ||||
|     #Values from filament_switch_sensor. See the "filament_switch_sensor" section for information on these parameters. | ||||
|     # | ||||
|   | ||||
| @@ -31,6 +31,8 @@ class HallFilamentWidthSensor: | ||||
|         self.diameter =self.nominal_filament_dia | ||||
|         self.is_active =config.getboolean('enable', False) | ||||
|         self.runout_dia=config.getfloat('min_diameter', 1.0) | ||||
|         # Use the current diameter instead of nominal while the first measurement isn't in place | ||||
|         self.use_current_dia_while_delay = config.getboolean('use_current_dia_while_delay', False) | ||||
|         # filament array [position, filamentWidth] | ||||
|         self.filament_array = [] | ||||
|         self.lastFilamentWidthReading = 0 | ||||
| @@ -116,13 +118,18 @@ class HallFilamentWidthSensor: | ||||
|                     # Get first item in filament_array queue | ||||
|                     item = self.filament_array.pop(0) | ||||
|                     filament_width = item[1] | ||||
|                     if ((filament_width <= self.max_diameter) | ||||
|                         and (filament_width >= self.min_diameter)): | ||||
|                         percentage = round(self.nominal_filament_dia**2 | ||||
|                                            / filament_width**2 * 100) | ||||
|                         self.gcode.run_script("M221 S" + str(percentage)) | ||||
|                     else: | ||||
|                         self.gcode.run_script("M221 S100") | ||||
|                 elif self.use_current_dia_while_delay: | ||||
|                     filament_width = self.diameter | ||||
|                 else: | ||||
|                     filament_width = self.nominal_filament_dia | ||||
|                  | ||||
|                 if ((filament_width <= self.max_diameter) | ||||
|                     and (filament_width >= self.min_diameter)): | ||||
|                     percentage = round(self.nominal_filament_dia**2 | ||||
|                                        / filament_width**2 * 100) | ||||
|                     self.gcode.run_script("M221 S" + str(percentage)) | ||||
|                 else: | ||||
|                     self.gcode.run_script("M221 S100") | ||||
|         else: | ||||
|             self.gcode.run_script("M221 S100") | ||||
|             self.filament_array = [] | ||||
|   | ||||
		Reference in New Issue
	
	Block a user