Skip to content

Conversation

@rsghosh
Copy link
Contributor

@rsghosh rsghosh commented Jan 4, 2025

This is meant to address #394 by allowing the use of a third extruder between a trad rack and the printer's main extruder (to ensure a filament segment can be retracted after a runout even if there is a large amount of filament movement between when the runout is detected and when the print is paused for the filament change).

This change is currently untested and will also need documentation changes. Also I am not sure if it should be split into multiple smaller pull requests or not? Please let me know.

This change includes:

  • extruder.py was modified to allow syncing an ExtruderStepper to other extruder objects besides a PrinterExtruder:
    • I transferred some of the changes from a893f98 by dmbutyugin that move part of the sync_to_extruder() function into separate link_extruder_stepper() and unlink_extruder_stepper() functions so that other classes besides PrinterExtruder can have their own implementations of these functions so they can have extruders synced to them. Since a893f98 is already in bleeding-edge-v2, I think this should make it easy to make this change compatible with that branch as well.
    • Instead of checking whether the extruder object to sync to is an instance of PrinterExtruder, it now checks whether that object has the attributes "link_extruder_stepper" and "unlink_extruder_stepper" so that other types that have those functions can have extruders synced to them as well.
  • trad_rack.py was modified to allow ExtruderStepper objects to be synced to its filament driver axis:
    • Added link_extruder_stepper() and unlink_extruder_stepper() functions
    • The code will take care of transferring any extruder steppers synced to trad rack to be synced to the printer's main extruder during printing. If any additional extruder steppers are used, trad rack's main filament driver motor will not be synced to the main extruder during printing (at least for now; I assumed having 3 extruders synced was unnecessary and would just degrade the filament more, but this would be easy to undo if there is a use case).

For now, this is how to modify an existing trad rack setup to test this:

  • The third extruder should be placed somewhere along the filament path between trad rack and the printer's main extruder. In the Kalico config, the third extruder should be configured as an [extruder_stepper] with the extruder config option set to trad_rack.
  • If a belay is used, it should be placed between the third extruder and the printer's main extruder. In the Kalico config, it should be configured the same way as if you were using trad rack's filament driver motor as the secondary extruder (with the extruder_type config option set to trad_rack).

Checklist

  • pr title makes sense
  • squashed to 1 commit
  • added a test case if possible
  • if new feature, added to the readme
  • ci is happy and green

- Split off part of sync_to_extruder() into link_extruder_stepper() and unlink_extruder_stepper()
- Add get_extruder_steppers()
…k_extruder_stepper" and "unlink_extruder_stepper" methods (instead of only to PrinterExtruder objects)
@rsghosh
Copy link
Contributor Author

rsghosh commented Jan 4, 2025

ping @lukeslaboratory

@lukeslaboratory
Copy link

I've changed to this branch successfully, and added the filament driver synced to trad_rack. when i try to use it, i get Unknown command:"EXTRUDER_TYPE:" when loading/unloading
and i cannot buzz the new extruder_stepper with stepper buzz

@lukeslaboratory
Copy link

alright - trying to use tradrack in general even ignoring the steps has resulted in "internal errors"

@rogerlz
Copy link
Contributor

rogerlz commented Apr 9, 2025

@lukeslaboratory Ryan committed some changes after your last testing. Do you have feedback?
@rsghosh anything I can help you with to finish this?

@rsghosh
Copy link
Contributor Author

rsghosh commented Apr 10, 2025

@rogerlz Thanks. It seems like the third extruder is failing to sync and I'm not sure why; if you notice something wrong in the changes please let me know. When I have time I'm going to try to test this on my printer to see if I can reproduce the issue and do more troubleshooting.

Parker helped me do more testing and I think the internal error from before is fixed now. He didn't run into the Kalico shutdowns anymore after the latest changes, but his third extruder stepper would not move. When I have time I plan to add a third extruder to my printer to try to do more troubleshooting.

I'm not sure yet what might be causing this; I think I'm taking the same steps to sync the third extruder stepper to trad rack as what I was already doing to sync the main extruder stepper to trad rack during the loading sequence, which worked fine for that (by swapping out the stepper's stepper kinematics and trapq and switching which ToolHead instance the stepper's step generator is registered to).

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.

3 participants