Skip to content

Multi-Tool/Multi-Material support #161

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

Merged
merged 21 commits into from
May 19, 2021

Conversation

codingcatgirl
Copy link
Contributor

@codingcatgirl codingcatgirl commented May 15, 2021

Hi!

Since i really needed Multi-Tool support in this Plugin right now, i decided to just implement it myself :)

Simply put: It's done and this is how it looks:

Screenshot

List of Changes/Features:

Please test and merge and release as a new version :) Thanks! <3

@OllisGit
Copy link
Owner

@codingcatgirl thanks a lot for your pr. I really appreciate it!

Wow,
it looks much much cooler then my current attempt:
image

I will take a look on the implementation in the next days..... will be a great challenge, because I also already changed a lot in the sourcecode (including multi-tool support)...but I didn't pushed/released it to git-branch.

@OllisGit OllisGit added the status: inProgress I am working on it label May 19, 2021
@OllisGit
Copy link
Owner

Hi @codingcatgirl,
I found a small issue.
I selected a spool and click an onn the pen-symbol next to the spool and received the following error.
"item" is already an Object and not a knockout-function. I didn't look deeper into this issue.

image

@OllisGit OllisGit merged commit 0ec0c67 into OllisGit:master May 19, 2021
@codingcatgirl
Copy link
Contributor Author

I'll take a look at this bug tomorrow!

Also, i'll have to submit a pull request for your Cost Estimator plugin, as it tries to call a javascript function that (now) doesn't exist any more because i replaced it with one that supports multi-tools.

@OllisGit
Copy link
Owner

fyi: I just removed the brackets and now it works.

Copy link
Owner

@OllisGit OllisGit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First review is done! Very good.

The odometer-part is still open, because the spoolmanager use the initial version of filamentmanager-plugin (V1.6.0). And there are some bugs e.g. measuring the length.
The latest release of filamentmanager-plugin use newodometer.py

I pushed my latest changes, including your pr to master, but I didn't build a release (odometer-topic), so you can checkup the latest implementation and can take a look on that.
Thanks again!!!!!

Btw. ...dieser PR kam genau zur rechten Zeit. Hatte mich in meiner Implementierung des MultiTool-Support total verrannt!

"spoolName": spoolModel.displayName if spoolModel else '(no spool selected)',
}
if spoolModel is not None:
if checkForFilamentLength and not self.checkRemainingFilament(toolIndex):
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The plugin-setting SETTINGS_KEY_REMINDER_SELECTING_SPOOL is not used.
hmm...mistake or on purpose?
image

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Definitely a mistake! I noticed this while printing something yesterday and wondered whether i messed somethung up there :) You found it!

@codingcatgirl
Copy link
Contributor Author

I'm not sure i have time very soon to take care of the remaining stuff, but i'll see when i have the time. Totally fair that you didn't make a release, it's not a good idea to release it until you can release a compatible update for costestimator :) I'll see what i can do but yes, you're welcome for the changes and i'm glad i can start doing multi-material printing soon!

I also have my eye on that one ticket about having the spoolmanager select the right filament based on the gcode. I'm building my own multi material unit with 24 slots right now, so i will have all my filament loaded in it and would want octoprint to automatically translate all the tollnumbers in the gcode to the "correct" toolnumbers on the mmu :) Not sure, possibly might also just make it its own plugin but it definitely will have to work together with spoolmanager :)

@OllisGit
Copy link
Owner

I finished the odometer-fix and improved some UI behaviour.
Also the interaction between PrintJobHistory (PJH) is now also working.

Now, I will take a look into the CostEstimator-Plugin (CE).

Wow, 24 how does this thing looks like?

Again, thanks for your help!
I think I will release SP, PJM and CE in the next week.

Olli

PS. spoolselection via gcode is a really nice feature....I will wait for your pr ;-)

@codingcatgirl
Copy link
Contributor Author

Hey, awesome! Glad i could help you speed up development on this :)

24 slots… well. Honestly, i modified the prusa MMU (will publish it when it's done and the firmware is coded) to put the slots closer together, that makes it still less than 25cm wide, so it easily fits on top of the printer. It's modular, so you print just as many 6-slot-blocks as you want and screw them together with the end pieces :)

Spoolselection via gcode is absolutely a thing i'll do then. Making it a PR for your repo would make sense, since it only makes sense with a spool registry anyway :)

@OllisGit OllisGit added status: inNextRelease Will be implemented/fixed in next release and removed status: inProgress I am working on it labels May 24, 2021
OllisGit added a commit that referenced this pull request May 24, 2021
- PR #161, #117, #133, #134, #153 multi tool support. Big thanks goes to @codingcatgirl
- PR #61, #59 temperature offset. Thanks a lot @WyattNielsen

- E/B #118 use newodometer.py
- E add "implementation-api"

- B #150, #116 CSV import fixed

..other tickets
- #102, #132, #135, #140, #142
@wolph
Copy link

wolph commented May 25, 2021

Really nice pull request @codingcatgirl and the code quality seems to have improved as well. Great work!

That modified MMU is something that I am interested in as well... I really don't like having to switch filaments with the MMU so if I could load up a whole bunch that would be so much more convenient. I already replaced the MMU outlets with 6mm PTFE tubing + connectors to reduce friction (4mm works great for new filament but not if there's a small blob at the end) but that would be even more useful.

@codingcatgirl
Copy link
Contributor Author

codingcatgirl commented May 25, 2021

PXL_20210525_143242560

Here's a sneak peek of how it looks :) Right now my test unit "only" has 12 slots, because that's enough for testing – and yes, it is still barely wider than Prusa's original version. Also, of course the carriage isn't mounted right now. Basically, it's the Prusa mmu, but the pulley part is flipped with the feeder gear on top and the idler bearings on the bottom. So far it's looking good, i'm still writing the software :) I also modified some parts of the MMU to use more standard parts so it's easier to diy without having to get prusa-specific proprietary parts, though i'll still release a version wehere those parts aren't modified so you can reuse parts of Prusa's MMu more easily. Generally i'm trying to reduce cost as much as possible. You should be able to run it on an Arduino UNO+CNC shield as a electronics without any issues even. In fact, that's what i'm testing it on. :)

@wolph
Copy link

wolph commented May 25, 2021

Very nice :)

While I love the MK3S, I have grown to loathe the MMU because of all the issues. This looks like it could be a large improvement in both usability and functionality.

@codingcatgirl
Copy link
Contributor Author

Firmware has been finished today, but i'm still missing some part to move forward to proper testing :)

What are common issues with the standard MMU?

@wolph
Copy link

wolph commented May 25, 2021

I still regularly experience jams due to stringing when retracting. Additionally retraction sometimes results in blobs which are big enough to prevent proper filament loading. This part might be filament dependent though. I often use cheap sunlu petg.

And before I upgraded to the 6mm ptfe tube I would notice under extrusion at times.

The most annoying part of all though... when it's not working you often need to unscrew the top part to clear the blockage which really should be a fast and tool-less operation.

@codingcatgirl
Copy link
Contributor Author

Oh, well to those things i can say:

The retraction, imo, depends on the manner in which the filament is retracted. there's another project to build a filament multiplexer (sorry, if forgot the name, it has a website and is on thingiverse) and in the documentation it provides a precise before-tool-change gcode that the author says you should absolutely use to get the perfect tip after each unload. I definitely plan to use that G-Code myself :) I bet it would also help with the original MMU. Also, yep, cheap filament of course isn't such a good idea. I've ordered some prusament a while ago and the difference was so striking that i haven't gone back.

Does the original MMU not use 6mm PTFE? I assumed it did.

Also, yep, you'll never have to unscrew the top part with this one for obvious reasons :)

@codingcatgirl
Copy link
Contributor Author

SMuFF is the name of the project! And here's the G-Code https://github.com/technik-gegg/OctoPrint-Smuff. Look for "MMU Ramming Sequence". False alarm thoguh, the sequence used is the one used by Marlin, but the project author says that it creates an almost perfect nozzle tip each time. Huh! I wonder if the MK3S firmware doesn't use the same ramming sequence?

@wolph
Copy link

wolph commented May 26, 2021

Also, yep, cheap filament of course isn't such a good idea. I've ordered some prusament a while ago and the difference was so striking that i haven't gone back.

I know, I've got quite a bit of prusament as well but especially for quick test prints I like the cheap sunlu. It's only about 50% of the price. Generally it works quite well honestly, but it could be a factor.

Does the original MMU not use 6mm PTFE? I assumed it did.

No. It uses 4mm which is indeed annoying as blobs don't fit

@codingcatgirl
Copy link
Contributor Author

Oh sorry, i must have mixed something up. I actually expected it to use 4mm… i mean that's what i see in the design xD Didn't know that was a bad idea though. Any modifications for 6mm on the main tube should totally work with my version

@wolph
Copy link

wolph commented May 27, 2021

I mean 2mm inner diameter, 4mm outer. That should be enough for filament but I've often seen blobs getting stuck if something went wrong with the print out something.

So 4mm inner diameter and 6mm outer diameter makes it all much smoother

@codingcatgirl
Copy link
Contributor Author

Yeah that totally makes sense. For a bowden extruder it's certainly not feasable, but since the MMU is only supposed to feed the filament into the printer…

I'll have to say thought that you'll only be able to use it for the ptfe tube that comes out of selector in my build. The simple reason: The filament slots are only 5.4mm apart :)

@wolph
Copy link

wolph commented May 28, 2021

Perhaps you could go staggered? It might not even be an issue with your design but I've noticed it helps (or feels like it helps) a bit with the occasional under extrusion issues for me.

@codingcatgirl
Copy link
Contributor Author

What do you mean with staggered?

@wolph
Copy link

wolph commented May 28, 2021

Similar to old computer plugs, instead of having everything right next to eachother you can offset the tube height slightly:
image

That can save a lot of space. When angled right it should end up at the same place :)

@codingcatgirl
Copy link
Contributor Author

Ah yeah. I thought about something like that but it would be absolute horror, since the selectur would have to move up and down :D

@wolph
Copy link

wolph commented May 28, 2021

Nah, only the ptfe inlet would need it. It could end up in the same place. As long as there's something to guide it

@codingcatgirl
Copy link
Contributor Author

Okay, now im confused and also intrigued. Could you maybe make a sketch that explains what you mean?

@wolph
Copy link

wolph commented Jun 1, 2021

Please forgive my shoddy CAD work, I'm pretty new at this ;)
Ideally the extrusion from the 6mm tube to the outlet would be curved slightly from both sides so they end up in the same direction, but I hope you get the gist :)

mmu v1.zip

The tubes would come in from the bottom in this view and the filament would come out at the top. For the actual MMU the orientation would probably be slightly different

image

@codingcatgirl
Copy link
Contributor Author

Ah! Well, the problem is that on the other side of the tube you'd need to have the same arrangement, because the pulley carriage can't move up and down either :D

@codingcatgirl
Copy link
Contributor Author

On a different note though… i just noticed yesterday that you can get PTFE tube with 4mm outer diameter and 3mm inner diameter, which should also solve the problem?

@wolph
Copy link

wolph commented Jun 1, 2021

I think that would work as well :)

It's also not the worst problem in the world and if you can easily access the head you can simply snip it so you never encounter this issue of course. For regular MMU2s I found it to be a huge improvement, but it's honestly a bit of a workaround for a problem that shouldn't exist ;)

@OllisGit OllisGit removed the status: inNextRelease Will be implemented/fixed in next release label Oct 24, 2021
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.

[Feature Request] Support filament changes? Feature Request MMU2 aka MultiTool Support
3 participants