Standard Filament Change Option?
Does this fabulous tool have any options for Filament change or do I have to script that as well?
I can not see M600 anywhere in the list of gcodes so do we have a macro for this that is like a standard of some kind so I dont have to make the wheel all over?
Not much luck in search options
whosrdaddy last edited by
You mean this?
Well.. I guess - Though I was lost trying to read it but I am kind of slow. I just want to pause, then change filament as M600 does for me in Marlin
Do I need to make macros for every filament and call them with M701 and M702 in some other macro?
In the Tool dropdown I have Load filament and nothing more
I se the example macros but I get lost in the description on how to implement the whole thing - Is this easy peasy or lots of macrotime
deckingman last edited by
@pro3d Never used Marlin so can you explain how M600 works. For sure, there will be a way to do it in RepRap firmware.
Phaedrux last edited by Phaedrux
Is all you want a pause for a mid print filament swap? I think what you want is M226 to insert a pause into the gcode file.
You can edit the pause.g macro to move the head away from the print, then you can swap filament by hand and hit resume. It can be as simple as that.
Well I cant explain it as it just do everything needed by default when activating it in the firmware so you can change filament at height or just refill. But here is an overview: http://marlinfw.org/docs/gcode/M600.html
Yes but that option is like 2011... We want something 2018 but I might be a high demanding customer
Phaedrux last edited by
@pro3d Well I doubt you could script your own customized filament swap command in 2011, but I get what you mean.
The M600 command is limited to what Marlin gives you. With the Duet you can get as custom as you require. With multiple tools, heaters, print heads, etc a single command wouldn't fit a lot of use cases.
Here's what you could do though, create a macro called M600.g and add the commands that would duplicate the Marlin function and then call that macro with M98 where you wanted to do a filament swap.
Ok - So basically I need to configure my own firmware all the way? Nothing basic like this is standardized? Or is that what you linked to maybe.. I guess I need to read and write codes again
resam last edited by
@pro3d everyone has a different machine and different needs. It's not easy to write a one-size-fits-all firmware/g-code/etc. Thats we most people really love the way Duet and RRF use the config-by-gcode and custom macros approach.
Maybe you find my "Filament unload" macro useful:
M83 ; relative extruder mode M291 P"Hotend is heating up..." S1 T0 ; display message G10 S200 ; turn hotend heater on M116 ; wait for the temperatures to be reached M300 S200 P500 ; beep G4 S1 M300 S200 P500 G4 S1 M300 S200 P500 M292 ; hide message M291 P"Filament ready to unload?" S3 ; ask the user G1 E-10 F300 ; retract slow G1 E-750 F2000 ; retract fast M400 ; wait for moves to complete M300 S200 P500 ; beep G4 S1 M300 S200 P500 G4 S1 M300 S200 P500 M291 P"Disable hotend heater?" S3 ; ask the user G10 S0 ; turn hotend heater off M18 E0 ; disable extruder stepper
I can use it together to add a "pause and change filament" command in the slicer of my choice:
M226 M98 P"Filament unload"
I have a similar script for "Filament load", that I can directly call after unload.
Hope this helps.
Phaedrux last edited by
@pro3d Well M226 is the same as hitting the pause button. And the pause button just executes a macro.
Mine is pretty basic. I don't think I've made any changes from what the configurator gave me other than to move to my front left corner in case I want to swap filament.
; pause.g ; called when a print from SD card is paused ; ; generated by RepRapFirmware Configuration Tool on Wed Feb 07 2018 13:21:45 GMT-0600 (CST) M83 ; relative extruder moves G1 E-2 F5000 ; retract 2mm of filament G91 ; relative positioning G1 Z5 F300 ; lift Z by 5mm G90 ; absolute positioning G1 X0 Y0 F6000 ; go to X=0 Y=0
When I do a filament swap I just pull the filament and load a new one. Then hit resume.
Breaking this down, the macro has to:
- retract an amount of filament
- at the same time or afterwards move to a certain point (X,Y Z lift)
- unload a certain amount
So a macro that does just do what M600 does is below
G91 ;relative positioning for Z move G1 Z1 ; lift Z by 1mm G90 ;back to absolute mode as the macro want to go to a specific point for filament unload. M83 ; set extruder to relative mode G1 E-5 F3000 ; Retract 5mm of filament at 3000mm/min G1 X50 Y10 F6000; move to unload point of X50, Y10 G1 E-500 F3000 ; Retract 500mm of filament at 3000mm/min M400 ; Wait for the moves to finish
The equivalent load macro would be a little more complex depending on how you wanted to handle prime/wipe (very printer specific) however with that aside:
M83 ; set extruder to relative mode G1 E480 F3000 ; Load 480mm of filament at 3000mm/min G1 E20 F300 ; Load 20mm of filament at 300mm/min ; put any move to a prime/wipe area here ;continue with filament loading G1 E5 F100 ; Load 5mm of filament at 100mm/min G91 ;relative positioning for Z move G1 Z-1 ; drop Z by 1mm to undo the lift G90 ;back to absolute mode M400 ; Wait for the moves to finish ;assume at this point the extruder is loaded and ready to go back to printing (if that is the desired action)
This is assuming you are manually pressing Pause, when you want to interrupt a print to change filament, and one the filament is loaded and ready to go you press resume.
How you use the load and unload macros is completely up to you. You can have a specific one for each type of filament you define](https://duet3d.dozuki.com/Wiki/Filaments) (that means you can have specific routines for getting the nozzle to the right temperature for loading and unloading a specific filament. have the extruder move different speeds for a flexible or non flexible filament etc. Or you can just have one macro for load and another for unload which you choose whenever you want to load or unload filament.
Thanks for trying to help. I will try to digest this sometime in between r&D... And hope soon I will not hate RRF so much as I currently do
deckingman last edited by
I don't know why you find the concept of macros so difficult. It's not writing code as you keep saying it is. RepRap firmware is all about gcode. There are gcodes for everything. You can enter a single gcode command pretty much at any time to do a single action - during a print, after a print, before a print. If you repeatedly want to do two or more commands, then put them in a file and save it. That is called a macro. It simple carries out each gcode command one after the other. So you don't need to write code. You do need to spend some time learning what gcode to use I'll grant you but it ain't rocket science. They are all listed here https://duet3d.dozuki.com/Wiki/GCode. I'm an old age pensioner (well will be in 3 weeks time), an ex automotive engineer with no formal training in anything much apart from mechanical engineering, who currently makes a living by cutting and screwing bits of wood together. So I don't understand why someone with a masters degree in machine design is finding it so hard to grasp.
It is just a big timethieve and a hazzle dealing with the macros. I guess now I understand that with the Duet you dont get firmware but some bare base for customizing by writing your own macro-base to control everything you need and dont need
These macro files will be stored in a clutter on your controller and nobody else than yourself can know what is going on on your printer - For me this is frustrating and RRF seems to be in a continuous non release BETA stage
I know you guys thinks the world of the way you can control everything you dont need but for most people it is a nerds-nest and could not be recommended to the broad audience and casual user
@pro3d I get your frustrations, but it think they are rather specific to what you are trying to do. If you are an new to 3d printing user you will by a printer with the firmware already configured normally. now that can be configured through customising marlin (or other firmware) or customising RRF. So these, very printer specific, routines will be there for a new user. The reason RRF went down the road of providing so much customisation though gcode is because of the complexities of trying to support so many different printer requirements though compile time changes to Marlin or similar. That ended up with Marlin codebase being fractured so there were loads of different versions each with some features but none with all.
Where I think we need to improve is having the configurator produce settings that works better for a wider variety of machines. Its on the list!
resam last edited by
@pro3d not sure what you mean by "continuous non release BETA stage", but the most recent stable releases are:
- 2.0 on June 5, 2018
- 1.21 on March 21, 2018
- 1.20 on March 8, 2018
- 1.19.2 on September 1, 2017
- 1.19.1 on August 26, 2017
- 1.19 on August 14, 2017
I call that a pretty good track record for stable releases, and bugfix releases.
Regarding your "nerds-nest" comment:
Well, I suppose you did buy a 3D-printer controller board without any actual printer hardware around it? This kinda means you need to build something yourself, don't you think? Same with buying 2020 profiles, you need to cut them to length, drill and tap holes, screw them together, etc. You don't buy a fully assembled frame, do you?
If you want a fully working out-of-the-box printing experience, I would recommend you buy a Prusa i3 MK3 or similar.
That was purely frustration - sorry for the beta comment. Just that it seems like RRF is in a stage where it is not ready to run right of the bat as what I am used to.. I am just tired I guess.. Good Night