Adrians Prusa Notes

From RepRap
Jump to: navigation, search
Crystal Clear action run.png
Adrian's Prusa Notes

Release status: working

How Adrian builds a Prusa Mendel.
CAD Models
External Link


This is my page of notes on how I put together a Prusa Mendel. These are not so much improvements, but more modifications and options done for both personal convenience and the convenience of RepRap Ltd and its customers, as this is the one we sell. I have documented them here as others may find them helpful too.

This page is intended to be read in conjunction with the main RepRap page on Prusa Mendel Assembly here and the Prusa Visual Assembly Guide. It is a good idea to read both of the last two because the guide is beautifully clear, but the wiki assembly instructions are easier to correct and to enhance, and so tend to be slightly more up-to-date.

The files needed for what's here are in my fork of the Prusa Mendel Git repository here: in the directory AdriansPrusaModifications.


The main components I use in my version of Prusa Mendel are:

  1. Sanguinololu electronics,
  2. Aluminium heated bed,
  3. My Universal mini extruder, and
  4. 30A 12v power supply.

I also use some modified printed parts and a few extra ones. All this is described and linked to in the sections below.


I put a big cardboard box on the bench then built a Prusa Mendel (the one in the pictures below). Every tool I picked up I put down in the box, except tools that couldn't be moved, which got a Post-It stuck to them. Here's the list of what had a Post-It on and what was in the box at the end. You definitely don't need all of these - indeed some are duplicates. But I've put the list here in case your spouse is Christmas shopping...

bench vice
small drill press
centre punch
countersink drill bit
crimp tools (this one and this one)
dentist's mirror on stick
digital callipers
digital infra red thermometer
drill bits: 2mm 2.5mm 3mm 3.5mm 4mm 5mm 8mm 8.5mm
engineer's square
jeweller's loupe
Junior hacksaw
long steel rule (600 mm)
long-nosed pliers
M3 Allen key
M3 Allen key type screw driver
M3 and M8 dies and a die wrench
M3 grub/set-screw Allen key
M3 nut driver
M3 spanner
M3 starting tap and a small tap wrench
M4 Allen key
M4 Allen-key type screw driver
M4 nut driver
M4 spanner
magnifying glass
pen knife
pin chuck
set of metric feeler gauges
side cutters
small cross-head screw driver
small electrical screwdriver
small G clamps
small hammer
small pliers
small soft hammer
small wall file
solder station
spirit level
Third pair of hands croc-clip clamps
two M8 spanners
wire strippers



The most significant difference between my version of Prusa Mendel and the standard one is that I reverse the X axis. Looking at the front of the machine with the Y motor at the back (note that this is the opposite of the front and back used in the standard Prusa Mendel assembly instructions), the X motor is on the left, not the right. This allows easier wire layouts, and - in particular - allows neat connection of the wiring to both the X axis and the heated bed by cable-tying it along lengths of 3mm filament for support. It also allows better access to the front of the machine (because there's no Y motor in the way).

I have also made a number of minor mechanical alterations that are listed in the next section.

Useful jig

There is a useful jig here, that - if you have access to a laser cutter and cut it out of MDF - will allow you easily to set the lengths of the frame triangles and the gap between them in the X direction. You could also print it, glue it to a piece of wood, and cut it out with a muscle-powered cutter...

Altered reprapped parts



The endstop holder is the left hand image. It holds a microswitch with 9.5mm mounting centres and M2.5x12 mounting screws. Get a microswitch with just a button, not the lever as well - it's more accurate.

If you set the variable pcb_mount=true; in the OpenSCAD file it also generates a PCB holder (right image) to allow you to mount the RepRap control electronics on the machine using M3 screws. See below.



If you have all 12 PLA bushings in an array as a single STL file it makes arranging them in a build less versatile as you can't cram them into small spaces. Arranging them one at a time gives a lot of versatility, but they are so delicate that they can detach, even from a well-heated bed.

My compromise it to have four on their own raft. This prints reliably, and is easy to slide about between other parts to print wherever you want. Print three of these to get 12, obviously. The raft is thin enough to cut from the finished parts easily with a scalpel. Mind your fingers...



I have replaced the unsupported bridges with thin webs (left picture), which both print more cleanly and are stronger. The M8 nut cavity now has a hole through for the M8 threaded rod, and a 45o conical base to the barrier that rests on the nut (right picture). This again prints more cleanly.

When you come to put the X bars through the holes you will find that they are pretty parallel when you measure the gaps between them at either end - typically to within 0.3mm or so. But if you are an absolute perfectionist you can get them exact. Cut some strips of paper 30mm long by 5mm wide. Use these as shims between the rods and the angled tops of the holes in which they fit. You will find that with care you can get the gaps between the rods to match to within a few hundredths of a millimeter. This, of course, allows the X carriage to slide very smoothly indeed.



This has the same webs and cone as above. In addition there are two small holes (A A) that allow a 3mm diameter length of filament to be attached using a cable tie to run the X-axis wiring.


The picture on the right shows the idea, though that was taken with the old design. A 430mm length of 3mm PLA filament is held to the top of the Prusa Mendel beside the Z motor by two cable ties round the threaded rods. It loops through the hole on the right in the OpenSCAD picture and a third cable tie through the hole on the left secures it.

The wires are shown taped here, before they are cable-tied. This is generally a good idea: attach all wires with sticky tape first, then, only when everything is in place and you're happy with the layout, go round putting the cable ties on and cutting off the tape.



This fits on the frame vertex to the left of the Y motor viewed from the back of the Prusa Mendel. It holds a standard RepRap 3-pin XLR plug power connector. Remember to leave the 8mm threaded rods sticking out enough to hold it.

See the power supply section below for wiring details.




This modification of the standard Y motor bracket has slots rather than holes. This allows it to be fitted to the Prusa Mendel and taken off without taking anything else apart.


The motor has also been rotated about its axis to move one of its mounting screws away from the Y belt pulley. This allows the pulley mounting to be simpler (see the photo), and the toothed drive to sit nearer the motor, thereby reducing the bending moment on the shaft and the forces on the motor bearings.

I leave out the nut between the motor mount and the mudguard washer before the bearing, and just have three washers there.

Y belt clamp


If you use 10mm thick MDF (or similar) for the Y bed lower component then ignore this section.

But I use 6mm MDF, which makes the Y belt run slightly out of line. Fix this simply by printing out two extra Y belt clamps (which are 4mm thick) and putting them under the belt.

Z motor mountings

I use the silicone tube-between-the-motor-and-the-reprapped-motor-holder trick that is mentioned here on the Prusa wiki page.

Power supply


I have a design for a power supply cover that prevents inadvertent messing about with the mains connections. More details are below.

Heated Bed

Bill of Materials

RS are here.

Mouser are here.

Lee Springs are here.

Item Source No. off
3mm thick Aluminium sheet 230mm x 230mm 1
Glass bed Glass cutter 1
12 ohm 15W cased resistors RS 160-449 / Mouser 284-HS15-12F 9
MOSFET mounting kit RS 7073361 1
MOSFET RS 7165558 1
10K Thermistor RS 4840149 1
Bed springs Lee Springs LC 047E 06M 4
M3x30 cs RS 4829221 4
M3 x20 cs RS 553419 4
M3 nylock nuts 4
M3 nuts 6
M3 x 6 cs RS 553396 20
tmnl block (3) 1
stripbd 10x13 1
3 way pin header RS 4838477 1
3 way header shell 1
crimp connectors 3
1k resistor 1
1M resistor 1
foldback clips Stationers 4
1.2 m 20A wire 1

Here are the dimensions of the aluminium bed and glass plate. The notch at the origin is to allow the extruder to be purged without making a messy pile on the build bed. Get your glazier to take that corner off then smooth the edges of the glass to avoid cut fingers. You can probably hacksaw the corner of a square of aluminium yourself then clean the edges with a fine file.


Circuit diagram


The bed has 9 12 ohm resistors in parallel, giving an overall resistance of 1.333 ohms, which in turn gives 108 watts of heat at 12v. These resistors should be panel mounting high-power types with an aluminium jacket and mounting holes.

The IRF2804 MOSFET is a cheap, but truly amazing, device. It will switch almost 300A (rather over-rated for this application, but why not), and has an on resistance of only 0.0023 ohms.

The main power connector is an ordinary "chocolate block" 3-way screw strip. The central hole is not electrically connected, but is used mechanically - see below.

Use very fat wire to connect all the above components as shown - it has to take high current.

R11 and the LED in parallel with the heater resistors are an indicator which tells you when the heater is on.

In addition there is a 3-way pin header that turns the MOSFET on and off, and that returns the resistance from the thermistor thermometer.



Clamp the MDF Y bed symmetrically in the middle of the aluminium sheet, and use it as a template to drill four 3mm mounting holes. Countersink them on the top side. The long countersunk screws will go through these holes, with springs between the MDF and the aluminium. This allows you to adjust the heights of the four corners to get the bed exactly parallel with the X and Y movement of the Prusa Mendel. Use nylock nuts on the countersunk screws so the adjustment doesn't drift.

In the corner that will be at X=0, Y=0 cut an angled corner off the aluminium bed to match the glass plate (see below). This will allow the extruder to be purged without building a messy pile on the plate before a build - the extrudate will fall through the hole.

Now to decide where not to attach things. Put the MDF back on the machine and temporarily assemble the bed (no need to put the nuts on the screws). Move the bed to and fro, and work out regions where anything bolted under the aluminium may collide with, for example, the Y belt bearings or the Y smooth bar clamps, and the screws and springs. Block these regions out with a felt pen.

Now position the heater resistors, the transistor, and the screw connector where they won't hit anything. Try to space the resistors evenly to get even heating. The stripboard goes right under the screw connector (copper away from the aluminium) and pokes out the back. It's for mounting the LED and the pin header connector.

Mark the mounting holes of everything with the felt pen and drill them all 3mm, countersinking the other sides.

When drilling and countersinking aluminium it is a good idea to use cutting fluid (oil-in-water emulsion) as this gives a much cleaner finish without burrs. You can usually buy the oil and emulsifier ready-mixed from machinist's suppliers - just add water in the proportions it says, and squirt the result on the job as you are drilling. This will make a mess...

(I've never tried, but you could have a go at making your own cutting fluid with ordinary oil, washing-up liquid, and water. Mix the first two first. I'd guess gear oils would probably work best, as they have sulphur-containing EP additives in. But I don't know.)

Don't put cutting fluid down drains.


Now use a hacksaw to cut slots in the wire hole on the two leads of each resistor. This will allow you to slot connector wire in from the top (when being made; bottom when installed). This is much easier than trying to thread it through the holes. The easiest way to cut the slots is to put the tips of the leads in a vice with the resistor projecting to one side of it.


The holes in the resistor tabs are smaller than 3mm. But they are just right for tapping 3mm. Tap all the mounting holes in the resistors with an M3 taper tap, taking care to keep it at right angles to the resistor body.


Use the 6mm countersunk screws to mount the resistors to the plate. You may care to put silicone heat-sink compound under them to get good thermal contact.

Use 12mm M3 countersunk screws to attach the transistor with its mounting kit (which insulates it from the aluminium), and to attach the screw strip and stripboard.

Wire everything up according to the circuit diagram.

Use Kapton tape to hold things down. The cross is the thermistor - put it well away from the heating resistors near the middle. I put a folded pad of paper over it to insulate it and to keep its temperature close to that of the aluminium.

Nothing should be electrically shorted to the aluminium - check this with a meter.


Here's the finished bed fitted and viewed from the back of the machine. The countersinking should obviously put the screw heads below the plane of the top of the bed - the glass plate has to sit flat on top of it.

The glass plate is held down by the four foldback clips.

The extruder is parked at x=0, y=0. This places it over the cut-out corner of the bed.

As you can see, the machine's wiring is not finished in this picture. But the loop extending towards the camera carries the power and signal connection to the heated bed. A loop of 3mm PLA filament 640 mm long is attached to the top of the machine next to the Z motor by two cable ties. The other end of it is clamped in the central unused slot in the heated bed's screw connector. Two fat wires run the 12v supply from the power connector bottom left of the picture, and three thin wires run the on/off signal from the control electronics to the gate of the MOSFET and the connections to the thermistor.

Here's the look-up table for the thermistor for the firmware:

// RS thermistor 484-0149; EPCOS B57550G103J
// Made with (
// ./ --r0=10000 --t0=25 --r1=0 --r2=4700 --beta=3480 --max-adc=1023
// r0: 10000
// t0: 25
// r1: 0
// r2: 4700
// beta: 3480
// max adc: 1023

short bedtemptable[NUMTEMPS][2] = {
   {1, 599},
   {54, 160},
   {107, 123},
   {160, 103},
   {213, 90},
   {266, 79},
   {319, 70},
   {372, 62},
   {425, 55},
   {478, 49},
   {531, 43},
   {584, 37},
   {637, 31},
   {690, 25},
   {743, 19},
   {796, 12},
   {849, 5},
   {902, -3},
   {955, -16},
   {1008, -42}


This is how I level the bed. For this it's very useful to have a set of 0.1mm-increment diameter drill bits to use for measuring.

Start with the power off.

Get the X axis parallel to the Y sliding rods. Move the bed out of the way, and use digital callipers to measure the distance from the Y rods on which the bed slides to the X rods on which the carriage slides. Turn the Z screws at either end by hand until the X axis is level.

Note: some people just use three screws, rather than four, to attach the bed. This makes it easier to adjust, and the aluminium plate plus the glass plate are rigid enough to support the free corner.

Mark the heads of the four screws that attach the heated bed to the bottom Y slider with a felt-tipped pen so you can easily count turns. The pitch of an M3 thread is 0.5mm, so each turn is a movement of that amount.

Do the four screws up that hold the heated bed (via the springs) to the MDF Y slider finger tight (i.e. until the nylon insert in the nylock nuts just catches). Now do them up with a screwdriver and spanner, turning each exactly five turns more against its spring.

Clamp the glass plate on.

Power up the machine, and run the Z axis so that the extruder tip is about 2mm above the glass.

Power off.

Select the drill bit (around 2mm) that, when you roll its shank under the extruder tip, will just pass.

Now move the X and Y axes around to try that drill bit in the four corners. Do up, and undo, the screws to get the drill's diameter between the extruder and the glass the same in all four corners. It is very important when doing the measuring to have the glass clamped to the aluminium (as the machine will be when it's working). But you may have to unclamp it to adjust the screws.

Finally, when the bed is level, power up the machine and run the Z axis so that the extruder tip is about 0.2mm above the bed. Use a feeler gauge for this if you have one (though beware getting grease on the glass - fatal), or fold a strip of paper and check the thickness with the digital callipers. Move the Z endstop so that it just clicks when the bed is in this position, and tighten it.

Clean the glass to get any grease or finger marks off. I use acetone-based nail varnish remover. Look at the label before you buy. Avoid anything that is acetone-free, or that has oils or lanolin dissolved in it. The cheap stuff has acetone, water and a tiny amount of glycerine - that works well.

Do a final check that the extruder doesn't hit the glass anywhere, then run a print.

As the print starts, watch the plastic being laid down. The extrude head should be smearing it over the glass, not laying it down to rest on it. If the head is too low or too high, you can adjust the machine while it is running. The Z motors will be energised, but you can still turn them by hand and count the clicks - make sure you turn both the same amount.

If you have to adjust Z like this, stop the print when you have done so, and use a meter across the Z endstop switch as you move it to get the switch to click at exactly the height you have set.

Remove the partial print, clean the bed again. You are ready to go.

When running the machine it is very useful to have an IR thermometer. Use it to check the temperature of the top of the glass before you start a print. For PLA it should be about 60oC. Don't run too cold, or the PLA won't stick.

When it comes to the initial gap at Z=0 between the extruder nozzle and the bed, it is better to err on the side of too big rather than too small. Too big, and the print will detach and fail - an irritation. Too small and the extruder tip may scrape on the glass and damage both - a disaster. Also, running with too narrow a gap creates excess pressure in the melt chamber, which can damage the PTFE liner of the extruder. Avoid this. It is best to adjust the extruder motor current so that the extruder misses steps when this happens, rather than ploughing on regardless. That will automatically compensate.



The instructions for assembling the RepRap Universal Mini Extruder are on a separate page here.

It is shown fitted on the right in a view from the front of the machine. The spacer under the extruder is as shown, and the one at the back is at right angles to the one at the front. Fit three or four washers under the M4 mounting screws to make sure that the tips of the screws do not scrape on the X bars.



I use the Sanguinololu electronics with a couple of very minor modifications: I replace R7 and R8 (1k at the moment) with 10 ohm resistors - this makes the comms more reliable. And I mount C7 in a small socket in such a way that you can unplug it. That lets you to choose whether the USB intrface is allowed to reset the microcontroller or not. Plug the capacitor in when you are programming the microcontroller from the Arduino development environment; unplug it when you are printing with the machine. I usually stick the capacitor on the processor chip with Blu-Tack when it's not in use.

The instructions for assembling the Sanguinololu control electronics are on a separate page here.

Because the heated bed has its own driver transistor mounted on it, you don't need the one on the Sanguinololu board (Q2 on the Sanguinololu circuit diagram). Instead replace it with a link as shown on the right. This takes the microcontroller output (D14) to drive the transistor directly to the connector on the edge of the board (labeled -V on the board). From there it can be wired to "controller heated bed" on the heated bed (see the heated bed circuit diagram above).


As you can see from the right, this picture was taken before the wiring was tidied...

Use three PCB mounts (see endstop-holder.scad above) to attach the board to the frame. Cut three 8mm lengths of 3mm i.d. silicone tube and put them between the printed PCB mounts and the circuit board. This will both cushion the board against distorting forces and position it better.

The standard Sanguinololu uses push-fit insulation-displacement connectors to plug into the pin-headers on the board, but I have not found these very reliable. I use shells and crimp connectors like these. But these have the disadvantage that you either need to solder them (fiddly, but not too bad), or to buy one of these.

The firmware that I use is a fork of the Sprinter Firmware by Kliment and others that I keep here on Github. This is set up to do RepRap-style accelerations by default (that is F fields and G codes are treated as linearly-changing variables), but you can switch this behaviour off and have standard G Code responses if you want.

Power Supply


I use these 12V 30A power supplies. 30A is more than adequate for running a full RepRap with a heated bed, and so the power supply is under no strain when the machine is operating.

The power supply cover and two feet are in the OpenSCAD file ps-cover.scad. The cover includes cable grips for the mains cable and the 12V cable. You will need:

No. Description Notes
1 12V 30A power supply on eBay here
2 12mm M3 screws attach feet
2 10mm M4 screws attach cover to PS
2 M4 washers attach cover to PS
2 20mm M3 screws cable grips
2 M3 nuts cable grips
4 M3 washers cable grips
1m (o.w.e.) 6.5mm O.D. 3-core mains cable 0.75mm2 is about right
1m (o.w.e.) 20A two-core flex
1 mains plug
1 3-pin XLR socket


Start by making sure that the voltage selector switch is right for your location.

Next wire in the mains and 12v wires as shown in the picture at the top of this section. Get 3-core mains cable (i.e. with an earth wire) that is 6.5mm outside diameter. The 12V cable needs to be two core and capable of taking a reasonable current. I use flex rated at 20A.

Note that the negative side of the 12V power supply output is connected to the earth connection. Do not omit this - it is an important safety feature.


Attach the cover to the power supply with the two M4 screws and washers. Use the two 12mm M3 screws to attach the back feet as shown.


As already mentioned, the standard RepRap 12v power connector is a 3-pin XLR connector. Get plugs and sockets with metal shells.

The picture immediately to the right is looking into the socket (female - on the cable) and at the pins (male - on the RepRap machine). Pin 1 and the metal shells of the connectors are the ground (negative) connection. Pins 2 and 3 are the +12v connection. the reason for the doubling up is to get the maximum current capacity.


As you have high-current 12V flex, you can split half the wires on each pole. Twist them to form four connections in pairs, then solder these as described above. Use plenty of solder - you want the result to be rigid and not to bend and so short.

Neatness is everything - you don't want shorts between +12v and ground.

Use a multimeter to check that you are getting +12V and ground out of the XLR socket in the pattern that you (and more importantly your RepRap plug - see below) expect. Powering the machine up with the polarity reversed will do a lot of damage.


Use the same approach for the panel-mounting XLR plug on the RepRap: use pin 1 for ground to the control electronics, and the metal shell for ground to the heated bed. Use Pin 2 (or 3 - whichever is neater) for +12v to the control electronics and Pin 3 or 2 for +12v to the heated bed. Use Pin 1 for ground to the heated bed, and the shell for ground to the control electronics.

Short the two +12v together and the two grounds together with short lengths of fat wire.