The single biggest challenge in modding a Printrbot for dual extrusion is that the Printrboard simply has no support for it. There are some valiant efforts that use various spare pins and re-use of the bed heater/thermistor for the new extruder, but it's a poor set of trade-offs. While 'standard' is overstating the matter, the Ramps 1.4 board is arguably the most common 3d printer controller with dual extrusion support available. This article intends to document my replacement of the Printrboard with a Ramps 1.4 board for my V1 Printrbot Plus in my quest for dual extrusion.
Part 1 of this series documented my conversion to a Bowden tube system for the Printrbot.
Part 3 documents the special considerations of getting the Printrbot to dual extrude.
For any single extruder system, adding a second extruder requires;
- An additional stepper motor driver
- An additional heater circuit for the new hotend
- An additional thermistor (and monitoring circuit,) instrumenting the new hotend
- An Arduino Mega or clone
- A Ramps 1.4 shield that plugs into the top of the Mega
- Mulitple Polulu Stepper Motor Driver boards (in my case 5: X,Y,Z,E0,E1)
I was lusting after LCD control so I also sprung for a clone of the RepRapDiscount Smart Controller which plugs into the Ramps 1.4 shield.
The Printrboard handles all of these capabilities in a single board. The Ramps 1.4 solution is a sizable stack!
Luckily, the two power inputs; 11A and 5A are able to be driven by the 300W ATX power supply that was stock for the Printrbot Plus.
Not all of the connectors are a direct match between the Printrboard and Ramps 1.4. I wanted to be able to go back to the Printrboard if necessary, so I didn't want to change any of the wiring on the Printrbot. This required making up some adapters. Specifically, here are the adapters I made up for the:
- Bed Heater - 2 lengths of 1" 18ga solder tail to male pin header (4 pins; two positive, two negative)
- Extruder 0 Heater - 2 lengths of 1" 18ga solder tail to male pin header (4 pins; positive, no connect, no connect, negative)
- Extruder 1 Heater - 2 lengths of 1" 18ga solder tail to male pin header (2 pins; positive, negative)
- X, Y & Z End Stops - the Ramps connector is two pins and the Printrbot cable has a three pin plug (middle is a no connect). For each I took a section of male pin header two pins wide and bent the pins on one side such that they fit into the 3 pin plug from the end stops. The other side I plugged into some two wide female/female breadboard jumper which plugged into the Ramps 1.4. I'll probably replace these with some female/male jumpers.
I initially attempted to make a breakout board, but the motor cables weren't happy with additional connectors and cable lengths, so I ended up plugging everything (except what's noted above,) directly into the Ramps 1.4. The Ramps 1.4 kit I bought included a fan, so I printed a mount for it. That or some heat sinks on the stepper drivers makes a lot of good sense.
There are numerous cases for the Ramps 1.4 and/or the SmartLCD on Thingiverse. I used minimal ones to make it easier to get at plugs and current pots while tuning.
A lucky accident occurred when I snapped off one of the legs of the fan mount. Since you have to remove the Ramps sheild to screw/unscrew this, and it's common to want to take the fan on and off to get at the current control pots, I added a short section of clear plastic tube to the stub of the legs (I went ahead and broke off the other two as well.) This allows me to pull the fan off and put it back with the system 'hot.'
The real work is in getting the firmware to work. I had managed to avoid messing with the firmware on my Printrbot. Ramps left me no choice. There are numerous firmware releases, I chose Marlin, primarily for its LCD support. There are lots of other good reasons, but it also turns out that configuring and reloading firmware is cheeze-whiz. It's nothing more than modifying and uploading an Arduino program. I'm not going to go too deeply into how to do that, but I will say that it's a worthwhile effort, IMHO, for enthusiasts to undertake. There is a lot of interesting stuff in the firmware to tune your bot.
The Marlin source, available at https://github.com/ErikZalm/Marlin, consists of a large number of files. The ones that will need attention are Configuration.h and Pins.h.
At this point, the choices will diverge depending on exactly what you may have purchased. I purchased a Ramps 1.4 kit from eBay that had the Arduino Mega, Ramps Shield, Pololu drivers, SmartLCD controller and a bunch of other stuff like a fan, some endstops and some cables. There are dozens of combinations of these components offered. I purchased mine from isecsv110 and was very satisfied. The components turned out to be the Geeetech.com sub-variant of the SmartLCD. This equates to the RepRapDiscount Smart Controller for purposes of configuration in Marlin.
Here are links to copies of the Configuration.h and Pins.h I ended up with. 80% of my struggles involved getting the LCD and selection switch to work happily, the rest of the configuration was actually straightforward. This copy of the Pins file had all the non useful pin definitions removed during troubleshooting
Here is a WinMerge comparison highlighting the changes I made to Configuration.h.
I am still a bit befuddled by the lack of an ability to designate independent values for the Steps/mm setting per extruder. Only one value can be set. Given the variance I've encountered just between different colors of filament, let alone different materials, different sizes, etc. I find this very surprising. I have a question up on the Marlin firmware issues forum, but as of this writing, it, like every other version of this question I found on the internet, is unanswered. Many other values are also shared, but I found this to be the most surprising. Especially since support for E0 and E1 are noted numerous other places in the code. Nevertheless, when I measured the calibration between my 3mm, stock Wade's with a .35 tip and a Bowden driven 1.75mm with a .5mm tip, the required values were almost close enough to work well with a shared Steps/mm, so perhaps my fear is ungrounded.
I like having the boards external, others may not want this. I don't know how well this would all fit inside the Printrbot. I'm confident that the SD card daughter-board (a mini-shield on the Ramps 1.4 board or part of the LCD control unit,) would not fit at all. Also, given the cooling needs, the interior of the Printrbot, alongside the three motors, would likely be too hot without some kind of forced cooling.
There is a lot for me to learn about the subtleties of the firmware. Things like PID values of the extruders and jerk values for the steppers offer promising tuning options.