New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FR] SET_NOZZLE_SIZE #797
Comments
Nozzle size is not something the printer is aware of. This is entirely handled by the slicer. Which functionality do you expect to achieve with this command? |
so why is there a setting for that in the [extruder] part in all examples of the printer.cfg?? nozzle_diameter: 0.400 It's in the config and when I switch the nozzle aren't I supposed to change the value...?? otherwise the [FR] is "remove nozzle_diameter: setting from config" It must be doing something....?? because you cannot run without it "No option 'nozzle_diameter' in section: 'extruder'" |
Apologies, I forgot about that because I never bothered to change that parameter. It's used for a security feature where the firmware rejects moves that extrude more material than the hotend can handle. Unless you are running into issues where your printer rejects gcode due to too much filament extruded you can leave this value at 0.4 and simply ignore it. Aside from that it's not unreasonable to assume that if someone makes a hardware modification to their printer via a nozzle swap it should also be their responsibility to adjust their printer configuration accordingly. |
confusing.. To be able to know the volumetric flow you need the steps/mm from the extruder and the filament diameter... not the nozzle size... what you put in shall get out... if the fw depend on the nozzle size to determent the volumetric flow there is at least one calculation to many... I switch nozzles rather frequently so I taught that it would be beneficial to be able to adjusting the parameters in another way... So I can put at a arbitrary value and forget it.... good to know.. /Martin |
My reply was unclear, its not volumetric flow but extrude ratio. self.nozzle_diameter = config.getfloat('nozzle_diameter', above=0.)
filament_diameter = config.getfloat(
'filament_diameter', minval=self.nozzle_diameter)
self.filament_area = math.pi * (filament_diameter * .5)**2
max_cross_section = config.getfloat(
'max_extrude_cross_section', 4. * self.nozzle_diameter**2
, above=0.)
self.max_extrude_ratio = max_cross_section / self.filament_area This is where the nozzle diameter gets used. move.extrude_r = move.axes_d[3] / move.move_d
[...]
elif move.extrude_r > self.max_extrude_ratio:
if move.axes_d[3] <= self.nozzle_diameter * self.max_extrude_ratio:
# Permit extrusion if amount extruded is tiny
move.extrude_r = self.max_extrude_ratio
return
area = move.axes_d[3] * self.filament_area / move.move_d
logging.debug("Overextrude: %s vs %s (area=%.3f dist=%.3f)",
move.extrude_r, self.max_extrude_ratio,
area, move.move_d) this is where the result of that calculation is checked. |
well I'm not a coder so ... i don't get anything out of this... well something but my point stands if it's a useful parameter that we would be able to adjust it by extended gcode.. feel free to evaluate and take the next step.. |
As @FHeilmann noted this is only a safety feature. If you're going to change nozzles, it's not unreasonable to also update your config, so this doesn't need to be run-time configurable. I just leave mine at 0.5 which is the largest nozzle I ever use, and don't bother changing it. |
I often print with 0.4mm nozzle diameter but extrusion width 0.8 - 1.2 mm. Now I set nozzle diameter in printer.cfg to 0.8mm and see what happens... |
your use case is what the In your case (with a 1.2mm extrusion width) you can set this to 4 * 0.6^2 (=1.44) to raise the safe limit and allow you to extrude up to 1.2mm extrusion width with a 0.4mm nozzle. Klipper didn't ruin your print, your configuration did not account for your specific use-case. |
I will try that setting. Klipper itself did not ruin the print but the default configuration is too conservative regarding extrusion width. What really would help : Thanks, Fabian |
Just to be clear, the max_extrude_cross_section specifies an area - it is the extrusion height multiplied by the extrusion width. With a layer height of .3 and a nozzle diameter of .4, the default value would permit an extrusion width of 2.133mm. The default value is significantly larger than any sane printing value. -Kevin |
thank for your time... |
@KevinOConnor The nozzle_size or any derivatives of set size (like "max_extrude_ratio"), does it have any other function than to give an error. |
Here is another vote for this feature. Changing the Klipper configuration, every time nozzle is changed does not work well in a workflow. It is much streamlined to have a BTW: Excellent firmware, I love it! |
So this looks like this feature won't see any light, what is the max value I have to put in max_extrude_cross_section to use a 1.0 nozzle with default ext. width and don't need to set this value ever again swapping to smaller sizes afterwards? I'm dumb af and have no clue about the math cheers |
Another failed print - I think I will hardcode this for 1mm nozzle too. According to docs, this limit is
|
It's a shame this is closed. This would be really helpful because I could configure prusa slicer to use the I've started doing this for pressure advance, using |
As discussed in Klipper3d#797, being able to set the nozzle_diameter via gcode is useful. Because of how inter-related nozzle_diameter, filament_diameter, max_cross_section, max_e_velocity and max_e_accel are, this change adds a SET_EXTRUDER command that can set any of these parameters. The last configured value for max_cross_section, max_e_velocity and max_e_accel are persisted so that invocations of the gcode can know if these parameters were explicitly configured, or automatically calculated. If they were explicitly configured, and not specified in the g-code invocation, they will not be changed. If they were not configured, or are set to 0 by g-code, they will be automatically calculated. Signed-off-by: Clint Armstrong <clint@clintarmstrong.net>
As discussed in Klipper3d#797, being able to set the nozzle_diameter via gcode is useful. Because of how inter-related nozzle_diameter, filament_diameter, max_cross_section, max_e_velocity and max_e_accel are, this change adds a SET_EXTRUDER command that can set any of these parameters. The last configured value for max_cross_section, max_e_velocity and max_e_accel are persisted so that invocations of the gcode can know if these parameters were explicitly configured, or automatically calculated. If they were explicitly configured, and not specified in the g-code invocation, they will not be changed. If they were not configured, or are set to 0 by g-code, they will be automatically calculated. Signed-off-by: Clint Armstrong <clint@clintarmstrong.net>
As discussed in Klipper3d#797, being able to set the nozzle_diameter via gcode is useful. Because of how inter-related nozzle_diameter, filament_diameter, max_cross_section, max_e_velocity and max_e_accel are, this change adds a SET_EXTRUDER command that can set any of these parameters. The last configured value for max_cross_section, max_e_velocity and max_e_accel are persisted so that invocations of the gcode can know if these parameters were explicitly configured, or automatically calculated. If they were explicitly configured, and not specified in the g-code invocation, they will not be changed. If they were not configured, or are set to 0 by g-code, they will be automatically calculated. Signed-off-by: Clint Armstrong <clint@clintarmstrong.net>
As discussed in Klipper3d#797, being able to set the nozzle_diameter via gcode is useful. Because of how inter-related nozzle_diameter, filament_diameter, max_cross_section, max_e_velocity and max_e_accel are, this change adds a SET_EXTRUDER command that can set any of these parameters. The last configured value for max_cross_section, max_e_velocity and max_e_accel are persisted so that invocations of the gcode can know if these parameters were explicitly configured, or automatically calculated. If they were explicitly configured, and not specified in the g-code invocation, they will not be changed. If they were not configured, or are set to 0 by g-code, they will be automatically calculated. Signed-off-by: Clint Armstrong <clint@clintarmstrong.net>
As discussed in Klipper3d#797, being able to set the nozzle_diameter via gcode is useful. Because of how inter-related nozzle_diameter, filament_diameter, max_cross_section, max_e_velocity and max_e_accel are, this change adds a SET_EXTRUDER command that can set any of these parameters. The last configured value for max_cross_section, max_e_velocity and max_e_accel are persisted so that invocations of the gcode can know if these parameters were explicitly configured, or automatically calculated. If they were explicitly configured, and not specified in the g-code invocation, they will not be changed. If they were not configured, or are set to 0 by g-code, they will be automatically calculated. Signed-off-by: Clint Armstrong <clint@clintarmstrong.net>
I haven't found any way(other than edit printer.cfg) to alter nozzle size
So my suggestion is to have a extended gcode like:
SET_NOZZLE_SIZE 0.4
that could be a part of start gcode or just punched in in the octopi terminal
And by the way GREAT FW...
/Martin
The text was updated successfully, but these errors were encountered: