My Reprap Prusa i3 build (Jan 2013) - A bit light on detail but better than nothing right?

What is a Reprap Prusa i3? Its a 3d printer. It prints physical objects in plastic. For more information check out

The order of assembly might be a bit off (as is evident in some of the photos, I wasn't trying to document all the assembly steps, just trying to build it, I will do a tear down and rebuild and document a bit better when complete) so probably best to read through first so you don't miss stuff off like I did :).


Assemble the Y frame using 4 short M8 threaded rods, 2 M10 (M10 preferred over M8) or M8 long threaded rods and 4 y-corners. I had to drill out my y corners to accept M10. The newer parts are M10 ready.
The y-corners have a recess on the top for the M8 smooth rods so these should all face the same way. Check the next three steps as these need to be done before assembling the frame!

The M10 rods should have 2 M10 nuts and 2 M10 washers fitted between the y-corners for mounting to the z axis plate.

Fit the y-idler on one of the upper short M8 threaded rods. Secure with nuts and washers on either side. If you forget it is easy enough to fit it later.

Fit the y-motor mount on the other end. Again, secure with nuts and washers.

Fit two LM8UU linear bearings on one smooth rod...

...and one on the other...

...and cable tie the smooth rods to the y-corners (if the y-corners don't line up with the smooth rods see below on lining up). There should be a slot in the y-corner just above the top M8 threaded rod that you can get a small cable tie through, if not you can drill it out.

Line up the linear bearings with the slots in the bed carrier and cable tie the together. Note: You will probably need to adjust the distance between the smooth rods so the bed runs freely with no sticky spots. You do this by adjusting the nuts on the short M8 threaded rods to move the rods closer together or further apart as needed.

Now is probably a good time to fit the y-belt holder (though it can be fitted later if you forget :) I did... hence why this photo shows the z frame attached)


Fit the z axis motor mounts to the plate. The mounting for the smooth rod should be at the outter edge of the plate. If you have a frame cut on a waterjet where the holes were cut with the waterjet, then they are likely too big to tap so secure the screws with nuts.

Fit the z axis top mounts to the plate. Again, the mounting for the smooth rod should be at the outter edge of the plate.

Fit two linear bearings and the two smooth rods into the x-motor-end (ignore the rod running through the linear bearings for now). Both the bearings and rods should be push fit.

Cable tie three linear bearings into the x-carriage and fit onto the two smooth rods, flat side faces out. (cable ties fit through channels in the x-carriage)

Fit the x-ilder onto the two smooth rods.

Probably a good idea to fit the z motors before fitting the x axis and z rods onto the frame (you can fit them afterwards, but the z axis smooth rods get in the way). Note the motor wires go through the holes in the frame as the electronics are mounted on the back of the plate.

Fit the assembled x-axis onto the two z smooth rods and push fit the smooth rods into the mounts. Fit the y frame onto the z frame using the M10 nuts and washers either side of the frame. Details for linings up frame TBC.

Fit M5 nut into the x-motor and x-idler ends. I had to thread the nut onto the M5 threaded rod and heat it and 'melt fit' the nut. Your mileage may vary.

Fit some PVC? tubing onto the z motor shafts (heating the tube helps here) and screw the threaded z rod into the PVC? tubing.

Electronics are mounted on the back of the frame. Here the Arduino Mega is mounted on stand-offs tapped into the frame holes. The mounting holes on Arduinos are less than ideally placed and screw heads interfere with connections so you need to be careful you don't damage it.

RAMPS plugged into the Arduino...

heatbed, x and z motors fitted (fit pulley to x motor shaft before fitting). Here the heatbed is mounted on brass stand-offs tapped into the y bed plate. (Might change this to a sprung loaded bed...)

and y motor

Pully and belt fitted to y axis motor

Belt and bearing with belt guide fitted to y axis idler

Belt fitted to y axis belt clamp on bed (the excess belt helps to grip it so it can be tightened). Need to check that this doesn't foul during operation.

Pully and belt fitted to x axis motor

Belt and bearing with belt guide fitted to x axis idler

Pully fitted to x axis belt clamp in x carriage (the excess belt helps to grip it so it can be tightened). Need to check that this doesn't foul during operation.

Y belt path - here you can see the belt and belt clamp pass through the groove in the aluminium plate.

Wiring the motors

Note: Motors are SY42STH4701684A from Zapp Automation

Cut motor cables to length. Then strip and tin.

Hold crimp connector lightly in the crimp tool (manual (i.e. non ratchet) Molex crimpers can be bought for about 30 from RS. Alternativley you can use a pair of pliers but the job won't be so neat or quick)

Insert the wire and crimp with tool.

Next crimp the strain relief

Like so...

Repeat until all conductors are crimped

And fit into connector housing. If the crimps don't stay in the connector you have them in the wrong way round! Your motor cabling colour may vary. Refer to for wiring details. Note: These are Molex KK series connectors. They will fit the RAMPS motor connectors, however the z motors will either need to be wired together, wired into one plug or you will need to use Multicomp 2226 series connectors and pins (These are the flat black PC case connectors (the sort of thing you see on hard drive leds etc) will be using these for temp sensors and end stops).

Z, Y and X motors plugged in (note the Z motor connector has two motors wired into the one plug (in parallel - need to look at pros and cons of parallel vs series wired z motors) - the Molex KK connectors are too thick to plug two into the RAMPS in this position - should use Multicomp 2226 series 4 way connectors - Available from Farnell For suitable pins see here).

X, Y and Z motor wiring complete and tidied up with spiral cable wrap (Maplin do 10 m for 2.49).

Z End stop

X End stop

Y End stop

End stops connected to RAMPS. I was able to get this far thanks to a kindly soul at Southackton who gave me some crimps. I'm still waiting for the ones I ordered to be delivered.

Bed temperature sensor connected to RAMPS

X, Y and Z axis motors and end stops, heated bed power and bed thermistor complete.

At this point I was able to configure and upload Marlin firmware and get the X, Y and Z axis to move and home (using one end stop per axis - second + end stops need work). The heated bed turns on, heats up and maintains its temperature nicely. The Z axis couplers using PVC tubing isn't working for me. One axis stalls and unscrews itself. I think the threaded rod has some sticky spots. Need to find some stiffer tubing to try.

Compact dual extruder (EiNSTeiN variant)

Compact dual extruder with one Jhead MK5 hotend, heater, thermistor, motor and bearing fitted. The EiNSTeiN variant can be found here. The screw clamp is a bit make shift but I am short on springs and washers for the moment. I will fix this later.

Side view of the same.

Extruder wiring. Motor and thermistor terminated in Multicomp 2226 connectors. Heater resistor wires (high temp) terminated with soldered on ferrules (found on ebay) to make them a bit more robust when fitting and removing them while I get things working properly.

Hotend with thermistor and heater resistor fitted. Hot end kit including resistors and wire from RepRap-UK. I happend to have a roll of Kapton tape already but you can get it from RS/Farnell or ebay.

Screw to clamp hot end in extruder body.

Bearing clamp and hobbed pulley.

Now to complete the other side. Fit a 608? Skate bearing into the clamp with a bit of M8 smooth rod. I expect you could get away with M8 threaded rod as well.

Pressed down into housing.

Fit M3 nut. I've used thread lock nuts as that is all I have handy.

Fit clamp to extuder body with M3 screw.

Offer up motor and check the filiment path lines up with the hobbed pully. Fix motor with M3 screws and nuts

Offer up hot end. I had to do a lot of fettling to get the slot to fit nicely. YMMV.

Press hot end home.

Secure hot end with M3 screw and nut.

Prep thermistor wiring. These are just soldered on and insulated with Kapton tape and the included PTFE insulation.

Crimp and terminate with Multicomp 2226 2 way connector.

Crimp the high temperature wires on to the ends of the heater resistor with crimp ferrules (ebay) and insulate with Kapton tape. The body of the resistor should be a snug fit in the hot end and can be wrapped with aluminium foil for better heat transmission if it is a loose fit. Rather than here, as I have done, with Kapton tape (I was in a hurry and it was all I had to hand).

Heater resistor ferrule crimpped.

Ferrule soldered on to end of heater wire. You don't have to do this, I just figured it would make the connection a bit more robust in the screw terminal on the RAMPS.

Feed one end of the wire through the hot end block.

Until the resistor is inside the hot end.

Bend the resitor leads up.

Offer up the thermistor.

And tape it in place with Kapton tape.

Fit connectors to the stepper and thermistor wires, and optionally ferrules on the heater wires.

Fit an M5 nut into the recess on the top of the extruder.

And fit an M5 screw with, nut, spring and washers. I know, I know I didn't fit washers. I didn't have any to hand.

Secure exturder to x-carriage with two M3 machine screws and nuts.

Fit from extruder side.

And secure with M3 nuts on x-carriage side.

Plug in extruder motor and thermistor.

And secure heater wires in appropriate screw terminals.

Second extruder connected.

Front view of extruder. Printer is ready for commisioning and calibration!

Note the z-axis couplings have been replaced. I wasn't getting much joy with the PVC tubing, it kept slipping so I printed off a couple of these and they work a treat and fit nicely between the motor axis and the smooth rod.

If you are wondering what the cardboard wrapped around the top of the frame is for, it is a carrying handle as the printer is quite heavy and the edges of the waterjet cut frame are, well, not exactly sharp, but defined enough to be uncomfortable when held for any length of time.

I uploaded Marlin 1.0.0 RC2 and had problems with the end stops not functioning as expected. This was due to the Arduinos internal pull up resistors not being activated.
In configuration.h the settings for end stop pull ups was this:

// corse Endstop Settings

#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors

// fine Enstop settings: Individual Pullups. will be ignord if ENDSTOPPULLUPS is defined

I figured having the corse ENDSTOPPULLUPS defined would activate the required internal pull up resistors on the Arduino, but the voltages observed on the end stop connectors were far too low.
In a random act of desperation I commented out the corse end stop setting and re-uploaded the firmware.

// corse Endstop Settings

// #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors

// fine Enstop settings: Individual Pullups. will be ignord if ENDSTOPPULLUPS is defined

After that the observed voltage on the end stop connectors showed 5v. The printer homed correctly but failed to move once it was homed. I was able to switch off the motors, manually move the axis and rehome with perfect repeatability, but every time I tired to command an axis after a homing cycle, it refused to move, echoing "End stop hit". This was due to the fact that I had fitted and enabled the positive end stops but they were disconnected while I was trying to figure out the problem with the negative (or zero? end stops). A disconnected end stop reads as hit and once the negative or home end stops are hit, the software was reading both end stops as active and didn't want to allow an axis to move. Plugging in the positive end stops fixed that problem.

In hind sight it is obvious now what the problem was. It is even clearly written in the comments for the corse end stops. Having that section defined disables the end stop resistors. Clearly not what I wanted but at the time the whole printer, the electronics and the software were all unknowns so I figure information overload led to me missing the obvious.


SPACEXULA (Neil Underwood) has an excellent youtube video on calibrating your x,y and z axis here. I normally run through the cycle 5 or 6 times or until I get repeatably accurate measurements on each axis. I had a link to a simmilar calibration video for the e axis (extruder) but I can't find it right now.
At this point I have a calibrated printer and can print but I am having issues with repeatbility. That is to say the print appears to wander around the print bed. I suspect that this is due to the bearing guides not being very even. I removed them and still have the same problem but again I suspect that this is due to the belts wandering on the bearing. I need to find some large M3 washers to keep the belt on the bearing. Hopefully I can find some today (2nd March 2013) and try again.

After doing away with the printed belt guides and fitting some M3 repair washers (large washers about the size of a 50 pence piece) to either side of the belt bearing on the X axis and squeezing in two bearings for the Y axis, the wandering print problems have gone away. I then spent ages faffing around with trying to understand dual extruder printing with slic3r and not really getting very far, I decided to go back to basics. I concentrated on one extruder initially (the 0.35 one) and have been having all sorts of problems with filiment slipping. So I figured I would try the 0.5mm extruder as I am more familiar with the expected results and behaviour. Apart from the weird behaviour with slic3r (apparently deliberatley) using both exturders for skirt even when only using one extruder, I was able to get started on printing an owl.

It isn't brilliant, but then this is an early and slow (20mm/sec perimiter 30mm/sec infill) print and I am guessing at some settings and getting to know the geared exturder motors and their capability.

Retraction needs some work. I started off with 1mm of retraction at 12mm/sec (that is as fast as I can run the 50:1 geared steppers before they stall). Still I can't complain for a first full print.

Second full print...

I tired again with some changes to the retraction (and just to complicate matters with a completely different filiment - I find that different filiments behave differently and need different settings).

This is with 2mm retraction at 12mm/sec. No extra length on restart.

Looks better than the first owl print. There is still some stringing at the toes and at the ears. The very tips of the ears are a bit of a mess. The face is also a little messy where there are overhangs. Will need to look at bridge speeds and temperature and add a fan to improve this. Overall not too bad, very few blobs on the body and very neat and well aligned in x and y.

Before I go much further I need a filiment holder as the filiment spool is currently attached to a coat hanger wired to a shelf and the tension on the filiment is higher than I would like.
I have had a go at creating a plate mounted spool holder in scad. This is my first attempt at an scad object. I have no idea if this will work, but its worth a try right?
There are two printed parts per side. A threaded rod between the parts and a spindle between each side. The parts were translated (that means moved) and rotated (that means rotated) so they were lying on their sides for easy printing and I created a plate of parts in slic3r.

The frame mount which slots over the top of the i3 frame.

And the spindle mount. A threaded rod connects the frame mount to the spindle mount. A spindle the drops in to the slot and the spools sit on the spindle with spool adaptors.

As usual I hit a snag. The printer decided that it wasn't going to play ball printing these parts. Every attempt to print the parts resulted in the extruder running really slowly and not producing enough extrudate to print anything other than whispy plastic stings. After faffing about for ages checking settings and filiment feeds, I just cranked up the extrusion multiplier to 5, and when that didn't work, to 10. After that the first layer was nice, but the next layers were putting down way to much extrudate. Something to do with first layer vs the rest settings... but nothing has changed. After a lot more faffing I dropped the extrusion multipler down to two and things are ok if a little fat. The parts are printing and should be useable so I want to get the spool mount done before I tinker with more settings. I think the multiplier can go down to 1.5. Then I will check the esteps are correct and that nothing else has changed.

Spool holder mounted on printer.

Need to print some spool adaptors, but it is a better arrangement than the coat hanger. I am concerned that it is pulling the frame towards the back of the printer. I wonder will that affect the prints? I was surprised how flexable the aluminium plate is and I have been mulling over adding some bracing from the top of the z frame to the back of the y frame. Alternativley I could mount two spools of filiment on either side of the z frame (one at the front and one at the back to balance the weight a little).

Have been snowboarding in Canada but am back now (4th April 2013).
The files for the spool holder and spool adaptors are on thingiverse here (Spool Mount) and here (Spool Adaptor).

Now I need to clean my office as it is a mess, then I will get back to tuning the printer. As a side note and a reminder to myself, something that has been in the back of my mind is the amount of ooze that this printer produces. It is considerably more than my RepRapPro Huxley and it is problematic. It causes strings and blobs that get dragged around the print bed during printing the first layer and the nozzle needs a long time before it starts producing extudate. I have JHeads that come with PTFE inserts for 1.75mm and 3mm filament, however the melt chamber will be drilled for 3mm filiment. I use 1.75mm filiment as that is what my Huxley uses and I have plenty on hand. I wonder if this is why they produce so much ooze? I want to try them with 3mm filiment and see if that solves or reduces the problem.

So I checked my Esteps and they were off by quite a bit. I have recalibrated and am about to slice and print another owl. Details to follow. I can't shake the nagging feeling that something else isn't quite right as the esteps wandered around between 1103 to 1106 as I dialed in the calibration. Anyway I will try another print and post the results.

3rd full print...

Owl after calibrating the esteps again.

Overall the body looks pretty good. Only a couple of blobs here and there. The overhangs, head and ears are still messy. More tuning of print settings I suspect.

Small areas (the ears) appear to be getting too much extrudate while the head appears to be getting to little, though that could just be the resolution of the model and slice settings.

4th full print...

Another owl after increasing the retraction length from 2.5mm to 3mm. The top of the head is much nicer and the ears are neater with less strings.

Body is very nice and clean.

Getting there now. 3mm sounds like a lot of retraction for a direct drive extruder but I think the speed of the geared extruder motors (they are slow due to a 50:1 reduction) means that my retraction settings need to retract more filament as it takes longer and there is more chance for ooze while the retraction is taking place. Will try more retraction and then try slowing down the print when printing small areas.

5th full print... Another day, another owl...

Same retraction as before (3mm) but this time with "Slow down if layer print time is below" (in the cooling section of slic3r) set to 30 secs and a fan set up next to the printer.

Less stringing. Still a bit blobby but watching the print closely I would say that is because the perimiters are printed first and the infill in put in after but the print head moves from one to the other and that appears to be dragging the plastic across when it gets to the ears.

2 printers 1 slicer...

I have been meaning to get round to automating my slicing activity as it is a right royal pain in the arse when I need to make a small change to a bunch of models (like when I tweak the filiment settings for some new filiment). Then I have to reslice everything so the new settings take effect. Not a problem for individual parts but when you have a bunch of files or plates of parts that take ages I don't want to be sitting around watching progress bars. The problem is even more evident with two printers where switching between profiles and verifying the settings are what I thought they were (anyone else notice things not getting saved with recent versions of slic3r? Slow config pages?) takes time. So I figured I would hack together a script to do it for me. So I did it in Python because it is already installed and it seemed like the path of least resistance. The result is a python script that takes a path and a slic3r config file as args and then makes slic3r-console.exe churn through all the stls it finds in the directory you told it to look at (or the current dir if none specified). It can also run in 'auto' mode, where it keeps checking for stl files every n seconds and slices any it finds, deleting the stl once slicer is done. I did this so I could setup a drop folder and just copy in stls and automagically get gcode. This makes it nice and easy to re-slice a lot of files for dumping onto an SD card. You can try the script if you like. It is on github.

Adventures in ABS

I've stuck with PLA since I built my first 3D printer last year. I like it, know it and trust it. The decision was taken for me as I built a ReprapPro Huxley at a master class and that came with some 1.75mm Fabadashery filiment and that is what I was used to. But I decided it was time to try ABS and move up to 3mm at that. This would also help to partially answer the earlier question of my jheads oozing so much and was that related to the fact that the melt chambers are drilled for 3mm. Partially answer because I have changed to ABS and I don't know how that compares directly to PLA for ooze. I can say that the 3mm ABS produces less ooze than the 1.75mm PLA in my jhead. I can also say that I still don't like the smell. PLA produces a nice smell, ABS does not.

So another owl in ABS on the 0.35mm jhead.

This was printed on glass rubbed over with some ABS softened in Acetone. I don't seem to be able to disolve the ABS completely, it just turns to a squidy blob which can be rubbed on the heated glass (100C). The extruded ABS seems quite happy to stick to it.

Up close. Not too bad for a first try with a new material. Might give Acetone vapour smoothing a try when I finally get this i3 printing with both extruders.
There is some blobing and the beak is a bit messy but that can probably be tweaked away.

Calibration cubes

The warm up time for the bed @ 100c is too long for me so it seemed a good time to try the blue painters tape as a bed adhesive. This is "3M Scotch-Blue Painters Tape for Multi-Surfaces #2090". Initally prints stuck to it and came off reasonably well, but I do suffer from prints curling. That often lead to them coming off the tape. I tried heating up the bed a little and at 40c the warping isn't too bad and the tape still stays stuck. I will try increasing the bed temperature to see what the tape can cope with. I also seemed to be having problems with the z height of my prints. After double checking the z height and speed I am getting z height of 20.08mm from a 20mm cube. X and Y are 19.74 and 19.66 which isn't bad but I will try and improve on that at a later date.

The cube on the left was printed at 0.2mm layer height and the one on the right at 0.3mm.

Up close. Again 0.2mm on the left and 0.3mm on the right.

Printing at 0.1mm layer height seems to mess with the infill. You can see the infill is not continuious. The extruder isn't putting out enough extrudate. I'm not sure if this is a problem with the extruder or just something that happens when printing with low height layers. I could just increase the infill percentrage in slic3r to compensate.

0.1mm layer height on the left and 0.2mm on the right.

Left to right 0.1mm, 0.2mm and 0.3mm. The painters tape stuck to the bottom of the 0.1mm layer height cube. The bed was at 50c

Calibration cubes and dual extruders

So now both exturders work well when printing on their own. Time to get them working together.
I still need to calibrate the offsets for the two nozzles so they print where they are supposed to and I haven't used multi-material models yet, so I set up slic3r to print the perimeters with the 0.35mm nozzle (blue ABS) and the infill with the 0.5mm nozzle (red ABS - honestly that is a red filiment - it just looks orange in the pictures as my camera died and these were taken on a phone).

First attempt and the off sets are not quite right. I had to shift the off-sets a little in the x direction and quite a bit in the y direction. As with previous prints in PLA with the 0.5mm nozzle, I found that it was oozing so much that it took a long time to prime with filiment and start printing. Here you can see the blue ABS but no red ABS skirt. This usually results in the first infill layer not being fully printed. Also the retraction settings on tool change needs some work. Here the blue ABS has printed a second skirt due to oozing.

Fourth attempt (the previous attempts were just tweaking the offset settings) and the offsets look about right now. Things are printing where I would expect them. I haven't changed the tool change retraction settings yet, that is why there is a mess of filiment either side if the print. I also seem to be having issues with a lack of infill extrudate. You can see that the infill is just a series of pillars where the layers cross. I put the infill extrusion width up to 130% but it is still not right.

Dual extruders

It's been a bit quiet here lately, I've started a new job and what with one thing or another I've not had much time to update this site. I have however been attempting to improve the dual extrusion quality but have come to the conclusion that the extruder I am using just isn't up to the job. I am having problems with the heads coming loose from their mounts and moving under pressure from the filiment as well as filiment slipping on one of the hobbed pulleys. I have tried printing another extruder body and things were better for a while but the same problem reoccured so I decided that I had spent long enough calibrating and recalibrating a moving target and that it was time to try something else.

I was going to try the updated version that uses PG53 stepper motors (above right), but the reports from #reprap on IRC are mixed at best. Reports of early stepper failure are common.

I tried this Gregs stype extruder for i3 (with nice herrigbone gears - above left) but it doesn't fit my i3. There are other versions that might but it was a single extruder anyway so apart from using it to test the hobbed bolts I made on my lathe it hasn't done much.

I am having a go at designing a dual extruder that uses NEMA14 motors but I'm not overly hopeful. Space is limited and NEMA14s may not be up to the job, but I will report back if it works better than the current one.

If all else fails I am going to have to move to a Bowden extruder. Bowdens get a bad rap. My RepRepPro Huxley is a bowden and it can produce really nice results, but not having used a carriage mounted extruder I can't do a usage comparrison and that is why I want to try a carriage mounted extruder. However going to a bowden would allow me to easily and securely mount dual (or more) hotends. I have printed out indieflows i3 bowden extruder but I couldn't source the tube fittings. I might have a go at modifying it for dual extruders and RepRapPro style bowden tube fittings that I can make on the lathe.

Future updates will be here