Page 1 of 1

Dual Extruder PB+ Project Step 2: Ramps 1.4

PostPosted: 2013-Jul-Thu-19-Jul
by Tdeagan
[Note: I unwittingly began this quest just before Printrbot released the Extrudrboard. That release makes the use of Ramps 1.4 unnecessary. I'll go ahead and document my effort for completeness sake, but Part 3 (slicing & printing,) will become the most relevant section of dual extrusion info for users with Printrbot purchased gear. I've ordered an Extrudrboard, so I'll probably re-write this at some point to reflect that approach. (I'll use my Ramps 1.4 to build a Delta) ;) ]

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.

Controller Hardware
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
The lack of these 3 additional components is why the stock Printrboard wasn't a candidate for dual extrusion support Note: No longer true as of the release of the Extrudrboard!. The Ramps 1.4, used extensively in the RepRap community is actually a minimum of three separate systems:
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. Image
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, 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 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.

Re: Dual Extruder PB+ Project Step 2: Ramps 1.4

PostPosted: 2013-Jul-Fri-17-Jul
by ei8htohms
Very cool/intense project!

It does seem weird that you can't set separate E-steps values. Maybe you can get around that with flow rate variables in your slicer? Weird though.

Re: Dual Extruder PB+ Project Step 2: Ramps 1.4

PostPosted: 2013-Jul-Fri-20-Jul
by Tdeagan
At this point I think you're right, flow rate is adjustable per extruder with a recommended value of .9-1.1 and that may well be the mechanism to adjust the Steps/mm. I've been trying to sniff through the code to really understand what the relationship between flow rate and feed rate is. They don't appear to be identical, but I can't say for sure yet.

There's also an adjustable value on the LCD menu labelled 'FR 100%' (percentage changes with the click wheel). It's apparently a global feed rate adjustment, but that seems like a strange thing to adjust in the middle of a print on a global basis. I haven't been gusty enough to experiment with it yet, but hopefully I will soon.

Re: Dual Extruder PB+ Project Step 2: Ramps 1.4

PostPosted: 2013-Jul-Sat-04-Jul
by ei8htohms
Feed rate is speed, flow rate is volume. If you adjust feed rate during a print (via Repetier or the main "Watch" screen on the LCD with the encoder click wheel) you're just adjusting the global speed of the print. I do use this if I realize I've set the print speed too low and I want to speed things up OR of course vice versa.

You can also change flow rate in Repetier on the fly as a percentage or you can "Tune" the E steps per mm (via LCD/encoder), but I guess that would be for both extruders simultaneously.

Some folks have reported using the Flow Rate Tweak separate from the E steps per mm setting to control extrusion width in a manner I don't quite understand however, so maybe there's more to that adjustment than I know (or less than they think? ).

Re: Dual Extruder PB+ Project Step 2: Ramps 1.4

PostPosted: 2013-Jul-Sat-13-Jul
by Tdeagan
Good description! Thanks!!

The more I work with it , the more I want to mod the LCD menu. The FR setting is global (X,Y,Z,E), I'd _really_ like to have controls on the LCD/encoder to mod the flow rate of the Extruders individually (or even as a pair via steps/mm, but if I'm going to hack it, might as well try for what I want.)

I'm with you on not totally understanding what parameters, other than Extruder Steps/mm, would impact the extruder flow rate. Given that there is no per-extruder steps/mm setting, I'm dead curious what parameters are being modified (either via the LCD or via the slicer,) to tweak it. I suppose the only other factor is the time domain, so perhaps it's all some integral of mm/sec that's being tweaked.

I need to find a lot more time to trace the code. The arduino editing environment is a weak multi-file dev environment. I need to build it all out in Eclipse or something.

Re: Dual Extruder PB+ Project Step 2: Ramps 1.4

PostPosted: 2013-Jul-Sat-14-Jul
by ei8htohms
It may also be worth reading what Triffid Hunter has to say about e-steps, flow rate and filament diameter:'s ... tion_Guide

He seems to think that they all affect the same parameter (volume of filament extruded) and recommends simplifying them to the easiest tunable variable. While this approach seems sensible for single extruder machines, it also highlights the possibilities for tuning different extruders as well.