Skip to content

Better Ender 5 purge bucket

Advertising
Advertising
?
Creation quality: 5.0/5 (1 vote)
Evaluation of members on the printability, utility, level of detail, etc.

  • 2.5k views
  • 2 likes
  • 8 downloads

License
3D design format
Folder details Close
  • Purge_Bucket.stl
  • Purge_Bucket_Arm.stl

Learn more about the formats

Publication date 2022-10-18 at 18:31
?
Published to Thingiverse on: 2020-04-19 at 18:45
Design number 890909

3D printer file info

3D model description

Update 15/09/2020:

If you are using the gcode mods in this writeup then DO NOT install Cura 4.7 or 4.7.1. The devs have broken dual extrusion using a single nozzle using this method. Big discussion ongoing around how to fix it but no consensus yet so no idea what Cura release will see a fix.

Update 08/07/2020:

I'm currently working on mods to this process that will support 4 colour printing. If you understand what is being done with the current process then it should be easy to extrapolate but for those who prefer the copy/paste approach I will detail the tweaks required and upload the files.

Update 06/07/2020 (South African date format):

I forgot to mention in earlier posts that you'll need to also print and implement the "raise the bed mod" for the Ender 5 for this to work. It's a great mod that gives you around 25mm extra z printing height and makes the nozzle visible instead of being hidden by the frame. Get it here:

https://www.thingiverse.com/thing:3890803


Update 12/05/2020:

The methods mentioned in here have been tested and work with Cura 4.6.1


Before you continue, know that there be dragons but it will be worth it.

Moving right along then...


Short Version:

This is a purge bucket for an Ender 5. The other designs are all made to be mounted on the right side of the gantry which clashes with the power cable feeding the bed thereby requiring you to rotate the bed which I did not want to do because then my strain relief adapter would not work.

This purge bucket mounts to the left side of the gantry and does not clash with a thing. Seems like an obvious solution so I am amazed that nobody else did it. Anyway, here it is.

Print the arm and the bucket. Use a high infil for the arm (60%+) since it needs to be rigid and strong where the T-nut secures it to the gantry. I configured my print so that I used an 80% fill only where the T-nut sits and then lowered the fill to 25% for the rest of the arm. You can do this in cura by using a support blocker and then changing the purpose of the shape to be "Modify settings for overlap".

When you bolt the arm to the gantry you will need to secure it tight. Therefore, if you print it laying on its side so that you don't have to use supports it will probably break when you try to bolt it. Instead I suggest to lay it upside down, with the part that secures to the gantry flat on the bed and use supports to hold the part that the bucket bolts to.

Print the bucket with a reasonable infill. I'd say 30% will do.

To install the arm simply follow what I did in the pictures. Make sure that the arm is as tight against the tensioner as possible and that the tensioner is pulling the belt nice and tight. If you do then the v-slot wheel will hit the arm at exactly -22.6mm on the x axis which is enough for the nozzle to reach within the bucket.

Use some silicone baking sheets (or whatever other silicone you can find) to make a lip above the bucket that the nozzle just brushes against as it passes. I installed my bucket and then trimmed the sheet down until it was just right. Install some aluminium foil within the bucket. I used a layer of prestik (blu tack elsewhere) to line my bucket and give me a sticky layer that the foil would adhere to.

That's it for the bucket. If you want to find out about how to configure Marlin, Cura and the tool change g-codes then continue reading.


Long version:

I purchased a dual extruder from bigtreetech because I thought the idea of being able to print in two colours was really neat and there were a few applications that I could think of where the aesthetic would be useful. Also, I can't stand to paint prints as I consider it to be a monumental waste of time unless absolutely essential.

I then found out that the purge block eats sometimes as much filament as the print for small prints. Obviously filament is precious and I was not happy about this. One of the fundamental problems with a purge block is that is HAS to be printed each layer even if you are not doing a colour change. This is really what results in the huge filament waste. This got me thinking that it must be possible to purge the filament only when there is the need to change colours. After some research I found out about purge buckets but the internet is almost devoid of the information required to take a printer from a single extruder to a dual extruder using a purge bucket. There are patches of info here and there but they often result in poor prints if you try to put them all together. After much pain I am going to use this thing to share with anyone who is interested, how to convert your printer to a dual extruder and how to make it work with a purge bucket.

Let's begin with the installation. If you are using an Ender 5 then I suggest that you use my Hero Me - bigtreetech 2in1out conversion (if that is the extruder you have purchased). If you are using an ender 3 then there are other mounts out there which have been designed for the same extruder and that printer.

My Mount: https://www.thingiverse.com/thing:4147104

After it has been installed you will need to update Marlin to get it to work with a dual extruder. Enter the dragons. This took me a lot of time to figure out so if this helps you then feel free to buy me a coffee :)

Note that the settings to configure the drivers on your second extruder have been left out here since that is trivial and will depend on the drivers that you are using.

Marlin settings:

Config.h
--> Uncomment #define DISTINCT_E_FACTORS
--> Add an additional extruder steps/mm value as shown #define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 800, 432, 94}
--> Do the same for the max feedrate #define DEFAULT_MAX_FEEDRATE { 500, 500, 5, 25, 25 }
--> Do the same for the max accel #define DEFAULT_MAX_ACCELERATION { 500, 500,
100, 5000, 5000 }
--> Invert the axis if required #define INVERT_E1_DIR true

That will allow you to configure the feed rates of the two different extruders based on the type of filament that you are using with each or the type of extruder.

After you have configured Marlin it would be a good time to print and install the purge bucket if you have not already done so.

Once Marlin has been configured you will then have to configure your slicer. This guide focuses on Cura since that is what I use. Now the first thing to understand about Cura is that it hates you and wants you to fail in doing this (disclaimer Cura is actually a really good product for something that is freely developed) so if you run into a few glitches along the way, don't get frustrated.

If you are running a printer that you are upgrading to a dual extruder then you probably want to keep the profiles that Cura already has for that printer since they have been finely tuned to print really well. Unfortunately Cura most likely will not just let you set that printer to have 2 extruders in the machine options menu. Not to worry, you will be able to convince Cura to allow you but it will take some fiddling in the file system. Before you do this make sure that you have saved your profiles and any specific start and end Gcode that you are using on your printer because when you are done Cura is going to see your old, single extruder printer as corrupted.

If you are on macos right click on the cura application in the applications folder. Navigate to Contents --> Resources --> resources
Windows users will have a similar file system.
Within there are two folders of interest; extruders and definitions.

Within the definitions folder find the base json file for your printer. For Creality machines that is creality_base.def.json. Change the machine_extruder_trains section to read as follows:

    "machine_extruder_trains": {
        "0": "creality_base_extruder_0",
        "1": "creality_base_extruder_1"
    },

Alternately, you can just use the json I have uploaded which is valid for Cura 4.5.

Save and exit. Then go into the extruders section. Here you will need to edit the creality_base_extruder_0.def.json file. Mine reads as follows and is attached for reference.

{
"version": 2,
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "creality_base",
"position": "0"
},

"overrides": {
    "extruder_nr": {
        "default_value": 0,
        "maximum_value": "1"
    },
    "machine_nozzle_size": { "default_value": 0.4 },
    "material_diameter": { "default_value": 1.75 }

}

}

Copy this file once you have edited it and paste the copy into the same folder, renaming it creality_base_extruder_1.def.json. Edit that file to have the following contents:

{
"version": 2,
"name": "Extruder 2",
"inherits": "fdmextruder",
"metadata": {
"machine": "creality_base",
"position": "1"
},

"overrides": {
    "extruder_nr": {
        "default_value": 1,
        "maximum_value": "1"
    },
    "machine_nozzle_size": { "default_value": 0.4 },
    "material_diameter": { "default_value": 1.75 }

}

}

You are now ready to go back into Cura and set up your machine.

When you go back into Cura it will set itself up as it did after you installed it for the first time and your old, single extruder Creality printer will no longer work. You will now be able to add a dual extruder Creality printer which uses all of the nice profiles that work so well.

Create that machine and go into the machine settings to enter custom start and end g-code. Note that you must use this start and end g-code for dual colour printing to work. It has been written for ABL but if you don't use ABL then just remove the G29. Two versions of the start code are shown below. The first version uses Lin Advance on E0 but no Lin Adv for E1. The second version uses no Lin Adv at all.

; Ender 5 Custom Start G-code
M117 Getting the bed up to temp!
M140 S{material_bed_temperature_layer_0} ; Set Heat Bed temperature
M190 S{material_bed_temperature_layer_0} ; Wait for Heat Bed temperature
M117 Pre-heating the extruder!
M104 S160; start warming extruder to 160
G28 ; Home all axes
M117 Auto bed-level GO!
G29 ; Auto bed-level (BL-Touch)
G92 E0 ; Reset Extruder
M117 Getting the extruder up to temp!
M104 S{material_print_temperature_layer_0} ; Set Extruder temperature
MOO S{material_print_temperature_layer_0} ; Wait for Extruder temperature
G1 Z1.0 F3000 ; move z up little to prevent scratching of surface
G1 X0.1 Y20 Z0.3 F5000.0 ; move to start-line position
M900 K0.21 L0.21 T0
M900 T0 S0
M900 K0 L0 T1
M900 T1 S0

M117 LET THE PURGE BEGIN!
G1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; draw 1st line
G1 X0.4 Y200.0 Z0.3 F5000.0 ; move to side a little
G1 X0.4 Y20 Z0.3 F1500.0 E30 ; draw 2nd line
G92 E0 ; reset extruder
G1 Z1.0 F3000 ; move z up little to prevent scratching of surface
M117 Time to matter-hack!

///////Second version

; Ender 5 Custom Start G-code
M117 Getting the bed up to temp!
M140 S{material_bed_temperature_layer_0} ; Set Heat Bed temperature
M190 S{material_bed_temperature_layer_0} ; Wait for Heat Bed temperature
M117 Pre-heating the extruder!
M104 S160; start warming extruder to 160
G28 ; Home all axes
M117 Auto bed-level GO!
G29 ; Auto bed-level (BL-Touch)
G92 E0 ; Reset Extruder
M117 Getting the extruder up to temp!
M104 S{material_print_temperature_layer_0} ; Set Extruder temperature
MOO S{material_print_temperature_layer_0} ; Wait for Extruder temperature
G1 Z1.0 F3000 ; move z up little to prevent scratching of surface
G1 X0.1 Y20 Z0.3 F5000.0 ; move to start-line position
M117 LET THE PURGE BEGIN!
G1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; draw 1st line
G1 X0.4 Y200.0 Z0.3 F5000.0 ; move to side a little
G1 X0.4 Y20 Z0.3 F1500.0 E30 ; draw 2nd line
G92 E0 ; reset extruder
G1 Z1.0 F3000 ; move z up little to prevent scratching of surface
M117 Time to matter-hack!

;ENDER 5 END CODE
G91 ;Relative positioning
G1 E-2 F2700 ;Retract a bit
G1 E-2 Z0.2 F2400 ;Retract and raise Z
G1 X5 Y5 F3000 ;Wipe out
G1 Z10 ;Raise Z more
G90 ;Absolute positionning

G1 X0 Y0 ;Present print
M106 S0 ;Turn-off fan
M104 S0 ;Turn-off hotend
M140 S0 ;Turn-off bed

M84 X Y E ;Disable all steppers but Z

Now on to the custom start and end extruder g-code. This is where the secret sauce is. Set them to exactly what you see here.

;EXTRUDER1 END G-CODE
G92 E0 ; Reset extrusion distance
G1 E-5 F1500; Retract 5 mm
M211 S0 ; Turn off soft stops.
G1 X-22.4 F6000 ; Go to X=-22.4 at 100 mm/sec
G92 E0
G1 E-25 F2500; Retract 30 mm (5mm originally +25mm now)
M211 S1 ; Turn on soft stops.

;EXTRUDER2 START G-CODE
G92 E0 ; Reset extrusion distance on new tool
G1 E60 F90 ; Extrude 60 mm of filament at 1.5 mm/s on new tool. Only extrudes 30mm since 30mm is to make up for the retract
G92 E0 ; Set current extruder position to 0mm
G0 F9000 ; Increase feed rate before next travel. Sometimes Cura overrides this and the nozzle goes back to the bed very slowly but it's still better to include.

;EXTRUDER2 END G-CODE
G92 E0 ; Reset extrusion distance
G1 E-5 F2500; Retract 5 mm
M211 S0 ;Soft stops off
G1 X-22.4 F6000 ;Go to X=-22.4 at 100 mm/sec
M211 S1
G92 E0
G1 E-25 F5000; Retract 30 mm total (5 + 25)

;Switch to tool 0
T0
G92 E0 ; Reset extrusion distance on new tool
G1 E60 F90 ; Extrude 60 mm of filament at 1.5 mm/s on new tool
G92 E0 ; Set current extruder position to 0mm
G0 F9000 ; Increase feed rate before next travel.

If anyone is interested in exactly why those g-codes are the way they are I will be happy to explain but know that if you try to put anything in the extruder 1 start code you will have issues at the start of your print. You have to put the E1 start code tacked on to the end of the E2 end g-code. Also if you are using another printer just change the x position in the g-code to match the location of your bucket.

Almost there...

Next up are the cura profiles and these are REALLY important. A few things to note here:
1.) We are doing all of the filament change retraction in the start and end g-code so there is no need to tell cura to do it.
2.) We do not want cura to do any purging or really ANYTHING at all during a filament change because it is all taken care of in the start and end g-code.
3.) Cura has no idea that we are going to be travelling all the way to a purge bucket and back to the print between colour changes. It will

3D printing settings

-

Advertising


Page translated by automatic translation. See the original version.
Issue with this design? Report a problem.

Would you like to support Cults?

You like Cults and you want to help us continue the adventure independently? Please note that we are a small team of 3 people, therefore it is very simple to support us to maintain the activity and create future developments. Here are 4 solutions accessible to all:

  • ADVERTISING: Disable your banner blocker (AdBlock, …) and click on our banner ads.

  • AFFILIATION: Make your purchases online by clicking on our affiliate links here Amazon.

  • DONATE: If you want, you can make a donation via Ko-Fi πŸ’œ.

  • WORD OF MOUTH: Invite your friends to come, discover the platform and the magnificent 3D files shared by the community!


Sharing and downloading on Cults3D guarantees that designs remain in makers community hands! And not in the hands of the 3D printing or software giants who own the competing platforms and exploit the designs for their own commercial interests.

Cults3D is an independent, self-financed site that is not accountable to any investor or brand. Almost all of the site's revenues are paid back to the platform's makers. The content published on the site serves only the interests of its authors and not those of 3D printer brands who also wish to control the 3D modeling market.

100% secure payment by credit card, PayPal, Apple Pay, Google Pay, etc.
View all payment options.