aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/HallFilamentWidthSensor.md29
-rw-r--r--klippy/extras/hall_filament_width_sensor.py21
2 files changed, 24 insertions, 26 deletions
diff --git a/docs/HallFilamentWidthSensor.md b/docs/HallFilamentWidthSensor.md
index efb62128..85f47c2c 100644
--- a/docs/HallFilamentWidthSensor.md
+++ b/docs/HallFilamentWidthSensor.md
@@ -92,26 +92,17 @@ Sensor generates two analog output based on calculated filament width. Sum of ou
**hall_filament_width_sensor.is_active** Sensor on or off
## Template for menu variables
- [menu __filament_width_current]
- type: item
- name: "Dia:{0:4.2f} mm"
- parameter: hall_filament_width_sensor.Diameter
+ [menu __main __filament __width_current]
+ type: command
+ enable: {'hall_filament_width_sensor' in printer}
+ name: Dia: {'%.2F' % printer.hall_filament_width_sensor.Diameter}
+ index: 0
- [menu __filament_raw_width_current]
- type: item
- name: "RAW:{0:4.0f}"
- parameter: hall_filament_width_sensor.Raw
-
- [menu __filament]
- type: list
- name: Filament
- items:
- __temp __hotend0_current, __temp __hotend0_target
- .__unload
- .__load
- .__feed
- __filament_width_current
- __filament_raw_width_current
+ [menu __main __filament __raw_width_current]
+ type: command
+ enable: {'hall_filament_width_sensor' in printer}
+ name: Raw: {'%4.0F' % printer.hall_filament_width_sensor.Raw}
+ index: 1
## Calibration procedure
Insert first calibration rod (1.5 mm size) get first raw sensor value
diff --git a/klippy/extras/hall_filament_width_sensor.py b/klippy/extras/hall_filament_width_sensor.py
index b01b69ac..213eba74 100644
--- a/klippy/extras/hall_filament_width_sensor.py
+++ b/klippy/extras/hall_filament_width_sensor.py
@@ -40,6 +40,8 @@ class HallFilamentWidthSensor:
self.filament_array = []
self.lastFilamentWidthReading = 0
self.lastFilamentWidthReading2 = 0
+ self.firstExtruderUpdatePosition = 0
+ self.filament_width = self.nominal_filament_dia
# printer objects
self.toolhead = self.ppins = self.mcu_adc = None
self.printer.register_event_handler("klippy:ready", self.handle_ready)
@@ -112,6 +114,8 @@ class HallFilamentWidthSensor:
# add first item to array
self.filament_array.append([self.measurement_delay + last_epos,
self.diameter])
+ self.firstExtruderUpdatePosition = (self.measurement_delay
+ + last_epos)
def extrude_factor_update_event(self, eventtime):
# Update extrude factor
@@ -130,15 +134,18 @@ class HallFilamentWidthSensor:
if pending_position <= last_epos:
# 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
+ self.filament_width = item[1]
else:
- filament_width = self.nominal_filament_dia
- if ((filament_width <= self.max_diameter)
- and (filament_width >= self.min_diameter)):
+ if ((self.use_current_dia_while_delay)
+ and (self.firstExtruderUpdatePosition
+ == pending_position)):
+ self.filament_width = self.diameter
+ elif self.firstExtruderUpdatePosition == pending_position:
+ self.filament_width = self.nominal_filament_dia
+ if ((self.filament_width <= self.max_diameter)
+ and (self.filament_width >= self.min_diameter)):
percentage = round(self.nominal_filament_dia**2
- / filament_width**2 * 100)
+ / self.filament_width**2 * 100)
self.gcode.run_script("M221 S" + str(percentage))
else:
self.gcode.run_script("M221 S100")