Mar 242014

I have two 3D printers, both are the FDM types that squirt out plastic filament and build up an object layer by layer. My first printer is MendelMax 2.0 cartesian printer I built from a kit a couple years ago and the second is a RostockMax delta style printer I’m in the process of building.

The MendelMax has been a good printer but I’ve always had mixed results. I get good prints one time and horrible prints the next. I built the printer on a table in the family room, so I could work on the printer but still be around the family, and did all of my test and tuning prints sitting on the same table. Results were consistently inconsistent. Eventually I got frustrated, and tired of having the printer sitting in the family room so I moved it downstairs to my workroom. My workroom is a bunker style room in the basement with no windows, no vents, and only one door. I immediately noticed a huge improvement in print consistency. Prints might have errors but the errors were repeatable and reproducible. The number of errors were significantly smaller when printing in the basement than in the family room and the errors were consistent. It finally occurred to me that being in the family room the print nozzle and print surface was subject to the whims of breezes and temperature changes that come with people entering and exiting the room, windows and doors being opened and closed, uncontrolled variations that changed the print quality every time the environment changed. Being in the “bunker” in the basement the environment was mostly stable and undisturbed. With no windows or vents and only one door the basement room is a pretty consistent temperature and there are very few random breezes. A more stable environment led to more stable printing.

After moving the printer to the basement I could finally get consistent prints, not error free prints, but repeatable prints. When I did have a recipe for an error free print I could print the same object again and again and finally expect the same results. Yahoo! Life is good! But, you know the old saying, if you give a mouse a cookie…. Anyhow, now that the major obstacle was overcome, just being able to get a repeatable print, it was time to start looking at secondary failures.

The next biggest class of failures I experience are the saggys. Saggy prints, bridging that droops, overhangs that fall and loop, glooping and bumps, all failures indicative of printing too fast, that is, not letting the material cool before trying to lay down another layer.

Here are some images of the Pink Panther Woman printed with one or two perimeters, in ABS with 0 to 40% infill. Mostly with one perimeter and 0% infill.


You can see multiple places in my prints where the filament sags and droops when trying to print an overhang.






I found that if I print really slow, like really really slow, I could get a great print. The nozzle takes so long to traverse the print the previous layer had time to cool before being visited by the printhead again. This worked but the print time was increased by a factor of 3 to 10. That was clearly unacceptable.

The next solution was to add a print cooling fan. The kit I bought was the MendelMax from I have been super happy with the kit, it is well made, well supported, and super complete. All of the parts needed to assemble the kit, plus extras was included. A nice organizing case was provided for the screws and small parts. Cables came pre-terminated. I had to do a little soldering but for the most part the kit was plug and play. A very clean build and with what seem to be quality parts. I’ve not had a bit of trouble with the printer to date.

One thing the kit did not ship with was a fan duct for filament cooling at the printhead. It did ship with the fans, RRD Fan Extender, and cables to add up to two filament cooling fans, but no fan duct.

The first step in figuring out how to add a fan was deciding if my software and electronics could support an extruder fan. I’m running Marlin as the printer firmware so a quick google search confirmed Marlin’s support for an extruder fan. Now how about the electronics. The printer is driven by a RAMPS 1.4 on top of an Arduino Mega clone with Pololu style stepper drivers. All in all a good electronics platform but it turns out the RAMPS 1.4 out of the box does not support an extruder fan as a standard option. Some might take issue with this last statement given the unused D9 port, but D9 was intended for a second extruder, not an extruder fan.

In order to drive a fan a high power output is required, higher than can be driven by the bare io pins from the Arduino. The RAMPS board provides three high power outputs, D8, D9, and D10.


D10 is used to power the heater on extruder 1, D8 is used for the hot bed, and D9 is intended for extruder 2. On a single extruder printer D9 is unused, and therefore could be used to power and control an extruder fan, and indeed there are multiple internet responses supporting doing just that, wiring a fan into D9. So indeed it is reasonable to say that the RAMPS board supports an extruder fan out of the box…. assuming you never want to add a second extruder. For those who think they might want to have a second extruder D9 is off limits and another solution is required.

Obviously I’m not the first guy to want dual extruders AND extruder cooling fans on the RAMPS electronics. To satisfy the limitation in the RAMPS board of no high power outputs for extruder fans some enterprising souls created the RRD Fan Extender board. The RRD board mounts directly onto the RAMPS board and adds two channels of mosfet controlled power output. These two channels are not nearly the current capacity of D8, D9, and D10, but are more than enough for running a fan. The RRD board is able to take input power from 5V or 12V so it can support 5 or 12 volt fans. The RRD board has two channels of output supporting two extruder fans for dual extruder setups.

Something to keep in mind when buying a RRD Fan Extender. The servo port brings out pins D11, D6, D5, and D4. Some RRD boards bring D11 and D6 out to drive the two fan mosfets and some RRD boards bring D4 and D5 out to the mosfets. You need to check which RRD board you have because the printer firmware, Marlin in my case, needs to be configured properly to tell it which pins the fans are on.

If your RRD board uses pins D4 and D5 no software changes are required because the stock Marlin configuration for a RAMPS 1.4 (motherboard 34) is already configured to use D4 as the extruder fan 1 control. If your RRD board uses D11 and D6 you will need to edit pins.h and change your FAN_PIN assignment.

Like I mentioned above, the 3DPrinterTek kit shipped with a RRD, multiple fans, and all of the cabling required, but no fan duct. Not really a big deal, there are plenty of fan duct models out there, just download one, print it, and wa-la, instant extruder cooling.

Step one was find a fan duct compatible with my printer. A quick search of Thingiverse turned up this duct for a MendelMax.


I printed the duct, mounted a fan to the duct with 3mm screws and nuts, zip tied the duct to the print carriage, and wired it up. The RRD mounts onto the servos port of the RAMPS and power is jumpered from either the 5V or 12V aux power. My fans are 12 volt so I jumpered to the 12V aux power pins.


The RRD supports up to two fans but I’m only using one so I only have one of the outputs cabled.

Here is the printed fan duct zipped tied to the printer carriage.





Notice the fan only points at the back of the print so I expect I may still have problems with the front side of the print.

With the fan duct installed, the RRD on the RAMPS servo port, and Marlin configured to use pin 4 as the FAN_PIN I ran a test with the same model.



Notice the sagging on the back of the butt is nearly gone and the sagging on the upper back is completely gone. The quality of the prints, at least from the back, has jumped tremendously. The next step is to either get a fan pointed at the front of the print or print a wrap around cooling duct.

Maybe like this wrap around fan duct.


Feb 282014

Progress is being made on the hardware. The motors are mounted, the EggBot controller board is mounted, new spools are printed and installed.

Here is the overall mounting scheme so far


I ended up printing these small spools from thingiverse.


I used a screw specifically made for screwing into plastic. It has deep coarse threads that bite well into the soft ABS plastic. We’ll see if it holds long term but it seems to have a good grip right now.

The EggBot board has an issue where the upper and lower copper planes are one power and one ground. The problem is the mounting holes do not have copper pull backs so if you put a metal screw or stand off through the mounting holes the power plane and ground planes are shorted together. So that’s no good. Mounting the EggBot board requires using non conducting mounting hardware. I decided to print a mounting platform and hold downs.

I printed reliefs in the mounting platform for the pins that protrude from the bottom of the EggBot board. The four pins in the corners go through the EggBot board mounting holes to align the board and keep it in place when held down.






I’ve done some simple tests communicating with the EggBot board and moving the motors, making sure everything is still in working order and nothing got crimped or crushed.

Next steps are to string the gondola and get some code working.

Feb 032014

I built my 3D printer from a kit a couple years ago. It is a MendelMax style and it came with a modified version of Marlin as the firmware and printrun as the host app.

One of the first things I did after putting everything together was update the firmware to the latest version of Marlin and printrun. That was a couple years ago. New versions of both the printer firmware and host software have come and gone and I’ve largely ignored them. My printer has been working fine and no need to mess with what works.

I’m in the process of building a polar plotter and I’m using my 3D printer more heavily to create many of the parts. After using the printer to print a couple parts, and remembering many of the little irritations that always bothered me, I decided to look around and see what new firmware and host apps are available.

I tried a couple different firmwares but eventually settled back on Marlin. I forked and cloned the latest from ErikZalm, created a branch for my printer mods, updated the Configuration.h, pushed my branch back to my fork, and pushed the changes to my fork. The changes for my printer are pretty minimal but pushing them to github gives me a place to stash them off box and makes them available if anyone else finds them interesting.

I added ErikZalm’s original github repo as an upstream repo so I can continue to fetch and merge his latest changes.

Fork ErikZalm’s Marlin repo into my github – do this on github.

Clone my fork onto my desktop.
git clone

Add ErikZalm’s repo as an upstream remote.
git remote add upstream

Create and checkout a branch for my feature work (support for my MendelMax)
git checkout -b bhunting_MendelMax

Fetch and merge upstream (ErikZalm’s repo), not really needed right now since I just forked and cloned it.
git fetch upstream
git merge upstream/Marlin_v1

Push my feature branch to my repo
git push origin bhunting_MendelMax

Modify the code as needed…..

Add, commit, and push
git add Configuration.h
git commit -m"configuration changes for MendelMax 3D printer - BAH"
git push

After the mods I built the firmware using Arduino 1.5.2 and flashed it to my printer.

First off I like that the annoying beep when using the rotary encoder has been toned down. Much more palatable now. I like the new menu system. Not a lot has changed but it does look cleaner and I like the wording better. But how does it print?

I upgraded to the latest version of printrun but at the same time I wanted to try Repetier Host. Printrun seems to work fine with the latest Marlin but Repetier has a more full featured interface. Repetier provides both host side software and printer side firmware. I was unsure if Repetier Host would talk to Marlin firmware but it turns out Repetier Host is more than happy to drive the Marlin firmware. In fact the two get along just dandy.

I’ve only done one print using Repetier Host and Marlin firmware but one thing I did notice, other than the improved user interface on both the printer and host side, is my print started and completed in one pass, no hiccups or restarts. It might be an anomaly but at least it didn’t crash and burn right out of the gate. So far I’m happy and looking forward to trying more prints with this combination.

Feb 022014

I just finished printing both motor mounts for my work-in-progress Polargraphic Plotter / Drawbot / Plotterbot. I decided on these motor mounts on Thingiverse. They fit a NEMA 17 motor and they looked simple and easy to print. Although I am a little concerned about the print layers being parallel to the mount bolt holes.

I printed these on my MendelMax 3D printer in ABS. I printed the mounts one at a time and each mount took a little over an hour to print. The prints needed some clean up with a pen knife to trim off the danglies but after that they look good. The motor mounting holes line up nearly perfect and the mounts are good fit to the motor bodies. We’ll see how they hold up under load but if I use a washer on the mounting holes it should distribute the stress.

My MendelMax printer

A two-for-one special, 0.5 mm printhead off of ebay. It seems to print ok.

The motor mount finished and ready to remove from the bed.





A video of the motor mount being printed

Another part down. Now on to the filament spools….