Giter Club home page Giter Club logo

tzb-mmu2s-firmware's Introduction

TZB-MMU2S-Firmware

MMU2S 3-axis TMC2130 Stepper controller

Latest stable precompiled HEX files please refer to RELEASES page.

https://github.com/TheZeroBeast/TZB-MMU2S-Firmware/releases

Please review Wiki content regarding all aspects of operating your fresh TZB-MMU2S install.

Points of Note

You DO NOT have to reset to factory settings, all the same EEPROM data structures are used as STOCK-PRUSA-FW
Bowden Length is still important as load is optimised to minimise the posibility of grinding in the event of the
MK3-FSensor not triggering, rare if setup correct, dust/particles still build up over time.
DEFAULT FACTORY BOWDEN LENGETH OF 350mm

Compatibility

Only the MK3S is compatible with this firmware (If anyone has a MK2.5S:MMU2S setup and wants to test it's just the Printer side that'll need tweaking)

Building this custom setup

This is configured to work directly with MMU2S with matching MK3S FW at link below to load filament to IR_SENSOR and unload to FINDA Sensor.

https://github.com/TheZeroBeast/TZB-MK3S-Firmware

PlatformIO

Download, open in PlatformIO The HEX which is placed within the .pio root folder still requires the addition of the the bellow line.

; device = mm-control

Arduino

Recomended version is arduino is the latest.

Adding MMUv2 board

In Arduino IDE open File / Settings
Set Additional boards manager URL to:
https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/package_prusa3d_index.json
Open Tools / Board: / Boards manager... Install Prusa Research AVR Boards by Prusa Research which contains only one board:
Original Prusa i3 MK3 Multi Material 2.0

Select board Original Prusa i3 MK3 Multi Material 2.0

Download source and open src.ino with ArduinoIDE.

Hex file needs to be edited to be recognized as for MMUv2 in case of Arduino build. This is done automatically in cmake build.

Add following line to the begining of MM-control-01.hex:

; device = mm-control

Avrdude

Board needs to be reset to bootloader. Bootloader has 5 seconds timeout and then returns to the application.

This can be accomplished manually by clicking reset button on MMU, or programmatically by opening and closing its virtual serial line at baudrate 1500.

Than flash it using following command, replace <virtual serial port> with CDC device created by MMU usually com<nr.> under Windows and /dev/ttyACM<nr.> under Linux. -b baud rate is don't care value, probably doesn't have to be specified at all, as there is no physical uart.

avrdude -v -p atmega32u4 -c avr109 -P <virtual serial port> -b 57600 -D -U flash:w:MM-control-01.ino.hex:i

tzb-mmu2s-firmware's People

Contributors

akukan avatar awigen avatar mkbel avatar mrprusa3d avatar pavelsindler avatar thezerobeast avatar xpila avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tzb-mmu2s-firmware's Issues

Pulley grinding filament during loads

I'm using the Slic3r settings from the readme, but I still get filament grinding on the MMU pulley during each load, which leads to lots of filament shavings building up in the MMU. I get some loud clicks/thumbs as the pulley is still pushing after the filament is already in the Bondtech gears. Seems like maybe the number of steps required to load between the optical sensor to the Bondtech gears is lower on mine than on yours? Might be different diameters of the hobbed gears. I can try tweaking the number of steps in the FW, but a more robust solution might require some kind of calibration procedure.

Set Retract/Load Amount(F.I.N.D.A. to MMU2Parked)? Loading fail from F.I.N.D.A. not triggered.

When loading filament, too much is going in, there's always a blob on the first extrusion (on tower). This could be due to some retract that is unretracting incorrectly.

When loading filament (after the first time) everything needs a ~cm of shoving towards the drum to get it to catch - it is being unloaded too far as best I can tell.

What would I change to set these distances?

Printer fails to continue after purge lines

Printer fails to continue after loading filament and printing the first purge lines on the build plate started from RC 3 and RC 4, flashing back to pre RC fixed the issue, then reflashed to RC 4 again issue remains.
Log file attached
Recv.pdf
20181215_160609
20181215_160559

Filament selector gets stuck

Running MMU 2.1.4 & MK3 5.0.3

My selector seems to get stuck occasionally when switching between filaments. Seems like it must be running into some resistance but I'm not sure where. Rods and POM nut look good, I've removed the blade cutter. I've loosened and tightening everything evenly and not too tight. Is there any way to make this less sensitive?

Suggestion: Always re-home idler & selector after every failure, or maybe even every filament change

On your firmware, rehoming of the idler and selector is fast & quiet. Unless I'm missing something I see little to no downside to doing it more often, at least after every failure (as long as the FINDA reports clear), and maybe even on every filament change.

I noticed your README says this under failure modes:

  • push middle button to rehome selector and continue (if idler suspected not synced press right to rehome and continue)

That seems confusing to me, how would I know to suspect the idler is not synced? And if I forget to press right, there's little chance of recovering from that. So why not always rehome? :)

Laser sensor destroyed by Black filament not being sensed

I tried the latest release and was having good success until on a black filament load the mmu2 kept pushing the black until it coiled up in the extruder. After cleaning it out I found the filament destroyed the sensor. I think ultimately this is why prusa will never be able to reliably use this sensor in its release. I appreciate all the work you have done and hopefully some of your other features make it into the prusa build. Thanks again.

Resume after unload fail

Had an unload fail where the FINDA ball bearing was stuck, when I cleared the bearing and restarted the MMU the selector went to the incorrect filament No. it was on F4 and should have continued to F3 but resumed at F2, from then on it was one position out on the selected filament.

Reco vering from misload, temperature not accurate

Pressed button on mk3, temp starts ticking up. Pressed button on MMU, fed filament down to printer - without response.

Printer read 220/245 degrees for many minutes without changing. Upon reset, temp read ~241 degres and falling, as if display was frozen before reset.,e

Logs of filament unload failures.

I';ve replaced "echo:busy: processing" with a "." to keep the logs useful.

There are a couple missed events in there. I believe they were feeds that went wrong here.
Log1 two resets at end.txt
At the very end of this, I reset the MMU with its button, and you see the coms overflow.

The next one is much the same, it's misfeed is:
NORMAL MODE: Percent done: 2; print time remaining in mins: 269 SILENT MODE: Percent done: 3; print time remaining in mins: 269 NORMAL MODE: Percent done: 3; print time remaining in mins: 268 SILENT MODE: Percent done: 3; print time remaining in mins: 269.............. echo:Advance K=60.00 E/D=Auto echo:Advance K=0.00 E/D=Auto.. MMU => 'CMD ACK 0x11' MMU <= 'T1'.... MMU => 'waiting for filament @ MK3 Sensor'........................................................................................................................................ MMU not responding....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... ......................

I would find the filament well into the heatbreak (not problematically, but thats where it is).
Wish I had more for you. It's working for a hand full of changes without issue.

Unsure yet if I'll keep running it without something specific to do/look for, Maybe my tips just needed forming, :-)

Load Failure Timeout Pause Print

When a load fails printer remains ready for the MK3-FSensor to trip and pull filament in.

Implement a timeout to pause if in state longer than 5m.
Autorecover hotend heater, complete failed load once fixed and continue.

Evil Dr. BMG MK3 Extruder Testing

I'm having an issue after moving from the standard Prusa firmware to the latest version of TheZeroBeast. When loading a filament to nozzle or when it loads itself via a gcode, it selects the correct filament then loads it perfectly all the way down to the extruder but then it stops and starts flashing red on the currently selected filament and errors out, it clears when i manually remove the filament from the extruder back past the selector (finda) then it loads it again and same error. I can not get it to get past this error, not sure if I did something wrong when flashing this firmware. I have the extruder Fil sensor on and have changed my Slic3r settings to match the readme. (MK3)...Is it supposed to load the filament past the sensor or stop before it? Mine is loading to the extruder gears like in the original firmware.

update, checked extruder gears during load and they never turn to grab the filament once the filament reaches the bondtech. I've also noticed after the firmware change, the Fil Sensor is defaulted to off and has to be turned on after every hard reset. I have also made sure the fil sensor is clean, even removed it to inspect it and clean it with iso.

Print Complete Timing / Termination Issue

2nd attempt at dual color printing (ABS) completed (I'm pretty sure it did at least.. :-) ) but OctoPrint though there was more to print?

This is a strange one. I wasn't right in front of the machine when this happened but it looks like the print completed (extruder moved to the 'park' position, and the bed moved forward to present), but OctoPrint had 87% completed. The heated bed and extruder continued to heat; the filament partially extracted. I was forced to kill the print remotely so I could not see what was on the MK3 display.

p_20181216_080015

p_20181216_084530_1_p

Bring Back the Blade!

I know there's some crow for me to eat on this one, but really, in running MP-1 for a month, I'm sold on the filament cutting. It works really, really well. All sorts of stuff that doesn't feed the first time feeds just great after a cutting.

I'm not sure how it fits into your world-view of MMU operation, but the routine you had never steered me wrong.

How to adjust slic3r for Bondtech-to-nozzle distance

Not a FW bug, but I wasn't sure where else to post this.

I'm trying out a Bondtech BMG-based extruder with indrect filament sensor. I changed the filament sensor to Bondtech gear distance in the MMU2 firmware. But I also need to increase the loading/unloading distance between the Bondtech gears and the nozzle by about 4mm. If I'm right, this is a slic3r setting, not firmware. I thought it might be "Filament parking position" and/or "Extra loading distance" but neither of the tooltips is super helpful. Any suggestions?

215-257 Constantly Wrong

2 issues so far:

  1. When you start it up, it doesn't move selector, If y ou hit the middle button expecting to load filament "0", it instead ejects filament "1" a few inches into free space (missing selector).
    This happens repeatably, after power off, etc.

If you move to a different channel, it homes.

Suspected cause: A "home invalid" flag is not being set/checked.

  1. Going to the 5th position, then once more to the right puts you right into service mode, making it easy to accidentally overwrite bowden cal or erase eeprom. Is this on purpose?!

Idler re-homes to wrong position when MMU closed, works correctly when open

Trying 201 / 2132 and just experienced a new problem. I turned the printer on with the MMU body closed, and the idler and selector both homed correctly. The print started fine, and the first 20 or so filament changes were successful. Then when the printer tried to switch from 4 > 3, I looked over and saw that the selector was on 3 but filament 5 had been driven out the front about 10cm, and the MMU light 3 was blinking (failure to load filament 3, as the FINDA was not triggered). The idler was on the position to drive filament 5, when it should have been on 3.

I opened the body to manually retract filament 5, then closed the body and pushed the right button to do a re-home and reload. The idler did the re-homing motion, but ended up in the wrong position. When trying to load filament 3 it was moving to some in-between position that didn't drive any filaments.

What I had to do is open the body, press the right button to re-home the idler with the body open, then I could see it correctly moved to the filament 3 drive position. So I closed up the body and hit the middle button and was able to resume the print. The next several filament changes have gone fine. I'll update if anything changes later. :)

Any idea why the idler would home correctly on initial boot, but during the print go to the wrong position and then fail to re-home correctly with the MMU closed, but did re-home correctly when opened up?

Idler homing very aggressive

Since the new MM-control RC's the idler homing seems to be very aggressive hitting on the end stops, for around 2 to 3 seconds, not sure if this is as intended.
Also not sure if this is related but the purge block after flashing to the new RC's is pushing a lot of filament out when starting the wipe a very large blob, slicer settings havent changed, only the firmware, was going to flash back and see if this was the cause.

Selector Not Homing on reboot

When I reboot the MMU, the drum will home (quieter now), but the selector just stays put. On first movement, the selector moves and homes.

504TBZ2324//215-555

This means calibrating Bowden length can only really be started with the selector already in position 1, I think.

Feature request: Gcode to disable/enable steppers on MMU2

The MMU2 steppers are fairly noisy when idle, this is on a MK3 and I understand it's even worse on a MK2.5 due to using 12v. They are kept idle to avoid the need to re-home when turning them back on, which on the Prusa FW was a good idea because re-homing was slow and not totally reliable. On your FW re-homing is now relatively quick and reliable (it better be since you're rehoming after every N tool changes), so there's no reason to avoid re-homing. Still, I think disabling the steppers needs to be prompted by a Gcode command and not by something like an idle timeout.

For single material prints you could put the "turn MMU2 steppers off" command after the T? command to quiet things down during long single material prints, and then turn them back on at the end before the final unload.

In the case of multi material prints you probably don't want the steppers turning off during the print, but you could at least turn them off at the end.

Calibration Question

I've read the readme file and perhaps I'm being a bit dumb today. When I enter service mode and attempt to calibrate F1, it pulls it in, then when I press the button again it extracts it. Repeat and rinse over and over again not adding any length. (I have 600mm clear bowden tube)

How to I get the filament to the extrude?

Middle button behaviour

With pressing the middle button I can insert the filament into the mmu but if I do not have a filament ready I cannot abort the loading with the middle button.

Is that supposed to be like that or did I lissed something?

Question: Failed Unloads

I'm still getting grinding on unloading, with occasional failed unloads.

I was getting divoted filament (like >2/3 of the way through), but now they are very small, still, I've gotten a couple failed unloads.

What should I look for? What should I change? I have a sense turning down the accel might be the way to go, but I'm curious what you'd change and where.

First layer cal not working

Here's what happens when I try to do a First layer calibration:

The printer starts warming up, and asks which filament to use. I select Filament 1.

The MMU2 loads filament 1 down to the sensor, then starts blinking (load failure). I guess it did not receive the expected sensor response from the MK3? The printer stays at temp but doesn't do anything.

Once in this state, I can't figure out how to get out. The MK3 is in "Print mode" (LCD menus are as if there is currently a print running), but there is no cancel print option, nor can I eject/unload filament in this mode. I had to open up the MMU to manually retract the filament, then do a hard reset on the printer.

Unfortunately my current Live Z value is not good after adjusting the PINDA, so it looks like I will have to flash Prusa FW to the MK3/MMU to get past this.

Filament selector stays on wrong filament and won't change.

I ran into an issue where the print stopped and I found the selector on position 5 but the light was flashing on 3. The Mk3 display didn't say anything about being stopped. I pushed the middle button and pulled the filament from the 2 positions but the filament selector would not move. I tried to get it to rehome but to no avail. I then pushed the number 5 filament all the way to the extruder and the filament did print the number 3 layer with number 5 filament. In then pulled the filament back but the selector would not move. Number 4 light did turn green but selector stays on 5. I stopped the print and resetted which then started fine again.
20181110_182144
![omnom_black_v2_0 2mm_pet_mk3mmu2-11]
20181110_182402

After initial homing, selector stalls

In motion.cpp, at the method homeSelectorSmooth(), the final movement of the selector to the 1st filament is done with very high speed and the selector stalls.

return moveSmooth(AX_SEL, SELECTOR_STEPS_AFTER_HOMING, 8000, false);

speed = 8000.
It should be le 3000.

Length Tuning doesn't move filament - reposition Drum

Perhaps you've fixed this in the new version, it was certainly a problem since leaving V0.9.

When I make adjustments to the filament position during the bowden length cal, the drum isn't riding the filament in question.

That makes the adjustment blind since the filament doesn't move, only cycling the filament will show you the result. The other issue is the neighboring filament can extrude while the adjustment is being made, causing crashing when you attempt to go to the next channel.

Appologies if it has already been fixed. If not, I assert we should HOLD the drum on the filament the entire time the filament is being calibrated.

Preheat option to match Chris's pretty pla MMU - 160/60

This belongs on the mk3's firmware side but you don't have issue tracking there.. Would love to see an option to pre-heat to 160extruder/60bed to match Chris's pretty PLA MMU v1.2 profiles.. his profiles start the temp at 160 to minimize oozing. There's no easy way to pre-heat to this from the printer itself.. (it defaults to 215/60 for pla..)

MMU no more responding after several middle button rehome

MMU 2.1.5 & MK3 5.0.4 RC3

After 5 or 6 rehoming with middle button MMU lost connection with printer, after layer print, extruder goes on purge tower and stops, (all leds dead, no response from MMU buttons, idler turns free, no error message on LCD screen, pose and resume print from menu changed nothing and stop print was the same, filament stayed in bowden tube, unload filament didn't work. I had to press the cancel button on printer to reset.

I had the same issue with your previous firmware always after several rehoming with middle button.

TMC2130_SG_THR_IDL

in config.h
#define TMC2130_SG_THR_IDL 6 // optimized value: 4 (8 and 6 didn't work)

From the comment I would expect to find the value set to 4, or update the comment.

Mark Rahmani: Fil Runout went +1 position

Robert McKenzie , I hit a weird bug. Had a second mmu needs attention. Rightfully so because filament (in position 4) had ran out. Put a new spool in, and it's trying to feed position 5 now. This is a 4 color print and I don't even have position 5 routed... It's possible I hit the wrong key when attempting to resume as I wasn't sure which does it (I guess the middle button does...) - tried other buttons to get back to position 4 but it wouldn't let me.

2.1.5-RC

Filament Sensor MK3 software does not update Z status

I have been following your progress and the updates look awesome. I just tried your last update but when loading your MK3 Filament Sensor firmware the Z status on the LCD in the from does not update and just has a ? next to the Z. I defaulted the firmware and everything trying to get Z status to show. Really hard to calibrate live Z without this but I was able to get first layer done to the point where I could give a MMU print a try. It is going and so far way better success than with the default prusa. So far with the Prusa firmware I have been about 1 for about 10. Not very good. I will keep you posted on success. Thanks for all your help with this firmware.
20181110_141805
20181110_142305

Filament runout can cause issues

I am not sure if I should also report such issues to you, as Prusa is doing nothing at MMU firmware I hope you will correct issues ;).

  1. issue:
    So I had a filament runout and the filament was moved back but I was not able to get the filament out of the tube. In this case the filament needs to move forward to get it out.
  2. issue:
    I loaded the new filament into the mmu but adter that the mk3 firmware got stuck and I wasn‘t able to continue. This bug is a little bit hard to describe but with several tests this can be easily checked from a programer ;)

Filament Trim Possibly causing "flakes"

Master-Patch1
Version: 999-132

I've recently (last day or two) started getting weird tips, and plastic small round sections in the extrude's upper PTFE tube.

It's hectic around here so I'm not 100% on my profile, but it was weird, and these chips would weld to the tips so they'd end up really big.
image

Anyway, with all that in mind, I noticed when doing a "load" that the snipped short of filament got left in the tube ahead of the trimmed filament (perhaps it pulls back slightly?) and anyway, then there's a loose piece generated, and they can be quiet short, a couple mm in the case I saw.

Maybe it's just normal bad tips and new to me, there's a lot of unknowns, but it coincides with reinstalling the blade.
So nothing to sweat yet but I'd like to note it in case others see it.

Odd behaviors, loading.

Once, after I reboot everything, press right button once on MMU, then center button, instead of loading filament like on the other channels, it rehomes. The other channels worked as expected. I've been unable to reproduce.

It seems like loading is failing, I'm using a filament I thought worked before - though it's a lighter TPU. It wouldn't trigger the sensor, I'm not sure it's coming out far enough.

If I unscrew the bowden and put in PLA, I can get it to trigger if I do it at the right time.

It would be helpful if seeing or not seeing stuff on the sensor showed up in the serial logs - there's a lot of overhead in just trying a filament/movement/speed/angle, whatever, it's 10+ minutes to start a print, and since the sensor stops getting watched you can't just hit load and do your testing.

So far MP1 seems like th best - there's a lot of great new features but it's a pain. Now I have to flash back to get the tube length's tweaked, flash back again, just to see if maybe that helps the sensor trigger. Actual sensor feedback would be better if you can think of how to give it.

Print Stalls, with no error or indication.

Tried a 2 color ABS print and it was doing well, then at 28% it just stopped with no error or notification. No response from all 3 MMU buttons

Not sure if this is a MMU/Printer issue or a Octoprint Issue..

Here is a screen shot of OctoPrint terminal window.. Recv: echo:busy: processing repeats for ever and ever and ever.. :-)

2018-12-15_12-44-11
p_20181215_124737

Loading doesn't work

Every time the printer tries to do a filament change, the filament is unloaded, then the new filament is not fed.

If I don't have all the filaments pre-loaded, the rehoming fails and the drum ends up near/at the homing location.
If I DO have them loaded, it homes correctly and goes to correct filament, but then doesn't see it at the sensor.

Not sure how to help with this - perhaps serial logs?

MMU2 Single filament mode - unload filament needs cooling move

Had a fairly long print using a single color (selected filament at the time of print) - printed fine, but failed on unloading. I forced it out, but it was difficult to pull out and actually took the short ptfe tube at the top of the extruder out with it. (the head of the filament was much larger then normal.. I guess from sitting in the hotend..)

Might get past this issue by having a few cooling moves before ejecting the filament? Is that possible?

Post loading Extruder Clicking

First off: Awesome, it recovers after a failure. Filament didn't load, since there's no cutting, it gave up nicely, sitting to the side to allow me to clear filament, and then it rehomed and went to the right spot.
So... Sensible. :-)

On first load (but also on first material change (likely more to come)) the printer ejects too much filament!

Could it be the "-13" on "extra loading distance".

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.