NOTE: This instructable is a work in progress. I just wanted to get the info up here.
I have additional instructions for this modification here:
And here are some videos:
The goal of this instructable is to guide people on how to upgrade their 3d printer with additional extruders or other axes for cheap! I used it to add a diamond hotend to my TEVO Tarantula 3d printer (great cheap printer by the way!), but the same steps will work with any other 3d printer, and any amount of extra extruders in any configuration. Note that I used Repetier firmware because of it's ability to do color mixing with the diamond hotend. This firmware is not required to add additional extruders, but all the steps will be for Repetier. The basic concepts still apply though.
This instructable will lay out:
1. How to find all the components necessary for another extruder and hotend, plus electronics
2. How to edit firmware to add your extra extruders, including how to set up color mixing
3. How to wire your extra extruders
4. Tips for assembly
5. Some tips on how to select good cheap parts
Step 1: Materials
I have additional instructions for this modification here:
You will need the following items to add extruders to your board:
1 set of extruder mechanics per extra extruder
I got mine here, and they work pretty well. They needed a little filing to make room for the bearing, but that was about it. http://www.aliexpress.com/item/Improved-Version-Pr...
1 thermistor per extra extruder (unless your's is mixing)
Get extra because they are fragile: http://www.aliexpress.com/item/5Pcs-lot-100K-ohm-N...
1 heater cartridge per extra extruder (unless your's is mixing)
1 extender board per 4 extra extruders (yes, you can add 4 extruders with one of these boards)
I blew the fuse on this one so make sure you don't use a metal screwdriver to adjust it while on. If you blow the fuse, you can always put another one in and bypass the original. http://www.aliexpress.com/item/Free-Shipping-SMD-c...
1 motor per extra extruder
1 bowden tube for each extra extruder
1 heatsink, heater block, heat break, and nozzle for each extra extruder.
You can get a clone diamond hotend here: http://www.aliexpress.com/item/E3D-V6-long-distanc... You might need an M6x1 and M7x1 tap and die to clean up some threads so it fits together nicely. Don't use too much force on the heat breaks.
Or get the authentic version here (which I recommend): http://www.ebay.com/itm/Genuine-Diamond-Hotend-wit...
If you are just adding normal extruders, see the guide at the end for choosing these components.
1 cooling fan per extra extruder (size depends on your hotend).
For the diamond hotend I got this one: http://www.aliexpress.com/item/1pcs-Black-12V-2Pin...
2x 20 cm wires or longer + 3 per extra extruder. You can use whatever you have laying around.
4x header pin connectors + 6 per extra extruder. These are the crimp on kind.
Here's an example. http://www.ebay.com/itm/like/271604517715?lpid=82&... This is assuming you have male type ports on your board (pins instead of holes).
Heat shrink tube for connectors
2 wires for the 12V connection from the extra board to the power supply - Again, doesn't need to be anything special. Use something about the same thickness as a power cord.
2 Header pin jumpers per extra extruder (to set microstepping on the extra board)
For instance http://www.aliexpress.com/item/2-54mm-Red-Open-Typ... This is way too many though. Get them somewhere else haha.
Mount for extra extruder, hotend, and extra board
These can be printed usually. Look at thingiverse or design one and print it. For TEVO tarantula owners, see the design I uploaded to thingiverse, under the Tarantula group.
Teflon Pipe thread tape
You will need this to seal the threads of your hotend so it doesn't leak.
Step 2: Setting Up Firmware - Configuration.h
Ok so firmware looks a bit daunting at first, but there are only a few things you actually need to edit to change it. First of all, go to this site:
Use the configuration tool to put in all the info for your setup. If you have repetier firmware for your printer already, you can skip this step. Going through the configuration tool from scratch is a bit confusing, so it is preferred to already have a prebuilt firmware. Fill out everything for your current printer (without the upgrades). Download the complete firmware.
You also need to get the Arduino software in order to edit and upload your firmware:
This is only if you have an Arduino based board. If you have another one, use your own editing and uploading software.
Open your editing software, and open the ".ino" file in your firmware folder. This will open up all the files associated with the .ino file as well.
Go to the "Configuration.h" file. On the Arduino software, it is a tab on the top.
Here are all the lines you need to edit. You can find them using CTRL+F (find tool) or just by scrolling through. I will put them in order from top to bottom.
"#define NUM_EXTRUDER 3"
this defines how many extruders you have. Fill in the total number of extruders you want.
"#define MIXING_EXTRUDER 1"
this is only for mixing extruders like the diamond hotend. Set it to 1 for mixing and 0 for non-mixing.
"#define EXT0_DECOUPLE_TEST_PERIOD 60000"
This feature detects whether your temperature sensor is disconnected. If you have a diamond hotend, it will take longer to heat up that normal hotends, so you should set this higher. The defualt was 12 seconds for my printer and I changed it to 60s (60000 ms).
"#define EXT1_X_OFFSET 0"
"#define EXT1_Y_OFFSET 0"
this is the distance from the first hotend nozzle to the second hotend nozzle. For the diamond extruder, it is 0 for both because it comes out one nozzle. For others you will need to determine the distance between nozzles and convert to number of motor steps.
""#define EXT1_TEMPSENSOR_PIN ###"
This tells the firmware which pin to use for the extruder heater for EX1. Notice that the first extruder is EX0. For the diamond hotend or any other mixing extruder, put "TEMP_0_PIN" in place of the pin number. This will make the firmware use the same temperature sensor for both hotends. For others that require another temperature sensor for each hotend, you will need to determine which analog pins are free and use that number here (more on that in the next step).
"#define EXT1_HEATER_PIN -1"
In the mixing setup, only one heater is used, so setting this to -1 disables this second heater. For others, you can put the specific pin that will be used for the heater.
"#define EXT1_STEP_PIN #
#define EXT1_DIR_PIN #
#define EXT1_INVERSE 0
#define EXT1_ENABLE_PIN #"
Here's the important part for controlling your extra extruder motors. You will need to input these numbers after you figure out where you are going to connect the motor on the board (see the pins.h step). Only input these numbers for the extra extruders, not the ones already on the board. So if you have 2 extruder ports on your board, you wouldn't change EXT0 or EXT1 pins.
"#define EXT1_HEAT_MANAGER 0"
I'm not completely sure what this does or if the change is needed, but I think it has something to do with how the heater is controlled. Change it to 0 for mixing extruders. Keep it the same as EXT0 for others.
Now you need to copy everything with a "EXT1" and paste it after all the EXT 1 stuff. Then change the copied text to "EXT2" instead and change each setting based on the above notes. Repeat until you have a section for each extruder.
"#define FEATURE_RETRACTION 1
#define AUTORETRACT_ENABLED 1"
This is so that the printer controls retraction instead of the gcode. Autoretract needs to be enabled for mixing extruders. Set it to 0 to disable it for others. Set all the settings for how long to extract and how fast as well.
The next step is setting up the pins.h file!
Step 3: Editing Firmware - Pins.h
The pins.h file tells you which pins are connected where. It has all the pin numbers, which is what we are after.
You will notice that there is a ton of information in the pins.h file, for each type of motherboard. To find the section you will want to look at, go to the configuration.h file and look for the motherboard type line (at the top of the page). Note the number set there. For my board, the type was 33.
Go to the pins.h file and use the find tool to find "== 33" (replace with your number). It will bring you to a section of code just for your motherboard. In this section you will find all the pin numbers for various things, like the endstops, motors, temeperature sensors, etc.
You need to look at your board to determine which of those pins are available for you to use. For instance, I wasn't using my X-MAX, Y-MAX, or Z-MAX ports on my board so that's what I used to control my extra motor. Copy down which pins those correspond to (2, 15, and 19 in my case). You can use any pins you want. The pins listed as analog pins will be a little more tricky to set up because the analog numbering of the pins is not the same as the digital numbering (which is what you want to use). You will need to figure out what the digital pin# is for those.
For the pins you chose, make sure to change the original values to -1. For instance, I would change ORIG_X_MAX_PIN from 2 to -1. This will prevent the firmware from using these pins for two things at once.
Use the pin #'s you copied down for the step,direction, and enable pins in the configuration.h section.
You are done with firmware!
Now compile the code and send it to your board.
Step 4: Wiring
Prepare the jumper wires by stripping them back and crimping connectors onto the end of them. Then put heat shrink over them. They should fit over the pins on the board and the pins on the cnc shield easily, but snugly.
Connect the 12 V power to the cnc shield. I went straight from my power supply to the board. Make sure you line up + and - correctly!
Connect 5V to the cnc shield. Use the jumper wires prepared in Step 1. This is a bit trickier than the 12V since there most likely will not be a connector specifically for 5V on your board or power supply. You need to find a 5V pin and a ground pin, either with a multimeter, or by looking at a schematic, or sometimes its printed on the board. For the tarantual board (MKS Base 1.2), the X-max, y-max, and z-max ports all have three pins: signal, 5V, and ground. The 5V and ground from this or any other connector should work.
Put Jumpers onto the header pins below each motor driver socket. For 1/8 stepping, which is what I used, put them on the first two sets of pins from the left.
Insert the motor drivers in the cnc shield. Make sure you put them the right way. The "Enable" marking on the back of the motor drivers needs to align with the "Enable" pin on the board. Install heatsinks by peeling off the plastic and pressing them onto the chip. Make sure it isn't touching the pins on the sides.
Adjust the motor voltage. There are tiny potentiometers on the motor drivers that plug into the cnc shield. They are adjusted using a phillips head screwdriver. Do NOT used a metal screwdriver while the board is on. You will most likely blow the fuse and need to replace it. Instead, measure the voltage using a multimeter while it is on. You can touch the potentiometer head itself to measure the voltage. Be careful not to short the board. Then turn it off and adjust with the screwdriver. Repeat until the desired voltage is obtained. I set the voltage to 1 V for my motors. Increase it to increase the current supplied. You can look up stepper motor tuning somewhere else...
Connect the control wires from your board to the cnc shield. You will use the pins you selected in the firmware section. The step pin gets connected to the "X step" pin on the cnc shield, the direction pin gets connected to x-direction, etc. Each extruder should have it's own axis. Note: You only need one enable pin for all the extra motors. In firmware, you can change them all to be the same. All of them will enable and disable at the same time that way.
Put crimp on connectors on all the wires from the stepper motors, and shrink wrap them. Plug all 4 wires into the cnc shield, right next to the corresponding motor driver. Look up how to connect stepper motors on google. If you do it incorrectly, it won't hurt anything. It just won't work or it will spin the opposite way.
You are done with wiring!
Step 5: Mechanics
First, print the mount for your extra hotend, a bracket for your extruder, and optionally a bracket to hold the cnc shield board (I will upload my design for the tarantula if anyone needs it).
The actual assembly is pretty self explanatory, so I will just give you some important tips:
1. Use thread sealing teflon tape on the extruder heat break. It will prevent leaks.
2. Tighten the hotend by hand when it is cold, and then use a wrench to tighten it while hot. Again, this will prevent leaking and clogs.
3. Cut your bowden tube nice and square ESPECIALLY if you have a 4.1mm bored type where the bowden tube goes all the way through to the nozzle. If it isn't cut square, it will cause clogs.
4. Push your bowden tube all the way down. Sometimes it can feel like it is in all the way but really isn't.
5. Make sure your thermistor is secure in it's hole. But DON'T tighten any set screws onto the glass end of the thermistor. It will break and you will need to replace it. Even messing with the wires too much can break it. In fact whenever you work on it, you should have the thermistor out of the way.
6. When you assemble the extruder, make sure the part where the filament runs against it isn't where the set screw is. It will cause issues.
7. It's nice to add a short length of bowden tube to the inlet of the extruder. This will make it easier to feed in, and keep it from getting caught on anything.
8. Make sure the extruder mount doesn't interfere with any other moving parts.
9. Make sure your fan is on the right way, blowing air into the hotend heatsinks rather than away from it.
10. Get lots of zip ties. I mean lots. You will need them. Also wire conduit and heat shrink is great for cleaning up the wiring.
Step 6: Tips for Selecting Extruders
You hear a lot going around about how this is a bad extruder because of that, and this is great because of this etc. But what really matters, and will be the most important to you no matter what, is that the hotend is reliable and doesn't jam. And here are my tips for choosing a hotend that won't jam:
1. The heat break is the most important part of the hotend. It is what affects the reliability the most. So do your research and get the best one you can for the money. I would go with either an all metal heat break that is polished, or a 4.1mm bore one where the bowden goes through to the nozzle. The polished all metal heat break is a bit more expensive but can print at higher temperatures and print faster. But it is more prone to jamming if you do something wrong like turn the fan off. The bowden tube one emulates the E3d lite6 and is extremely easy to fix jams. Plus the surface finish of the heat break doesn't matter, so the heat break will be much cheaper. But it can't print as fast and won't print high temperature materials. I wouldn't bother with anything with a built in teflon tube, because they have to be cut well and still have a section where it goes from metal to teflon where it can jam.
2. The rest of the components can be bought for cheap, including the heat block, nozzle, and heat sink. These do not affect the reliability much. The nozzle might affect the surface finish of the part, but probably not much. Plus you can always drill a nozzle to a larger size if it is really bad. You can get them extremely cheap on aliexpress, so get extras. Make sure you have an M6x1 and M7x1 tap and die so you can clean up messy threads when needed.
3. You might want a nice fan for cooling. One with high CFM. This keeps the heat from traveling up the hotend and jamming it. Plus more cooling makes it so you can print faster because of the shortened transition zone. So it is a good investment.