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:
matpab 2020-06-06 20:19:00 +02:00 committed by GitHub
parent a6f2fc7179
commit 967fe1c01c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 7 deletions

View File

@ -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

View File

@ -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.
#

View File

@ -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,6 +118,11 @@ class HallFilamentWidthSensor:
# Get first item in filament_array queue
item = self.filament_array.pop(0)
filament_width = item[1]
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