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

trad_rack and extruder: add support for using additional extruder steppers with trad rack #519

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from

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"

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