-
-
Notifications
You must be signed in to change notification settings - Fork 19.3k
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
[FR] Prusa MMU 2.0 support #11859
Comments
I guess Prusa will publish their sources, so we probably we should wait for that? |
Prusa already released source code of their firmware with MMU support. |
I walked through the Prusa sources already. Nothing too complex, but we'll have to generalize, implement the serial communication based on the HAL, etc. to make the MMU usable with as many printers as possible. |
So I didn't buy an MMU from Prusa I made one myself. My trouble right now os just the communication. Like I try to explain below. The system is simple and just need messages system by Serial to work independently. Just an add-in system. Objective: Connect One Multi-Material unit to a printer with communication by Serial on pins Rx2Tx2 (MEGA + RAMPS 1.4 configuration) What's needed: Make a Clone of all movements of extruder E0 to other motor (E1) same way that we can make with the Axis like Z and Z2. Instead of Make some tool change, pick the T number and send it by Serial on format "T1." or "T2." or "T3." , Etc. To change the tool on multi material unit. just continue the print after receive "OK." for example. I know, this isn't a trouble is an improve to new generations of printers with a lot of material with just one extruder noozle and with direct drive extruding with just one motor on head. Can you help me? If you are available to help me I'll post here all the hardware and the code of Multi Material Unit after test and check that os works well. This was what I posted on #11879 |
It shouldn't be too tricky to implement, Does it really need multiple extruders to be defined in Marlin and multiple sets of stepper signal pins? It was my understanding that a single E0 extruder is all that's needed from the Marlin side, and the steppers on the MMU are controlled by its onboard MCU. |
@FNeo31 is your MMU based on the PCB and firmware published by Prusa? I'm building one myself, waiting for the PCB at the moment. From my understanding there is no replication of extruder movements to the MMU. The MMU loads the filament into the extruder and then moves out of the way. The extruder will then pull the filament just through the MMU box. Otherwise you would have to take care for some slack in the filament path should extruder and MMU get out of sync (like the Mosaic Palette+ does). |
Just peeked at the |
That's also my understanding, yes. |
I already created PR #11880 to enable additional uarts. But I'll have a look at the MALYAN_LCD. |
Ok, MALYAN_LCD uses Arduino Serial1 directly. But to provide MMU support also for boards other than AVR some abstraction in the HAL will be required, I guess. |
The HALs all provide some kind of emulation of the Arduino |
Hello, how are you ?, I'm trying to develop the adaptation for marlin I believe that the most complex part will be interpreting the gcode sent by the serial to select the filament and its respective size |
@radsonpatrick My MMU build is still missing the control board, so for the moment I'm using one Arduino Mega2560 + RAMPS for Marlin and another Mega2560 emulating the MMU 2 unit. This way I can implement the serial communication without an actual MMU. I have the initial setup routine (requesting version, buildnr and FINDA status from the MMU) working with my emulator. Next step will be to implement the filament load/unload commands. If you are interested I can push the current state to my github repository. There is no gcode send to or from the MMU by the way. The printer firmware sends simple commands like "Unload filament", "Switch to filament x", "Load filament" to the MMU which answers "ok" when the command has been executed. |
Do you already have som documentation how you build everything? Or is it just a RAMPS + |
I want to understand, so he does not cut filaments in size? than a cutting blade would be serious for that, but that's more sense, would not it just interpret the M600 code? |
The spare Mega2560 is emulating the MMU until I have a working MMU2 unit. Connecting the real MMU2 to the printer board is quite straightforward. But first a short disclaimer: the following info is without guarantee, it's based on the assembly guide and the schematics for the control board published on Prusa's github repository. So if you kill your MMU2 by connecting it to any printer other than the Prusa Mk3, don't blame me for that. Ok, so to hook up the MMU to a RAMPS board you can follow https://manual.prusa3d.com/Guide/3.+Electronics+and+MMU2+unit+assembly/757?lang=en down to Step 40. The power cable (green) will go to your power supply. Prusa uses 24V on the Mk3, but 12V should be fine for the MMU steppers, too. The signal cable (pink) has the following connections
So on the RAMPS board you will connect
If you have an LCD connected to AUX-4, pins 16 and 17 could be an issue, depending on the display at use. But UART0 is USB, and the pins of UART1 and UART3 are used for endstops, so UART2 is the only remaining serial to communicate with the MMU2. SoftwareSerial might be an option in case pins 16 and 17 are used for the display, or for printer boards which have no serial connection at all. |
I'm not using the prusa, I'm using marlin 1.1.9, so it will not be useful to me, I watched some videos and I understood the operation, so your already in what stage? charging the filament? communication with the main arduino?,I want to be a DIY |
I'm working in a MMU system made by me to the tool seletor on MMU and positioning I'm using a 28YBJ-48 stepper with a ULN 2003 drivers to be more compact. For the MMU board I'm using one Arduino nano with ATmega 328. I'll Change the pin -Y to the position of X+ top put the end stop of Y and conect the serial2 of mega+ramps1.4 to the nano. The extruder motor I will clone to feed motor on MMU. Direct controlled by main board. Instead of blade I Will put a gate stop. PS I don't have a PRUSA too |
If you need help with something I am at your disposal. Do you have photos of the project? will you use the same desing as mmu2.0? |
@FNeo31 @radsonpatrick I'm building a Prusa MMU2 myself based on the sources published on Prusa's github repository. If everything works out - missing part is the controller board - I'll have an exact clone of the original Prusa MMU2. Therefore what I'm implementing in Marlin is based on the firmware and communication protocol for Prusa's MMU2. If your self-designed MMU units behave in exactly the same manner they should work, too. |
Is your documentation of the development of your project in github? |
@revilor If you need help I'm giving my whatsaap to exchange ideas about this upgrade. |
OT @revilor don't know if you need it or not but on aliexpress there is a mmu2 board clone available. |
OT @GMagician Brass tubes were no problem here in Germany, 6mm outer and 5mm inner diameter like this https://ebay.us/xATVqt Cutting to 25mm length is no problem as Brass is easy to work with. The selector is not moving too fast, so I guess reducing the openings in the printed part to 5.1mm or so and go without the brass tubes should work fine, too. For the PTFE mount I modified the printed part using the published OpenSCAD file. I reduced the center hole to a diameter of 5mm, tapped an M6x1 thread and directly screwed in the pneumatic connector. On Twitter I have a photo https://twitter.com/revilor3d/status/1043900826257960961. The most challenging part for me was the stepper with a 130mm shaft for the pulleys. I could not find one on the market so I modified a stepper I had laying around and replaced the shaft with a 150mm long 5mm smooth rod, photo also on twitter. Thanks for the tip regarding the controller board. I have all the soldering equipment so doing it myself should be fine. But good to know there is a fallback should I screw up. |
My latest sources are now in my repository: https://github.com/revilor/Marlin/tree/MMU2 Check Configuration_adv.h and feature/Prusa_MMU2. |
Hello, is fully compatible MMU2 with Marlin? I'm finishing my MMU2 clone (Arduino+ramps+drv8825) , it will work with Marlin? |
Good question. Please try it and let us know! |
@FNeo31 did you make your test with the 2.0.5.3 version of marlin or with my PR? |
@BastR, the main version because I start the tests to much time before your post |
Glad to see yours is working. ive done what i think i need to in order to get mine functioning with my machine. did you need to adjust for a different hotend design? i had to mess around with unload positions in marlin and prusa slicer for this to work. i have slightly bigger tips due to the fact im using a clone without the special heatbreak. you mentioned changing tool commands? i haven't touched these is it something i should look into? will be testing a runout sensor design today |
@0lympu5 |
Prusa Slicer Configs: Files to change in Marlin: And I think that I didn't forget anything. My ramming sequence is just on software that its easier to change depending of the material if needed For adjust distances from your extruder just change the setting indicated in blue on attached image Some doubt that you have tell and I'll try to help you My configs are bundle configs so have all Attention to script: you need to custom install python on C:\ directly to don't have spaces on path, the same for FNeo.py location |
I've been using this mmu2 feature for a long time , before it was even merged to master. My setup is SKR 1.4 Turbo running Marlin bugfix-2. On the MMU side I have a my own Teensy 4.0 based MMU unit built from scratch that follows the MMU protocol. I have been somewhat frequently getting tool change errors due to Serial communication error for a long time. Here is the pronterface console output if it helps. The changes that made it work is |
I am considering upgrading from Prusa MK3S Einsy to BTT SKR 1.4 Turbo. My Prusa has an MMU2. Can an MMU2 still be used on a BTT SKR 1.4 board with the LCD screens connected like the TFT3.5 V3.0? These use an extra serial connection compared to a normal LCD. I checked the BTT github for connections of BTT SKR 1.4 and I noticed the WiFi interface also features an independent tx/rx, so if you willing to sacrifice the WiFi connection on the motherboard (which I am), perhaps this port is suitable for a MMU2 serial connection? It seems 3.3V, but maybe the SKR V1.4 also works with 5V serial signal from the MMU2? Are there limitations to a serial port from an MMU2? Is a level shifter board to 5V needed? Anyone has experience with this? EDIT Biqu support confirmed by mail that it is possible to hook up both TFT and MMU2 to different serial ports of the SKR 1.4 and that the rx/tx pins of the WiFi port (UART3) are 5V tolerant, so no level shifter is needed. |
@ruedli I don't know about the SKR 1.4 in particular but for a SKR PRO it works without problems. |
@BastR That is good information, thank you for that. I can live with the more limited options for cutter/powerloss/error counters, but a fully communicating MMU2 - with support for the filament detector in the tower, is important to me. I checked the schematic on Github for the BTT SKR Pro 1.1. It has both a connection called "TFT" and "UART3" that have different RX/TXs connected to them. UART3 is exposed to a connector called "CONT4". I assume you have your TFT connected to "TFT" and the MMU2 to "CONT4" then? Unfortunately the SKR 1.4 does not have this extra UART3. The more and more I look into it, I feel the best option is to"abuse" the UART of the WIFI connector, thus eliminating the Wifi option on the mother board, but I would then add the ESP01 to the TFT. Having two ESP's connected would be overkill anyhow. I still wonder if anyone has tried hooking up MMU2 and TFT to an BTT SKR 1.4 board, and how they did it. I also sent a mail to Biqu, I will post their reply here. EDIT Biqu support confirmed by mail that it is possible to hook up both TFT and MMU2 to different serial ports of the SKR 1.4 and that the rx/tx pins of the WiFi port (UART3) are 5V tolerant, so no level shifter is needed. |
Curious on how you hooked up the MMU2 to the SKR1.3. Did you also connect an TFT (using serial connection) to your SKR1.3? The TFT3.5 seem to connect by using both the EXT0/1 and TFT connector, thus "using" on your TFT3.5 what I think you need for connecting the MMU2. Currently I am considering to use the rx/tx signal from the WIFI connector for the MMU2. Is that a good idea? |
You can use the rx/tx that do you want and that is available. |
Thank @FNeo31 , I ordered an SKR 1.4 and will try to hook up the MMU2S to the WiFi port. This is UART3, which I need to configure in the MMU2 section. Biqu also replied and confirmed that also these pins are 5V tolerant, so no level shifter is needed. |
Set "Serial3" on MMU2 section instead of internal_serial. |
Yes, that makes sense. Should I also enable Serial3 in the HAL? These pins are multipurpose, could also be timers e.g. |
I think it's not necessary, try first |
Yes, will try, but I need to wait till the board arrives, I just ordered them. |
Have you got this working? I have enabled Serial3 on my SKR 1.4 Turbo as trying to use the WiFi port but the MMU2 doesn't respond to it at all eventually saying: MMU not responding - DISABLED Tried a few things in the config currently set to: //#define INTERNAL_SERIAL_PORT 3 As well as a few other things but that is what is currently there, checked pin out and think it was correct to start but have tried swapping the RX/TX around just in case but it made no difference. |
@james194zt |
Yes please ,that would be amazing, I would love to see a working config of it |
@james194zt |
@james194zt wifi port is not Serial 3 by default, unless you hack the framework. see https://youtu.be/NGgzw-XayEo?t=1502 for how to change your lpc1768 framework and set the wifi pins up as Serial 3 |
Doh, I skimmed over that video yesterday thinking it would be the clue to the problem, I missed that part as had seen nothing I hadn't done! |
Great thanks. I got serial established but would still love to see a working config of it. |
@james194zt At the moment is uploading so maybe 15-25 min and I think that all files will be available https://drive.google.com/drive/folders/17SP11Ato4_yCU67k6JUW_ae6bsmJDjqE?usp=sharing |
I am away from home, but hopefully will be able to try it in two weeks. First I compiled a dev version of Marlin, but I noticed that MMU2S support was also merged in in 2.06, so now I am on that tag. It compiled fine. |
@FNeo31 and @james194zt I had a quick look at the config files in https://drive.google.com/drive/folders/17SP11Ato4_yCU67k6JUW_ae6bsmJDjqE?usp=sharing Whereas they should work, it could be that they are not optimal. To recap: There are three modes in which the MMU2 can work:
In order to work in MMU2S mode, you need to be on Marlin 2.06 or newer, that release brought:
As far as I can see, your config files are for a 2.05 release? More in particular, they miss the section PRUSA_MMU2_S_MODE, which comes right after section PRUSA_MMU2 in Configuration_adv.h, like here:
Note that you must upgrade your MK3 extruder, to become an MK3S extruder with an MMU2S sensor working on the extruder door: so this is different from the "normal" MK3S optical switch sensor. It is the same hardware, but different "plastic", no steel roller ball e.g. All three modes need a working serial UART to the MK3 board. Chris is explaining how he enabled that for serial communication (GCODE commands), this would be for the touch panel interface. You need to follow his advice on how to correctly define the pins for Serial3, but then use this UART for the MMU2, and not for receiving GCODE commands. My goal is to set that up for using Serial3 of the Wifi bus, and still use Serial1 for the touch panel (accepting normal GCODE cmmands). The Serial1 is what most people (probably) use for hooking up the MMU2, and this is where I want to deviate, in favor of the BTT TFT3.5 v3 touch panel. Hope this helps, unfortunately I will not be close to my printer the coming weeks, so I cannot try out anything.... If you have it working under 2.05: probably all you want is to go to Marlin 2.06 and get the hardware upgrade working as reliable as under the current Prusa release: In MMU2S mode. |
@ruedli |
@FNeo31 I see, thanks for your feedback. I waited for the feature on the MMU2S,
because I already had my Prusa hardware (chimney-type filament detector
based on IR sensor) in that configuration. I tried a MARLIN dev version
first, but now that the stable 2.06 is released 8 days ago - with the MMU2S
support - I will go for that. For other users hooking op the MMU2, they
should make a decision whether or not they want MMU2S support. If that is
the case, working from 2.06 or newer is in my opinion the best approach,
which is why I commented.
Your feedback on the Serial is very helpful! MMU2 / MMU2S are not any
different with respect to configuring the serial port, so it is good to
see, you got that working.
Op di 4 aug. 2020 om 20:32 schreef FNeo31 <notifications@github.com>:
… @ruedli <https://github.com/ruedli>
Like I put on readme file, this is a old version of Marlin because I
didn't have time to test the 2.0.6.
The version is 2.0.5 from bugfix so from March I think, but with some
changes made by me, because without the changes I had a lot of troubles on
filament change
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#11859 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABGGYOH25FJ4TIUNR2SL3F3R7BH27ANCNFSM4FVTMKPQ>
.
--
Ruud Rademaker
prefered mail: ruud.rademaker@gmail.com
|
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
I will try to add support for the Prusa MMU 2.0 to Marlin as soon as I have a unit at hand. So just to avoid reinventing the wheel: is anybody already working on MMU 2.0 integration?
The text was updated successfully, but these errors were encountered: