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

selecting an already active extruder #19

Open
rozhkovets opened this issue Jun 16, 2024 · 4 comments
Open

selecting an already active extruder #19

rozhkovets opened this issue Jun 16, 2024 · 4 comments
Assignees
Labels
enhancement New feature or request

Comments

@rozhkovets
Copy link

If you send a command to select an already active extruder, then unloading and loading occurs. This is a useless action. Additional verification needs to be added.

Example:
When you turn on the printer for the first time, the active extruder is set to T0.
In the slicer, the T0 selection command is automatically added to the beginning of the g-code.
At the beginning of printing we get a useless action.

void MSUMP::tool_change(uint8_t index)
{
  if (index != active_extruder) {
  ...
  }
}
@rozhkovets
Copy link
Author

I haven't tested it, but it seems to me that the first call to T0 after loading will cause a useless tool change because.

float selected_filament_nbr = -1;
...
void MSUMP::tool_change(uint8_t index) {

 // Check if a toolcahnge is necessary
 if (selected_filament_nbr == index)

@rozhkovets
Copy link
Author

I also noticed this. I'll try to describe it step by step.
1)turn on the printer (float selected_filament_nbr = -1;)
2)manually load filament T0 to the nozzle. Ready to print
3)start printing

When the printer first receives the T command I get this:

because selected_filament_nbr = -1 tool change process is started.
but when unloading filament

 idler_select_filament_nbr(selected_filament_nbr);
 move_extruder(-MSU_BOWDEN_TUBE_LENGTH * steps_per_mm_correction_factor, MSU_SPEED, MSU_EXTRUDER_NBR);

I get the idler moving to position -1 (parking), because selected_filament_nbr =-1.

then moving the idelr to the required position of the new filament

idler_select_filament_nbr(index);
selected_filament_nbr = index;
move_extruder(MSU_BOWDEN_TUBE_LENGTH * steps_per_mm_correction_factor, MSU_SPEED, MSU_EXTRUDER_NBR);

and I get a collision in merger, because previous filament was not unloaded.

the next tool changes will be without problems

@PierreMasselot1
Copy link
Owner

I see what is happening here. In the way I currently use the MSU I assume that the default state is to have all the filaments in a retracted position. When I start a print the slicer includes a T<first_filament> which means I always start with a tool change.
I could make it so that filament#1 is always assumed loaded and that we return it to said position when a print completes, which might be a better option. I will experiment with this a bit and change it if the workflow is good.

When you say that you manually load filament 0 to the nozzle, how do you set the idler position? Using the move idler option on the LCD simply sets the servo to that position and does not update the "selected" filament, would adding a "Manual load" option that moves the idler to the right position, doesn't trigger an unload/reload and updates the selected filament allow you to keep your current workflow?

@rozhkovets
Copy link
Author

rozhkovets commented Sep 1, 2024

how do you set the idler position?
if the previous print was successfully completed, then the idler is already in the parking position. I just manually push the T0 filament and perform cleaning. I push the T1-4 filaments to the input into the mixer, with the expectation that there is no blockage when changing the tool.
Using the move idler option on the LCD
if the previous print was a failure or a jam occurred when changing the tool, then yes, only LCD control will help return everything to its original state.

anyway, i set "float selected_filament_nbr=0", and now msu will always think that t0 is loaded, cleaned and ready, t1-4 are ready, and idler is parked. Now i am responsible for the print preparation process (loads, additional cleanings, branding of tips, etc.)

Manual load
manual loading option is necessary, especially if the line from msu to extruder is not separable (I have no problems with this, everything is easily separated). I can experiment with this.

I think we don't need to consider that filaments are unloaded or missing at "selected_filament_nbr=-1" because we can't check it in code (no individual filament sensors). We can only make print preparation more convenient and leave everything else to the user, that's the price of cheapness.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants