mirror of https://github.com/Desuuuu/klipper.git
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:
parent
a6f2fc7179
commit
967fe1c01c
|
@ -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 = []
|
||||
|
|
Loading…
Reference in New Issue