Reprap: Print Replacement Parts for Household Items

Looking for something useful to do with your Reprap?  I used mine to fix a couple of nagging issues around the house.

First, one of the rubber feet on my Vitamix blender had gone AWOL a few years ago.  It actually balanced fine on 3 feet, but after I got my Printrbot working, it was one of my first prints (which is why the print quality is so bad, btw … the one on the left is earlier than the one on the right).

The Vitamix foot was also the first CAD object I ever designed.  I used Autodesk 123d.  The program is bloated, and crashes a lot, but it’s free.  Lately, I’ve mostly been using OpenSCAD instead, and I love it for making parametric objects with exacting measurements, but it’s not so easy to use for more fancy shapes.  Being a programmer, I’m very comfortable using OpenSCAD to program my objects, rather than using WYSIWYG.  Alibre Design is a relatively inexpensive alternative to 123D.  It’s a lot less resource-intensive, crashes less, and more powerful (e.g. it makes screw threads), although it’s slightly less user friendly.

Vitmamix Foot on Thingiverse:

Another nagging problem in my kitchen has been the plantation-style blinds.  They have this heavy wood valances attached to them, which are supposed to be held on by these cheap, brittle plastic clips, which are far too weak.  I searched far & wide for replacements, but no one carried them, so I printed my own:

Valence Clip on Thingiverse:

Getting a printable STL facsimile of the original valence clip wasn’t easy.  At the time, I barely knew how to use MCAD programs.  I’m going to try to remember how I created the object, and post a tutorial in the near future.


Case Protoype for LeafCAN

I’ve been having a lot of issues tweaking my latest Reprap design, so I haven’t been able print a case for my LeafCAN SOC meter.  Late last week, the printer was stabilizing, so I took a break to whip up something in OpenSCAD.  It’s just a basic box, which I printed in natural ABS.  I don’t like the sharp corners, so I’ve already redesigned it with rounded corners for the next rev.  This print was just to test out initial fitment.  This case is the absolutely smallest you can go, and still fit in all the electronics.
As you can see from the photo below, the header pins add considerable depth.

Also, in this build, I used female header pins to make the LCD detachable from the PCB, which added another centimeter to the depth of the case. The back has slots to engage various mounts:

Below, LeafCAN is clipped onto a suction cup mount, using the attachment slots:
One idea I have is to make vent clips, so allow it to be attached to either the center or left HVAC vents.  But so far, my favorite position is inside the left corner window:

In the location above, it’s up high enough to see easily, without obstructing the view out the windowshield, and the A-pillar helps to shield it from the sun.  The only problem is figuring out the mount.  I’m going to try a print a holder to allow me to suction cup it to the corner window next.

The natural ABS gives it a cool glow at night.  The photo below only shows the glow on the right, but it actually glows all around.

Although my vision is good enough that I can read the LCD comfortably, even in bright sunlight, I can understand how some people would find it hard to read.  I’m going to look into other displays, but at about $8, these 16×2 LCDs are hard to beat.

Reprap: Don’t Throw Away Your Cracked/Weak Parts – Fix Them!

Sometimes, my layers don’t stick nicely, or I print a part that’s too thin, and the part cracks between layers when I try to use it:

There’s no need to throw them away and reprint them.  Just use a q-Tip soaked in acetone and paint it liberally.  Junk ABS bits dissolved in acetone works even better, but then you need to have a different bottle for each color. I keep it in a glass tea trea oil bottle from Trader Joe’s.  The milky white appearance of the liquid in the jar is due to the natural ABS that I dissolved in it. Don’t bother buying expensive ABS glue.  Make it yourself!

Sometimes, I’ll just paint the sections of a part that look weak, even if they haven’t yet broken, as a pre-emptive measure.  It makes your parts glossy, too, if you like that.

Did Termites Eat My Print?

I was printing out the x-end-motor for a new Reprap I’m designing yesterday. The bottom was printing beautifully:

I baby sat it for the first 2:15, and went to bed during the remaining 15 minutes of the print.  I woke up the next morning to find this:

At first, I thought my hot end had jammed again, so I cleaned it out.  After wasting the whole morning getting partway through a bunch of prints and wasting a ton of filament, I found the real culprit.  The grub screw that holds the small gear onto my extruder motor shaft had completely unscrewed itself!  The prints would start out OK, and then fail after the motor warmed up, and the heat softened the plastic of the gear, loosening its grip.  Grr! Rather than reprinting the part, I’m going to just fill the gaps with JB Weld.

Raspberry Pi Case

I was not fast enough to get an order in for a Raspberry Pi on launch day.  Fortunately, a kind friend of mine thought of me, and bought an extra one for me.  I received it yesterday, and printed this case:

The case I made is a copy of HansH’s excellent Raspberry Pi case, modified with a slot that added on the top to accomodate access to the GPIO pins.  I uploaded it to Thingiverse:  Raspberry Pi Case with GPIO Access.  Here’s the first sucessful boot of my Raspberry Pi:

It looks so tiny sitting in front of my 52″ plasma.  I was pleasantly surprised to see it boot up at full 1080 resolution.  At first, I thought the HDMI port was bad, because it didn’t work with a cable that I know is good, but it turns out the Pi is just picky about HDMI cables.  I swapped in a different one, and it worked.  Now, I have a lot of reading to do… yet another gadget to play with…


Marlin for Printrboard Updated

I just synced my Marlin branch for Printrboard with the latest code from ErikZalm’s branch. I noticed that there were a lot of changes in the planner, temperature control, etc.  Hopefully, it will be an improvement, rather than breaking anything.  Please report here or on github if you find any anolmalies with the new code.

Download Marlin for Printrboard here:

Printrbot Build

My Printrbot from the Printrbot’s Kickstarter Campaign was supposed to arrive in February. Unfortunately, due to the huge number of supporters they received, the schedule has been pushed back, and I doubt I’ll receive mine until late May. In the meantime, I’ve been getting antsy waiting for mine to arrive, so I decided to go ahead and build one from scratch. The Printrbot that I ordered is actually the laser-cut model. John Seaber of JDS Labs was kind enough to send me the printed bits and a complete extruder for the RepRap version of Printrbot.

I already had most of the other parts needed to build a Printrbot, except for the threaded rods and miscellaneous nuts and bolts. I had 4 used steppers gutted from laser printers (which I bought from Wildseyed), and a stepper for the extruder plus smooth rods from Epson Stylus Color 600 ink jet printer that has been gathering dust for more than 10 years.  There is a decent Printrbot BOM on printrbottalk’s wiki; a few bits here and there are missing, but it still saved me a lot of time. The nuts & bolts were all easy to find at a local hardware store, except for the M3 screws.  The M3 screws were the only parts I had to buy for which an SAE equivalent simply wouldn’t do, since they had to mate into threaded holes in the motors.  I ended up wasting a whole afternoon going to several hardware stores, and almost gave up, before finally finding them at Ace Hardware.  It’s amazing how difficult it is to buy metric parts in the US.

Since I had already been experimenting with my own variations on Wildseyed’s Hot End, I already had a hot end built and ready to go.  My modifications on Wildseyed’s design are 1) it can be completely dissassembled for cleaning 2) the brass barrel is shorter, has less mass, and screws on 3) I’m using a radial resistor embedded in the aluminum block, rather than attaching an aluminum-cased resistor to the outside.

Unfortunately, the extruder I received was set up for a different mount, so I had to adapt it.  A trip to the hardware store yielded a PVC pipe elbow, that, as luck would have it, had the exact inside and outside diameters to form an adapter for my hot end.  I cut out a small ring, and attached the hot end with M3 grub screws.

One thing I learned while assembling this printer is that LM8UU bearings need precise alignment, or they will bind very badly.  The bearings in the Printrbot’s x-carriage are press fit, which is great for simplicity, but can cause headaches if the parts aren’t printed perfectly.  Initially, my carriage was binding very badly, and would barely move.  Even worse, the LM8UU’s were gouging deep grooves into my smooth rods. This is because of two factors 1) the spacing of the x-carriage smooth rods was slightly different between the left and right sides of the carriage, due to imperfections in the printed rod holders and 2) the holes in the plastic x-carriage piece I received were not perfectly parallel.  After some cleanup of the holes with a rasp in my drill press, I got everything to line up, and the carriage now moves smoothly.

I had a similar problem with the smooth rods of my z-axis.  The rods on the y-axis ride on 2 LM8UU’s which are stacked on top of each other, and press fit into a printed plastic block.  Again, due to minor imperfections in the print, the stacked bearings didn’t line up perfectly, and my z-axis bearings were binding quite badly against my smooth rod.  I was lucky that I was able to pry them out, because they were a very tight fit.  Again cleaning up the holes with a rasp on my drill press fixed the problem.

All in all, there was a maddening amount of tweaking and coaxing involved in getting my Printrbot assembled and calibrated.  My x-motor’s shaft was a bit to short so I had to cut down its mount a bit.  This in turn, caused problems with the alignment of the belt and idler bearing.  The z-motor mount dimensions were a bit off, so the threaded rods were tilted inwards, rather than parallel to the z-axis smooth rods. I had to re-drill the holes to achieve the proper alignment.  The couplers between the z motors and threaded rods didn’t quite fit right, and caused the rods to wobble.  I solved this by switching to aluminum couplers.  The crimp on pins that I bought from Ultimachine didn’t fit into the Molex hoods I bought, so I had to improvise the connections to my Printrboard.

I decided to use CAT-5 for wiring my Printrbot.  It’s cheap and has a jacket, so cabling is tidy.  Since the cable has more conductors than I need, and the gauge of the wires in CAT5 is relatively small, I used one twisted pair for each connection.

I still need to attach end stops, build the hot bed, and get a 12V power supply with higher output to power the hot bed.  In the meantime, I was itching to crank out some test prints.  The problem is that it’s very difficult to get the molten ABS to stick to any cold surface.  I finally decided to try something crazy … print ABS on ABS.  I printed on a piece of the Epson Stylus Color 600 printer from which I salvaged the motor that I’m using for the extruder.  The first object that I printed was a replacement foot for my Vitamix.

My Printrbot is running Marlin firmware, which I adapted to run on Printrboard, and I’m using either Pronterface and Repetier host software, depending on my mood.  Currently, I’m using Slic3r to convert STL’s to GCODE. While calibrating the printer, I found that the carriage and build plate vibrate quite a bit, and the motion is not completely smooth.  This wobbling can be seen in my test prints.  Hopefully, the excessive vibration is due to a modification that I made to the design, as opposed to an intrinsic problem in the Printrbot.  Because my rods came in 3′ lengths, I extended all of the rods from 10″ to 12″ long.

Here is my first print, the Vitamix foot:

I was just happy that it came out well enough to use.  At this stage, there was still a lot of tweaking to do … refining the calibration, adjusting the temperature, tweaking the parameters for Slic3r.  After a lot of experimentation and failures

I am finally able to get some decent prints.  In a future article, I will discuss my current printer settings. I made the mistake of selecting a very challenging object as my second print, Surveyor’s Cat Toy.

Here is my best attempt so far:

I am now in the process of printing an extruder for a friend.  My best print to date is the small gear on the left:

Both of the gears are printed with .2mm layer height.  The only difference is that I slowed down the perimeters from 30mm/s to 15mm/s in order to get rid of the vibration.  Here is my Printrbot attempting to print the large extruder gear:

The print actually failed because 1) my extruder jammed, due to a stray piece of plastic which fell into it and 2) my ABS printing surface started warping too much.  I need to get my heated bed working before I can print large parts.

grbl CNC Firmware Ported to Printrboard

If you want to use your RepRap for CNC use, such as milling PCB’s, regular 3D printing firmwares might not be ideal. For instance, Marlin is not able to handle the slow step rates used for CNC work.

I have ported grbl, a firmware specifically for CNC use (from which Marlin derived its acceleration routines), to Printrboard and Teensylu. You can download it from my fork at:

Repetier Firmware Now Runs on Printrboard

I spent this past weekend porting Repetier-Firmware to Printrboard and Teensyduino. It took me a while to get it working properly, because the code intermixes calls to fastio and Arduino, and the pin definitions in fastio.h were different from the Teensyduino Arduino library. It is now working pretty well, so Printrboard and Teensylu users now have yet another option for RepRap firmware. I’ve already submitted my changes to Repetier, and he’s merged them into his code. Download it here:

In case you haven’t tried it, Repetier also has an interesting host program, Repetier-Host, which works with other firmwares as well as Repetier-Firmware.

Running Marlin Firmware on a Printrboard

As of this writing, the official version of Marlin firmware from github does not yet work with Printrboard.  Printrboard is a fork of Teensylu, designed by the folks at Printrbot. Printrboard isn’t yet available for purchase, but since the design is open source, anyone can download it and get the PCB’s manufactured themselves. Sprinter is currently the only RepRap firmware works with Teensylu and Printrboard out of the box.  I am now successfuly running Marlin on my Printrboard.  Below is a video of Printrboard virtually printing a Printrbot with Marlin:

Last month, I submitted an issue with ErikZalm to get the compile errors fixed when compiling Marlin for Teensylu.  The main branch of Marlin now compiles for Teensylu by setting MOTHERBOARD = 8.  Unfortunately, this build setting won’t work with Printrboard, because some of the pins are different.  Also, there is a kill function that Marlin calls if it detects certain things like a shorted thermistor, etc… but it’s not able to send the error messages back to the host, so it looks like your board is just dead.
I think Erik is too busy right now getting V1 out the door to deal with making fixes for a couple of not so popular boards, so I’ve forked Marlin on github with my fixes for making it behave nicely with Teensylu and Printrboard.  You can download it here:  lincomatic/Marlin.
For Firmware Hackers Only
For those who want to know what’s special about my branch of Marlin, it has to do with the mappings of the I/O pins.  The code in Marlin has two different ways to access digital I/O pins: 1) the Arduino digitalRead/Write() functions 2) fastio – there are macros and pin assignments in fastio.h.  In ErikZalm’s Marlin branch, the pin numbers are different between Arduino and fastio functions, which leads to confusion and bugs.  What I have done is use the digital pin definitions in Teensyduino’s core_pins.h and updated the pins in fastio.h to match them.  This way, a call to digitalRead(28) is equivalent to _READ(28).
  1. in pins.h, analog pins use ADC numbering instead of digital pin numbering.  Therefore, even though B_THERM -> F0/ADC0 and E_THERM -> F1/ADC1, we are using them as ADC pins, so B_THERM=0 (ADC0) and E_THERM=1 (ADC1).
  2. Printrboard uses some pins that aren’t supported by Teensyduino, since they aren’t exposed in the Teensy hardware.  Therefore, those pins aren’t listed in core_pins.h.  I have added them to fastio.h, so they are accessible only with fastio macros.  They are digital pins 46 and 47 see the “//– Begin not supported by Teensyduino
    ” section of fastio.h


XSTEP = physical pin 51. Looking at the AT90USB1286 spec sheet, pin 51 = PA0 (AD0)
in core_pins.h, #define PIN_A0 28
in fastio.h,

#define DIO28_PIN PINA0
#define DIO28_RPORT PINA
#define DIO28_PWM NULL
#define DIO28_DDR DDRA

so in pins.h, X_STEP = 28

X_MIN = AT90USB1286 pin 9 = PE3
core_pins.h doesn’t have a definition for PIN_E3, because the pin isn’t accessible in Teensy++, so we can’t talk to that pin at all with the Arduino functions.  However, it’s in fastio.h:

//– Begin not supported by Teensyduino
//– don’t use Arduino functions on these pins pinMode/digitalWrite/etc
#define DIO47_PIN PINE3
#define DIO47_RPORT PINE
#define DIO47_PWM NULL
#define DIO47_DDR DDRE

so X_MIN = 47