Skip to content
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

Pellet modded printers Rotation distance implementation #7675

Open
wants to merge 13 commits into
base: main
Choose a base branch
from

Conversation

GiacomoGuaresi
Copy link

@GiacomoGuaresi GiacomoGuaresi commented Dec 6, 2024

Description

This PR introduces the Extruder Rotation Volume and Mixing Stepper Rotation Volume fields for the pellet modded printer and update the documentation related to the Pellet Flow Coefficient.

These changes enhance the configuration options for pellet-based 3D printers, ensuring greater flexibility and compatibility with dynamic setups.

All new fields will be shown only if you use klipper flavor printers (currently the only one supported) and you enable the features in the printer settings

please read the doc/Pellet-modded-printer.md for more details regarding this implementation

Screenshots/Recordings/Graphs

Immagine 2024-12-07 185630
Immagine 2024-12-07 185642
Immagine 2024-12-07 185701
Immagine 2024-12-07 185826

Tests

  • non-regression test in case of using non-pellet printers
  • non-regression test in case of pellet printers that do not use the new introduced functions
  • correct gcode generation for printers using the new parameters

@GiacomoGuaresi GiacomoGuaresi marked this pull request as ready for review December 6, 2024 16:37
@Sineos
Copy link

Sineos commented Dec 6, 2024

Instead of adding such edge case variables, wouldn't it make more sense to aim for a flexible variable system that can be declared in the various gcode files, something like

my_variable1 = 0.05
my_variable2 = "automatic"
my_variable3 = "none"

PRINT_START FUNC_A=my_variable1 FUNC_B=my_variable2 FUNC_C=my_variable3 EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]

@GiacomoGuaresi
Copy link
Author

Instead of adding such edge case variables, wouldn't it make more sense to aim for a flexible variable system that can be declared in the various gcode files, something like

my_variable1 = 0.05
my_variable2 = "automatic"
my_variable3 = "none"

PRINT_START FUNC_A=my_variable1 FUNC_B=my_variable2 FUNC_C=my_variable3 EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]

did you mean something like this inside the material settings page?
image

we chose to adopt this approach because the rotation distance for pellet printers is the only setting that gives you an idea of ​​the material flow and is closely related to it.
we reflected that the extruder rotation distance field was named after the related parameter in klipper but it would be more accurate to call it "Rotation Volume" as it is the reference volume of the extrusion

@GiacomoGuaresi GiacomoGuaresi marked this pull request as draft December 6, 2024 18:25
@Sineos
Copy link

Sineos commented Dec 7, 2024

did you mean something like this inside the material settings page?

Yes, basically in this direction. It would be flexible for all sorts of purposes without clobbering the existing settings. Or even more simple, reusing the existing fields:

grafik

@GiacomoGuaresi
Copy link
Author

Thanks for your valuable feedback, @Sineos.

I totally agree that your suggestion for a more flexible variable system would be a great way to handle less standard parameters. For now, we are focused on implementing pellet 3D printing capabilities in the most open way possible, trying to bring a solid foundation for this technology into the OrcaSlicer project.

In this early stage, we aim to introduce basic but essential features, such as using the rotation distance (or "Rotation Volume", as we intend to rename it for clarity) to control the amount of extruded material, in an intuitive way since in pellet printing there is no other way to measure the amount of extruded material

We definitely plan to expand these features in the future and your idea aligns perfectly with our goal of making the system more flexible and versatile for a wider range of use cases.

For example in the latest developments that I published today I am implementing the generation of the SET_EXTRUDER_ROTATION_DISTANCE commands in the Gcode file generated by the slicer (currently only for Klipper flavor printers) and no longer be a "blind" parameter to be passed only to the START_PRINT function

Thanks again for your insights! 😊

@GiacomoGuaresi GiacomoGuaresi marked this pull request as ready for review December 7, 2024 18:09
@GiacomoGuaresi GiacomoGuaresi changed the title Rotation distance implementation Pellet modded printers - Rotation distance implementation Dec 7, 2024
@GiacomoGuaresi GiacomoGuaresi changed the title Pellet modded printers - Rotation distance implementation Pellet modded printers Rotation distance implementation Dec 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants